Lioncache
bd9897b164
ARMEmitter: Handle BFCVTNT
2026-09-03 06:33:02 -04:00
Lioncache
e704275ffd
ARMEmitter: Handle BFCVT
2026-09-03 06:32:57 -04:00
Tony Wasserka
d27c9d3f98
CodeEmitter: Fix ambigious ExtendedType declaration
2026-03-16 18:50:01 +01:00
Tony Wasserka
89b976121f
JIT: Ensure code cache consistency by zero-initializing padding bytes
2026-02-23 16:49:02 +01:00
Lioncache
7bb0ce810e
JIT: Expand LongAddressGen() to handle movz+movk sequence
...
This is only ever used on the path where we'd want to handle something
like this (in EmitEntryPoint()), so we can just extend the long handler
type instead of introducing a new type to handle this.
2025-11-13 11:16:34 -05:00
Ryan Houdek
a57c557485
CodeEmitter: Removes a few spurious asserts
...
These are handled with restart.
2025-11-11 18:25:21 -08:00
Tony Wasserka
a61ab2803c
CodeEmitter: Drop noisy (un)likely attributes
...
General usage of these attributes is discouraged. Since this is not
instruction-level performance critical code, drop them.
2025-11-05 09:47:02 +01:00
Ryan Houdek
209ad27332
Code view
2025-11-05 09:47:02 +01:00
Ryan Houdek
9cf25e276d
CodeEmitter: Return bool if Label instructions can't be encoded
...
Programming error if they aren't checked, as they will encode
incorrectly if they are too large for their respective instructions.
2025-11-05 09:47:02 +01:00
Lioncache
6a19c77184
General: Migrate to std::bit_cast
...
We already have a few cases where we already use bit_cast in the
emitter, so we may as well move all of our temporary helper instances
over as well.
2025-09-30 22:20:10 -04:00
Tony Wasserka
9fdd96af61
Update code formatting
2025-09-11 10:40:29 +02:00
Lioncache
a144622a06
VixlUtils: Remove IsPowerOf2()
...
std::has_single_bit already does this.
2025-09-03 05:46:29 -04:00
Lioncache
05c814b8c1
VixlUtils: Use std::countl_zero where applicable
...
Makes for a little less code.
2025-09-03 05:45:02 -04:00
Tony Wasserka
51e64c69f3
LogManager: Unconditionally evaluate assertion conditions
...
A prevalent pattern in the FEX codebase is to compute some data and store it
in a maybe_unused variable that's only ever passed to LOGMAN_THROW_A_FMT.
Besides few exceptions, we never compute expensive data in the macro
arguments themselves, so we can remove a lot of code noise by unconditionally
evaluating the condition even in assertion-disabled builds.
2025-08-25 10:36:01 +02:00
Ryan Houdek
0457bdc7ce
Merge pull request #4751 from lioncash/perm
...
ASIMDOps: Remove unused permute overloads
2025-08-01 12:45:50 -07:00
Lioncache
b460cbc91a
ASIMDOps: Remove unused permute overloads
...
These aren't used at all and don't really provide anything that the existing
non-templated overloads can't.
2025-08-01 11:51:55 -04:00
Lioncache
f7939078c2
ASIMDOps: Remove unnecessary ins() overload
...
There's no difference between this and the non-templated version, in fact,
this variant wasn't even used at all, so we can just remove it.
2025-08-01 11:24:44 -04:00
Lioncache
e103af3b93
ASIMDOps: Move base opcode into ASIMDScalarCopy()
...
Now we have no more duplicated opcodes in ASIMDOps.
2025-08-01 11:13:58 -04:00
Lioncache
45bec06d5b
ASIMDOps: Move base opcode into ASIMDFloatConvBetweenInt()
...
Deduplicates the second last remaining instruction category in ASIMDOps
2025-08-01 10:49:52 -04:00
Lioncache
e624e87b29
ASIMDOps: Move base opcode into ASIMDExtract()
...
Minor deduplication of the base opcode.
2025-07-31 10:44:06 -04:00
Lioncache
6ff8d0953f
ASIMDOps: Move base opcode into ASIMDPermute()
...
Gets rid of the need to respecify the base opcode in every instruction implementation
2025-07-31 10:43:17 -04:00
Lioncache
9f2fcdf0b3
ASIMDOps: Move base opcode into Crypto2RegSHA()/Crypto3RegSHA()
...
Removes the need to specify the base opcode multiple times.
2025-07-31 10:23:38 -04:00
Lioncache
cecb9bfe32
ASIMDOps: Move base opcode into CryptoAES()
...
Minor deduplication.
2025-07-31 10:15:15 -04:00
Lioncache
6a989d844a
ASIMDOps: Move base opcode into ASIMDTable()
...
Gets rid of duplication of the opcode in all instruction implementations.
2025-07-31 10:10:35 -04:00
Lioncache
017952e89e
ASIMDOps: Constrain more instructions with IsQOrDRegister
...
We had quite a few instructions that we weren't constraining with this,
now the instruction itself will show up in the failure output more immediately
instead of failing on the internal implementation function if anything is
incorrectly passed through.
2025-07-30 19:03:33 -04:00
Lioncache
b1ef8bbc5a
ASIMDOps: Move base opcode into ASIMDModifiedImm()
2025-07-30 18:03:43 -04:00
Lioncache
f19a6343dd
ASIMDOps: Move base opcode into ASIMDShiftByImm()
...
Avoids needing to duplicate the opcode all over the place
2025-07-30 18:03:36 -04:00
Lioncache
ed7bc28c21
ASIMDOps: Simplify size conditionals in several 2-reg misc instructions
...
In many of these, the long ternaries are equivalent to a subtraction by 1,
which is much more efficient
2025-07-30 16:31:33 -04:00
Lioncache
05dcb160bd
ASIMDOps: Move base opcode into ASIMD2RegMisc()
...
Avoids the need to specify the opcode repeatedly, making implementations less noisy.
2025-07-30 16:25:24 -04:00
Lioncache
a3e02cbafa
ASIMDOps: Simplify conditionals in saddlv/uaddlv
...
Really all these size conversions are emulating is a subtraction by 1.
Also we can drop in an assert that was missed in uaddlv
2025-07-30 11:21:06 -04:00
Lioncache
4cca2f6915
ASIMDOps: Move base opcode into ASIMDAcrossLanes()
2025-07-30 11:07:08 -04:00
Lioncache
64ca48c4b1
ASIMDOps: Move base opcode into ASIMD3Different()
...
Deduplicates the open-coded base opcode in the instruction implementations.
2025-07-30 10:59:11 -04:00
Lioncache
74a897271f
ASIMDOps: Move base opcode into ASIMD3Same()
...
Moves the base opcode into the actual implementation, so that we
aren't open-coding it into every relevant instruction function.
2025-07-30 10:40:17 -04:00
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