Alyssa Rosenzweig
384882744c
DeadStoreElimination: drop now that it's redundant
...
it's only really load bearing for pf/af, which is handled as a global flag opt
now. this mitigates some of the compile time hit from globalizing flag opts.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-07 10:59:05 -04:00
Alyssa Rosenzweig
b36d1f7e7b
RedundantFlagCalculationElimination: optimize parity
...
another global CFG-based optimization -- if we know that the raw PF is already
1-bit we can skip parity evaluation, saving work with floating point compares.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-07 10:59:05 -04:00
Alyssa Rosenzweig
dd7c66db2e
RedundantFlagCalculationElimination: use LUT for flags
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-07 10:59:05 -04:00
Alyssa Rosenzweig
47ac9edd7a
RedundantFlagCalculationElimination: select testz
...
this saves uops.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-07 10:59:05 -04:00
Alyssa Rosenzweig
6e6d640fec
RedundantFlagCalculationElimination: fold compares/axflag into branches
...
now that we know whether flags are killed on the edge, we can improve branch
isel
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-07 10:59:05 -04:00
Alyssa Rosenzweig
eb88366614
RedundantFlagCalculationElimination: globalize
...
Gather a control flow graph and use it to propagate flags throughout the
program.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-07 10:59:05 -04:00
Alyssa Rosenzweig
50d6ddd591
RedundantFlagCalculationElimination: extract per-block logic
...
nfc
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-07 10:59:05 -04:00
Alyssa Rosenzweig
249de7c758
RedundantFlagCalculationElimination: drop unneeded bools
...
nonzero <==> not dummy
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-07 10:59:05 -04:00
Alyssa Rosenzweig
c350888d70
RedundantFlagCalculationElimination: add missing adczero case
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-07 10:59:05 -04:00
Alyssa Rosenzweig
f23bef1653
RedundantFlagCalculationElimination: add missing testnz case
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-07 10:59:05 -04:00
Alyssa Rosenzweig
d17f33a922
OpcodeDispatcher: don't emit fake 0 for condjump
...
not needed and getting in the way
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-07 10:59:05 -04:00
Alyssa Rosenzweig
50a3ca0d6d
IR: introduce dedicated PF/AF instructions
...
this makes reasoning about them a little easier, e.g. for flags. about 1% win
in nodejs.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-07 10:59:05 -04:00
Alyssa Rosenzweig
8745455a5b
IR: track whether parity is read
...
so we can gate optimizations efficiently
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-07 08:26:04 -04:00
Alyssa Rosenzweig
e9ab514962
IR: push parity evaluation down
...
so we can optimize it globally
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-07 08:26:04 -04:00
Alyssa Rosenzweig
4eb0948451
IR: push down AXFLAG lowering
...
so we can get the new axflag optimizations on billy's x13s.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-07 08:26:04 -04:00
Alyssa Rosenzweig
8d9f19bd73
IR: add TestZ op
...
more optimized than TestNZ if we don't care about the sign bit.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-07 08:26:04 -04:00
Alyssa Rosenzweig
9fe7bc5818
InstCountCI: add ucomiss+pf opt case
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-07 08:26:04 -04:00
Alyssa Rosenzweig
5a590a9b11
InstCountCI: add 8-bit test cases
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-07 08:26:04 -04:00
Ryan Houdek
a4acd64246
Merge pull request #4042 from neobrain/refactor_system_libs
...
CMake: Compile with system libraries for xxhash, Catch2, and fmt, if available
2024-09-06 11:48:12 -07:00
Ryan Houdek
304b5de1af
Merge pull request #4038 from Sonicadvance1/move_aotir_debugdata
...
AOTIR: Move debugdata structure to internal header
2024-09-06 10:50:42 -07:00
Ryan Houdek
ca2fe0b301
AOTIR: Move debugdata structure to internal header
...
This definition doesn't need to be exposed in the public API.
2024-09-06 10:19:45 -07:00
Ryan Houdek
bbef4d762c
Merge pull request #4044 from bylaws/int2e
...
OpcodeDispatcher: Do not forbid INT 2E syscalls on 64-bit Windows
2024-09-06 10:18:18 -07:00
Ryan Houdek
f77841d784
Merge pull request #4041 from Sonicadvance1/fix_poll
...
LinuxSyscalls: With poll syscall, ensure fds is writable only if nfds is not zero
2024-09-06 10:17:55 -07:00
Ryan Houdek
219a4777c6
Merge pull request #4040 from Sonicadvance1/delete_threadsstate
...
FEXCore: Delete ThreadsState struct
2024-09-06 10:16:28 -07:00
Ryan Houdek
29f0e9b4d6
Merge pull request #4039 from Sonicadvance1/move_customir_entry
...
FEXCore: Move `CustomIRResult` to internal header
2024-09-06 10:16:18 -07:00
Ryan Houdek
b75efc42bf
Merge pull request #4037 from Sonicadvance1/move_symbol
...
FEXCore: Move `JITSymbolBuffer` to internal header
2024-09-06 10:15:54 -07:00
Tony Wasserka
90dbd4766d
Merge pull request #4043 from alyssarosenzweig/gitignore/build
...
gitignore: ignore build symlink
2024-09-06 18:08:47 +02:00
Billy Laws
f7b911ca43
OpcodeDispatcher: Do not forbid INT 2E syscalls on 64-bit Windows
...
This works fine on real Windows and is relied on by wine as SystemCall
is set to 1 in KUSER_SHARED_DATA, which causes the ntdll thunks to use
it over `syscall`
2024-09-06 15:58:17 +00:00
Alyssa Rosenzweig
6de0333708
gitignore: ignore build symlink
...
I symlink build -> Build for YouCompleteMe.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-06 11:22:31 -04:00
Tony Wasserka
ab5d3ab22b
CMake: Don't use pkgconfig when cross-compiling
2024-09-06 10:30:48 +02:00
Tony Wasserka
355c3428c0
CMake: Don't use system libraries when compiling with mingw
2024-09-06 10:30:24 +02:00
Tony Wasserka
c76b7bfe8d
CMake: Compile with system libraries for xxhash, Catch2, and fmt, if available
2024-09-06 09:47:49 +02:00
Ryan Houdek
64c5362580
LinuxSyscalls: With poll syscall, ensure fds is writable only if nfds is not zero
...
The pointer is allowed to be null or garbage if the number of nfds
passed in is zero.
Unify the x86 and x86-64 implementations to ensure consistency.
Fixes Warhammer 40k: Relics of War
2024-09-05 14:33:52 -07:00
Ryan Houdek
77469de247
FEXCore: Delete ThreadsState struct
...
All uses of this have been removed.
2024-09-05 13:39:02 -07:00
Ryan Houdek
48fd827004
FEXCore: Move CustomIRResult
to internal header
...
This definition doesn't need to be exposed in the public API.
Stopped needing to be public once we removed our IR CI thing.
2024-09-05 13:36:15 -07:00
Ryan Houdek
f09d511ac8
FEXCore: Move JITSymbolBuffer
to internal header
...
This definition doesn't need to be exposed in the public API.
2024-09-05 13:28:45 -07:00
Ryan Houdek
d5db8948db
Docs: Update for release FEX-2409
2024-09-05 12:43:45 -07:00
Ryan Houdek
5013b8a0db
Merge pull request #4036 from alyssarosenzweig/opt/dont-inline-pool
...
ConstProp: stop pooling inline constants
2024-09-05 07:30:39 -07:00
Alyssa Rosenzweig
ac65deed6c
ConstProp: drop CreateInlineConstant
...
bit of cleanup
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-05 09:48:59 -04:00
Alyssa Rosenzweig
d1d4d2d876
ConstProp: stop pooling inline constants
...
Because we already pooled the _Constants, there's no benefit to also pooling inline constants. the robin map to do so just adds extra overhead for no benefit - drop it.
without multiblock, shaves around 2% off node. with multiblock, a bit less than
1% but still a win.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-05 09:47:35 -04:00
Ryan Houdek
e234e118e0
Merge pull request #4035 from neobrain/fix_fexqonfic_polish
...
FEXQonfig: Fix minor saving/loading quirks
2024-09-05 06:18:51 -07:00
Tony Wasserka
1cc54312fa
FEXQonfig: Recognize file: URLs in addition to file://
...
QUrl::fromLocalFile produces this format for relative paths.
2024-09-05 12:54:55 +02:00
Tony Wasserka
de9ab6a023
FEXQonfig: Fix loading local config files by command line argument
...
ParentPath doesn't return a usable value for "Config.json", so just use
std::filesystem::absolute/parent_path instead.
2024-09-05 12:53:44 +02:00
Tony Wasserka
463a0b5ed4
FEXQonfig: Set a default save location when Config.json does not exist
2024-09-05 12:37:01 +02:00
Tony Wasserka
7b0365b377
FEXQonfig: Reset dirty indicator after loading a file
2024-09-05 12:36:05 +02:00
Tony Wasserka
803501526e
FEXQonfig: Fix false "Failed to load config file" error when saving to a new file
2024-09-05 12:36:05 +02:00
Tony Wasserka
a63a3a47e3
FEXQonfig: Clearly indicate save dialogs as such
2024-09-05 12:36:05 +02:00
Ryan Houdek
a66fac614b
Merge pull request #4034 from alyssarosenzweig/fix-tied-fma
...
IR: fix scalar FMA tied sources
2024-09-04 09:14:24 -07:00
Alyssa Rosenzweig
6d4693cbc1
IR: fix scalar FMA tied sources
...
needs to be modelled explicitly or else we lose information when translating
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-09-04 07:42:44 -04:00
Ryan Houdek
46a2a0608b
Merge pull request #4033 from Sonicadvance1/dynamic_scale_support
...
FEXCore: Dynamically scale TSC
2024-09-03 16:11:52 -07:00