Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions backend/remill/lib/Arch/X86/Runtime/Instructions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -215,8 +215,8 @@ DEF_HELPER(SquareRoot32, float32_t src_float)->float32_t {
// #include "lib/Arch/X86/Semantics/FMA.cpp"
// #include "lib/Arch/X86/Semantics/INTERRUPT.cpp"
// #include "lib/Arch/X86/Semantics/IO.cpp"
// #include "lib/Arch/X86/Semantics/LOGICAL.cpp"
// #include "lib/Arch/X86/Semantics/MISC.cpp"
#include "lib/Arch/X86/Semantics/LOGICAL.cpp"
#include "lib/Arch/X86/Semantics/MISC.cpp"
// #include "lib/Arch/X86/Semantics/MMX.cpp"
// #include "lib/Arch/X86/Semantics/NOP.cpp"
// #include "lib/Arch/X86/Semantics/POP.cpp"
Expand Down
150 changes: 140 additions & 10 deletions backend/remill/tests/X86/BINARY/ADDPD.S
Original file line number Diff line number Diff line change
Expand Up @@ -15,25 +15,77 @@
*/

TEST_BEGIN(ADDPDv128v128_04, 1)
TEST_INPUTS(0)
TEST_INPUTS(
0x0000000000000000, /* +0.0 */
0x3FE0000000000000, /* 0.5 */
0x3FF0000000000000, /* 1.0 */
0x4000000000000000, /* 2.0 */
0x4059000000000000, /* 100.0 */
0x400921FB54442D18, /* pi */
0x8000000000000000, /* -0.0 */
0xBFF0000000000000, /* -1.0 */
0x7FF0000000000000, /* +Inf */
0x0010000000000000, /* smallest normal */
0x7FEFFFFFFFFFFFFF, /* largest finite */
0x0000000000000001, /* smallest subnormal */
0xFFFFFFFFFFFFFFFF) /* NaN / all-ones */
addpd xmm0, xmm4
TEST_END

TEST_BEGIN(ADDPDv128v128_40, 1)
TEST_INPUTS(0)
TEST_INPUTS(
0x0000000000000000, /* +0.0 */
0x3FE0000000000000, /* 0.5 */
0x3FF0000000000000, /* 1.0 */
0x4000000000000000, /* 2.0 */
0x4059000000000000, /* 100.0 */
0x400921FB54442D18, /* pi */
0x8000000000000000, /* -0.0 */
0xBFF0000000000000, /* -1.0 */
0x7FF0000000000000, /* +Inf */
0x0010000000000000, /* smallest normal */
0x7FEFFFFFFFFFFFFF, /* largest finite */
0x0000000000000001, /* smallest subnormal */
0xFFFFFFFFFFFFFFFF) /* NaN / all-ones */
addpd xmm4, xmm0
TEST_END

#if APPLE_SAFE_TESTS

TEST_BEGIN(ADDPDv128m128_04, 1)
TEST_INPUTS(0)
TEST_INPUTS(
0x0000000000000000, /* +0.0 */
0x3FE0000000000000, /* 0.5 */
0x3FF0000000000000, /* 1.0 */
0x4000000000000000, /* 2.0 */
0x4059000000000000, /* 100.0 */
0x400921FB54442D18, /* pi */
0x8000000000000000, /* -0.0 */
0xBFF0000000000000, /* -1.0 */
0x7FF0000000000000, /* +Inf */
0x0010000000000000, /* smallest normal */
0x7FEFFFFFFFFFFFFF, /* largest finite */
0x0000000000000001, /* smallest subnormal */
0xFFFFFFFFFFFFFFFF) /* NaN / all-ones */
movdqu [rsp - 16], xmm4
addpd xmm0, [rsp - 16]
TEST_END

TEST_BEGIN(ADDPDv128m128_40, 1)
TEST_INPUTS(0)
TEST_INPUTS(
0x0000000000000000, /* +0.0 */
0x3FE0000000000000, /* 0.5 */
0x3FF0000000000000, /* 1.0 */
0x4000000000000000, /* 2.0 */
0x4059000000000000, /* 100.0 */
0x400921FB54442D18, /* pi */
0x8000000000000000, /* -0.0 */
0xBFF0000000000000, /* -1.0 */
0x7FF0000000000000, /* +Inf */
0x0010000000000000, /* smallest normal */
0x7FEFFFFFFFFFFFFF, /* largest finite */
0x0000000000000001, /* smallest subnormal */
0xFFFFFFFFFFFFFFFF) /* NaN / all-ones */
movdqu [rsp - 16], xmm0
addpd xmm4, [rsp - 16]
TEST_END
Expand All @@ -42,34 +94,112 @@ TEST_END

#if HAS_FEATURE_AVX
TEST_BEGIN(VADDPDv128v128_04, 1)
TEST_INPUTS(0)
TEST_INPUTS(
0x0000000000000000, /* +0.0 */
0x3FE0000000000000, /* 0.5 */
0x3FF0000000000000, /* 1.0 */
0x4000000000000000, /* 2.0 */
0x4059000000000000, /* 100.0 */
0x400921FB54442D18, /* pi */
0x8000000000000000, /* -0.0 */
0xBFF0000000000000, /* -1.0 */
0x7FF0000000000000, /* +Inf */
0x0010000000000000, /* smallest normal */
0x7FEFFFFFFFFFFFFF, /* largest finite */
0x0000000000000001, /* smallest subnormal */
0xFFFFFFFFFFFFFFFF) /* NaN / all-ones */
vaddpd xmm0, xmm1, xmm4
TEST_END

TEST_BEGIN(VADDPDv128v128_40, 1)
TEST_INPUTS(0)
TEST_INPUTS(
0x0000000000000000, /* +0.0 */
0x3FE0000000000000, /* 0.5 */
0x3FF0000000000000, /* 1.0 */
0x4000000000000000, /* 2.0 */
0x4059000000000000, /* 100.0 */
0x400921FB54442D18, /* pi */
0x8000000000000000, /* -0.0 */
0xBFF0000000000000, /* -1.0 */
0x7FF0000000000000, /* +Inf */
0x0010000000000000, /* smallest normal */
0x7FEFFFFFFFFFFFFF, /* largest finite */
0x0000000000000001, /* smallest subnormal */
0xFFFFFFFFFFFFFFFF) /* NaN / all-ones */
vaddpd xmm1, xmm4, xmm0
TEST_END

TEST_BEGIN(VADDPDv256v256_04, 1)
TEST_INPUTS(0)
TEST_INPUTS(
0x0000000000000000, /* +0.0 */
0x3FE0000000000000, /* 0.5 */
0x3FF0000000000000, /* 1.0 */
0x4000000000000000, /* 2.0 */
0x4059000000000000, /* 100.0 */
0x400921FB54442D18, /* pi */
0x8000000000000000, /* -0.0 */
0xBFF0000000000000, /* -1.0 */
0x7FF0000000000000, /* +Inf */
0x0010000000000000, /* smallest normal */
0x7FEFFFFFFFFFFFFF, /* largest finite */
0x0000000000000001, /* smallest subnormal */
0xFFFFFFFFFFFFFFFF) /* NaN / all-ones */
vaddpd ymm0, ymm1, ymm4
TEST_END

TEST_BEGIN(VADDPDv256v256_40, 1)
TEST_INPUTS(0)
TEST_INPUTS(
0x0000000000000000, /* +0.0 */
0x3FE0000000000000, /* 0.5 */
0x3FF0000000000000, /* 1.0 */
0x4000000000000000, /* 2.0 */
0x4059000000000000, /* 100.0 */
0x400921FB54442D18, /* pi */
0x8000000000000000, /* -0.0 */
0xBFF0000000000000, /* -1.0 */
0x7FF0000000000000, /* +Inf */
0x0010000000000000, /* smallest normal */
0x7FEFFFFFFFFFFFFF, /* largest finite */
0x0000000000000001, /* smallest subnormal */
0xFFFFFFFFFFFFFFFF) /* NaN / all-ones */
vaddpd ymm1, ymm4, ymm0
TEST_END

#if APPLE_SAFE_TESTS
TEST_BEGIN(VADDPDv128m128_45, 1)
TEST_INPUTS(0)
TEST_INPUTS(
0x0000000000000000, /* +0.0 */
0x3FE0000000000000, /* 0.5 */
0x3FF0000000000000, /* 1.0 */
0x4000000000000000, /* 2.0 */
0x4059000000000000, /* 100.0 */
0x400921FB54442D18, /* pi */
0x8000000000000000, /* -0.0 */
0xBFF0000000000000, /* -1.0 */
0x7FF0000000000000, /* +Inf */
0x0010000000000000, /* smallest normal */
0x7FEFFFFFFFFFFFFF, /* largest finite */
0x0000000000000001, /* smallest subnormal */
0xFFFFFFFFFFFFFFFF) /* NaN / all-ones */
movdqu [rsp - 16], xmm5
vaddpd xmm1, xmm4, [rsp - 16]
TEST_END

TEST_BEGIN(VADDPDv256m256_45, 1)
TEST_INPUTS(0)
TEST_INPUTS(
0x0000000000000000, /* +0.0 */
0x3FE0000000000000, /* 0.5 */
0x3FF0000000000000, /* 1.0 */
0x4000000000000000, /* 2.0 */
0x4059000000000000, /* 100.0 */
0x400921FB54442D18, /* pi */
0x8000000000000000, /* -0.0 */
0xBFF0000000000000, /* -1.0 */
0x7FF0000000000000, /* +Inf */
0x0010000000000000, /* smallest normal */
0x7FEFFFFFFFFFFFFF, /* largest finite */
0x0000000000000001, /* smallest subnormal */
0xFFFFFFFFFFFFFFFF) /* NaN / all-ones */
vmovdqu [rsp - 32], ymm5
vaddpd ymm1, ymm4, [rsp - 32]
TEST_END
Expand Down
Loading