Lioncash
e662942ee3
A64: Implement SRSRA (scalar)
2018-05-12 11:17:19 +01:00
Lioncash
4a81075641
A64: Implement SRSHR (scalar)
2018-05-12 11:17:19 +01:00
Lioncash
ae666903c4
A64: Implement SABA
2018-05-12 11:16:42 +01:00
Lioncash
1629beed25
A64: Implement SABD
2018-05-12 11:16:42 +01:00
Lioncash
d7951233bd
ir: Add opcodes for signed absolute differences
2018-05-12 11:16:42 +01:00
Tillmann Karras
0718ee4482
decoder_detail: use structured bindings
2018-05-12 11:15:39 +01:00
Lioncash
cee8bfa797
CMakeLists: Add detection for Aarch64 compiler environments
...
Just closes a small hole in architecture detection for the ARM family.
2018-05-10 00:35:50 +01:00
Lioncash
e0faf3277e
simd_two_register_misc: Handle 64-bit case for SCVTF_int_4
2018-05-08 18:14:50 +01:00
Lioncash
b166981ff5
ir: Add opcode to perform the vector conversion S64->F64
...
Unfortunately x86 prior to AVX-512 doesn't really give us any convenient instruction to do the work for us
2018-05-08 18:14:50 +01:00
Lioncash
4d2c5184ff
A64: Implement SHLL/SHLL2
2018-05-08 17:57:55 +01:00
Lioncash
ae57f6eb58
A64: Add missing decoding for PRFM (unscaled offset)
2018-05-08 15:01:53 +01:00
Lioncash
3e0861d013
A64: Implement UHSUB
2018-05-07 19:04:10 +01:00
Lioncash
93255e6dbd
A64: Implement SHSUB
2018-05-07 19:04:10 +01:00
Lioncash
a0e3943ade
ir: Add opcodes for performing vector halving subtracts
2018-05-07 19:04:10 +01:00
Lioncash
b4a2d497f9
A64: Implement SM4EKEY
2018-05-07 19:01:22 +01:00
Lioncash
4372700ec9
A64: Implement SM4E
2018-05-07 19:01:22 +01:00
Lioncash
284afd18cb
ir: Add an opcode for doing an SM4 lookup table query
2018-05-07 19:01:22 +01:00
Lioncash
97a9fce094
emit_x64_vector: Use VPOPCNTB in EmitVectorPopulationCount() if AVX-512 BITALG is available
2018-05-07 16:40:28 +01:00
Lioncash
f5fe2af89c
fuzz_with_unicorn: Silence unused variable warning
...
Currently, structured bindings don't provide a way to ignore unused variables.
2018-05-07 16:39:42 +01:00
Lioncash
a86f56eb43
externals: Update Catch to v2.2.2
...
Keeps the unit-testing library up to date.
2018-05-07 16:39:42 +01:00
Lioncash
6d0b58039e
A64: Implement UHADD
2018-05-07 16:39:17 +01:00
Lioncash
e4efd365fb
A64: Implement SHADD
2018-05-07 16:39:17 +01:00
Lioncash
1da4671b53
ir: Add opcodes for performing halving adds
2018-05-07 16:39:17 +01:00
Lioncash
fae2d940f2
emit_x64_vector: Emit VPMINSQ and VPMINUQ for 64-bit vector min operations if AVX-512VL is available
2018-05-04 07:52:22 +01:00
Lioncash
ec66d94121
emit_x64_vector: Emit VPMAXSQ and VPMAXUQ for 64-bit vector max operations if AVX-512VL is available
2018-05-04 07:52:22 +01:00
Lioncash
69ac6dfca6
emit_x64_vector_floating_point: Deduplicate accurate NaN handling code
...
Allows the code to both be used from the 32 bit and 64 bit operations without duplicating code.
2018-05-03 23:22:50 +01:00
Lioncash
4ca546ce4d
emit_x64_vector: Emit VPABSQ in EmitVectorAbs() for the 64-bit case if AVX-512VL is available
2018-05-03 23:22:18 +01:00
Lioncash
c9a6d6264e
emit_x64_vector: Use VPSRAQ in EmitVectorArithmeticShiftRight64() if AVX-512VL is available
2018-05-03 16:13:11 +01:00
Lioncash
7a066fb011
disassembler_arm: Remove rotation helper function in favor of Common::RotateRight
...
Mildly reduces the amount of duplicated behavior
2018-05-02 17:14:13 +01:00
Lioncash
75d0b1ebd8
emit_x64_vector: Vectorize fallback path of EmitVectorMaxS32()
2018-05-02 17:14:07 +01:00
Lioncash
7f3cfff647
emit_x64_vector: Vectorize fallback path of EmitVectorMaxS8()
2018-05-02 17:14:07 +01:00
Lioncash
9607376f2f
emit_x64_vector: Vectorize fallback path in EmitVectorMinU32()
2018-05-02 17:13:41 +01:00
Lioncash
1162be609d
emit_x64_vector: Vectorize fallback path in EmitVectorMinU16()
2018-05-02 17:13:41 +01:00
Lioncash
7cab5c2e03
emit_x64_vector: Vectorize fallback path in EmitVectorMinS32()
2018-05-02 17:13:41 +01:00
Lioncash
7fa0d2765a
emit_x64_vector: Vectorize fallback path in EmitVectorMinS8()
2018-05-02 17:13:41 +01:00
Lioncash
73477f04dd
emit_x64_vector: Remove unnecessary if constexpr expression in LogicalVShift
...
This can simply be merged with the previous one.
2018-05-01 19:31:48 +01:00
Lioncash
f90a476546
emit_x64_vector: Avoid left shift of negative value in LogicalVShift
...
Now that we handle the signed variants, we also have to be careful about left shifts with negative values,
as this is considered undefined behavior.
2018-05-01 19:31:48 +01:00
Lioncash
e08c1bdae1
a64_jitstate: Zero SP and PC on construction of A64JitState
...
Given we zero out/reset everything else in the struct, do the same for these members to keep initialization consistent
2018-05-01 19:31:05 +01:00
Lioncash
e33ba25d8a
backend_x64/callback: Default virtual destructor in the cpp file
...
Prevents the vtable being generated in each translation unit that includes the header (and silences -Wweak-vtables warnings)
2018-05-01 19:30:56 +01:00
Lioncash
83e20fc690
a32_interface/a64_interface: Change reinterpret_casts to static_casts in GetCurrentBlock thunks
...
It's well-defined to static_cast a void* to its proper type.
2018-05-01 19:30:25 +01:00
Lioncash
8aa9a47a6a
A64: Implement SSHL (scalar)
2018-04-30 22:41:17 +01:00
Lioncash
8818d76212
A64: Implement SSHL (vector)
2018-04-30 22:41:17 +01:00
Lioncash
3e3ce37eb8
backend_x64/ir: Amend generic LogicalVShift() template to also handle signed variants
...
Also adds IR opcodes to dispatch said variants
2018-04-30 22:41:17 +01:00
Lioncash
4cb09c827d
emit_x64_vector_floating_point: Use arrays for retrieving size instead of hardcoding the size
...
Similar changes were done in emit_x64_vector, but these were missed.
2018-04-30 22:40:25 +01:00
Lioncash
5e20e5a44a
emit_x64_vector: Vectorize fallback path in EmitVectorMaxU16()
2018-04-28 19:19:06 +01:00
Lioncash
fea1e6ca1f
A64: Implement CMTST's scalar variant
2018-04-28 19:17:38 +01:00
Lioncash
f8a96dbe5f
emit_x64_vector: Vectorize non-SSE4.1 fallback path for VectorMultiply32()
2018-04-28 19:17:18 +01:00
Lioncash
43a3873dd2
emit_x64_vector: Use VBPROADCAST where applicable and available
...
Uses the instruction that does what it says in its name if available. Allows avoiding the use
of a scratch register in EmitVectorBroadcast8() and EmitVectorBroadcastLower8()'s SSSE3 path.
2018-04-26 22:28:09 +01:00
Lioncash
2a35b2a46a
A64: Implement UZP1 and UZP2
2018-04-26 08:49:51 +01:00
Lioncash
9c2550ac72
ir: Add opcodes for performing vector deinterleaving
2018-04-26 08:49:51 +01:00