Lioncache
ab6fc279ce
ASIMDOps/SVEOps: Use IsStandardFloatSize() even more
...
Forgot in #4697 to take into account that there are still parts of the
emitter that qualify with its own namespace.
This also removes those where applicable to be more in line with the rest
of the cases.
2025-07-22 08:25:35 -04:00
Lioncache
2a8efa9891
SVEOps: Make use of IsStandardFloatSize() more
...
Initially introduced in #4687 as a utility for ASIMD ops, this can be used
elsewhere as well to reduce the verbosity of some other assertions.
2025-07-21 13:51:37 -04:00
Lioncache
a615f8970a
ASIMDOps: Constrain 3-reg same float arguments with IsQOrDRegister
...
These are only intended to be used with QRegisters or DRegisters, so we can constrain these
so that the proper types are enforced at compile-time.
2025-07-16 17:46:28 -04:00
Lioncache
708ea9d50a
ASIMDOps: Merge half-float 3-reg same with single/double variants
2025-07-16 17:36:24 -04:00
Lioncache
82ffb379c4
ASIMDOps: Merge half-float 2-reg misc with single/double variants
...
Unifies the interface, so that there's no need for a stark difference.
Previously, calling the single/double variant didn't require explicit template
arguments, but the half-float version did, which is inconsistent.
Technically it also made the interface more cumbersome to use in the event the
element size isn't able to be determined as a constant ahead of time.
2025-07-16 10:16:49 -04:00
Lioncache
05d45ccb7f
Emitter: Add helper for sanitizing floating point element sizes
...
Will be used in a following change to reduce the amount of duplication
made in some floating point instructions.
2025-07-16 09:19:45 -04:00
Lioncache
d8da14d550
VixlUtils: Fix null pointer dereference vector in IsImmLogical()
...
Technically we can end up doing null pointer dereferencing here since checks were being
chained with || instead of &&. So we can just separate the checks out.
2025-07-10 12:09:20 -04:00
Ryan Houdek
646a5a7f9e
CodeEmitter/ASIMD: Removes redundant ternary selection
...
Redundant and unnecessary.
CID 482017
2025-06-19 16:31:08 -07:00
Tony Wasserka
048ae597d2
CodeEmitter: Fix incorrect macro parameter passing
...
Macros aren't aware of C++ templates, so the comma is considered a macro
argument separator unless the argument is wrapped in parentheses.
2025-05-24 09:35:11 +02:00
Ryan Houdek
6beb4b0f8b
Merge pull request #4533 from Sonicadvance1/align_tail_in_the_pale_moonlight
...
JIT: Align JITCodeTail to native alignment
2025-04-24 16:18:45 -07:00
Ryan Houdek
e31127e39e
CodeEmitter: Fix clang-format
2025-04-24 08:41:23 -07:00
Ryan Houdek
735f537846
JIT: Align JITCodeTail to native alignment
...
Removes UB
2025-04-24 08:40:43 -07:00
Ryan Houdek
e7fce2de40
CodeEmitter: Adds udf support
2025-04-23 12:14:44 -07:00
Lioncache
63a2d1e1db
CodeEmitter/ASIMDOps: Move three emitter helpers to private section
...
These don't need to be public.
2025-04-20 15:55:53 -04:00
Lioncache
644263a764
CodeEmitter/ASIMDOps: Constrain Q and D register requirements with concept
...
Pulls these out into a single concept instead of having the same lengthy
requirements clause.
2025-04-20 15:55:49 -04:00
Lioncache
4e6f183f77
CodeEmitter/LoadstoreOps: Add Load/store register (PAC) group
...
Eh, what the heck. Gets rid of the last TODO marker in the base load-stores.
2025-04-19 13:00:00 -04:00
Lioncache
d71aca9e9b
CodeEmitter/LoadStoreOps: Add Memory Copy and Memory Set category
...
Adds all of the memory facilities in FEAT_MOPS to the emitter.
2025-04-18 10:53:38 -04:00
Lioncache
d7a08fc7d4
CodeEmitter/ASIMDOps: Support RADDHN{2}/RSUBHN{2}
...
These are trivial enough to just drop right in.
2025-04-17 20:13:30 -04:00
LC
572d6e0395
Merge pull request #4509 from Sonicadvance1/in_the_twilight_of_the_pale_blue_moon
...
A couple of barrier and timing fixes.
2025-04-17 17:30:03 -04:00
Lioncache
bafcc8762b
CodeEmitter/ScalarOps: Handle ASIMD scalar x indexed element group
2025-04-17 14:47:38 -04:00
Lioncache
ec6ff7899d
CodeEmitter/ScalarOps: Remove implemented TODO
...
These scalar ops are already implemented and this was accidentally left in.
2025-04-17 08:14:10 -04:00
Lioncache
6330b398a5
CodeEmitter/ScalarOps: Handle ASIMD scalar three same extra group
...
These are trivial enough to drop in.
2025-04-17 08:09:42 -04:00
Ryan Houdek
da1868288d
CodeEmitter: Fixes misaligned function
2025-04-15 15:47:31 -07:00
Ryan Houdek
753c5e72be
CodeEmitter: Implement support for CNTVCTSS_EL0
2025-04-15 15:37:02 -07:00
Lioncache
222fcfd70e
CodeEmitter/ASIMDOps: Add crypto two-register SHA512 category
2025-04-15 11:48:30 -04:00
Lioncache
95c8a70ce6
CodeEmitter/ASIMDOps: Add crypto four-reg category
2025-04-15 11:41:07 -04:00
Lioncache
0f6bec4d5e
CodeEmitter/ASIMDOps: Add crypto three-reg SHA512 category
2025-04-15 11:31:00 -04:00
Lioncache
5fb0522c78
CodeEmitter/ASIMDOps: Add crypto three-reg imm2 category
2025-04-15 11:15:21 -04:00
Ryan Houdek
aa0fc9071e
CodeEmitter: Fixes typo in sha256h2
...
This was accidentally encoding as sha256h.
2025-04-02 12:38:47 -07:00
Lioncache
5708846a07
CodeEmitter/Registers: Replace use of deprecated std::is_trivial_v template
...
std::is_trivial/std::is_trivial_v is deprecated in C++26, so we can just
use a more specific trait and be more explicit about what we want.
Also some of these static_asserts were testing the constraints of the wrong
class, so we can tidy those up as well.
2025-03-29 00:28:14 -04:00
Ryan Houdek
fd28783f85
Merge pull request #4457 from lioncash/crypto
...
CodeEmitter/SVEOps: Add SVE2 crypto operations
2025-03-28 14:55:40 -07:00
Lioncache
63f72621fc
CodeEmitter/SVEOps: Add SVE2 crypto constructive binary operations
...
Likewise, these are now also available to test against in vixl.
2025-03-28 16:21:21 -04:00
Lioncache
580a8c9c61
CodeEmitter/SVEOps: Add SVE2 crypto destructive binary operations
...
These are also now available in vixl to run disassembly tests against.
2025-03-28 16:09:41 -04:00
Lioncache
249351cef4
CodeEmitter/SVEOps: Add SVE2 crypto unary operations
...
Now that these are available in vixl, we finally have something to test against.
2025-03-28 15:59:16 -04:00
Lioncache
497ee32f59
CodeEmitter: Generify data writing
...
Lets us tidy up the repeated generation code a little bit
(and also allow for generic data writing, should it ever be needed)
2025-03-28 09:55:35 -04:00
Ryan Houdek
b0b41d00ee
Various: More static analysis warnings cleanup
...
NFC
2025-03-12 17:27:41 -07:00
Ryan Houdek
c8d234a767
CodeEmitter: Adds missing assert checks
...
We weren't checking if the post-index variants of these instructions
were using the correct post-offset. These support /only/ the correctly
sized post-index. The no-offset version is an entirely different set of
functions.
2025-03-04 20:18:16 -08:00
Ryan Houdek
8d3918b4f0
CodeEmitter: Update tests and new assert for unallocated instruction encoding
2025-02-23 03:31:43 -08:00
Tony Wasserka
bb30a2eb1e
CodeEmitter: Remove unused member function
2025-02-16 16:30:05 +01:00
Ryan Houdek
cd5f42ec79
CodeEmitter: Minor fixes to SVE fcvtz{u,s}
...
We had duplicated code paths in the ternary selection for 64-bit source
size, and on 32-bit source size 16-bit is an invalid target so the
second ternary was dead.
2025-02-12 23:09:41 -08:00
Ryan Houdek
bc6ae7feb4
CodeEmitter: Fixes clang_format
2025-01-26 19:05:50 -08:00
Tony Wasserka
264f3be8b4
CodeEmitter: Remove unused Bind validation logic
2025-01-22 18:25:35 +01:00
Tony Wasserka
4282f96d35
CodeEmitter: Use inline constexpr constants over constexpr functions
2025-01-22 18:25:35 +01:00
Tony Wasserka
9cdd759fc1
CodeEmitter: Convert template specialization into function overload
2025-01-22 18:25:35 +01:00
Tony Wasserka
403e8f8702
CodeEmitter: Unify SingleUseForwardLabel and ForwardLabel
2025-01-22 18:25:35 +01:00
Tony Wasserka
8760c593ec
CodeEmitter: Reformat inl files
2025-01-21 21:28:33 +01:00
Tony Wasserka
ad695bdd59
CodeEmitter: Allow inl headers to be processed by external tooling
2025-01-21 21:28:33 +01:00
Tony Wasserka
da58e6a597
Fix warnings about unused variables
2025-01-21 12:07:33 +01:00
Tony Wasserka
e54b9237c6
Drop use of assume-asserting logging macros
2025-01-21 12:01:33 +01:00
Ryan Houdek
bb630797b5
CodeEmitter: Add support for TPIDRRO_EL0
2024-10-25 15:07:15 -07:00