add_insn("xrstor", "twobytemem", modifiers=[5, 0x0F, 0xAE],
cpu=["XSAVE", "386"])
+#####################################################################
+# Intel MOVBE instruction
+#####################################################################
+for sz in (16, 32, 64):
+ add_group("movbe",
+ cpu=["MOVBE"],
+ opersize=sz,
+ opcode=[0x0F, 0x38, 0xF0],
+ operands=[Operand(type="Reg", size=sz, dest="Spare"),
+ Operand(type="Mem", size=sz, relaxed=True, dest="EA")])
+ add_group("movbe",
+ cpu=["MOVBE"],
+ opersize=sz,
+ opcode=[0x0F, 0x38, 0xF1],
+ operands=[Operand(type="Mem", size=sz, relaxed=True, dest="EA"),
+ Operand(type="Reg", size=sz, dest="Spare")])
+add_insn("movbe", "movbe")
+
#####################################################################
# AMD 3DNow! instructions
#####################################################################
EXTRA_DIST += modules/arch/x86/tests/mem64rip.hex
EXTRA_DIST += modules/arch/x86/tests/mixcase.asm
EXTRA_DIST += modules/arch/x86/tests/mixcase.hex
+EXTRA_DIST += modules/arch/x86/tests/movbe.asm
+EXTRA_DIST += modules/arch/x86/tests/movbe.hex
EXTRA_DIST += modules/arch/x86/tests/movdq32.asm
EXTRA_DIST += modules/arch/x86/tests/movdq32.hex
EXTRA_DIST += modules/arch/x86/tests/movdq64.asm
#define CPU_FMA 36 /* Intel Fused-Multiply-Add Extensions */
#define CPU_AES 37 /* AES instruction */
#define CPU_CLMUL 38 /* PCLMULQDQ instruction */
+#define CPU_MOVBE 39 /* MOVBE instruction */
typedef struct yasm_arch_x86 {
yasm_arch_base arch; /* base structure */
noclmul, x86_cpu_clear, CPU_CLMUL
pclmulqdq, x86_cpu_set, CPU_CLMUL
nopclmulqdq, x86_cpu_clear, CPU_CLMUL
+movbe, x86_cpu_set, CPU_MOVBE
+nomovbe, x86_cpu_clear, CPU_MOVBE
%%
void