From fb58a25507885d68ed53ca3df548a07a33e072c0 Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Tue, 19 Apr 2011 23:05:58 +0000 Subject: [PATCH] Added the "movd" instruction --- src/arch/i686.ins | 14 ++++++++++++++ test/i686.S | 12 ++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/arch/i686.ins b/src/arch/i686.ins index b38e73c..e56d748 100644 --- a/src/arch/i686.ins +++ b/src/arch/i686.ins @@ -28,6 +28,20 @@ /* instructions */ /* EMMS 0x0f77 2 */ { "emms", 0x0f77, OP2F, AOT_NONE, AOT_NONE, AOT_NONE }, +/* MOVD 0x0f6e /r OP2F mm mm/m64 */ +#if 1 /* FIXME doesn't work properly */ +{ "movd", 0x0f6e, OP2F, OP_R64_R, OP_RM64_D0_R,AOT_NONE }, +{ "movd", 0x0f6e, OP2F, OP_R64_R, OP_RM64_D8_R,AOT_NONE }, +{ "movd", 0x0f6e, OP2F, OP_R64_R, OP_RM64_DW_R,AOT_NONE }, +{ "movd", 0x0f6e, OP2F, OP_R64_R, OP_RM64_R64_R,AOT_NONE}, +#endif +/* MOVD 0x0f7e /r OP2F mm/m64 mm */ +{ "movd", 0x0f7e, OP2F, OP_RM64_D0_R,OP_R64_R, AOT_NONE }, +{ "movd", 0x0f7e, OP2F, OP_RM64_D8_R,OP_R64_R, AOT_NONE }, +{ "movd", 0x0f7e, OP2F, OP_RM64_DW_R,OP_R64_R, AOT_NONE }, +#if 1 /* FIXME doesn't work properly */ +{ "movq", 0x0f7f, OP2F, OP_RM64_R64_R,OP_R64_R, AOT_NONE }, +#endif /* MOVQ 0x0f6f /r OP2F mm mm/m64 */ #if 1 /* FIXME doesn't work properly */ { "movq", 0x0f6f, OP2F, OP_R64_R, OP_RM64_D0_R,AOT_NONE }, diff --git a/test/i686.S b/test/i686.S index 3bc6e76..135952d 100644 --- a/test/i686.S +++ b/test/i686.S @@ -1,6 +1,18 @@ /* $Id$ */ .text emms /* 0f 77 */ +#if 1 /* FIXME doesn't work properly */ + movd %mm1, [%edx] + movd %mm2, [%edx + $0x56] + movd %mm3, [%edx + $0x789abc] + movd %mm4, %mm5 +#endif + movd [%edx], %mm2 + movd [%edx + $0x56], %mm3 + movd [%edx + $0x789abc], %mm4 +#if 1 /* FIXME doesn't work properly */ + movd %mm5, %mm6 +#endif #if 1 /* FIXME doesn't work properly */ movq %mm1, [%edx] movq %mm2, [%edx + $0x56]