MdOpCodes.h 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft Corporation and contributors. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. #define o(form) OPBYTE_ ## form
  6. #ifndef f
  7. # define f(form) FORM_ ## form
  8. #endif
  9. // opcode
  10. // / layout
  11. // / / byte2
  12. // / / / form
  13. // / / / / opbyte
  14. // / / / / /
  15. // / / / / / dope leadin
  16. // / / / / / / /
  17. MACRO(ADD, Reg2, OpSideEffect, R000, f(BINOP), o(ADD), DOPEQ|DSETCC|DCOMMOP, OLB_NONE)
  18. MACRO(ADDPD, Reg2, None, RNON, f(MODRM), o(ADDPD), DNO16|DOPEQ|D66|DCOMMOP, OLB_0F)
  19. MACRO(ADDPS, Reg2, None, RNON, f(MODRM), o(ADDPS), DNO16|DOPEQ|DCOMMOP, OLB_0F)
  20. MACRO(ADDSD, Reg2, None, RNON, f(MODRM), o(ADDSD), DNO16|DOPEQ|DCOMMOP|DF2, OLB_0F)
  21. MACRO(ADDSS, Reg2, None, RNON, f(MODRM), o(ADDSS), DNO16|DOPEQ|DF3|DCOMMOP, OLB_0F)
  22. MACRO(AND, Reg2, OpSideEffect, R100, f(BINOP), o(AND), DOPEQ|DSETCC|DCOMMOP, OLB_NONE)
  23. MACRO(ANDNPD, Reg2, None, RNON, f(MODRM), o(ANDNPD), DNO16|DOPEQ|D66, OLB_NONE)
  24. MACRO(ANDNPS, Reg2, None, RNON, f(MODRM), o(ANDNPS), DNO16|DOPEQ, OLB_0F)
  25. MACRO(ANDPD, Reg2, None, RNON, f(MODRM), o(ANDPD), DNO16|DOPEQ|D66|DCOMMOP, OLB_0F)
  26. MACRO(ANDPS, Reg2, None, RNON, f(MODRM), o(ANDPS), DNO16|DOPEQ|DCOMMOP, OLB_0F)
  27. MACRO(BSF, Reg2, None, RNON, f(MODRM), o(BSF), DDST, OLB_0F)
  28. MACRO(BSR, Reg2, None, RNON, f(MODRM), o(BSR), DDST, OLB_0F)
  29. MACRO(BT, Reg2, OpSideEffect, R100, f(SPMOD), o(BT), DSETCC, OLB_0F)
  30. MACRO(BTR, Reg2, OpSideEffect, R110, f(SPMOD), o(BTR), DOPEQ|DSETCC, OLB_0F)
  31. MACRO(BTS, Reg2, OpSideEffect, R101, f(SPMOD), o(BTS), DOPEQ|DSETCC, OLB_0F)
  32. MACRO(CALL, CallI, OpSideEffect, R010, f(CALL), o(CALL), DSETCC, OLB_NONE)
  33. MACRO(CDQ, Empty, OpSideEffect, RNON, f(NO), o(CDQ), DNO16, OLB_NONE)
  34. MACRO(CQO, Empty, OpSideEffect, RNON, f(NO), o(CQO), DNO16, OLB_NONE)
  35. MACRO(CMOVA, Reg2, None, RNON, f(MODRM), o(CMOVA), DDST|DUSECC, OLB_0F)
  36. MACRO(CMOVAE, Reg2, None, RNON, f(MODRM), o(CMOVAE), DDST|DUSECC, OLB_0F)
  37. MACRO(CMOVB, Reg2, None, RNON, f(MODRM), o(CMOVB), DDST|DUSECC, OLB_0F)
  38. MACRO(CMOVBE, Reg2, None, RNON, f(MODRM), o(CMOVBE), DDST|DUSECC, OLB_0F)
  39. MACRO(CMOVE, Reg2, None, RNON, f(MODRM), o(CMOVE), DDST|DUSECC, OLB_0F)
  40. MACRO(CMOVG, Reg2, None, RNON, f(MODRM), o(CMOVG), DDST|DUSECC, OLB_0F)
  41. MACRO(CMOVGE, Reg2, None, RNON, f(MODRM), o(CMOVGE), DDST|DUSECC, OLB_0F)
  42. MACRO(CMOVL, Reg2, None, RNON, f(MODRM), o(CMOVL), DDST|DUSECC, OLB_0F)
  43. MACRO(CMOVLE, Reg2, None, RNON, f(MODRM), o(CMOVLE), DDST|DUSECC, OLB_0F)
  44. MACRO(CMOVNE, Reg2, None, RNON, f(MODRM), o(CMOVNE), DDST|DUSECC, OLB_0F)
  45. MACRO(CMOVNO, Reg2, None, RNON, f(MODRM), o(CMOVNO), DDST|DUSECC, OLB_0F)
  46. MACRO(CMOVNP, Reg2, None, RNON, f(MODRM), o(CMOVNP), DDST|DUSECC, OLB_0F)
  47. MACRO(CMOVNS, Reg2, None, RNON, f(MODRM), o(CMOVNS), DDST|DUSECC, OLB_0F)
  48. MACRO(CMOVO, Reg2, None, RNON, f(MODRM), o(CMOVO), DDST|DUSECC, OLB_0F)
  49. MACRO(CMOVP, Reg2, None, RNON, f(MODRM), o(CMOVP), DDST|DUSECC, OLB_0F)
  50. MACRO(CMOVS, Reg2, None, RNON, f(MODRM), o(CMOVS), DDST|DUSECC, OLB_0F)
  51. MACRO(CMP, Empty, OpSideEffect, R111, f(BINOP), o(CMP), DSETCC, OLB_NONE)
  52. MACRO(CMPLTPS, Empty, None, RNON, f(MODRM), o(CMPPS), DSSE, OLB_0F)
  53. MACRO(CMPLEPS, Empty, None, RNON, f(MODRM), o(CMPPS), DSSE, OLB_0F)
  54. MACRO(CMPEQPS, Empty, None, RNON, f(MODRM), o(CMPPS), DSSE, OLB_0F)
  55. MACRO(CMPNEQPS, Empty, None, RNON, f(MODRM), o(CMPPS), DSSE, OLB_0F)
  56. MACRO(CMPUNORDPS, Empty, None, RNON, f(MODRM), o(CMPPS), DSSE, OLB_0F)
  57. MACRO(CMPLTPD, Empty, None, RNON, f(MODRM), o(CMPPD), D66|DSSE, OLB_0F)
  58. MACRO(CMPLEPD, Empty, None, RNON, f(MODRM), o(CMPPD), D66|DSSE, OLB_0F)
  59. MACRO(CMPEQPD, Empty, None, RNON, f(MODRM), o(CMPPD), D66|DSSE, OLB_0F)
  60. MACRO(CMPNEQPD, Empty, None, RNON, f(MODRM), o(CMPPD), D66|DSSE, OLB_0F)
  61. MACRO(COMISD, Empty, OpSideEffect, RNON, f(MODRM), o(COMISD), DNO16|D66|DSETCC, OLB_0F)
  62. MACRO(COMISS, Empty, OpSideEffect, RNON, f(MODRM), o(COMISS), DNO16|DSETCC, OLB_0F)
  63. MACRO(CVTDQ2PD, Reg2, None, RNON, f(MODRM), o(CVTDQ2PD),DDST|DNO16|DF3, OLB_0F)
  64. MACRO(CVTDQ2PS, Reg2, None, RNON, f(MODRM), o(CVTDQ2PS),DDST|DNO16, OLB_0F)
  65. MACRO(CVTSD2SI, Reg2, None, RNON, f(MODRM), o(CVTSD2SI),DDST|DNO16|DF2, OLB_0F)
  66. MACRO(CVTSI2SD, Reg2, None, RNON, f(MODRM), o(CVTSI2SD),DDST|DNO16|DF2, OLB_0F)
  67. MACRO(CVTSI2SS, Reg2, None, RNON, f(MODRM), o(CVTSI2SS),DDST|DNO16|DF3|DREXSRC, OLB_0F)
  68. MACRO(CVTPD2PS, Reg2, None, RNON, f(MODRM), o(CVTPD2PS),DDST|DNO16|D66, OLB_0F)
  69. MACRO(CVTPS2PD, Reg2, None, RNON, f(MODRM), o(CVTPS2PD),DDST|DNO16, OLB_0F)
  70. MACRO(CVTSD2SS, Reg2, None, RNON, f(MODRM), o(CVTSD2SS),DDST|DNO16|DF2, OLB_0F)
  71. MACRO(CVTSS2SD, Reg2, None, RNON, f(MODRM), o(CVTSS2SD),DDST|DNO16|DF3, OLB_0F)
  72. MACRO(CVTSS2SI, Reg2, None, RNON, f(MODRM), o(CVTSS2SI),DDST|DNO16|DF3, OLB_0F)
  73. MACRO(CVTTPD2DQ,Reg2, None, RNON, f(MODRM), o(CVTTPD2DQ),DDST|DNO16|D66, OLB_0F)
  74. MACRO(CVTTPS2DQ,Reg2, None, RNON, f(MODRM), o(CVTTPS2DQ),DDST|DNO16|DF3, OLB_0F)
  75. MACRO(CVTTSD2SI,Reg2, None, RNON, f(MODRM), o(CVTTSD2SI),DDST|DNO16|DF2, OLB_0F)
  76. MACRO(CVTTSS2SI,Reg2, None, RNON, f(MODRM), o(CVTTSS2SI),DDST|DNO16|DF3, OLB_0F)
  77. MACRO(DEC, Reg2, OpSideEffect, R001, f(INCDEC), o(DEC), DOPEQ|DSETCC, OLB_NONE)
  78. MACRO(DIV, Reg3, None, R110, f(MULDIV), o(DIV), DSETCC, OLB_NONE)
  79. MACRO(DIVPD, Reg3, None, RNON, f(MODRM), o(DIVPD), DNO16|DOPEQ|D66, OLB_0F)
  80. MACRO(DIVPS, Reg3, None, RNON, f(MODRM), o(DIVPS), DNO16|DOPEQ, OLB_0F)
  81. MACRO(DIVSD, Reg3, None, RNON, f(MODRM), o(DIVSD), DNO16|DOPEQ|DF2, OLB_0F)
  82. MACRO(DIVSS, Reg3, None, RNON, f(MODRM), o(DIVSS), DNO16|DOPEQ|DF3, OLB_0F)
  83. MACRO(IDIV, Reg3, None, R111, f(MULDIV), o(IDIV), DSETCC, OLB_NONE)
  84. MACRO(INC, Reg2, OpSideEffect, R000, f(INCDEC), o(INC), DOPEQ|DSETCC, OLB_NONE)
  85. MACRO(IMUL, Reg3, OpSideEffect, R101, f(MULDIV), o(IMUL), DSETCC, OLB_NONE)
  86. MACRO(IMUL2, Reg3, OpSideEffect, RNON, f(SPMOD), o(IMUL2), DOPEQ|DSETCC|DCOMMOP, OLB_0F)
  87. MACRO(INT, Reg1, OpSideEffect, RNON, f(SPECIAL), o(INT), DUSECC|DSETCC, OLB_NONE)
  88. MACRO(JA, BrReg2, OpSideEffect, RNON, f(JCC), o(JA), DUSECC|DNO16, OLB_0F)
  89. MACRO(JAE, BrReg2, OpSideEffect, RNON, f(JCC), o(JAE), DUSECC|DNO16, OLB_0F)
  90. MACRO(JB, BrReg2, OpSideEffect, RNON, f(JCC), o(JB), DUSECC|DNO16, OLB_0F)
  91. MACRO(JBE, BrReg2, OpSideEffect, RNON, f(JCC), o(JBE), DUSECC|DNO16, OLB_0F)
  92. MACRO(JEQ, BrReg2, OpSideEffect, RNON, f(JCC), o(JEQ), DUSECC|DNO16, OLB_0F)
  93. MACRO(JNE, BrReg2, OpSideEffect, RNON, f(JCC), o(JNE), DUSECC|DNO16, OLB_0F)
  94. MACRO(JLT, BrReg2, OpSideEffect, RNON, f(JCC), o(JLT), DUSECC|DNO16, OLB_0F)
  95. MACRO(JLE, BrReg2, OpSideEffect, RNON, f(JCC), o(JLE), DUSECC|DNO16, OLB_0F)
  96. MACRO(JGT, BrReg2, OpSideEffect, RNON, f(JCC), o(JGT), DUSECC|DNO16, OLB_0F)
  97. MACRO(JGE, BrReg2, OpSideEffect, RNON, f(JCC), o(JGE), DUSECC|DNO16, OLB_0F)
  98. MACRO(JNO, BrReg2, OpSideEffect, RNON, f(JCC), o(JNO), DUSECC|DNO16, OLB_0F)
  99. MACRO(JO, BrReg2, OpSideEffect, RNON, f(JCC), o(JO), DUSECC|DNO16, OLB_0F)
  100. MACRO(JP, BrReg2, OpSideEffect, RNON, f(JCC), o(JP), DUSECC|DNO16, OLB_0F)
  101. MACRO(JNP, BrReg2, OpSideEffect, RNON, f(JCC), o(JNP), DUSECC|DNO16, OLB_0F)
  102. MACRO(JNSB, BrReg2, OpSideEffect, RNON, f(JCC), o(JNSB), DUSECC|DNO16, OLB_0F)
  103. MACRO(JSB, BrReg2, OpSideEffect, RNON, f(JCC), o(JSB), DUSECC|DNO16, OLB_0F)
  104. MACRO(JMP, Br, OpSideEffect, R100, f(JMP), o(JMP), DNO16, OLB_NONE)
  105. MACRO(LEA, Reg2, None, RNON, f(MODRM), o(LEA), DDST, OLB_NONE)
  106. MACRO(MAXPD, Reg2, None, RNON, f(MODRM), o(MAXPD), DNO16|DOPEQ|D66, OLB_0F)
  107. MACRO(MAXPS, Reg2, None, RNON, f(MODRM), o(MAXPS), DNO16|DOPEQ, OLB_0F)
  108. MACRO(MINPD, Reg2, None, RNON, f(MODRM), o(MINPD), DNO16|DOPEQ|D66, OLB_0F)
  109. MACRO(MINPS, Reg2, None, RNON, f(MODRM), o(MINPS), DNO16|DOPEQ, OLB_0F)
  110. MACRO(LZCNT, Reg2, None, RNON, f(MODRM), o(LZCNT), DF3|DSETCC|DDST, OLB_0F)
  111. MACRO(MOV, Reg2, None, R000, f(MOV), o(MOV), DDST|DMOV, OLB_NONE)
  112. MACRO(MOV_TRUNC,Reg2, None, R000, f(MOV), o(MOV), DDST|DMOV, OLB_NONE)// Like a MOV, but MOV ECX, ECX can't be removed (truncation)
  113. MACRO(MOVD, Reg2, None, RNON, f(SPECIAL), o(MOVD), DDST|DNO16|D66, OLB_0F)
  114. MACRO(MOVHLPS, Reg2, None, RNON, f(SPECIAL), o(MOVHLPS), DDST|DNO16, OLB_0F)
  115. MACRO(MOVHPD, Reg2, None, RNON, f(SPECIAL), o(MOVHPD), DDST|DNO16|D66, OLB_0F)
  116. MACRO(MOVLHPS, Reg2, None, RNON, f(SPECIAL), o(MOVLHPS), DDST|DNO16, OLB_0F)
  117. MACRO(MOVMSKPD, Reg2, None, RNON, f(SPECIAL), o(MOVMSKPD), DDST|DNO16|D66, OLB_0F)
  118. MACRO(MOVMSKPS, Reg2, None, RNON, f(SPECIAL), o(MOVMSKPS), DDST|DNO16, OLB_0F)
  119. MACRO(PMOVMSKB, Reg2, None, RNON, f(SPECIAL), o(PMOVMSKB), DDST|DNO16|D66, OLB_0F)
  120. MACRO(MOVQ, Reg2, None, RNON, f(SPECIAL), o(MOVQ), DDST|DNO16|D66, OLB_0F)
  121. MACRO(MOVSD, Reg2, None, RNON, f(SPECIAL), o(MOVSD), DDST|DNO16|DF2, OLB_0F)
  122. MACRO(MOVSD_ZERO,Reg2, None, RNON, f(MODRM), o(MOVSD), 0, OLB_NONE)
  123. MACRO(MOVSS, Reg2, None, RNON, f(SPECIAL), o(MOVSS), DDST|DNO16|DF3, OLB_0F)
  124. MACRO(MOVAPS, Reg2, None, RNON, f(SPECIAL), o(MOVAPS), DDST|DNO16, OLB_0F)
  125. MACRO(MOVAPD, Reg2, None, RNON, f(SPECIAL), o(MOVAPD), DDST|DNO16|D66, OLB_0F)
  126. MACRO(MOVSX, Reg2, None, RNON, f(MODRM), o(MOVSX), DDST, OLB_0F)
  127. MACRO(MOVSXW, Reg2, None, RNON, f(MODRM), o(MOVSXW), DDST, OLB_0F)
  128. MACRO(MOVUPS, Reg2, None, RNON, f(SPECIAL), o(MOVUPS), DDST|DNO16, OLB_0F)
  129. MACRO(MOVZX, Reg2, None, RNON, f(MODRM), o(MOVZX), DDST, OLB_0F)
  130. MACRO(MOVZXW, Reg2, None, RNON, f(MODRM), o(MOVZXW), DDST, OLB_0F)
  131. MACRO(MOVSXD, Reg2, None, RNON, f(MODRM), o(MOVSXD), DDST, OLB_NONE)
  132. MACRO(MULPD, Reg3, None, RNON, f(MODRM), o(MULPD), DNO16|DOPEQ|D66|DCOMMOP, OLB_0F)
  133. MACRO(MULPS, Reg3, None, RNON, f(MODRM), o(MULPS), DNO16|DOPEQ|DCOMMOP, OLB_0F)
  134. MACRO(MULSD, Reg3, None, RNON, f(MODRM), o(MULSD), DNO16|DOPEQ|DF2, OLB_0F)
  135. MACRO(MULSS, Reg3, None, RNON, f(MODRM), o(MULSS), DNO16|DOPEQ|DF3|DCOMMOP, OLB_0F)
  136. MACRO(NEG, Reg2, OpSideEffect, R011, f(MODRMW), o(NEG), DOPEQ|DSETCC, OLB_NONE)
  137. MACRO(NOP, Empty, None, RNON, f(SPECIAL), o(NOP), DNO16, OLB_NONE)
  138. MACRO(NOT, Reg2, OpSideEffect, R010, f(MODRMW), o(NOT), DOPEQ, OLB_NONE)
  139. MACRO(POP, Reg1, OpSideEffect, R000, f(PSHPOP), o(POP), DDST, OLB_NONE)
  140. MACRO(PUSH, Reg1, OpSideEffect, R110, f(PSHPOP), o(PUSH), 0, OLB_NONE)
  141. MACRO(OR , Reg2, OpSideEffect, R001, f(BINOP), o(OR), DOPEQ|DSETCC|DCOMMOP, OLB_NONE)
  142. MACRO(ORPS, Reg2, None, R001, f(MODRM), o(ORPS), DOPEQ|DOPEQ|DCOMMOP, OLB_0F)
  143. MACRO(PADDB, Reg2, None, RNON, f(MODRM), o(PADDB), DNO16|DOPEQ|D66|DCOMMOP, OLB_0F)
  144. MACRO(PADDD, Reg2, None, RNON, f(MODRM), o(PADDD), DNO16|DOPEQ|D66|DCOMMOP, OLB_0F)
  145. MACRO(PADDW, Reg2, None, RNON, f(MODRM), o(PADDW), DNO16|DOPEQ|D66|DCOMMOP, OLB_0F)
  146. MACRO(PADDSB, Reg2, None, RNON, f(MODRM), o(PADDSB), DNO16|DOPEQ|D66|DCOMMOP, OLB_0F)
  147. MACRO(PADDSW, Reg2, None, RNON, f(MODRM), o(PADDSW), DNO16|DOPEQ|D66|DCOMMOP, OLB_0F)
  148. MACRO(PADDUSW, Reg2, None, RNON, f(MODRM), o(PADDUSW), DNO16|DOPEQ|D66|DCOMMOP, OLB_0F)
  149. MACRO(PADDUSB, Reg2, None, RNON, f(MODRM), o(PADDUSB), DNO16|DOPEQ|D66|DCOMMOP, OLB_0F)
  150. MACRO(PAND, Reg2, None, RNON, f(MODRM), o(PAND), DNO16|DOPEQ|D66, OLB_0F)
  151. MACRO(PANDN, Reg2, None, RNON, f(MODRM), o(PANDN), DNO16|DOPEQ|D66, OLB_0F)
  152. MACRO(PCMPEQB, Reg2, None, RNON, f(MODRM), o(PCMPEQB), DNO16|DOPEQ|D66, OLB_0F)
  153. MACRO(PCMPEQD, Reg2, None, RNON, f(MODRM), o(PCMPEQD), DNO16|DOPEQ|D66, OLB_0F)
  154. MACRO(PCMPEQW, Reg2, None, RNON, f(MODRM), o(PCMPEQW), DNO16|DOPEQ|D66, OLB_0F)
  155. MACRO(PCMPGTB, Reg2, None, RNON, f(MODRM), o(PCMPGTB), DNO16|DOPEQ|D66, OLB_0F)
  156. MACRO(PCMPGTD, Reg2, None, RNON, f(MODRM), o(PCMPGTD), DNO16|DOPEQ|D66, OLB_0F)
  157. MACRO(PCMPGTW, Reg2, None, RNON, f(MODRM), o(PCMPGTW), DNO16|DOPEQ|D66, OLB_0F)
  158. MACRO(PMAXSW, Reg2, None, RNON, f(MODRM), o(PMAXSW), DNO16|DOPEQ|D66|DCOMMOP, OLB_0F)
  159. MACRO(PMAXUB, Reg2, None, RNON, f(MODRM), o(PMAXUB), DNO16|DOPEQ|D66|DCOMMOP, OLB_0F)
  160. MACRO(PMINSW, Reg2, None, RNON, f(MODRM), o(PMINSW), DNO16|DOPEQ|D66|DCOMMOP, OLB_0F)
  161. MACRO(PMINUB, Reg2, None, RNON, f(MODRM), o(PMINUB), DNO16|DOPEQ|D66|DCOMMOP, OLB_0F)
  162. MACRO(PMULLW, Reg2, None, RNON, f(MODRM), o(PMULLW), DNO16|DOPEQ|D66|DCOMMOP, OLB_0F)
  163. MACRO(PMULUDQ, Reg2, None, RNON, f(MODRM), o(PMULUDQ), DNO16|DOPEQ|D66|DCOMMOP, OLB_0F)
  164. MACRO(POR, Reg2, None, RNON, f(MODRM), o(POR), DNO16|DOPEQ|D66|DCOMMOP, OLB_0F)
  165. MACRO(PSHUFD, Reg3, None, RNON, f(MODRM), o(PSHUFD), DDST|DNO16|D66|DSSE, OLB_0F)
  166. MACRO(PEXTRW, Reg3, None, RNON, f(MODRM), o(PEXTRW), DDST|DNO16|D66|DSSE, OLB_0F)
  167. MACRO(PSLLDQ, Reg2, None, R111, f(SPECIAL), o(PSLLDQ), DDST|DNO16|DOPEQ|D66|DSSE, OLB_0F)
  168. MACRO(PSRLDQ, Reg2, None, R011, f(SPECIAL), o(PSRLDQ), DDST|DNO16|DOPEQ|D66|DSSE, OLB_0F)
  169. MACRO(PSLLW, Reg2, None, R110, f(SPECIAL), o(PSLLW), DNO16|DOPEQ|D66|DSSE, OLB_0F)
  170. MACRO(PSLLD, Reg2, None, R110, f(SPECIAL), o(PSLLD), DNO16|DOPEQ|D66|DSSE, OLB_0F)
  171. MACRO(PSRAW, Reg2, None, R100, f(SPECIAL), o(PSRAW), DNO16|DOPEQ|D66|DSSE, OLB_0F)
  172. MACRO(PSRAD, Reg2, None, R100, f(SPECIAL), o(PSRAD), DNO16|DOPEQ|D66|DSSE, OLB_0F)
  173. MACRO(PSRLW, Reg2, None, R010, f(SPECIAL), o(PSRLW), DNO16|DOPEQ|D66|DSSE, OLB_0F)
  174. MACRO(PSRLD, Reg2, None, R010, f(SPECIAL), o(PSRLD), DNO16|DOPEQ|D66|DSSE, OLB_0F)
  175. MACRO(PSUBB, Reg2, None, RNON, f(MODRM), o(PSUBB), DNO16|DOPEQ|D66, OLB_0F)
  176. MACRO(PSUBD, Reg2, None, RNON, f(MODRM), o(PSUBD), DNO16|DOPEQ|D66, OLB_0F)
  177. MACRO(PSUBW, Reg2, None, RNON, f(MODRM), o(PSUBW), DNO16|DOPEQ|D66, OLB_0F)
  178. MACRO(PSUBSB, Reg2, None, RNON, f(MODRM), o(PSUBSB), DNO16|DOPEQ|D66, OLB_0F)
  179. MACRO(PSUBSW, Reg2, None, RNON, f(MODRM), o(PSUBSW), DNO16|DOPEQ|D66, OLB_0F)
  180. MACRO(PSUBUSB, Reg2, None, RNON, f(MODRM), o(PSUBUSB), DNO16|DOPEQ|D66, OLB_0F)
  181. MACRO(PSUBUSW, Reg2, None, RNON, f(MODRM), o(PSUBUSW), DNO16|DOPEQ|D66, OLB_0F)
  182. MACRO(PUNPCKLBW, Reg2, None, RNON, f(MODRM), o(PUNPCKLBW), DNO16|DOPEQ|D66, OLB_0F)
  183. MACRO(PUNPCKLDQ, Reg2, None, RNON, f(MODRM), o(PUNPCKLDQ), DNO16|DOPEQ|D66, OLB_0F)
  184. MACRO(PUNPCKLWD, Reg2, None, RNON, f(MODRM), o(PUNPCKLWD), DNO16|DOPEQ|D66, OLB_0F)
  185. MACRO(PXOR, Reg2, None, RNON, f(MODRM), o(PXOR), DNO16|DOPEQ|D66|DCOMMOP, OLB_0F)
  186. MACRO(RET, Empty, OpSideEffect, RNON, f(SPECIAL), o(RET), DSETCC, OLB_NONE)
  187. MACRO(ROL, Reg2, None /* XXX */,R000, f(SHIFT), o(ROL), DOPEQ | DSETCC, OLB_NONE)
  188. MACRO(ROR, Reg2, None /* XXX */,R001, f(SHIFT), o(ROR), DOPEQ | DSETCC, OLB_NONE)
  189. MACRO(ROUNDSD, Reg3, None, RNON, f(MODRM), o(ROUNDSD), DDST|DNO16|DSSE|D66, OLB_0F3A)
  190. MACRO(ROUNDSS, Reg3, None, RNON, f(MODRM), o(ROUNDSS), DDST|DNO16|DSSE|D66, OLB_0F3A)
  191. MACRO(SAR, Reg2, OpSideEffect, R111, f(SHIFT), o(SAR), DOPEQ|DSETCC, OLB_NONE)
  192. MACRO(SBB, Reg2, None, R011, f(BINOP), o(SBB), DOPEQ|DUSECC|DSETCC, OLB_NONE)
  193. MACRO(SETE, Reg1, None, RNON, f(MODRM), o(SETE), DOPEQ|DUSECC|DDST, OLB_0F)
  194. MACRO(SETG, Reg1, None, RNON, f(MODRM), o(SETG), DOPEQ|DUSECC|DDST, OLB_0F)
  195. MACRO(SETGE, Reg1, None, RNON, f(MODRM), o(SETGE), DOPEQ|DUSECC|DDST, OLB_0F)
  196. MACRO(SETL, Reg1, None, RNON, f(MODRM), o(SETL), DOPEQ|DUSECC|DDST, OLB_0F)
  197. MACRO(SETLE, Reg1, None, RNON, f(MODRM), o(SETLE), DOPEQ|DUSECC|DDST, OLB_0F)
  198. MACRO(SETNE, Reg1, None, RNON, f(MODRM), o(SETNE), DOPEQ|DUSECC|DDST, OLB_0F)
  199. MACRO(SETO, Reg1, None, RNON, f(MODRM), o(SETO), DOPEQ|DUSECC|DDST, OLB_0F)
  200. MACRO(SETA, Reg1, None, RNON, f(MODRM), o(SETA), DOPEQ|DUSECC|DDST, OLB_0F)
  201. MACRO(SETAE, Reg1, None, RNON, f(MODRM), o(SETAE), DOPEQ|DUSECC|DDST, OLB_0F)
  202. MACRO(SETB, Reg1, None, RNON, f(MODRM), o(SETB), DOPEQ|DUSECC|DDST, OLB_0F)
  203. MACRO(SETBE, Reg1, None, RNON, f(MODRM), o(SETBE), DOPEQ|DUSECC|DDST, OLB_0F)
  204. MACRO(SHL, Reg2, OpSideEffect, R100, f(SHIFT), o(SHL), DOPEQ|DSETCC, OLB_NONE)
  205. MACRO(SHR, Reg2, OpSideEffect, R101, f(SHIFT), o(SHR), DOPEQ|DSETCC, OLB_NONE)
  206. MACRO(SHLD, Reg3, OpSideEffect, R100, f(SPECIAL), o(SHLD), DDST|DOPEQ, OLB_0F)
  207. MACRO(SHUFPD, Reg2, None, RNON, f(MODRM), o(SHUFPD), DDST|DNO16|D66|DSSE, OLB_0F)
  208. MACRO(SHUFPS, Reg2, None, RNON, f(MODRM), o(SHUFPS), DDST|DNO16|DSSE, OLB_0F)
  209. MACRO(SQRTPD, Reg2, None, RNON, f(MODRM), o(SQRTPD), DDST|DNO16|D66, OLB_0F)
  210. MACRO(SQRTPS, Reg2, None, RNON, f(MODRM), o(SQRTPS), DDST|DNO16, OLB_0F)
  211. MACRO(SQRTSD, Reg2, None, RNON, f(MODRM), o(SQRTSD), DDST|DNO16|DF2, OLB_0F)
  212. MACRO(SQRTSS, Reg2, None, RNON, f(MODRM), o(SQRTSS), DDST|DNO16|DF3, OLB_0F)
  213. MACRO(SUB, Reg2, OpSideEffect, R101, f(BINOP), o(SUB), DOPEQ|DSETCC, OLB_NONE)
  214. MACRO(SUBPD, Reg3, None, RNON, f(MODRM), o(SUBPD), DNO16|DOPEQ|D66, OLB_0F)
  215. MACRO(SUBPS, Reg3, None, RNON, f(MODRM), o(SUBPS), DNO16|DOPEQ, OLB_0F)
  216. MACRO(SUBSD, Reg3, None, RNON, f(MODRM), o(SUBSD), DNO16|DOPEQ|DF2, OLB_0F)
  217. MACRO(SUBSS, Reg3, None, RNON, f(MODRM), o(SUBSS), DNO16|DOPEQ|DF3, OLB_0F)
  218. MACRO(TEST, Empty, OpSideEffect, R000, f(TEST), o(TEST), DSETCC|DCOMMOP, OLB_NONE)
  219. MACRO(TZCNT, Reg2, None, RNON, f(MODRM), o(TZCNT), DF3|DSETCC|DDST, OLB_0F)
  220. MACRO(UCOMISD, Empty, None, RNON, f(MODRM), o(UCOMISD), DNO16|D66|DSETCC, OLB_0F)
  221. MACRO(UCOMISS, Empty, None, RNON, f(MODRM), o(UCOMISS), DNO16|DSETCC, OLB_0F)
  222. MACRO(XCHG, Reg2, None, R000, f(XCHG), o(XCHG), DOPEQ, OLB_NONE)
  223. MACRO(XOR, Reg2, OpSideEffect, R110, f(BINOP), o(XOR), DOPEQ|DSETCC|DCOMMOP, OLB_NONE)
  224. MACRO(XORPS, Reg3, None, RNON, f(MODRM), o(XORPS), DNO16|DOPEQ|DCOMMOP, OLB_0F)
  225. MACRO(PINSRW, Reg2, None, RNON, f(MODRM), o(PINSRW), DDST|DNO16|DSSE|D66, OLB_0F)
  226. MACRO(POPCNT, Reg2, None, RNON, f(MODRM), o(POPCNT), DF3|DSETCC|DDST, OLB_0F)
  227. #undef o
  228. #undef f