summaryrefslogtreecommitdiff
path: root/simplex86.c
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <ssp@redhat.com>2013-09-06 11:42:42 -0400
committerSøren Sandmann Pedersen <ssp@redhat.com>2013-09-06 11:42:42 -0400
commitdb943fba243f0db60c967fbbd720650a705f5b35 (patch)
tree641249c7762e75ed0d1714a7a567325970f2987b /simplex86.c
parent1f4a34212b8ae6410c0af541e28fa99f151658df (diff)
Add more movd/movq plus test suite
Diffstat (limited to 'simplex86.c')
-rw-r--r--simplex86.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/simplex86.c b/simplex86.c
index 3409215..3e24df6 100644
--- a/simplex86.c
+++ b/simplex86.c
@@ -392,18 +392,27 @@ static const variant_t variants[] =
{ I_movd, { A_SSE, A_RM32 }, F_SSE2, E_RM, 0x0f6e, PRE_66 },
{ I_movd, { A_RM32, A_SSE }, F_SSE2, E_MR, 0x0f6e, PRE_66 },
- /* movq for SIMD<->mem */
+ { I_vmovd, { A_SSE, A_RM32 }, F_AVX, E_RM, 0x6e, VEX(128,0x66,0x0f,W0) },
+ { I_vmovd, { A_RM32, A_SSE }, F_AVX, E_MR, 0x7e, VEX(128,0x66,0x0f,W0) },
+ { I_vmovd, { A_SSE, A_RM32 }, F_AVX, E_RM, 0x6e, VEX(128,0x66,0x0f,W0) },
+ { I_vmovd, { A_RM32, A_SSE }, F_AVX, E_MR, 0x7e, VEX(128,0x66,0x0f,W0) },
+
{ I_movq, { A_MMX, A_RM64 }, F_MMX, E_RM, 0x0f6e },
{ I_movq, { A_RM64, A_MMX }, F_MMX, E_MR, 0x0f7e },
{ I_movq, { A_SSE, A_RM64 }, F_SSE2, E_RM, 0x0f6e, PRE_66 },
{ I_movq, { A_RM64, A_SSE }, F_SSE2, E_MR, 0x0f7e, PRE_66 },
-
- /* movq for SIMD<->SIMD */
{ I_movq, { A_MMX, A_MMXM }, F_MMX, E_RM, 0x0f6f, NO_REX_W },
{ I_movq, { A_MMXM, A_MMX }, F_MMX, E_MR, 0x0f7f, NO_REX_W },
{ I_movq, { A_SSE, A_SSEM }, F_SSE2, E_RM, 0x0f7e, PRE_F3 | NO_REX_W },
{ I_movq, { A_SSEM, A_SSE }, F_SSE2, E_MR, 0x0fd6, PRE_66 | NO_REX_W },
+ { I_vmovq, { A_SSE, A_RM64 }, F_AVX, E_RM, 0x6e, VEX(128,0x66,0x0f,W1) },
+ { I_vmovq, { A_RM64, A_SSE }, F_AVX, E_MR, 0x7e, VEX(128,0x66,0x0f,W1) },
+ { I_vmovq, { A_SSE, A_RM64 }, F_AVX, E_RM, 0x6e, VEX(128,0x66,0x0f,W1) },
+ { I_vmovq, { A_SSE, A_RM64 }, F_AVX, E_MR, 0x7e, VEX(128,0x66,0x0f,W1) },
+ { I_vmovq, { A_SSE, A_SSEM }, F_AVX, E_RM, 0x7e, VEX(128,0xf3,0x0f,WIG) },
+ { I_vmovq, { A_SSEM, A_SSE }, F_AVX, E_MR, 0xd6, VEX(128,0x66,0x0f,WIG) },
+
#define MMX_TRINARY(name, opc) \
{ I_##name, { A_MMX, A_MMXM }, F_MMX, E_RM, (0x0f00 + opc) }, \
{ I_##name, { A_SSE, A_SSEM }, F_SSE2, E_RM, (0x0f00 + opc), PRE_66 }, \