MerryMage
19050b9e1c
fuzz_with_unicorn: Add large random block testing
2020-04-15 21:42:18 +01:00
MerryMage
a84a746831
A64: Add options for detecting misaligned loads and stores
2020-03-31 14:45:04 +01:00
Lioncash
5e6568dffa
A64/fuzz_with_unicorn: Avoid repeated unnecessary library calls in RunTestInstance()
...
Repeatedly retrieving the vectors and registers from unicorn involves
copying the entire set of registers and vectors by value instead of
simply retrieving a reference to them. Instead, we can just do the work
once and print out the values.
While we're at it, also make our bracing consistent.
2019-05-17 14:08:26 -04:00
MerryMage
59dc33ef12
emit_x64_vector: Changes to VectorSignedSaturatedDoublingMultiply
...
* Return both the upper and lower parts of the multiply if required
* SSE2 does not support the pmuldq instruction, do sign correction to an unsigned result instead
* Improve port utilisation where possible (punpck instructions were a bottleneck)
2018-09-15 09:55:25 +01:00
MerryMage
39818f98e8
emit_x64_floating_point: Hardware FMA implementation of FPRSqrtStepFused
2018-09-12 16:10:18 +01:00
MerryMage
1931d44495
simd_two_register_misc: FNEG (vector) with Q == 0 had dirty upper
2018-09-09 19:55:37 +01:00
Lioncash
02357939ac
ir/value: Replace includes with forward declarations
...
enum classes are still considered complete types when forward declared
(as the compiler knows the exact size of the type from the declaration
alone). The only difference in this case being that the members of the
enum class aren't visible. Given we don't use the members within this
header in any way, we can simply forward declare them here and remove
the inclusions.
2018-09-09 09:04:22 +01:00
MerryMage
959446573f
A64: Implement FastDispatchHint
2018-09-07 22:07:44 +01:00
MerryMage
720efe337e
emit_x64_floating_point: Fix smallest normal check in EmitFPMulAdd
2018-08-18 13:49:19 +01:00
MerryMage
6d236d459f
system: Implement MRS CNTFRQ_EL0
2018-08-16 09:58:34 +01:00
MerryMage
55190bd792
fuzz_with_unicorn: Split utility functions into fuzz_util
2018-08-11 20:51:30 +01:00
MerryMage
2d929cc3b3
tests: Refactor unicorn_emu to allow for A32 unicorn
2018-08-11 18:18:29 +01:00
MerryMage
67ba5d0072
fuzz_with_unicorn: Remove FCVT_float from ignore list
2018-08-03 08:18:40 +01:00
MerryMage
79e6440ea0
fuzz_with_unicorn: Randomize SP
2018-08-01 15:30:59 +01:00
MerryMage
33c80e3181
fuzz_with_unicorn: Randomize PC
2018-08-01 15:30:59 +01:00
MerryMage
8d41024661
testenv: Make code_mem mobile
2018-08-01 15:30:59 +01:00
MerryMage
a19fa0e294
fuzz_with_unicorn: Randomize FPCR.AHP and FPCR.FZ16
2018-07-31 21:27:24 +01:00
MerryMage
07622eedf0
emit_x64_vector_floating_point: Correct FMA in FTZ mode
...
x64 rounds before flushing to zero
AArch64 rounds after flushing to zero
This difference of behaviour is noticable if something would round to a smallest normalized number
2018-07-31 18:12:39 +01:00
MerryMage
f626ff82d0
backend_x64: Fix FPVectorMulAdd and FPMulAdd NaN handling with denormals
...
Denormals should be treated as zero in NaN handler
2018-07-31 16:07:46 +01:00
MerryMage
19ea70d3a0
fuzz_with_unicorn: Randomize FPCR.FZ
2018-07-31 15:39:39 +01:00
MerryMage
d7e2de2659
fuzz_with_unicorn: Extract RandomFpcr function
...
Deduplicate randomization of fpcr and make use of FP::FPCR
2018-07-31 12:35:04 +01:00
MerryMage
c9508c3d13
fuzz_with_unicorn: Randomize FPCR.DN
2018-07-30 14:52:22 +01:00
MerryMage
98e2380129
fuzz_with_unicorn: Disable testing of FDIV
2018-07-25 14:05:13 +01:00
MerryMage
d9b59c69de
A64: Implement SQXTUN
2018-07-24 16:32:10 +01:00
MerryMage
bed3cc03f9
u128: StickyLogicalShiftRight requires special-casing for amount == 64
...
In this case (128 - amount) == 64, and this invokes undefined behaviour
2018-07-23 20:22:01 +01:00
MerryMage
7d2d62ece7
emit_x64_floating_point: Implement accurate fallback for FPMulAdd{32,64}
2018-07-23 18:52:09 +01:00
MerryMage
fc6b73bd85
a64_emit_x64: Ensure host has updated ticks in EmitA64GetCNTPCT
...
Discovered by @Subv.
Fixes incomplete fix begun in 5a91c94dca47c9702dee20fbd5ae1f4c07eef9df.
That fix fails to take into account that LinkBlock doesn't update ticks until there
are no remaining ticks to be executed.
Test added to confirm fix.
2018-07-22 16:16:26 +01:00
MerryMage
888c6783a1
a64_emit_x64: Fix stack misalignment on Windows for 128-bit exclusive writes
...
Discovered by @Subv.
Includes a test to ensure this codepath is exercised on Windows.
2018-07-22 15:26:25 +01:00
MerryMage
5ae55914e2
tests: Add FABD test
2018-07-16 16:55:26 +01:00
MerryMage
9dd908de1d
fuzz_with_unicorn: Avoid self-modifying code
...
* Don't immediately terminate when unicorn raises an interrupt
* Detect self-modifying code
2018-07-15 12:07:52 +01:00
MerryMage
b81a9a52e1
fuzz_with_unicorn: Configure as per qemu max configuration
2018-07-14 08:51:08 +01:00
Lioncash
badc29f2ea
tests/unicorn: Add type aliases to the Unicorn class
...
Centralizes all register and vector array definitions to a single set of
aliases, so if these are ever changed, then the rest of the testing code
will follow suit without the need to manually change them.
2018-07-14 08:22:18 +01:00
MerryMage
22cd3bac86
tests/A64: Randomize FPCR.RMode for single random instruction
2018-07-14 07:11:32 +01:00
Lioncash
1bfac4aed0
inst_gen: Compress loop into std::any_of in IsInvalidInstruction()
...
Same behavior, but using a more self-documenting function.
2018-07-13 18:28:38 +01:00
Lioncash
a665470545
fuzz_with_unicorn: Move std::vector outside loop in small random block test case
...
Avoids constructing and destructing the vector repeatedly, we can just
alter the contents of the vector on each iteration instead. Also move
out the std::array instances as well, like with the floating-point test
case and the single random instruction test case.
We can also use the regular form of std::generate and avoid hardcoding
size values twice.
2018-07-13 14:48:09 +01:00
MerryMage
537df2e0b8
fuzz_with_unicorn: Temporarily disable FDIV
2018-07-12 22:34:58 +01:00
MerryMage
28786e6ee2
tests/A64: Test small blocks
2018-07-12 22:34:58 +01:00
MerryMage
fc5870d592
fuzz_with_unicorn: Randomize FPCR.RMode
2018-07-12 13:52:29 +01:00
MerryMage
f05cb06244
IR: Implement FPMulAdd
2018-06-08 15:23:35 +01:00
Lioncash
7dc6b5abb3
fuzz_with_unicorn: Make float_numbers in floating-point tests constexpr
...
Given this is just a lookup table, this can be made immutable.
2018-06-02 16:47:13 +01:00
Lioncash
be453b0e1c
fuzz_with_unicorn: Remove exclusion of FMOV (imm) for FP-16 floats
...
Qemu, or rather, Unicorn now supports FP-16, since I backported support
for the recent changes to mainline Qemu relating to FP-16 support.
2018-05-19 12:25:43 +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
1336e1a4ec
unicorn: Be explicit about casting away const to const-incorrect APIs
...
Uses C++ casts which silence relevant warnings in Xcode 9.3
Also migrates relevant Read function equivalents over for consistency.
2018-04-15 08:54:36 +01:00
MerryMage
f0ba929fc3
fuzz_with_unicorn: Correct GenRandomInst
...
UnallocatedEncoding is now handled in ShouldTestInst
2018-04-04 11:15:56 +01:00
MerryMage
da9a4f8877
A64: Partially implement FCVTZU (scalar, fixed-point) and FCVTZS (scalar, fixed-point)
2018-02-20 18:45:28 +00:00
MerryMage
31e370cdf4
A64: Implement system register CNTPCT_EL0
2018-02-20 16:56:05 +00:00
MerryMage
7cef39bdb4
fuzz_with_unicorn: QEMU's implementation of FCVT is incorrect
2018-02-18 13:47:41 +00:00
MerryMage
30b596df19
fuzz_with_unicorn: Explicitly test floating point instructions
2018-02-18 13:18:22 +00:00
MerryMage
4aefed05d5
fuzz_with_unicorn: Print AArch64 disassembly
2018-02-18 13:18:22 +00:00
MerryMage
9527d52c49
Exclusive fixups
...
* Incorrect size of exclusive_address
* Disable tests on exclusive memory instructions for now
2018-02-13 15:47:52 +00:00