MerryMage
8cf8270139
A64: Implement FRINT{N,M,P,Z,A,X,I} (vector), single/double variant
2018-07-30 13:32:20 +01:00
MerryMage
8f46c26d26
IR: Initial implementation of FPVectorRoundInt
2018-07-30 13:31:51 +01:00
MerryMage
97017bbdf7
A64: Implement SQADD and SQSUB, scalar variant
2018-07-30 11:01:38 +01:00
MerryMage
ce58863903
IR: Generalise SignedSaturated{Add,Sub} to support more bitwidths
2018-07-30 11:01:36 +01:00
MerryMage
e80f8ff244
a64_emit_x64: Bugfix EmitA64OrQC - Incorrect argument
2018-07-30 11:00:37 +01:00
Lioncash
1e4ec7e1f0
simd_three_same: Extract non-paired SMAX, SMIN, UMAX, UMIN code to a common function
...
Deduplicates a bit of code and makes its layout consistent with the
paired variants
2018-07-30 08:40:32 +01:00
Lioncash
6f9dc9b143
A64: Implement SMAXP, SMINP, UMAXP, UMINP
2018-07-30 08:40:32 +01:00
Lioncash
1dfb29fc14
ir: Add opcodes for vector paired maximum and minimums
...
For the time being, we can just do a naive implementation which avoids
falling back to the interpreter a bit. Horizontal operations aren't
necessarily x86 SIMD's forte anyways.
2018-07-30 08:40:32 +01:00
Lioncash
017b51095f
A64: Implement SMAXV, SMINV, UMAXV, and UMINV
2018-07-30 08:39:33 +01:00
Lioncash
aae22eec26
ir: Add opcodes for performing scalar integral min/max
2018-07-30 08:39:33 +01:00
Lioncash
6ef3af3bc9
A64: Implement PMULL{2}
2018-07-29 10:04:58 +01:00
Lioncash
2a4ce19af3
translate: Deduplicate GetDataSize() functions
...
Avoids defining the same function multiple times in different files.
2018-07-29 10:00:34 +01:00
Lioncash
0e015008af
floating_point_{conditional}_compare: Deduplicate code
...
Deduplicates the implementation code of instructions by extracting the
code to a common function.
2018-07-29 10:00:34 +01:00
MerryMage
259237ce58
common: Move all cryptographic function to common/crypto
2018-07-29 08:49:12 +01:00
MerryMage
c5f1080b40
a32_emit_x64: BMI2 implementation of A32SetCpsr
2018-07-27 11:41:31 +01:00
MerryMage
a23304a16c
a32_emit_x64: Shorten EmitA32GetCpsr
2018-07-27 11:24:06 +01:00
MerryMage
57604d2ea8
a32_emit_x64: Assert that memory layout assumption in EmitA32GetCpsr is valid
2018-07-26 19:26:01 +01:00
Lioncash
945fa48667
A64: Implement PMUL
2018-07-26 16:16:30 +01:00
Lioncash
656a4042a2
ir: Add opcode for performing polynomial multiplication
2018-07-26 16:16:30 +01:00
MerryMage
05143df9d8
A64: Implement FCVT{N,M,A,P}{U,S} (vector), FCVTZU (vector, integer), single/double variant
2018-07-26 12:48:36 +01:00
MerryMage
34ce767a00
A64: Implement FCVTZS (vector, integer), single/double variant
2018-07-26 12:48:36 +01:00
MerryMage
0f9bc2d391
IR: Implement FPVectorTo{Signed,Unsigned}Fixed
2018-07-26 12:48:36 +01:00
MerryMage
0189e4454a
fp/info: Replace constant value generators with FPValue
...
Instead of having multiple different functions we can just have one.
2018-07-26 11:35:35 +01:00
MerryMage
db165684c0
emit_x64_vector_floating_point: AVX implementation of FPVector{Max,Min}
2018-07-26 10:10:47 +01:00
MerryMage
31148bdb42
emit_x64_vector_floating_point: Remove unnecessary double jump in HandleNaNs
2018-07-26 09:42:34 +01:00
Lioncash
4c3ca51e86
A64: Implement FMAX's vector single and double precision variants
2018-07-26 09:32:02 +01:00
Lioncash
bf0f21cc12
A64: Implement FMIN's vector single and double precision variants
2018-07-26 09:32:02 +01:00
MerryMage
76f0ca04d6
IR: Implement FPVector{Max,Min}
2018-07-26 09:31:56 +01:00
MerryMage
6c37c311de
FPRecipEstimate: Move offset out of function
...
MSVC has weird lambda capturing rules.
2018-07-25 19:22:35 +01:00
MerryMage
59546f3c60
microinstruction: Update ReadsFromAndWritesToFPSRCumulativeExceptionBits
2018-07-25 19:17:07 +01:00
MerryMage
3f6b03a06b
A64: Implement FRECPS, vector/scalar single/double variants
2018-07-25 19:14:23 +01:00
MerryMage
2d2ca5ebc1
IR: Implement FPRecipStepFused, FPVectorRecipStepFused
2018-07-25 19:14:23 +01:00
MerryMage
5cb9f1dab2
A64: Implement FRECPE, vector single/double variant
2018-07-25 18:55:58 +01:00
MerryMage
c5a14ab21b
IR: Implement FPVectorRecipEstimate
2018-07-25 18:55:40 +01:00
MerryMage
56f8a0b172
A64: Implement FRECPE, scalar single/double variant
2018-07-25 18:47:45 +01:00
MerryMage
fde69b4d36
IR: Implement FPRecipEstimate
2018-07-25 18:47:22 +01:00
MerryMage
186e52ca50
IR: Implement FPRecipEstimate
2018-07-25 18:36:40 +01:00
MerryMage
cf2e1aed96
fp: Change FPUnpacked to a normalized representation
...
Having a known position for the highest set bit makes writing algorithms easier
2018-07-25 17:42:36 +01:00
MerryMage
98e2380129
fuzz_with_unicorn: Disable testing of FDIV
2018-07-25 14:05:13 +01:00
MerryMage
041b7d5e17
block_of_code: Add ABI_PARAMS array
2018-07-25 13:59:14 +01:00
MerryMage
2a2371c7a5
A64: Implement MLA, MLS (by element), vector single/double variant
2018-07-25 13:58:34 +01:00
MerryMage
78c640ad9e
A64: Implement FMLS (vector), single/double variant
2018-07-25 13:45:02 +01:00
MerryMage
b6b6993884
emit_x64_vector_floating_point: Specify NanHandler::function_type explicitly
...
MSVC doesn't like dealing with auto return types
2018-07-25 13:38:32 +01:00
MerryMage
4b9d12a585
emit_x64_vector_floating_point: ChooseOnFsize arguments maybe_unused
2018-07-25 13:27:31 +01:00
MerryMage
b1e3616de2
IR: Implement FPVectorNeg
2018-07-25 13:25:35 +01:00
MerryMage
4343612ec4
A64: Implement FMLA (vector), single/double variant
2018-07-25 13:20:07 +01:00
MerryMage
93eeb25fac
IR: Implement FPVectorMulAdd
2018-07-25 13:19:48 +01:00
MerryMage
57e5c7e7a5
emit_x64_vector_floating_point: Standardize naming scheme
2018-07-25 12:08:00 +01:00
MerryMage
bcb9e4106d
emit_x64_floating_point: Simplify indexers
2018-07-25 12:05:41 +01:00
MerryMage
83aa5854b6
emit_x64_vector_floating_point: Simplify EmitVectorOperation*
2018-07-25 11:34:22 +01:00