Ryan Houdek
8b64546579
Merge pull request #1349 from Sonicadvance1/fix_paranoid
...
Arm64: Fixes paranoid TSO mode
2021-11-06 17:24:41 -07:00
Ryan Houdek
61a0508ff6
Arm64: Fixes paranoid TSO mode
...
Vector loadstores were crashing. Now we emulate on load and backpatch on
store.
Store can't effectively emulate so it's better to backpatch.
2021-11-06 04:03:37 -07:00
Ryan Houdek
4ebbca45be
CPUID: Adds support for hybrid flag
...
CPUID lets the application know if it is running on a CPU with hybrid
CPU clusters.
This matches big.little fairly easily. Walk the affinity mask and
check if we are running on a big.little system and report it to the
guest.
For x86-64 host just pass through the flag.
2021-11-06 03:01:39 -07:00
Ryan Houdek
4b47e66135
FEXCore/Utils: Adds File loading helper
...
This will be used in multiple locations now.
2021-11-06 02:56:31 -07:00
Ryan Houdek
8f170d4aa0
Merge pull request #1345 from Sonicadvance1/EnvironmentLoader_Parse
...
Fixes environment loader not hooked up to ArgumentLoader
2021-11-05 17:31:21 -07:00
Ryan Houdek
be12059e8f
Fixes environment loader not hooked up to ArgumentLoader
...
Fixes #1334
Fixes the issue of `FEX_CORE=irjit` not working.
2021-11-04 23:41:22 -07:00
lioncash
b47cb20619
OpcodeDispatcher: Implement handling for BLSI
...
Now all that remains is handling for BLSMSK and BLSR
2021-11-04 18:49:15 -04:00
lioncash
166c96320c
Frontend: Handle VEX-encoded destination operands
...
BLSI, BLSMSK, and BLSR make use of these, for example.
2021-11-04 17:52:57 -04:00
lioncash
e317424b86
X86Tables: Increase InstFlags to uint64_t
...
We've run out of the range of 32 bits already and will need to use
another flag in upcoming changes, so we need to expand our flags to be
64-bit.
While we're at it, we can use a dedicated type alias for the instruction
flags to make the interface changeable from one spot in the future.
2021-11-04 16:10:20 -04:00
Ryan Houdek
babb81a240
Merge pull request #1343 from Sonicadvance1/sigbus_share
...
Arm64: Consolidate HandleSIGBUS
2021-11-03 01:46:36 -07:00
Ryan Houdek
235367b67a
Merge pull request #1342 from Sonicadvance1/tear_telemetry
...
Telemetry: Adds telemetry for when an application tears
2021-11-03 01:46:27 -07:00
Ryan Houdek
5b9da4f2be
Arm64: Consolidate HandleSIGBUS
...
We can share this between the interpreter and the JIT. Necessary to
support the TSO-correct interpreter path.
With this change the interpreter is TSO-correct for GPRs. Just not FPRs
yet.
2021-11-02 23:54:25 -07:00
Ryan Houdek
4c712ca111
Telemetry: Adds telemetry for when an application tears
...
This can be used as an early indicator of an application doing nefarious
things.
2021-11-02 22:46:50 -07:00
Ryan Houdek
3bcc8ca695
IR: Fixes memory ops having a duplicate size field
...
There's zero need for these to have an independent size field and it was
just confusing.
For stores it was always set to zero and for loads it was just
duplicated.
In addition this allows introspection of the store op without casting
the op, which can be useful in edge cases
2021-11-02 22:38:59 -07:00
Ryan Houdek
34b2f93ddf
Merge pull request #1338 from lioncash/bic
...
IR: Add handling for ANDN operations
2021-11-02 19:29:29 -07:00
lioncash
49dae08b3d
OpcodeDispatcher: Make use of the new Andn IR op where applicable
...
Now that we have the handling in place, we can make use of it to
simplify some operations and resolve some lingering TODO comments.
2021-11-02 21:59:56 -04:00
lioncash
0b700de7d9
IR: Add handling for ANDN operations
...
This is a pretty straightforward operation that can be nicely modeled
by the BIC instruction on ARMv8, which is nice since we can get rid of
the need to manually perform the And and Not operations.
2021-11-02 21:59:53 -04:00
Ryan Houdek
43454abc63
Merge pull request #1339 from lioncash/nodiscard
...
Core: Mark relevant Interpreter/JIT functions as [[nodiscard]]
2021-11-02 18:29:51 -07:00
Ryan Houdek
76538be0e0
Merge pull request #1337 from lioncash/bmi-bextr
...
OpcodeDispatcher: Handle BMI1 BEXTR
2021-11-02 18:26:52 -07:00
lioncash
002867bc2a
Core: Mark relevant Interpreter/JIT functions as [[nodiscard]]
...
Lets the compiler warn loudly when the result from any of these
functions are left unused (indicating a bug).
2021-11-02 18:31:41 -04:00
lioncash
79d6bf2840
OpcodeDispatcher: Handle BMI BEXTR
2021-11-02 16:07:37 -04:00
Lioncash
31030e6f85
ALUOps: Fix left-over printf specifier in fmt log
2021-11-02 14:26:44 -04:00
lioncash
26d493a66e
Frontend: Handle VEX on second source operands
2021-11-01 14:55:32 -04:00
Ryan Houdek
7e9201cf0d
Merge pull request #1325 from lioncash/bmi
...
Frontend: Handle VEX source operands
2021-10-22 08:38:14 -07:00
Lioncash
877db85428
OpcodeDecoder: Handle ANDN
2021-10-22 11:18:46 -04:00
Lioncash
f088f0a236
Frontend: Handle VEX source operands
...
This will allow us to begin implementing BMI instructions.
2021-10-21 10:50:13 -04:00
Ryan Houdek
a40a0cbb12
Interpreter: Splits ops in to separate files
...
I need this for something else so I'm doing this now
2021-10-20 00:15:33 -07:00
Ryan Houdek
435137e1a2
JIT: Fixes asserts added to the JIT
...
Fixes #1319
2021-10-19 10:42:55 -07:00
Ryan Houdek
d847f6e1b3
JITSymbols: Allow grouping JIT symbols by guest named regions
...
This lets us have JITsymbols grouped by library.
Useful for determining where to thunk.
Sadly perf doesn't have an option to deduplicate regions by name, so
some external tooling is necessary to make it look nice.
2021-10-16 21:10:57 -07:00
Ryan Houdek
1d9b66044a
JITSymbols: Change over to runtime enablement of symbols
...
Adds a new option for just describing all JIT state as a single symbol.
Useful for simple profiling of total time spent in the JIT
2021-10-13 17:48:34 -07:00
Lioncash
c9621da51c
OpcodeDispatcher: Deduplicate OpToIndex definition
...
We can just make the one defined in X86Tables visible instead to keep
everything in one spot.
2021-10-13 16:18:39 -04:00
Ryan Houdek
b1ab252c68
Merge pull request #1310 from lioncash/printf
...
DeadContextStoreElimination: Fix missing printf specifier entry
2021-10-13 10:51:49 -07:00
Lioncash
eb8ca16402
DeadContextStoreElimination: Fix missing printf specifier entry
...
Previously the offset mismatch error was expecting two arguments, but
only one was provided.
While we're in the area we can convert the logging type over to the
fmt-capable one which can catch these.
2021-10-13 12:43:03 -04:00
Lioncash
8df16460d1
X86Tables: Mark initialization instruction tables as static constexpr
...
While the previous change eliminated much of the codegen caused by
constructing everything individually on the stack, it didn't eliminate a
memcpy of all the elements onto the stack.
This eliminates the memcpys by allowing the compiler to place all the
data into RO and just reference that data.
2021-10-13 12:30:23 -04:00
Ryan Houdek
98ba0bfa82
Merge pull request #1306 from Sonicadvance1/spill_fprs
...
Arm64: Make sure to spill static FPRs on guest signal
2021-10-11 23:16:51 -07:00
Ryan Houdek
366122338e
Merge pull request #1305 from Sonicadvance1/spill_slot_debug
...
RAPass: Add debug compile option to disable spill slot reuse
2021-10-11 23:16:35 -07:00
Ryan Houdek
6fb0b3d85c
Arm64: Make sure to spill FPRs on guest signal
...
This wasn't ever wired up
2021-10-10 22:17:41 -07:00
Ryan Houdek
69b27d7715
RAPass: Add debug compile option to disable spill slot reuse
...
Useful for debugging if spill slots are bugged
2021-10-10 20:45:21 -07:00
Ryan Houdek
cffd10d0f7
Arm64: Be more explicit about x87 ABI usage
...
Just using zero extending moves to ensure that we don't fill any
register's upper bits with garbage
2021-10-10 20:43:27 -07:00
Ryan Houdek
0d0ce38050
Thunks: Disable malloc libraries
...
Keeping this in the commit history to go back to later.
While these are required for static-pie builds to work, with the glibc
bug we can't use those yet.
Disable for now since it is is unnecessary.
2021-10-06 11:53:48 -07:00
Ryan Houdek
cb21f52f93
Thunks: Have the ThunkHandler load the FEX malloc symbol libraries
...
If the thunk configuration is enabled then preemptively load the
libraries. Since they will need to be loaded for any thunking library.
This is because we need to ALWAYS share the allocators to the thunks.
2021-10-05 23:51:26 -07:00
Ryan Houdek
08f56540d2
Merge pull request #1282 from Sonicadvance1/InterpreterLoadStores
...
Interpreter: Changes basic loadstores to sized accesses
2021-10-02 11:07:38 -07:00
Ryan Houdek
fb01e8bf28
Merge pull request #1283 from Sonicadvance1/minor_core_cleanup
...
Core: Minor documentation and code splitting
2021-10-02 11:06:56 -07:00
Ryan Houdek
d5f9f43ab0
Merge pull request #1281 from Sonicadvance1/SupportHostEnv
...
Adds support for setting host environment variables from config
2021-10-02 11:06:22 -07:00
Tony Wasserka
d71add78ae
Build fix for ENABLE_JITSYMBOLS
2021-10-01 17:20:26 +02:00
Ryan Houdek
9ab7de56ef
Core: Minor documentation and code splitting
...
This will change slightly in the future. Clean this up and document.
2021-09-30 18:01:57 -07:00
Ryan Houdek
fc46cb9390
Interpreter: Changes basic loadstores to sized accesses
...
This makes debugging a bit more clear as to what is happening on crash
2021-09-30 17:56:36 -07:00
Ryan Houdek
8cf4b285bf
Adds support for setting host environment variables from config
...
This can be useful for edge case environment variable setting
2021-09-30 17:51:49 -07:00
Ryan Houdek
3744ec2a44
Merge pull request #1262 from phire/RAValidation
...
RA validation
2021-09-13 01:39:24 -07:00
Scott Mansell
486c62f77c
RAValidation: Improve comments
2021-09-13 20:25:33 +12:00