/** * Copyright 2013, Landz and its contributors. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package jnr.x86asm; import java.util.EnumMap; import java.util.Map; import static jnr.x86asm.INST_CODE.*; import static jnr.x86asm.InstructionGroup.*; import static jnr.x86asm.OperandFlags.*; public final class InstructionDescription { final INST_CODE code; final String name; final InstructionGroup group; final int o1Flags; final int o2Flags; final int opCodeR; final int opCode1; final int opCode2; private static final Map<INST_CODE, InstructionDescription> table = new EnumMap<INST_CODE, InstructionDescription>(INST_CODE.class); private static final InstructionDescription MAKE_INST(INST_CODE code, String name, InstructionGroup group, int of1, int of2, int r, int op1, int op2) { InstructionDescription id = new InstructionDescription(code, name, group, of1, of2, r, op1, op2); table.put(code, id); return id; } InstructionDescription(INST_CODE code, String name, InstructionGroup group, int o1flags, int o2flags, int opCodeR, int opCode1, int opCode2) { this.code = code; this.name = name; this.group = group; this.o1Flags = o1flags; this.o2Flags = o2flags; this.opCodeR = opCodeR; this.opCode1 = opCode1; this.opCode2 = opCode2; } public static final InstructionDescription find(INST_CODE code) { InstructionDescription id = table.get(code); if (id == null) { throw new IllegalArgumentException("no description for " + code); } return id; } private static final InstructionDescription[] all = { // Instruction code (enum) | instruction name | group | operator 1 flags| operator 2 flags| r| opCode1 | opcode2 MAKE_INST(INST_ADC , "adc" , I_ALU , 0 , 0 , 2, 0x00000010, 0x00000080), MAKE_INST(INST_ADD , "add" , I_ALU , 0 , 0 , 0, 0x00000000, 0x00000080), MAKE_INST(INST_ADDPD , "addpd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000F58, 0), MAKE_INST(INST_ADDPS , "addps" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x00000F58, 0), MAKE_INST(INST_ADDSD , "addsd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF2000F58, 0), MAKE_INST(INST_ADDSS , "addss" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF3000F58, 0), MAKE_INST(INST_ADDSUBPD , "addsubpd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000FD0, 0), MAKE_INST(INST_ADDSUBPS , "addsubps" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF2000FD0, 0), MAKE_INST(INST_AMD_PREFETCH , "amd_prefetch" , I_M , O_MEM , 0 , 0, 0x00000F0D, 0), MAKE_INST(INST_AMD_PREFETCHW , "amd_prefetchw" , I_M , O_MEM , 0 , 1, 0x00000F0D, 0), MAKE_INST(INST_AND , "and" , I_ALU , 0 , 0 , 4, 0x00000020, 0x00000080), MAKE_INST(INST_ANDNPD , "andnpd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000F55, 0), MAKE_INST(INST_ANDNPS , "andnps" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x00000F55, 0), MAKE_INST(INST_ANDPD , "andpd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000F54, 0), MAKE_INST(INST_ANDPS , "andps" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x00000F54, 0), MAKE_INST(INST_BLENDPD , "blendpd" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0x660F3A0D, 0), MAKE_INST(INST_BLENDPS , "blendps" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0x660F3A0C, 0), MAKE_INST(INST_BLENDVPD , "blendvpd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3815, 0), MAKE_INST(INST_BLENDVPS , "blendvps" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3814, 0), MAKE_INST(INST_BSF , "bsf" , I_R_RM , 0 , 0 , 0, 0x00000FBC, 0), MAKE_INST(INST_BSR , "bsr" , I_R_RM , 0 , 0 , 0, 0x00000FBD, 0), MAKE_INST(INST_BSWAP , "bswap" , I_BSWAP , 0 , 0 , 0, 0 , 0), MAKE_INST(INST_BT , "bt" , I_BT ,O_G16_32_64|O_MEM,O_G16_32_64|O_IMM, 4, 0x00000FA3, 0x00000FBA), MAKE_INST(INST_BTC , "btc" , I_BT ,O_G16_32_64|O_MEM,O_G16_32_64|O_IMM, 7, 0x00000FBB, 0x00000FBA), MAKE_INST(INST_BTR , "btr" , I_BT ,O_G16_32_64|O_MEM,O_G16_32_64|O_IMM, 6, 0x00000FB3, 0x00000FBA), MAKE_INST(INST_BTS , "bts" , I_BT ,O_G16_32_64|O_MEM,O_G16_32_64|O_IMM, 5, 0x00000FAB, 0x00000FBA), MAKE_INST(INST_CALL , "call" , I_CALL , 0 , 0 , 0, 0 , 0), MAKE_INST(INST_CBW , "cbw" , I_EMIT , 0 , 0 , 0, 0x66000099, 0), MAKE_INST(INST_CDQE , "cdqe" , I_EMIT , 0 , 0 , 0, 0x48000099, 0), MAKE_INST(INST_CLC , "clc" , I_EMIT , 0 , 0 , 0, 0x000000F8, 0), MAKE_INST(INST_CLD , "cld" , I_EMIT , 0 , 0 , 0, 0x000000FC, 0), MAKE_INST(INST_CLFLUSH , "clflush" , I_M , O_MEM , 0 , 7, 0x00000FAE, 0), MAKE_INST(INST_CMC , "cmc" , I_EMIT , 0 , 0 , 0, 0x000000F5, 0), MAKE_INST(INST_CMOVA , "cmova" , I_R_RM , 0 , 0 , 0, 0x00000F47, 0), MAKE_INST(INST_CMOVAE , "cmovae" , I_R_RM , 0 , 0 , 0, 0x00000F43, 0), MAKE_INST(INST_CMOVB , "cmovb" , I_R_RM , 0 , 0 , 0, 0x00000F42, 0), MAKE_INST(INST_CMOVBE , "cmovbe" , I_R_RM , 0 , 0 , 0, 0x00000F46, 0), MAKE_INST(INST_CMOVC , "cmovc" , I_R_RM , 0 , 0 , 0, 0x00000F42, 0), MAKE_INST(INST_CMOVE , "cmove" , I_R_RM , 0 , 0 , 0, 0x00000F44, 0), MAKE_INST(INST_CMOVG , "cmovg" , I_R_RM , 0 , 0 , 0, 0x00000F4F, 0), MAKE_INST(INST_CMOVGE , "cmovge" , I_R_RM , 0 , 0 , 0, 0x00000F4D, 0), MAKE_INST(INST_CMOVL , "cmovl" , I_R_RM , 0 , 0 , 0, 0x00000F4C, 0), MAKE_INST(INST_CMOVLE , "cmovle" , I_R_RM , 0 , 0 , 0, 0x00000F4E, 0), MAKE_INST(INST_CMOVNA , "cmovna" , I_R_RM , 0 , 0 , 0, 0x00000F46, 0), MAKE_INST(INST_CMOVNAE , "cmovnae" , I_R_RM , 0 , 0 , 0, 0x00000F42, 0), MAKE_INST(INST_CMOVNB , "cmovnb" , I_R_RM , 0 , 0 , 0, 0x00000F43, 0), MAKE_INST(INST_CMOVNBE , "cmovnbe" , I_R_RM , 0 , 0 , 0, 0x00000F47, 0), MAKE_INST(INST_CMOVNC , "cmovnc" , I_R_RM , 0 , 0 , 0, 0x00000F43, 0), MAKE_INST(INST_CMOVNE , "cmovne" , I_R_RM , 0 , 0 , 0, 0x00000F45, 0), MAKE_INST(INST_CMOVNG , "cmovng" , I_R_RM , 0 , 0 , 0, 0x00000F4E, 0), MAKE_INST(INST_CMOVNGE , "cmovnge" , I_R_RM , 0 , 0 , 0, 0x00000F4C, 0), MAKE_INST(INST_CMOVNL , "cmovnl" , I_R_RM , 0 , 0 , 0, 0x00000F4D, 0), MAKE_INST(INST_CMOVNLE , "cmovnle" , I_R_RM , 0 , 0 , 0, 0x00000F4F, 0), MAKE_INST(INST_CMOVNO , "cmovno" , I_R_RM , 0 , 0 , 0, 0x00000F41, 0), MAKE_INST(INST_CMOVNP , "cmovnp" , I_R_RM , 0 , 0 , 0, 0x00000F4B, 0), MAKE_INST(INST_CMOVNS , "cmovns" , I_R_RM , 0 , 0 , 0, 0x00000F49, 0), MAKE_INST(INST_CMOVNZ , "cmovnz" , I_R_RM , 0 , 0 , 0, 0x00000F45, 0), MAKE_INST(INST_CMOVO , "cmovo" , I_R_RM , 0 , 0 , 0, 0x00000F40, 0), MAKE_INST(INST_CMOVP , "cmovp" , I_R_RM , 0 , 0 , 0, 0x00000F4A, 0), MAKE_INST(INST_CMOVPE , "cmovpe" , I_R_RM , 0 , 0 , 0, 0x00000F4A, 0), MAKE_INST(INST_CMOVPO , "cmovpo" , I_R_RM , 0 , 0 , 0, 0x00000F4B, 0), MAKE_INST(INST_CMOVS , "cmovs" , I_R_RM , 0 , 0 , 0, 0x00000F48, 0), MAKE_INST(INST_CMOVZ , "cmovz" , I_R_RM , 0 , 0 , 0, 0x00000F44, 0), MAKE_INST(INST_CMP , "cmp" , I_ALU , 0 , 0 , 7, 0x00000038, 0x00000080), MAKE_INST(INST_CMPPD , "cmppd" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0x66000FC2, 0), MAKE_INST(INST_CMPPS , "cmpps" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0x00000FC2, 0), MAKE_INST(INST_CMPSD , "cmpsd" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0xF2000FC2, 0), MAKE_INST(INST_CMPSS , "cmpss" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0xF3000FC2, 0), MAKE_INST(INST_CMPXCHG , "cmpxchg" , I_RM_R , 0 , 0 , 0, 0x00000FB0, 0), MAKE_INST(INST_CMPXCHG16B , "cmpxchg16b" , I_M , O_MEM , 0 , 1, 0x00000FC7, 1 /* RexW */), MAKE_INST(INST_CMPXCHG8B , "cmpxchg8b" , I_M , O_MEM , 0 , 1, 0x00000FC7, 0), MAKE_INST(INST_COMISD , "comisd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000F2F, 0), MAKE_INST(INST_COMISS , "comiss" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x00000F2F, 0), MAKE_INST(INST_CPUID , "cpuid" , I_EMIT , 0 , 0 , 0, 0x00000FA2, 0), MAKE_INST(INST_CRC32 , "crc32" , I_CRC32 , 0 , 0 , 0, 0xF20F38F0, 0), MAKE_INST(INST_CVTDQ2PD , "cvtdq2pd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF3000FE6, 0), MAKE_INST(INST_CVTDQ2PS , "cvtdq2ps" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x00000F5B, 0), MAKE_INST(INST_CVTPD2DQ , "cvtpd2dq" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF2000FE6, 0), MAKE_INST(INST_CVTPD2PI , "cvtpd2pi" , I_MMU_RMI , O_MM , O_XMM_MEM , 0, 0x66000F2D, 0), MAKE_INST(INST_CVTPD2PS , "cvtpd2ps" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000F5A, 0), MAKE_INST(INST_CVTPI2PD , "cvtpi2pd" , I_MMU_RMI , O_XMM , O_MM_MEM , 0, 0x66000F2A, 0), MAKE_INST(INST_CVTPI2PS , "cvtpi2ps" , I_MMU_RMI , O_XMM , O_MM_MEM , 0, 0x00000F2A, 0), MAKE_INST(INST_CVTPS2DQ , "cvtps2dq" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000F5B, 0), MAKE_INST(INST_CVTPS2PD , "cvtps2pd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x00000F5A, 0), MAKE_INST(INST_CVTPS2PI , "cvtps2pi" , I_MMU_RMI , O_MM , O_XMM_MEM , 0, 0x00000F2D, 0), MAKE_INST(INST_CVTSD2SI , "cvtsd2si" , I_MMU_RMI , O_G32_64 , O_XMM_MEM , 0, 0xF2000F2D, 0), MAKE_INST(INST_CVTSD2SS , "cvtsd2ss" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF2000F5A, 0), MAKE_INST(INST_CVTSI2SD , "cvtsi2sd" , I_MMU_RMI , O_XMM , O_G32_64|O_MEM , 0, 0xF2000F2A, 0), MAKE_INST(INST_CVTSI2SS , "cvtsi2ss" , I_MMU_RMI , O_XMM , O_G32_64|O_MEM , 0, 0xF3000F2A, 0), MAKE_INST(INST_CVTSS2SD , "cvtss2sd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF3000F5A, 0), MAKE_INST(INST_CVTSS2SI , "cvtss2si" , I_MMU_RMI , O_G32_64 , O_XMM_MEM , 0, 0xF3000F2D, 0), MAKE_INST(INST_CVTTPD2DQ , "cvttpd2dq" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000FE6, 0), MAKE_INST(INST_CVTTPD2PI , "cvttpd2pi" , I_MMU_RMI , O_MM , O_XMM_MEM , 0, 0x66000F2C, 0), MAKE_INST(INST_CVTTPS2DQ , "cvttps2dq" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF3000F5B, 0), MAKE_INST(INST_CVTTPS2PI , "cvttps2pi" , I_MMU_RMI , O_MM , O_XMM_MEM , 0, 0x00000F2C, 0), MAKE_INST(INST_CVTTSD2SI , "cvttsd2si" , I_MMU_RMI , O_G32_64 , O_XMM_MEM , 0, 0xF2000F2C, 0), MAKE_INST(INST_CVTTSS2SI , "cvttss2si" , I_MMU_RMI , O_G32_64 , O_XMM_MEM , 0, 0xF3000F2C, 0), MAKE_INST(INST_CWDE , "cwde" , I_EMIT , 0 , 0 , 0, 0x00000099, 0), MAKE_INST(INST_DAA , "daa" , I_EMIT , 0 , 0 , 0, 0x00000027, 0), MAKE_INST(INST_DAS , "das" , I_EMIT , 0 , 0 , 0, 0x0000002F, 0), MAKE_INST(INST_DEC , "dec" , I_INC_DEC , 0 , 0 , 1, 0x00000048, 0x000000FE), MAKE_INST(INST_DIV , "div" , I_RM , 0 , 0 , 6, 0x000000F6, 0), MAKE_INST(INST_DIVPD , "divpd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000F5E, 0), MAKE_INST(INST_DIVPS , "divps" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x00000F5E, 0), MAKE_INST(INST_DIVSD , "divsd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF2000F5E, 0), MAKE_INST(INST_DIVSS , "divss" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF3000F5E, 0), MAKE_INST(INST_DPPD , "dppd" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0x660F3A41, 0), MAKE_INST(INST_DPPS , "dpps" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0x660F3A40, 0), MAKE_INST(INST_EMMS , "emms" , I_EMIT , 0 , 0 , 0, 0x00000F77, 0), MAKE_INST(INST_ENTER , "enter" , I_ENTER , 0 , 0 , 0, 0x000000C8, 0), MAKE_INST(INST_EXTRACTPS , "extractps" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0x660F3A17, 0), MAKE_INST(INST_F2XM1 , "f2xm1" , I_EMIT , 0 , 0 , 0, 0x0000D9F0, 0), MAKE_INST(INST_FABS , "fabs" , I_EMIT , 0 , 0 , 0, 0x0000D9E1, 0), MAKE_INST(INST_FADD , "fadd" , I_X87_FPU , 0 , 0 , 0, 0xD8C0DCC0, 0), MAKE_INST(INST_FADDP , "faddp" , I_X87_STI , 0 , 0 , 0, 0x0000DEC0, 0), MAKE_INST(INST_FBLD , "fbld" , I_M , O_MEM , 0 , 4, 0x000000DF, 0), MAKE_INST(INST_FBSTP , "fbstp" , I_M , O_MEM , 0 , 6, 0x000000DF, 0), MAKE_INST(INST_FCHS , "fchs" , I_EMIT , 0 , 0 , 0, 0x0000D9E0, 0), MAKE_INST(INST_FCLEX , "fclex" , I_EMIT , 0 , 0 , 0, 0x9B00DBE2, 0), MAKE_INST(INST_FCMOVB , "fcmovb" , I_X87_STI , 0 , 0 , 0, 0x0000DAC0, 0), MAKE_INST(INST_FCMOVBE , "fcmovbe" , I_X87_STI , 0 , 0 , 0, 0x0000DAD0, 0), MAKE_INST(INST_FCMOVE , "fcmove" , I_X87_STI , 0 , 0 , 0, 0x0000DAC8, 0), MAKE_INST(INST_FCMOVNB , "fcmovnb" , I_X87_STI , 0 , 0 , 0, 0x0000DBC0, 0), MAKE_INST(INST_FCMOVNBE , "fcmovnbe" , I_X87_STI , 0 , 0 , 0, 0x0000DBD0, 0), MAKE_INST(INST_FCMOVNE , "fcmovne" , I_X87_STI , 0 , 0 , 0, 0x0000DBC8, 0), MAKE_INST(INST_FCMOVNU , "fcmovnu" , I_X87_STI , 0 , 0 , 0, 0x0000DBD8, 0), MAKE_INST(INST_FCMOVU , "fcmovu" , I_X87_STI , 0 , 0 , 0, 0x0000DAD8, 0), MAKE_INST(INST_FCOM , "fcom" , I_X87_FPU , 0 , 0 , 2, 0xD8DCD0D0, 0), MAKE_INST(INST_FCOMI , "fcomi" , I_X87_STI , 0 , 0 , 0, 0x0000DBF0, 0), MAKE_INST(INST_FCOMIP , "fcomip" , I_X87_STI , 0 , 0 , 0, 0x0000DFF0, 0), MAKE_INST(INST_FCOMP , "fcomp" , I_X87_FPU , 0 , 0 , 3, 0xD8DCD8D8, 0), MAKE_INST(INST_FCOMPP , "fcompp" , I_EMIT , 0 , 0 , 0, 0x0000DED9, 0), MAKE_INST(INST_FCOS , "fcos" , I_EMIT , 0 , 0 , 0, 0x0000D9FF, 0), MAKE_INST(INST_FDECSTP , "fdecstp" , I_EMIT , 0 , 0 , 0, 0x0000D9F6, 0), MAKE_INST(INST_FDIV , "fdiv" , I_X87_FPU , 0 , 0 , 6, 0xD8DCF0F8, 0), MAKE_INST(INST_FDIVP , "fdivp" , I_X87_STI , 0 , 0 , 0, 0x0000DEF8, 0), MAKE_INST(INST_FDIVR , "fdivr" , I_X87_FPU , 0 , 0 , 7, 0xD8DCF8F0, 0), MAKE_INST(INST_FDIVRP , "fdivrp" , I_X87_STI , 0 , 0 , 0, 0x0000DEF0, 0), MAKE_INST(INST_FEMMS , "femms" , I_EMIT , 0 , 0 , 0, 0x00000F0E, 0), MAKE_INST(INST_FFREE , "ffree" , I_X87_STI , 0 , 0 , 0, 0x0000DDC0, 0), MAKE_INST(INST_FIADD , "fiadd" , I_X87_MEM , O_FM_2_4 , 0 , 0, 0xDEDA0000, 0), MAKE_INST(INST_FICOM , "ficom" , I_X87_MEM , O_FM_2_4 , 0 , 2, 0xDEDA0000, 0), MAKE_INST(INST_FICOMP , "ficomp" , I_X87_MEM , O_FM_2_4 , 0 , 3, 0xDEDA0000, 0), MAKE_INST(INST_FIDIV , "fidiv" , I_X87_MEM , O_FM_2_4 , 0 , 6, 0xDEDA0000, 0), MAKE_INST(INST_FIDIVR , "fidivr" , I_X87_MEM , O_FM_2_4 , 0 , 7, 0xDEDA0000, 0), MAKE_INST(INST_FILD , "fild" , I_X87_MEM , O_FM_2_4_8 , 0 , 0, 0xDFDBDF05, 0), MAKE_INST(INST_FIMUL , "fimul" , I_X87_MEM , O_FM_2_4 , 0 , 1, 0xDEDA0000, 0), MAKE_INST(INST_FINCSTP , "fincstp" , I_EMIT , 0 , 0 , 0, 0x0000D9F7, 0), MAKE_INST(INST_FINIT , "finit" , I_EMIT , 0 , 0 , 0, 0x9B00DBE3, 0), MAKE_INST(INST_FIST , "fist" , I_X87_MEM , O_FM_2_4 , 0 , 2, 0xDFDB0000, 0), MAKE_INST(INST_FISTP , "fistp" , I_X87_MEM , O_FM_2_4_8 , 0 , 3, 0xDFDBDF07, 0), MAKE_INST(INST_FISTTP , "fisttp" , I_X87_MEM , O_FM_2_4_8 , 0 , 1, 0xDFDBDD01, 0), MAKE_INST(INST_FISUB , "fisub" , I_X87_MEM , O_FM_2_4 , 0 , 4, 0xDEDA0000, 0), MAKE_INST(INST_FISUBR , "fisubr" , I_X87_MEM , O_FM_2_4 , 0 , 5, 0xDEDA0000, 0), MAKE_INST(INST_FLD , "fld" , I_X87_MEM_STI , O_FM_4_8_10 , 0 , 0, 0x00D9DD00, 0xD9C0DB05), MAKE_INST(INST_FLD1 , "fld1" , I_EMIT , 0 , 0 , 0, 0x0000D9E8, 0), MAKE_INST(INST_FLDCW , "fldcw" , I_M , O_MEM , 0 , 5, 0x000000D9, 0), MAKE_INST(INST_FLDENV , "fldenv" , I_M , O_MEM , 0 , 4, 0x000000D9, 0), MAKE_INST(INST_FLDL2E , "fldl2e" , I_EMIT , 0 , 0 , 0, 0x0000D9EA, 0), MAKE_INST(INST_FLDL2T , "fldl2t" , I_EMIT , 0 , 0 , 0, 0x0000D9E9, 0), MAKE_INST(INST_FLDLG2 , "fldlg2" , I_EMIT , 0 , 0 , 0, 0x0000D9EC, 0), MAKE_INST(INST_FLDLN2 , "fldln2" , I_EMIT , 0 , 0 , 0, 0x0000D9ED, 0), MAKE_INST(INST_FLDPI , "fldpi" , I_EMIT , 0 , 0 , 0, 0x0000D9EB, 0), MAKE_INST(INST_FLDZ , "fldz" , I_EMIT , 0 , 0 , 0, 0x0000D9EE, 0), MAKE_INST(INST_FMUL , "fmul" , I_X87_FPU , 0 , 0 , 1, 0xD8DCC8C8, 0), MAKE_INST(INST_FMULP , "fmulp" , I_X87_STI , 0 , 0 , 0, 0x0000DEC8, 0), MAKE_INST(INST_FNCLEX , "fnclex" , I_EMIT , 0 , 0 , 0, 0x0000DBE2, 0), MAKE_INST(INST_FNINIT , "fninit" , I_EMIT , 0 , 0 , 0, 0x0000DBE3, 0), MAKE_INST(INST_FNOP , "fnop" , I_EMIT , 0 , 0 , 0, 0x0000D9D0, 0), MAKE_INST(INST_FNSAVE , "fnsave" , I_M , O_MEM , 0 , 6, 0x000000DD, 0), MAKE_INST(INST_FNSTCW , "fnstcw" , I_M , O_MEM , 0 , 7, 0x000000D9, 0), MAKE_INST(INST_FNSTENV , "fnstenv" , I_M , O_MEM , 0 , 6, 0x000000D9, 0), MAKE_INST(INST_FNSTSW , "fnstsw" , I_X87_FSTSW , O_MEM , 0 , 7, 0x000000DD, 0x0000DFE0), MAKE_INST(INST_FPATAN , "fpatan" , I_EMIT , 0 , 0 , 0, 0x0000D9F3, 0), MAKE_INST(INST_FPREM , "fprem" , I_EMIT , 0 , 0 , 0, 0x0000D9F8, 0), MAKE_INST(INST_FPREM1 , "fprem1" , I_EMIT , 0 , 0 , 0, 0x0000D9F5, 0), MAKE_INST(INST_FPTAN , "fptan" , I_EMIT , 0 , 0 , 0, 0x0000D9F2, 0), MAKE_INST(INST_FRNDINT , "frndint" , I_EMIT , 0 , 0 , 0, 0x0000D9FC, 0), MAKE_INST(INST_FRSTOR , "frstor" , I_M , O_MEM , 0 , 4, 0x000000DD, 0), MAKE_INST(INST_FSAVE , "fsave" , I_M , O_MEM , 0 , 6, 0x9B0000DD, 0), MAKE_INST(INST_FSCALE , "fscale" , I_EMIT , 0 , 0 , 0, 0x0000D9FD, 0), MAKE_INST(INST_FSIN , "fsin" , I_EMIT , 0 , 0 , 0, 0x0000D9FE, 0), MAKE_INST(INST_FSINCOS , "fsincos" , I_EMIT , 0 , 0 , 0, 0x0000D9FB, 0), MAKE_INST(INST_FSQRT , "fsqrt" , I_EMIT , 0 , 0 , 0, 0x0000D9FA, 0), MAKE_INST(INST_FST , "fst" , I_X87_MEM_STI , O_FM_4_8 , 0 , 2, 0x00D9DD02, 0xDDD00000), MAKE_INST(INST_FSTCW , "fstcw" , I_M , O_MEM , 0 , 7, 0x9B0000D9, 0), MAKE_INST(INST_FSTENV , "fstenv" , I_M , O_MEM , 0 , 6, 0x9B0000D9, 0), MAKE_INST(INST_FSTP , "fstp" , I_X87_MEM_STI , O_FM_4_8_10 , 0 , 3, 0x00D9DD03, 0xDDD8DB07), MAKE_INST(INST_FSTSW , "fstsw" , I_X87_FSTSW , O_MEM , 0 , 7, 0x9B0000DD, 0x9B00DFE0), MAKE_INST(INST_FSUB , "fsub" , I_X87_FPU , 0 , 0 , 4, 0xD8DCE0E8, 0), MAKE_INST(INST_FSUBP , "fsubp" , I_X87_STI , 0 , 0 , 0, 0x0000DEE8, 0), MAKE_INST(INST_FSUBR , "fsubr" , I_X87_FPU , 0 , 0 , 5, 0xD8DCE8E0, 0), MAKE_INST(INST_FSUBRP , "fsubrp" , I_X87_STI , 0 , 0 , 0, 0x0000DEE0, 0), MAKE_INST(INST_FTST , "ftst" , I_EMIT , 0 , 0 , 0, 0x0000D9E4, 0), MAKE_INST(INST_FUCOM , "fucom" , I_X87_STI , 0 , 0 , 0, 0x0000DDE0, 0), MAKE_INST(INST_FUCOMI , "fucomi" , I_X87_STI , 0 , 0 , 0, 0x0000DBE8, 0), MAKE_INST(INST_FUCOMIP , "fucomip" , I_X87_STI , 0 , 0 , 0, 0x0000DFE8, 0), MAKE_INST(INST_FUCOMP , "fucomp" , I_X87_STI , 0 , 0 , 0, 0x0000DDE8, 0), MAKE_INST(INST_FUCOMPP , "fucompp" , I_EMIT , 0 , 0 , 0, 0x0000DAE9, 0), MAKE_INST(INST_FWAIT , "fwait" , I_EMIT , 0 , 0 , 0, 0x000000DB, 0), MAKE_INST(INST_FXAM , "fxam" , I_EMIT , 0 , 0 , 0, 0x0000D9E5, 0), MAKE_INST(INST_FXCH , "fxch" , I_X87_STI , 0 , 0 , 0, 0x0000D9C8, 0), MAKE_INST(INST_FXRSTOR , "fxrstor" , I_M , 0 , 0 , 1, 0x00000FAE, 0), MAKE_INST(INST_FXSAVE , "fxsave" , I_M , 0 , 0 , 0, 0x00000FAE, 0), MAKE_INST(INST_FXTRACT , "fxtract" , I_EMIT , 0 , 0 , 0, 0x0000D9F4, 0), MAKE_INST(INST_FYL2X , "fyl2x" , I_EMIT , 0 , 0 , 0, 0x0000D9F1, 0), MAKE_INST(INST_FYL2XP1 , "fyl2xp1" , I_EMIT , 0 , 0 , 0, 0x0000D9F9, 0), MAKE_INST(INST_HADDPD , "haddpd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000F7C, 0), MAKE_INST(INST_HADDPS , "haddps" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF2000F7C, 0), MAKE_INST(INST_HSUBPD , "hsubpd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000F7D, 0), MAKE_INST(INST_HSUBPS , "hsubps" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF2000F7D, 0), MAKE_INST(INST_IDIV , "idiv" , I_RM , 0 , 0 , 7, 0x000000F6, 0), MAKE_INST(INST_IMUL , "imul" , I_IMUL , 0 , 0 , 0, 0 , 0), MAKE_INST(INST_INC , "inc" , I_INC_DEC , 0 , 0 , 0, 0x00000040, 0x000000FE), MAKE_INST(INST_INT3 , "int3" , I_EMIT , 0 , 0 , 0, 0x000000CC, 0), MAKE_INST(INST_JA , "ja" , I_J , 0 , 0 , 0, 0x7 , 0), MAKE_INST(INST_JAE , "jae" , I_J , 0 , 0 , 0, 0x3 , 0), MAKE_INST(INST_JB , "jb" , I_J , 0 , 0 , 0, 0x2 , 0), MAKE_INST(INST_JBE , "jbe" , I_J , 0 , 0 , 0, 0x6 , 0), MAKE_INST(INST_JC , "jc" , I_J , 0 , 0 , 0, 0x2 , 0), MAKE_INST(INST_JE , "je" , I_J , 0 , 0 , 0, 0x4 , 0), MAKE_INST(INST_JG , "jg" , I_J , 0 , 0 , 0, 0xF , 0), MAKE_INST(INST_JGE , "jge" , I_J , 0 , 0 , 0, 0xD , 0), MAKE_INST(INST_JL , "jl" , I_J , 0 , 0 , 0, 0xC , 0), MAKE_INST(INST_JLE , "jle" , I_J , 0 , 0 , 0, 0xE , 0), MAKE_INST(INST_JNA , "jna" , I_J , 0 , 0 , 0, 0x6 , 0), MAKE_INST(INST_JNAE , "jnae" , I_J , 0 , 0 , 0, 0x2 , 0), MAKE_INST(INST_JNB , "jnb" , I_J , 0 , 0 , 0, 0x3 , 0), MAKE_INST(INST_JNBE , "jnbe" , I_J , 0 , 0 , 0, 0x7 , 0), MAKE_INST(INST_JNC , "jnc" , I_J , 0 , 0 , 0, 0x3 , 0), MAKE_INST(INST_JNE , "jne" , I_J , 0 , 0 , 0, 0x5 , 0), MAKE_INST(INST_JNG , "jng" , I_J , 0 , 0 , 0, 0xE , 0), MAKE_INST(INST_JNGE , "jnge" , I_J , 0 , 0 , 0, 0xC , 0), MAKE_INST(INST_JNL , "jnl" , I_J , 0 , 0 , 0, 0xD , 0), MAKE_INST(INST_JNLE , "jnle" , I_J , 0 , 0 , 0, 0xF , 0), MAKE_INST(INST_JNO , "jno" , I_J , 0 , 0 , 0, 0x1 , 0), MAKE_INST(INST_JNP , "jnp" , I_J , 0 , 0 , 0, 0xB , 0), MAKE_INST(INST_JNS , "jns" , I_J , 0 , 0 , 0, 0x9 , 0), MAKE_INST(INST_JNZ , "jnz" , I_J , 0 , 0 , 0, 0x5 , 0), MAKE_INST(INST_JO , "jo" , I_J , 0 , 0 , 0, 0x0 , 0), MAKE_INST(INST_JP , "jp" , I_J , 0 , 0 , 0, 0xA , 0), MAKE_INST(INST_JPE , "jpe" , I_J , 0 , 0 , 0, 0xA , 0), MAKE_INST(INST_JPO , "jpo" , I_J , 0 , 0 , 0, 0xB , 0), MAKE_INST(INST_JS , "js" , I_J , 0 , 0 , 0, 0x8 , 0), MAKE_INST(INST_JZ , "jz" , I_J , 0 , 0 , 0, 0x4 , 0), MAKE_INST(INST_JMP , "jmp" , I_JMP , 0 , 0 , 0, 0 , 0), MAKE_INST(INST_JA_SHORT , "ja short" , I_J , 0 , 0 , 0, 0x7 , 0), MAKE_INST(INST_JAE_SHORT , "jae short" , I_J , 0 , 0 , 0, 0x3 , 0), MAKE_INST(INST_JB_SHORT , "jb short" , I_J , 0 , 0 , 0, 0x2 , 0), MAKE_INST(INST_JBE_SHORT , "jbe short" , I_J , 0 , 0 , 0, 0x6 , 0), MAKE_INST(INST_JC_SHORT , "jc short" , I_J , 0 , 0 , 0, 0x2 , 0), MAKE_INST(INST_JE_SHORT , "je short" , I_J , 0 , 0 , 0, 0x4 , 0), MAKE_INST(INST_JG_SHORT , "jg short" , I_J , 0 , 0 , 0, 0xF , 0), MAKE_INST(INST_JGE_SHORT , "jge short" , I_J , 0 , 0 , 0, 0xD , 0), MAKE_INST(INST_JL_SHORT , "jl short" , I_J , 0 , 0 , 0, 0xC , 0), MAKE_INST(INST_JLE_SHORT , "jle short" , I_J , 0 , 0 , 0, 0xE , 0), MAKE_INST(INST_JNA_SHORT , "jna short" , I_J , 0 , 0 , 0, 0x6 , 0), MAKE_INST(INST_JNAE_SHORT , "jnae short" , I_J , 0 , 0 , 0, 0x2 , 0), MAKE_INST(INST_JNB_SHORT , "jnb short" , I_J , 0 , 0 , 0, 0x3 , 0), MAKE_INST(INST_JNBE_SHORT , "jnbe short" , I_J , 0 , 0 , 0, 0x7 , 0), MAKE_INST(INST_JNC_SHORT , "jnc short" , I_J , 0 , 0 , 0, 0x3 , 0), MAKE_INST(INST_JNE_SHORT , "jne short" , I_J , 0 , 0 , 0, 0x5 , 0), MAKE_INST(INST_JNG_SHORT , "jng short" , I_J , 0 , 0 , 0, 0xE , 0), MAKE_INST(INST_JNGE_SHORT , "jnge short" , I_J , 0 , 0 , 0, 0xC , 0), MAKE_INST(INST_JNL_SHORT , "jnl short" , I_J , 0 , 0 , 0, 0xD , 0), MAKE_INST(INST_JNLE_SHORT , "jnle short" , I_J , 0 , 0 , 0, 0xF , 0), MAKE_INST(INST_JNO_SHORT , "jno short" , I_J , 0 , 0 , 0, 0x1 , 0), MAKE_INST(INST_JNP_SHORT , "jnp short" , I_J , 0 , 0 , 0, 0xB , 0), MAKE_INST(INST_JNS_SHORT , "jns short" , I_J , 0 , 0 , 0, 0x9 , 0), MAKE_INST(INST_JNZ_SHORT , "jnz short" , I_J , 0 , 0 , 0, 0x5 , 0), MAKE_INST(INST_JO_SHORT , "jo short" , I_J , 0 , 0 , 0, 0x0 , 0), MAKE_INST(INST_JP_SHORT , "jp short" , I_J , 0 , 0 , 0, 0xA , 0), MAKE_INST(INST_JPE_SHORT , "jpe short" , I_J , 0 , 0 , 0, 0xA , 0), MAKE_INST(INST_JPO_SHORT , "jpo short" , I_J , 0 , 0 , 0, 0xB , 0), MAKE_INST(INST_JS_SHORT , "js short" , I_J , 0 , 0 , 0, 0x8 , 0), MAKE_INST(INST_JZ_SHORT , "jz short" , I_J , 0 , 0 , 0, 0x4 , 0), MAKE_INST(INST_JMP_SHORT , "jmp short" , I_JMP , 0 , 0 , 0, 0 , 0), MAKE_INST(INST_LDDQU , "lddqu" , I_MMU_RMI , O_XMM , O_MEM , 0, 0xF2000FF0, 0), MAKE_INST(INST_LDMXCSR , "ldmxcsr" , I_M , O_MEM , 0 , 2, 0x00000FAE, 0), MAKE_INST(INST_LEA , "lea" , I_LEA , 0 , 0 , 0, 0 , 0), MAKE_INST(INST_LEAVE , "leave" , I_EMIT , 0 , 0 , 0, 0x000000C9, 0), MAKE_INST(INST_LFENCE , "lfence" , I_EMIT , 0 , 0 , 0, 0x000FAEE8, 0), MAKE_INST(INST_LOCK , "lock" , I_EMIT , 0 , 0 , 0, 0x000000F0, 0), MAKE_INST(INST_MASKMOVDQU , "maskmovdqu" , I_MMU_RMI , O_XMM , O_XMM , 0, 0x66000F57, 0), MAKE_INST(INST_MASKMOVQ , "maskmovq" , I_MMU_RMI , O_MM , O_MM , 0, 0x00000FF7, 0), MAKE_INST(INST_MAXPD , "maxpd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000F5F, 0), MAKE_INST(INST_MAXPS , "maxps" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x00000F5F, 0), MAKE_INST(INST_MAXSD , "maxsd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF2000F5F, 0), MAKE_INST(INST_MAXSS , "maxss" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF3000F5F, 0), MAKE_INST(INST_MFENCE , "mfence" , I_EMIT , 0 , 0 , 0, 0x000FAEF0, 0), MAKE_INST(INST_MINPD , "minpd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000F5D, 0), MAKE_INST(INST_MINPS , "minps" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x00000F5D, 0), MAKE_INST(INST_MINSD , "minsd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF2000F5D, 0), MAKE_INST(INST_MINSS , "minss" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF3000F5D, 0), MAKE_INST(INST_MONITOR , "monitor" , I_EMIT , 0 , 0 , 0, 0x000F01C8, 0), MAKE_INST(INST_MOV , "mov" , I_MOV , 0 , 0 , 0, 0 , 0), MAKE_INST(INST_MOVAPD , "movapd" , I_MMU_MOV , O_XMM_MEM , O_XMM_MEM , 0, 0x66000F28, 0x66000F29), MAKE_INST(INST_MOVAPS , "movaps" , I_MMU_MOV , O_XMM_MEM , O_XMM_MEM , 0, 0x00000F28, 0x00000F29), MAKE_INST(INST_MOVBE , "movbe" , I_MOVBE ,O_G16_32_64|O_MEM,O_G16_32_64|O_MEM, 0, 0x000F38F0, 0x000F38F1), MAKE_INST(INST_MOVD , "movd" , I_MMU_MOVD , 0 , 0 , 0, 0 , 0), MAKE_INST(INST_MOVDDUP , "movddup" , I_MMU_MOV , O_XMM , O_XMM_MEM , 0, 0xF2000F12, 0), MAKE_INST(INST_MOVDQ2Q , "movdq2q" , I_MMU_MOV , O_MM , O_XMM , 0, 0xF2000FD6, 0), MAKE_INST(INST_MOVDQA , "movdqa" , I_MMU_MOV , O_XMM_MEM , O_XMM_MEM , 0, 0x66000F6F, 0x66000F7F), MAKE_INST(INST_MOVDQU , "movdqu" , I_MMU_MOV , O_XMM_MEM , O_XMM_MEM , 0, 0xF3000F6F, 0xF3000F7F), MAKE_INST(INST_MOVHLPS , "movhlps" , I_MMU_MOV , O_XMM , O_XMM , 0, 0x00000F12, 0), MAKE_INST(INST_MOVHPD , "movhpd" , I_MMU_MOV , O_XMM_MEM , O_XMM_MEM , 0, 0x66000F16, 0x66000F17), MAKE_INST(INST_MOVHPS , "movhps" , I_MMU_MOV , O_XMM_MEM , O_XMM_MEM , 0, 0x00000F16, 0x00000F17), MAKE_INST(INST_MOVLHPS , "movlhps" , I_MMU_MOV , O_XMM , O_XMM , 0, 0x00000F16, 0), MAKE_INST(INST_MOVLPD , "movlpd" , I_MMU_MOV , O_XMM_MEM , O_XMM_MEM , 0, 0x66000F12, 0x66000F13), MAKE_INST(INST_MOVLPS , "movlps" , I_MMU_MOV , O_XMM_MEM , O_XMM_MEM , 0, 0x00000F12, 0x00000F13), MAKE_INST(INST_MOVMSKPD , "movmskpd" , I_MMU_MOV , O_G32_64|O_NOREX, O_XMM , 0, 0x66000F50, 0), MAKE_INST(INST_MOVMSKPS , "movmskps" , I_MMU_MOV , O_G32_64|O_NOREX, O_XMM , 0, 0x00000F50, 0), MAKE_INST(INST_MOVNTDQ , "movntdq" , I_MMU_MOV , O_MEM , O_XMM , 0, 0 , 0x66000FE7), MAKE_INST(INST_MOVNTDQA , "movntdqa" , I_MMU_MOV , O_XMM , O_MEM , 0, 0x660F382A, 0), MAKE_INST(INST_MOVNTI , "movnti" , I_MMU_MOV , O_MEM , O_G32_64 , 0, 0 , 0x00000FC3), MAKE_INST(INST_MOVNTPD , "movntpd" , I_MMU_MOV , O_MEM , O_XMM , 0, 0 , 0x66000F2B), MAKE_INST(INST_MOVNTPS , "movntps" , I_MMU_MOV , O_MEM , O_XMM , 0, 0 , 0x00000F2B), MAKE_INST(INST_MOVNTQ , "movntq" , I_MMU_MOV , O_MEM , O_MM , 0, 0 , 0x00000FE7), MAKE_INST(INST_MOVQ , "movq" , I_MMU_MOVQ , 0 , 0 , 0, 0 , 0), MAKE_INST(INST_MOVQ2DQ , "movq2dq" , I_MMU_RMI , O_XMM , O_MM , 0, 0xF3000FD6, 0), MAKE_INST(INST_MOVSD , "movsd" , I_MMU_MOV , O_XMM_MEM , O_XMM_MEM , 0, 0xF2000F10, 0xF2000F11), MAKE_INST(INST_MOVSHDUP , "movshdup" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF3000F16, 0), MAKE_INST(INST_MOVSLDUP , "movsldup" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF3000F12, 0), MAKE_INST(INST_MOVSS , "movss" , I_MMU_MOV , O_XMM_MEM , O_XMM_MEM , 0, 0xF3000F10, 0xF3000F11), MAKE_INST(INST_MOVSX , "movsx" , I_MOVSX_MOVZX , 0 , 0 , 0, 0x00000FBE, 0), MAKE_INST(INST_MOVSXD , "movsxd" , I_MOVSXD , 0 , 0 , 0, 0 , 0), MAKE_INST(INST_MOVUPD , "movupd" , I_MMU_MOV , O_XMM_MEM , O_XMM_MEM , 0, 0x66000F10, 0x66000F11), MAKE_INST(INST_MOVUPS , "movups" , I_MMU_MOV , O_XMM_MEM , O_XMM_MEM , 0, 0x00000F10, 0x00000F11), MAKE_INST(INST_MOVZX , "movzx" , I_MOVSX_MOVZX , 0 , 0 , 0, 0x00000FB6, 0), MAKE_INST(INST_MOV_PTR , "mov" , I_MOV_PTR , 0 , 0 , 0, 0 , 0), MAKE_INST(INST_MPSADBW , "mpsadbw" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0x660F3A42, 0), MAKE_INST(INST_MUL , "mul" , I_RM , 0 , 0 , 4, 0x000000F6, 0), MAKE_INST(INST_MULPD , "mulpd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000F59, 0), MAKE_INST(INST_MULPS , "mulps" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x00000F59, 0), MAKE_INST(INST_MULSD , "mulsd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF2000F59, 0), MAKE_INST(INST_MULSS , "mulss" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF3000F59, 0), MAKE_INST(INST_MWAIT , "mwait" , I_EMIT , 0 , 0 , 0, 0x000F01C9, 0), MAKE_INST(INST_NEG , "neg" , I_RM , 0 , 0 , 3, 0x000000F6, 0), MAKE_INST(INST_NOP , "nop" , I_EMIT , 0 , 0 , 0, 0x00000090, 0), MAKE_INST(INST_NOT , "not" , I_RM , 0 , 0 , 2, 0x000000F6, 0), MAKE_INST(INST_OR , "or" , I_ALU , 0 , 0 , 1, 0x00000008, 0x00000080), MAKE_INST(INST_ORPD , "orpd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000F56, 0), MAKE_INST(INST_ORPS , "orps" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x00000F56, 0), MAKE_INST(INST_PABSB , "pabsb" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x000F381C, 0), MAKE_INST(INST_PABSD , "pabsd" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x000F381E, 0), MAKE_INST(INST_PABSW , "pabsw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x000F381D, 0), MAKE_INST(INST_PACKSSDW , "packssdw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000F6B, 0), MAKE_INST(INST_PACKSSWB , "packsswb" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000F63, 0), MAKE_INST(INST_PACKUSDW , "packusdw" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F382B, 0), MAKE_INST(INST_PACKUSWB , "packuswb" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000F67, 0), MAKE_INST(INST_PADDB , "paddb" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FFC, 0), MAKE_INST(INST_PADDD , "paddd" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FFE, 0), MAKE_INST(INST_PADDQ , "paddq" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FD4, 0), MAKE_INST(INST_PADDSB , "paddsb" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FEC, 0), MAKE_INST(INST_PADDSW , "paddsw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FED, 0), MAKE_INST(INST_PADDUSB , "paddusb" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FDC, 0), MAKE_INST(INST_PADDUSW , "paddusw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FDD, 0), MAKE_INST(INST_PADDW , "paddw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FFD, 0), MAKE_INST(INST_PALIGNR , "palignr" , I_MMU_RM_IMM8 , O_MM_XMM , O_MM_XMM_MEM , 0, 0x000F3A0F, 0), MAKE_INST(INST_PAND , "pand" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FDB, 0), MAKE_INST(INST_PANDN , "pandn" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FDF, 0), MAKE_INST(INST_PAUSE , "pause" , I_EMIT , 0 , 0 , 0, 0xF3000090, 0), MAKE_INST(INST_PAVGB , "pavgb" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FE0, 0), MAKE_INST(INST_PAVGW , "pavgw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FE3, 0), MAKE_INST(INST_PBLENDVB , "pblendvb" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3810, 0), MAKE_INST(INST_PBLENDW , "pblendw" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0x660F3A0E, 0), MAKE_INST(INST_PCMPEQB , "pcmpeqb" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000F74, 0), MAKE_INST(INST_PCMPEQD , "pcmpeqd" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000F76, 0), MAKE_INST(INST_PCMPEQQ , "pcmpeqq" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3829, 0), MAKE_INST(INST_PCMPEQW , "pcmpeqw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000F75, 0), MAKE_INST(INST_PCMPESTRI , "pcmpestri" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0x660F3A61, 0), MAKE_INST(INST_PCMPESTRM , "pcmpestrm" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0x660F3A60, 0), MAKE_INST(INST_PCMPGTB , "pcmpgtb" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000F64, 0), MAKE_INST(INST_PCMPGTD , "pcmpgtd" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000F66, 0), MAKE_INST(INST_PCMPGTQ , "pcmpgtq" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3837, 0), MAKE_INST(INST_PCMPGTW , "pcmpgtw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000F65, 0), MAKE_INST(INST_PCMPISTRI , "pcmpistri" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0x660F3A63, 0), MAKE_INST(INST_PCMPISTRM , "pcmpistrm" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0x660F3A62, 0), MAKE_INST(INST_PEXTRB , "pextrb" , I_MMU_PEXTR , O_G8|O_G32|O_MEM, O_XMM , 0, 0x000F3A14, 0), MAKE_INST(INST_PEXTRD , "pextrd" , I_MMU_PEXTR , O_G32 |O_MEM, O_XMM , 0, 0x000F3A16, 0), MAKE_INST(INST_PEXTRQ , "pextrq" , I_MMU_PEXTR , O_G32_64 |O_MEM, O_XMM , 1, 0x000F3A16, 0), MAKE_INST(INST_PEXTRW , "pextrw" , I_MMU_PEXTR , O_G32 |O_MEM, O_XMM | O_MM , 0, 0x000F3A16, 0), MAKE_INST(INST_PF2ID , "pf2id" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0x1D), MAKE_INST(INST_PF2IW , "pf2iw" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0x1C), MAKE_INST(INST_PFACC , "pfacc" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0xAE), MAKE_INST(INST_PFADD , "pfadd" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0x9E), MAKE_INST(INST_PFCMPEQ , "pfcmpeq" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0xB0), MAKE_INST(INST_PFCMPGE , "pfcmpge" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0x90), MAKE_INST(INST_PFCMPGT , "pfcmpgt" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0xA0), MAKE_INST(INST_PFMAX , "pfmax" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0xA4), MAKE_INST(INST_PFMIN , "pfmin" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0x94), MAKE_INST(INST_PFMUL , "pfmul" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0xB4), MAKE_INST(INST_PFNACC , "pfnacc" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0x8A), MAKE_INST(INST_PFPNACC , "pfpnacc" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0x8E), MAKE_INST(INST_PFRCP , "pfrcp" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0x96), MAKE_INST(INST_PFRCPIT1 , "pfrcpit1" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0xA6), MAKE_INST(INST_PFRCPIT2 , "pfrcpit2" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0xB6), MAKE_INST(INST_PFRSQIT1 , "pfrsqit1" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0xA7), MAKE_INST(INST_PFRSQRT , "pfrsqrt" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0x97), MAKE_INST(INST_PFSUB , "pfsub" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0x9A), MAKE_INST(INST_PFSUBR , "pfsubr" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0xAA), MAKE_INST(INST_PHADDD , "phaddd" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x000F3802, 0), MAKE_INST(INST_PHADDSW , "phaddsw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x000F3803, 0), MAKE_INST(INST_PHADDW , "phaddw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x000F3801, 0), MAKE_INST(INST_PHMINPOSUW , "phminposuw" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3841, 0), MAKE_INST(INST_PHSUBD , "phsubd" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x000F3806, 0), MAKE_INST(INST_PHSUBSW , "phsubsw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x000F3807, 0), MAKE_INST(INST_PHSUBW , "phsubw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x000F3805, 0), MAKE_INST(INST_PI2FD , "pi2fd" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0x0D), MAKE_INST(INST_PI2FW , "pi2fw" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0x0C), MAKE_INST(INST_PINSRB , "pinsrb" , I_MMU_RM_IMM8 , O_XMM , O_G32 | O_MEM , 0, 0x660F3A20, 0), MAKE_INST(INST_PINSRD , "pinsrd" , I_MMU_RM_IMM8 , O_XMM , O_G32 | O_MEM , 0, 0x660F3A22, 0), MAKE_INST(INST_PINSRQ , "pinsrq" , I_MMU_RM_IMM8 , O_XMM , O_G64 | O_MEM , 0, 0x660F3A22, 0), MAKE_INST(INST_PINSRW , "pinsrw" , I_MMU_RM_IMM8 , O_MM_XMM , O_G32 | O_MEM , 0, 0x00000FC4, 0), MAKE_INST(INST_PMADDUBSW , "pmaddubsw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x000F3804, 0), MAKE_INST(INST_PMADDWD , "pmaddwd" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FF5, 0), MAKE_INST(INST_PMAXSB , "pmaxsb" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F383C, 0), MAKE_INST(INST_PMAXSD , "pmaxsd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F383D, 0), MAKE_INST(INST_PMAXSW , "pmaxsw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FEE, 0), MAKE_INST(INST_PMAXUB , "pmaxub" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FDE, 0), MAKE_INST(INST_PMAXUD , "pmaxud" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F383F, 0), MAKE_INST(INST_PMAXUW , "pmaxuw" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F383E, 0), MAKE_INST(INST_PMINSB , "pminsb" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3838, 0), MAKE_INST(INST_PMINSD , "pminsd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3839, 0), MAKE_INST(INST_PMINSW , "pminsw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FEA, 0), MAKE_INST(INST_PMINUB , "pminub" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FDA, 0), MAKE_INST(INST_PMINUD , "pminud" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F383B, 0), MAKE_INST(INST_PMINUW , "pminuw" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F383A, 0), MAKE_INST(INST_PMOVMSKB , "pmovmskb" , I_MMU_RMI , O_G32_64 , O_MM_XMM , 0, 0x00000FD7, 0), MAKE_INST(INST_PMOVSXBD , "pmovsxbd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3821, 0), MAKE_INST(INST_PMOVSXBQ , "pmovsxbq" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3822, 0), MAKE_INST(INST_PMOVSXBW , "pmovsxbw" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3820, 0), MAKE_INST(INST_PMOVSXDQ , "pmovsxdq" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3825, 0), MAKE_INST(INST_PMOVSXWD , "pmovsxwd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3823, 0), MAKE_INST(INST_PMOVSXWQ , "pmovsxwq" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3824, 0), MAKE_INST(INST_PMOVZXBD , "pmovzxbd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3831, 0), MAKE_INST(INST_PMOVZXBQ , "pmovzxbq" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3832, 0), MAKE_INST(INST_PMOVZXBW , "pmovzxbw" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3830, 0), MAKE_INST(INST_PMOVZXDQ , "pmovzxdq" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3835, 0), MAKE_INST(INST_PMOVZXWD , "pmovzxwd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3833, 0), MAKE_INST(INST_PMOVZXWQ , "pmovzxwq" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3834, 0), MAKE_INST(INST_PMULDQ , "pmuldq" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3828, 0), MAKE_INST(INST_PMULHRSW , "pmulhrsw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x000F380B, 0), MAKE_INST(INST_PMULHUW , "pmulhuw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FE4, 0), MAKE_INST(INST_PMULHW , "pmulhw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FE5, 0), MAKE_INST(INST_PMULLD , "pmulld" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3840, 0), MAKE_INST(INST_PMULLW , "pmullw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FD5, 0), MAKE_INST(INST_PMULUDQ , "pmuludq" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FF4, 0), MAKE_INST(INST_POP , "pop" , I_POP , 0 , 0 , 0, 0x00000058, 0x0000008F), MAKE_INST(INST_POPAD , "popad" , I_EMIT , 0 , 0 , 0, 0x00000061, 0), MAKE_INST(INST_POPCNT , "popcnt" , I_R_RM , 0 , 0 , 0, 0xF3000FB8, 0), MAKE_INST(INST_POPFD , "popfd" , I_EMIT , 0 , 0 , 0, 0x0000009D, 0), MAKE_INST(INST_POPFQ , "popfq" , I_EMIT , 0 , 0 , 0, 0x0000009D, 0), MAKE_INST(INST_POR , "por" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FEB, 0), MAKE_INST(INST_PREFETCH , "prefetch" , I_MMU_PREFETCH , O_MEM , O_IMM , 0, 0 , 0), MAKE_INST(INST_PSADBW , "psadbw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FF6, 0), MAKE_INST(INST_PSHUFB , "pshufb" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x000F3800, 0), MAKE_INST(INST_PSHUFD , "pshufd" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0x66000F70, 0), MAKE_INST(INST_PSHUFW , "pshufw" , I_MMU_RM_IMM8 , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000F70, 0), MAKE_INST(INST_PSHUFHW , "pshufhw" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0xF3000F70, 0), MAKE_INST(INST_PSHUFLW , "pshuflw" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0xF2000F70, 0), MAKE_INST(INST_PSIGNB , "psignb" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x000F3808, 0), MAKE_INST(INST_PSIGND , "psignd" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x000F380A, 0), MAKE_INST(INST_PSIGNW , "psignw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x000F3809, 0), MAKE_INST(INST_PSLLD , "pslld" , I_MMU_RMI , O_MM_XMM, O_IMM | O_MM_XMM_MEM , 6, 0x00000FF2, 0x00000F72), MAKE_INST(INST_PSLLDQ , "pslldq" , I_MMU_RMI , O_XMM , O_IMM , 7, 0 , 0x66000F73), MAKE_INST(INST_PSLLQ , "psllq" , I_MMU_RMI , O_MM_XMM, O_IMM | O_MM_XMM_MEM , 6, 0x00000FF3, 0x00000F73), MAKE_INST(INST_PSLLW , "psllw" , I_MMU_RMI , O_MM_XMM, O_IMM | O_MM_XMM_MEM , 6, 0x00000FF1, 0x00000F71), MAKE_INST(INST_PSRAD , "psrad" , I_MMU_RMI , O_MM_XMM, O_IMM | O_MM_XMM_MEM , 4, 0x00000FE2, 0x00000F72), MAKE_INST(INST_PSRAW , "psraw" , I_MMU_RMI , O_MM_XMM, O_IMM | O_MM_XMM_MEM , 4, 0x00000FE1, 0x00000F71), MAKE_INST(INST_PSRLD , "psrld" , I_MMU_RMI , O_MM_XMM, O_IMM | O_MM_XMM_MEM , 2, 0x00000FD2, 0x00000F72), MAKE_INST(INST_PSRLDQ , "psrldq" , I_MMU_RMI , O_XMM , O_IMM , 3, 0 , 0x66000F73), MAKE_INST(INST_PSRLQ , "psrlq" , I_MMU_RMI , O_MM_XMM, O_IMM | O_MM_XMM_MEM , 2, 0x00000FD3, 0x00000F73), MAKE_INST(INST_PSRLW , "psrlw" , I_MMU_RMI , O_MM_XMM, O_IMM | O_MM_XMM_MEM , 2, 0x00000FD1, 0x00000F71), MAKE_INST(INST_PSUBB , "psubb" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FF8, 0), MAKE_INST(INST_PSUBD , "psubd" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FFA, 0), MAKE_INST(INST_PSUBQ , "psubq" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FFB, 0), MAKE_INST(INST_PSUBSB , "psubsb" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FE8, 0), MAKE_INST(INST_PSUBSW , "psubsw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FE9, 0), MAKE_INST(INST_PSUBUSB , "psubusb" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FD8, 0), MAKE_INST(INST_PSUBUSW , "psubusw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FD9, 0), MAKE_INST(INST_PSUBW , "psubw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FF9, 0), MAKE_INST(INST_PSWAPD , "pswapd" , I_MMU_RM_3DNOW , O_MM , O_MM_MEM , 0, 0x00000F0F, 0xBB), MAKE_INST(INST_PTEST , "ptest" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x660F3817, 0), MAKE_INST(INST_PUNPCKHBW , "punpckhbw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000F68, 0), MAKE_INST(INST_PUNPCKHDQ , "punpckhdq" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000F6A, 0), MAKE_INST(INST_PUNPCKHQDQ , "punpckhqdq" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000F6D, 0), MAKE_INST(INST_PUNPCKHWD , "punpckhwd" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000F69, 0), MAKE_INST(INST_PUNPCKLBW , "punpcklbw" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000F60, 0), MAKE_INST(INST_PUNPCKLDQ , "punpckldq" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000F62, 0), MAKE_INST(INST_PUNPCKLQDQ , "punpcklqdq" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000F6C, 0), MAKE_INST(INST_PUNPCKLWD , "punpcklwd" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000F61, 0), MAKE_INST(INST_PUSH , "push" , I_PUSH , 0 , 0 , 6, 0x00000050, 0x000000FF), MAKE_INST(INST_PUSHAD , "pushad" , I_EMIT , 0 , 0 , 0, 0x00000060, 0), MAKE_INST(INST_PUSHFD , "pushfd" , I_EMIT , 0 , 0 , 0, 0x0000009C, 0), MAKE_INST(INST_PUSHFQ , "pushfq" , I_EMIT , 0 , 0 , 0, 0x0000009C, 0), MAKE_INST(INST_PXOR , "pxor" , I_MMU_RMI , O_MM_XMM , O_MM_XMM_MEM , 0, 0x00000FEF, 0), MAKE_INST(INST_RCL , "rcl" , I_ROT , 0 , 0 , 2, 0 , 0), MAKE_INST(INST_RCPPS , "rcpps" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x00000F53, 0), MAKE_INST(INST_RCPSS , "rcpss" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF3000F53, 0), MAKE_INST(INST_RCR , "rcr" , I_ROT , 0 , 0 , 3, 0 , 0), MAKE_INST(INST_RDTSC , "rdtsc" , I_EMIT , 0 , 0 , 0, 0x00000F31, 0), MAKE_INST(INST_RDTSCP , "rdtscp" , I_EMIT , 0 , 0 , 0, 0x000F01F9, 0), MAKE_INST(INST_RET , "ret" , I_RET , 0 , 0 , 0, 0 , 0), MAKE_INST(INST_ROL , "rol" , I_ROT , 0 , 0 , 0, 0 , 0), MAKE_INST(INST_ROR , "ror" , I_ROT , 0 , 0 , 1, 0 , 0), MAKE_INST(INST_ROUNDPD , "roundpd" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0x660F3A09, 0), MAKE_INST(INST_ROUNDPS , "roundps" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0x660F3A08, 0), MAKE_INST(INST_ROUNDSD , "roundsd" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0x660F3A0B, 0), MAKE_INST(INST_ROUNDSS , "roundss" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0x660F3A0A, 0), MAKE_INST(INST_RSQRTPS , "rsqrtps" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x00000F52, 0), MAKE_INST(INST_RSQRTSS , "rsqrtss" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF3000F52, 0), MAKE_INST(INST_SAHF , "sahf" , I_EMIT , 0 , 0 , 0, 0x0000009E, 0), MAKE_INST(INST_SAL , "sal" , I_ROT , 0 , 0 , 4, 0 , 0), MAKE_INST(INST_SAR , "sar" , I_ROT , 0 , 0 , 7, 0 , 0), MAKE_INST(INST_SBB , "sbb" , I_ALU , 0 , 0 , 3, 0x00000018, 0x00000080), MAKE_INST(INST_SETA , "seta" , I_RM_B , 0 , 0 , 0, 0x00000F97, 0), MAKE_INST(INST_SETAE , "setae" , I_RM_B , 0 , 0 , 0, 0x00000F93, 0), MAKE_INST(INST_SETB , "setb" , I_RM_B , 0 , 0 , 0, 0x00000F92, 0), MAKE_INST(INST_SETBE , "setbe" , I_RM_B , 0 , 0 , 0, 0x00000F96, 0), MAKE_INST(INST_SETC , "setc" , I_RM_B , 0 , 0 , 0, 0x00000F92, 0), MAKE_INST(INST_SETE , "sete" , I_RM_B , 0 , 0 , 0, 0x00000F94, 0), MAKE_INST(INST_SETG , "setg" , I_RM_B , 0 , 0 , 0, 0x00000F9F, 0), MAKE_INST(INST_SETGE , "setge" , I_RM_B , 0 , 0 , 0, 0x00000F9D, 0), MAKE_INST(INST_SETL , "setl" , I_RM_B , 0 , 0 , 0, 0x00000F9C, 0), MAKE_INST(INST_SETLE , "setle" , I_RM_B , 0 , 0 , 0, 0x00000F9E, 0), MAKE_INST(INST_SETNA , "setna" , I_RM_B , 0 , 0 , 0, 0x00000F96, 0), MAKE_INST(INST_SETNAE , "setnae" , I_RM_B , 0 , 0 , 0, 0x00000F92, 0), MAKE_INST(INST_SETNB , "setnb" , I_RM_B , 0 , 0 , 0, 0x00000F93, 0), MAKE_INST(INST_SETNBE , "setnbe" , I_RM_B , 0 , 0 , 0, 0x00000F97, 0), MAKE_INST(INST_SETNC , "setnc" , I_RM_B , 0 , 0 , 0, 0x00000F93, 0), MAKE_INST(INST_SETNE , "setne" , I_RM_B , 0 , 0 , 0, 0x00000F95, 0), MAKE_INST(INST_SETNG , "setng" , I_RM_B , 0 , 0 , 0, 0x00000F9E, 0), MAKE_INST(INST_SETNGE , "setnge" , I_RM_B , 0 , 0 , 0, 0x00000F9C, 0), MAKE_INST(INST_SETNL , "setnl" , I_RM_B , 0 , 0 , 0, 0x00000F9D, 0), MAKE_INST(INST_SETNLE , "setnle" , I_RM_B , 0 , 0 , 0, 0x00000F9F, 0), MAKE_INST(INST_SETNO , "setno" , I_RM_B , 0 , 0 , 0, 0x00000F91, 0), MAKE_INST(INST_SETNP , "setnp" , I_RM_B , 0 , 0 , 0, 0x00000F9B, 0), MAKE_INST(INST_SETNS , "setns" , I_RM_B , 0 , 0 , 0, 0x00000F99, 0), MAKE_INST(INST_SETNZ , "setnz" , I_RM_B , 0 , 0 , 0, 0x00000F95, 0), MAKE_INST(INST_SETO , "seto" , I_RM_B , 0 , 0 , 0, 0x00000F90, 0), MAKE_INST(INST_SETP , "setp" , I_RM_B , 0 , 0 , 0, 0x00000F9A, 0), MAKE_INST(INST_SETPE , "setpe" , I_RM_B , 0 , 0 , 0, 0x00000F9A, 0), MAKE_INST(INST_SETPO , "setpo" , I_RM_B , 0 , 0 , 0, 0x00000F9B, 0), MAKE_INST(INST_SETS , "sets" , I_RM_B , 0 , 0 , 0, 0x00000F98, 0), MAKE_INST(INST_SETZ , "setz" , I_RM_B , 0 , 0 , 0, 0x00000F94, 0), MAKE_INST(INST_SFENCE , "sfence" , I_EMIT , 0 , 0 , 0, 0x000FAEF8, 0), MAKE_INST(INST_SHL , "shl" , I_ROT , 0 , 0 , 4, 0 , 0), MAKE_INST(INST_SHLD , "shld" , I_SHLD_SHRD , 0 , 0 , 0, 0x00000FA4, 0), MAKE_INST(INST_SHR , "shr" , I_ROT , 0 , 0 , 5, 0 , 0), MAKE_INST(INST_SHRD , "shrd" , I_SHLD_SHRD , 0 , 0 , 0, 0x00000FAC, 0), MAKE_INST(INST_SHUFPS , "shufps" , I_MMU_RM_IMM8 , O_XMM , O_XMM_MEM , 0, 0x00000FC6, 0), MAKE_INST(INST_SQRTPD , "sqrtpd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000F51, 0), MAKE_INST(INST_SQRTPS , "sqrtps" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x00000F51, 0), MAKE_INST(INST_SQRTSD , "sqrtsd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF2000F51, 0), MAKE_INST(INST_SQRTSS , "sqrtss" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF3000F51, 0), MAKE_INST(INST_STC , "stc" , I_EMIT , 0 , 0 , 0, 0x000000F9, 0), MAKE_INST(INST_STD , "std" , I_EMIT , 0 , 0 , 0, 0x000000FD, 0), MAKE_INST(INST_STMXCSR , "stmxcsr" , I_M , O_MEM , 0 , 3, 0x00000FAE, 0), MAKE_INST(INST_SUB , "sub" , I_ALU , 0 , 0 , 5, 0x00000028, 0x00000080), MAKE_INST(INST_SUBPD , "subpd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000F5C, 0), MAKE_INST(INST_SUBPS , "subps" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x00000F5C, 0), MAKE_INST(INST_SUBSD , "subsd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF2000F5C, 0), MAKE_INST(INST_SUBSS , "subss" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0xF3000F5C, 0), MAKE_INST(INST_SYSCALL , "syscall" , I_EMIT , 0 , 0 , 0, 0x00000F05, 0), MAKE_INST(INST_TEST , "test" , I_TEST , 0 , 0 , 0, 0 , 0), MAKE_INST(INST_UCOMISD , "ucomisd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000F2E, 0), MAKE_INST(INST_UCOMISS , "ucomiss" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x00000F2E, 0), MAKE_INST(INST_UD2 , "ud2" , I_EMIT , 0 , 0 , 0, 0x00000F0B, 0), MAKE_INST(INST_UNPCKHPD , "unpckhpd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000F15, 0), MAKE_INST(INST_UNPCKHPS , "unpckhps" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x00000F15, 0), MAKE_INST(INST_UNPCKLPD , "unpcklpd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000F14, 0), MAKE_INST(INST_UNPCKLPS , "unpcklps" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x00000F14, 0), MAKE_INST(INST_XADD , "xadd" , I_RM_R , 0 , 0 , 0, 0x00000FC0, 0), MAKE_INST(INST_XCHG , "xchg" , I_XCHG , 0 , 0 , 0, 0 , 0), MAKE_INST(INST_XOR , "xor" , I_ALU , 0 , 0 , 6, 0x00000030, 0x00000080), MAKE_INST(INST_XORPD , "xorpd" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x66000F57, 0), MAKE_INST(INST_XORPS , "xorps" , I_MMU_RMI , O_XMM , O_XMM_MEM , 0, 0x00000F57, 0) }; }