lioncash
05ce65322f
OpcodeDispatcher: Make X87Tag an enum class
...
Makes the tag parameter strongly-typed and prevents implicitly passing
it an incorrect value.
2021-11-12 08:31:50 -05:00
lioncash
3e5037042f
OpcodeDispatcher: Make Segment enum an enum class
...
Avoids polluting the surrounding scope.
2021-11-12 08:24:21 -05:00
lioncash
6d82410f44
OpcodeDispatcher: Convert OpType enum into enum class
...
Prevents pollution of the surrounding scope a little.
2021-11-12 08:19:14 -05:00
lioncash
5d707cf831
OpcodeDecoder: Add support for ADX
...
Another CPU extension we can cross off the list.
Addresses #1355
2021-11-10 12:11:01 -05:00
lioncash
9df8245ef2
OpcodeDispatcher: Implement BMI2 SARX/SHLX/SHRX
...
Gets the basic BMI2 shifts out of the way.
2021-11-07 02:12:06 -05:00
lioncash
7d2b3d0846
CPUID: Signify support for BMI1
...
Now that all of BMI1's instructions are implemented, we can signify that
we support it in CPUID.
2021-11-06 23:37:54 -04:00
lioncash
e0973e19fc
OpcodeDispatcher: Implement handling for BLSMSK
2021-11-06 23:36:52 -04:00
lioncash
ff9190204c
OpcodeDispatcher: Implement handling for BLSR
2021-11-06 23:28:23 -04:00
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
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
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
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
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
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
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
3744ec2a44
Merge pull request #1262 from phire/RAValidation
...
RA validation
2021-09-13 01:39:24 -07:00
Scott Mansell
f14b73689f
AOTIR: fix use after free
...
These variables are owned by other parts of the code, and AOTIR
should not be freeing/deleting them.
2021-09-13 17:54:26 +12:00
Scott Mansell
cb57797550
PassManager: Lookup pass by name
2021-09-13 11:46:11 +12:00
Ryan Houdek
2b91108255
OpcodeDispatcher: Ensure some x87 templates get passed long constants
...
Just to ensure these don't get truncated and intent
2021-09-11 05:41:14 -07:00
CallumDev
dec512187e
JIT: Remove nops in ARMv8.0 CASPair
2021-09-05 17:49:57 +09:30