From a2381831b67c8eb44df11c9cae244db164851d9d Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Mon, 18 Apr 2011 23:32:23 +0000 Subject: [PATCH] Added the "paddb", "paddd" and "paddw" instructions --- src/arch/i686.ins | 21 +++++++++++++++++++++ test/i686.S | 18 ++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/src/arch/i686.ins b/src/arch/i686.ins index c82fdf4..124f6a2 100644 --- a/src/arch/i686.ins +++ b/src/arch/i686.ins @@ -28,6 +28,27 @@ /* instructions */ /* EMMS 0x0f77 2 */ { "emms", 0x0f77, OP2F, AOT_NONE, AOT_NONE, AOT_NONE }, +/* PADDB 0x0ffc /r 2 mm mm/m64 */ +#if 1 /* FIXME doesn't work properly */ +{ "paddb", 0x0ffc, OP2F, OP_R64_R, OP_RM64_D0_R,AOT_NONE}, +{ "paddb", 0x0ffc, OP2F, OP_R64_R, OP_RM64_D8_R,AOT_NONE}, +{ "paddb", 0x0ffc, OP2F, OP_R64_R, OP_RM64_DW_R,AOT_NONE}, +{ "paddb", 0x0ffc, OP2F, OP_R64_R, OP_RM64_R64_R,AOT_NONE}, +#endif +/* PADDD 0x0ffd /r 2 mm mm/m64 */ +#if 1 /* FIXME doesn't work properly */ +{ "paddd", 0x0ffe, OP2F, OP_R64_R, OP_RM64_D0_R,AOT_NONE}, +{ "paddd", 0x0ffe, OP2F, OP_R64_R, OP_RM64_D8_R,AOT_NONE}, +{ "paddd", 0x0ffe, OP2F, OP_R64_R, OP_RM64_DW_R,AOT_NONE}, +{ "paddd", 0x0ffe, OP2F, OP_R64_R, OP_RM64_R64_R,AOT_NONE}, +#endif +/* PADDW 0x0ffd /r 2 mm mm/m64 */ +#if 1 /* FIXME doesn't work properly */ +{ "paddw", 0x0ffd, OP2F, OP_R64_R, OP_RM64_D0_R,AOT_NONE}, +{ "paddw", 0x0ffd, OP2F, OP_R64_R, OP_RM64_D8_R,AOT_NONE}, +{ "paddw", 0x0ffd, OP2F, OP_R64_R, OP_RM64_DW_R,AOT_NONE}, +{ "paddw", 0x0ffd, OP2F, OP_R64_R, OP_RM64_R64_R,AOT_NONE}, +#endif /* PADDSB 0x0fec /r 2 mm mm/m64 */ #if 1 /* FIXME doesn't work properly */ { "paddsb", 0x0fec, OP2F, OP_R64_R, OP_RM64_D0_R,AOT_NONE}, diff --git a/test/i686.S b/test/i686.S index b128617..0a09c6d 100644 --- a/test/i686.S +++ b/test/i686.S @@ -1,6 +1,24 @@ /* $Id$ */ .text emms /* 0f 77 */ +#if 1 /* FIXME doesn't work properly */ + paddb %mm1, [%edx] + paddb %mm2, [%edx + $0x56] + paddb %mm3, [%edx + $0x789abc] + paddb %mm4, %mm5 +#endif +#if 1 /* FIXME doesn't work properly */ + paddd %mm1, [%edx] + paddd %mm2, [%edx + $0x56] + paddd %mm3, [%edx + $0x789abc] + paddd %mm4, %mm5 +#endif +#if 1 /* FIXME doesn't work properly */ + paddw %mm1, [%edx] + paddw %mm2, [%edx + $0x56] + paddw %mm3, [%edx + $0x789abc] + paddw %mm4, %mm5 +#endif #if 1 /* FIXME doesn't work properly */ paddsb %mm1, [%edx] paddsb %mm2, [%edx + $0x56]