diff options
author | Søren Sandmann Pedersen <ssp@redhat.com> | 2013-09-06 11:42:42 -0400 |
---|---|---|
committer | Søren Sandmann Pedersen <ssp@redhat.com> | 2013-09-06 11:42:42 -0400 |
commit | db943fba243f0db60c967fbbd720650a705f5b35 (patch) | |
tree | 641249c7762e75ed0d1714a7a567325970f2987b /simplex86.c | |
parent | 1f4a34212b8ae6410c0af541e28fa99f151658df (diff) |
Add more movd/movq plus test suite
Diffstat (limited to 'simplex86.c')
-rw-r--r-- | simplex86.c | 15 |
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 }, \ |