Ryan Houdek
8d2eebd644
Fixes a memory leak in IRValidation
2021-01-11 08:47:45 -08:00
Stefanos Kornilios Mitsis Poiitidis
50597b8fd2
Merge pull request #621 from Sonicadvance1/fix_idle_ref_count_on_fork
...
Ensure idle wait ref counter is 1 on fork
2021-01-11 10:55:36 +02:00
duck
a63339c50d
Fix JCC negative offsets as well
2021-01-11 03:34:52 -05:00
duck
e610b12c97
Fix negative offset jumps on x86-32 by using 32-bit RIP
2021-01-11 03:20:25 -05:00
duck
4c295e6dfc
Fix compilation issues, re-rename due to pre-existing variable
2021-01-10 17:54:29 -05:00
duck
3c86a55bea
Size -> GPRSize for a bit more clarity
2021-01-10 17:50:22 -05:00
duck
9290e19fc5
Fix JCXZ on X86
2021-01-10 17:46:03 -05:00
Ryan Houdek
63cc8c67f2
Ensure idle wait ref counter is 1 on fork
...
Once we fork, we no longer have any threads to track in the process.
Ensures we don't spin forever on forked process
2021-01-10 02:09:37 -08:00
Stefanos Kornilios Mitsis Poiitidis
1dd307f34b
JIT/x64: Implement distributed dispatch, jumps instead of call/ret
2021-01-10 03:23:40 +02:00
Stefanos Kornilios Mitsis Poiitidis
a76baf9a7f
JIT: Fix interpreter fallback path
2021-01-09 05:55:30 +02:00
Stefanos Kornilios Mitsis Poiitidis
f3d5635182
IR: Make ExitFunction take NewRip as an argument, instead of implicit ctx store
2021-01-08 18:41:33 +02:00
Stefanos Kornilios Mitsis Poiitidis
3729a33665
jit: Basic distributed dipatch for arm64
2021-01-08 17:43:18 +02:00
Ryan Houdek
ee8dfb8fc5
Merge pull request #606 from duck-37/sigsegv-fail-tests
...
Have tests that throw a non-HLT SIGSEGV fail
2021-01-06 15:28:38 -08:00
Stefanos Kornilios Mitsis Poiitidis
dd71a45175
Merge branch 'main' into skmp/static-ra
2021-01-07 01:04:16 +02:00
Stefanos Kornilios Mitsis Poiitidis
5600ffbb4b
L1C: Use constant for masking
2021-01-07 00:27:08 +02:00
Stefanos Kornilios Mitsis Poiitidis
aaa80d0678
BlockCache: Add a hash based L1 cache for lookups
2021-01-06 23:37:25 +02:00
Stefanos Kornilios Mitsis Poiitidis
101b29c5ee
ConstProp: Fix build breakage w/ operator ==
2021-01-06 23:31:50 +02:00
duck
f9cd0f0179
Have tests that throw a non-HLT SIGSEGV fail
...
Patch moves HandleSIGSEGV in HostFactory.cpp to a non-frontend host signal handler, then registers its own frontend signal handler to catch unhandled segfaults.
2021-01-06 05:07:47 -05:00
Stefanos Kornilios Mitsis Poiitidis
45b6c39e2c
SRA: reload SRA on signal handler entry, recover from guest on context marshaling
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
86f74279e6
arm64: Fix SRA spills, OP_SYSCALL stack args
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
fa35e79c3f
arm64: Fix lr pushing
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
bcf382afc4
Interpreter: Fix LSHR to correctly zero extend
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
193a72aa56
SRA: Address review feedback
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
94fb009f4b
SRA: Address review feedback
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
5fd77f8228
arm64: Fix FPR spilling
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
41285865ba
arm64: Fix asserts
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
c95d40e9be
arm64: Spill/Fill static ra around OP_SYSCALL
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
82545796b8
static-ra: Use LogMan::* instead of assert/printf
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
2ed8163a98
arm64: Cleanup & optimize Static and Dynamic spills on call
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
b3600a453c
RA/SRA: Don't read-alias not full sized regs, it is not safe
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
30d7c02b60
arm64: Really fix Popcount to take into account opsize
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
5f481ff56d
IR: Fix Ashr, Ror OpSize calculation
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
c518151800
IR: Fix Lshr op size detection
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
20a9b93019
OpDisp: Fix CondJUMPRCXOp
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
76367f0afc
arm64: Remove some debug logic
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
c20b27965d
arm64: Fix Popcount to take into account opsize
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
6e053f0055
arm64: Fix IsGPR && IsFPR for SRA
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
80d1766bf0
arm64: Correctly handle signal and SRA interactions
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
a1f7c7da55
arm64: Fix Exit handler calling from signal
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
de0ed19e86
Arm64: Fix build for CreateRegPair
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
cdb2075522
X64: Fix RegisterClasses Count
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
5a3c55f621
RA: Fix Class Conflicts
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
204fda62f1
IR: Fix CreateElementPair edge cases, Remove Load/StoreContextPair
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
fbe87101db
IR: Remove Load/StoreContextPair
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
17dc0bfcd8
SRA: Only do read-alias if accessing low part of register
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
c67aa0b83d
OpDisp: Don't use LoadContextPair, it is kludgy and breaks SRA
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
9c5a1fd5ea
SRA: Static Register Allocation, arm64 only
2021-01-05 17:14:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
f724392ef8
Merge pull request #601 from Sonicadvance1/fix_cvtsi2ss_64bit
...
Adds support for proper sized GPR->FPR sized conversions
2021-01-05 12:03:33 +02:00
Ryan Houdek
4907bda639
Adds support for proper sized GPR->FPR sized conversions
...
Both x86 and AArch64 support converting from one sized GPR to another
sized FPR. Expose it in our IR op.
Fixes a bug in CVTSI2SS with a 64bit source and it was treating the
input source as a 32bit value.
eg:
0x0000'0000'FFFF'FFFF was treated as converting to -1 float, which was wrong since it is a 64bit value
2020-12-30 10:07:12 -08:00
Ryan Houdek
8bd76885ea
Implements the rest of the prefetch ops and nops
...
Prefetch is highly architecture specific and a lot of these don't
actually map 1:1 with AArch64 anyway.
Just nop out
2020-12-27 19:10:41 -08:00