diff options
| author | Ryan Houdek <Sonicadvance1@gmail.com> | 2015-01-08 19:04:14 -0600 |
|---|---|---|
| committer | Ryan Houdek <Sonicadvance1@gmail.com> | 2015-01-08 19:04:14 -0600 |
| commit | 6bc274a9683bbf893ba303744148087dd0c56f2e (patch) | |
| tree | 4fa31051c48ac1c26ac6a1a76ff932cf736d098e /Source/UnitTests/Common | |
| parent | feba284b6ddb6015dbf308635e8cb81a8dcb1747 (diff) | |
| parent | 1efa9b8b720445f56db535bd1ab34b99c86ea1ef (diff) | |
Merge pull request #1844 from Tilka/sse_mov
x64Emitter: fix MOVLPD/MOVHPD
Diffstat (limited to 'Source/UnitTests/Common')
| -rw-r--r-- | Source/UnitTests/Common/x64EmitterTest.cpp | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/Source/UnitTests/Common/x64EmitterTest.cpp b/Source/UnitTests/Common/x64EmitterTest.cpp index 83a3741e7f..6b875752f8 100644 --- a/Source/UnitTests/Common/x64EmitterTest.cpp +++ b/Source/UnitTests/Common/x64EmitterTest.cpp @@ -728,9 +728,44 @@ TWO_OP_SSE_TEST(UCOMISS, "dword") TWO_OP_SSE_TEST(COMISD, "qword") TWO_OP_SSE_TEST(UCOMISD, "qword") +// register-only instructions +#define TWO_OP_SSE_REG_TEST(Name, MemBits) \ + TEST_F(x64EmitterTest, Name) \ + { \ + for (const auto& r1 : xmmnames) \ + { \ + for (const auto& r2 : xmmnames) \ + { \ + emitter->Name(r1.reg, r2.reg); \ + ExpectDisassembly(#Name " " + r1.name + ", " + r2.name); \ + } \ + } \ + } + +TWO_OP_SSE_REG_TEST(MOVHLPS, "qword") +TWO_OP_SSE_REG_TEST(MOVLHPS, "qword") + +// "register + memory"-only instructions +#define TWO_OP_SSE_MEM_TEST(Name, MemBits) \ + TEST_F(x64EmitterTest, Name) \ + { \ + for (const auto& r1 : xmmnames) \ + { \ + emitter->Name(r1.reg, MatR(R12)); \ + ExpectDisassembly(#Name " " + r1.name + ", " MemBits " ptr ds:[r12]"); \ + emitter->Name(MatR(R12), r1.reg); \ + ExpectDisassembly(#Name " " MemBits " ptr ds:[r12], " + r1.name); \ + } \ + } + +TWO_OP_SSE_MEM_TEST(MOVLPS, "qword") +TWO_OP_SSE_MEM_TEST(MOVHPS, "qword") +TWO_OP_SSE_MEM_TEST(MOVLPD, "qword") +TWO_OP_SSE_MEM_TEST(MOVHPD, "qword") + // TODO: CMPSS/SD // TODO: SHUFPS/PD -// TODO: SSE MOVs +// TODO: more SSE MOVs // TODO: MOVMSK TEST_F(x64EmitterTest, MASKMOVDQU) |
