MdOpcodes.h 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. 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. // / / attrib byte2
  12. // / / / / form
  13. // / / / / / opbyte
  14. // / / / / / /
  15. // / / / / / / dope leadin
  16. // / / / / / / / /
  17. MACRO(ADD, Reg2, None, 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_NONE)
  19. MACRO(ADDPS, Reg2, None, RNON, f(MODRM), o(ADDPS), DNO16|DOPEQ|DZEROF|DCOMMOP, OLB_NONE)
  20. MACRO(ADDSD, Reg2, None, RNON, f(MODRM), o(ADDSD), DNO16|DOPEQ|DCOMMOP|DF2, OLB_NONE)
  21. MACRO(ADDSS, Reg2, None, RNON, f(MODRM), o(ADDSS), DNO16|DOPEQ|DF3|DCOMMOP, OLB_NONE)
  22. MACRO(AND, Reg2, None, 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|DZEROF, OLB_NONE)
  25. MACRO(ANDPD, Reg2, None, RNON, f(MODRM), o(ANDPD), DNO16|DOPEQ|D66|DCOMMOP, OLB_NONE)
  26. MACRO(ANDPS, Reg2, None, RNON, f(MODRM), o(ANDPS), DNO16|DOPEQ|DZEROF|DCOMMOP, OLB_NONE)
  27. MACRO(BSR, Reg2, None, RNON, f(MODRM), o(BSR), DZEROF|DDST, OLB_NONE)
  28. MACRO(BT, Reg2, OpSideEffect, R100, f(SPMOD), o(BT), DZEROF|DSETCC, OLB_NONE)
  29. MACRO(BTR, Reg2, OpSideEffect, R110, f(SPMOD), o(BTR), DZEROF|DSETCC, OLB_NONE)
  30. MACRO(CALL, CallI, OpSideEffect, R010, f(CALL), o(CALL), DSETCC, OLB_NONE)
  31. MACRO(CDQ, Empty, OpSideEffect, RNON, f(NO), o(CDQ), DNO16, OLB_NONE)
  32. MACRO(CMOVA, Reg2, None, RNON, f(MODRM), o(CMOVA), DZEROF|DDST|DUSECC, OLB_NONE)
  33. MACRO(CMOVAE, Reg2, None, RNON, f(MODRM), o(CMOVAE), DZEROF|DDST|DUSECC, OLB_NONE)
  34. MACRO(CMOVB, Reg2, None, RNON, f(MODRM), o(CMOVB), DZEROF|DDST|DUSECC, OLB_NONE)
  35. MACRO(CMOVBE, Reg2, None, RNON, f(MODRM), o(CMOVBE), DZEROF|DDST|DUSECC, OLB_NONE)
  36. MACRO(CMOVE, Reg2, None, RNON, f(MODRM), o(CMOVE), DZEROF|DDST|DUSECC, OLB_NONE)
  37. MACRO(CMOVG, Reg2, None, RNON, f(MODRM), o(CMOVG), DZEROF|DDST|DUSECC, OLB_NONE)
  38. MACRO(CMOVGE, Reg2, None, RNON, f(MODRM), o(CMOVGE), DZEROF|DDST|DUSECC, OLB_NONE)
  39. MACRO(CMOVL, Reg2, None, RNON, f(MODRM), o(CMOVL), DZEROF|DDST|DUSECC, OLB_NONE)
  40. MACRO(CMOVLE, Reg2, None, RNON, f(MODRM), o(CMOVLE), DZEROF|DDST|DUSECC, OLB_NONE)
  41. MACRO(CMOVNE, Reg2, None, RNON, f(MODRM), o(CMOVNE), DZEROF|DDST|DUSECC, OLB_NONE)
  42. MACRO(CMOVNO, Reg2, None, RNON, f(MODRM), o(CMOVNO), DZEROF|DDST|DUSECC, OLB_NONE)
  43. MACRO(CMOVNP, Reg2, None, RNON, f(MODRM), o(CMOVNP), DZEROF|DDST|DUSECC, OLB_NONE)
  44. MACRO(CMOVNS, Reg2, None, RNON, f(MODRM), o(CMOVNS), DZEROF|DDST|DUSECC, OLB_NONE)
  45. MACRO(CMOVO, Reg2, None, RNON, f(MODRM), o(CMOVO), DZEROF|DDST|DUSECC, OLB_NONE)
  46. MACRO(CMOVP, Reg2, None, RNON, f(MODRM), o(CMOVP), DZEROF|DDST|DUSECC, OLB_NONE)
  47. MACRO(CMOVS, Reg2, None, RNON, f(MODRM), o(CMOVS), DZEROF|DDST|DUSECC, OLB_NONE)
  48. MACRO(CMP, Empty, OpSideEffect, R111, f(BINOP), o(CMP), DSETCC, OLB_NONE)
  49. MACRO(CMPLTPS, Empty, None, RNON, f(MODRM), o(CMPPS), DZEROF|DSSE, OLB_NONE)
  50. MACRO(CMPLEPS, Empty, None, RNON, f(MODRM), o(CMPPS), DZEROF|DSSE, OLB_NONE)
  51. MACRO(CMPEQPS, Empty, None, RNON, f(MODRM), o(CMPPS), DZEROF|DSSE, OLB_NONE)
  52. MACRO(CMPNEQPS, Empty, None, RNON, f(MODRM), o(CMPPS), DZEROF|DSSE, OLB_NONE)
  53. MACRO(CMPLTPD, Empty, None, RNON, f(MODRM), o(CMPPD), D66|DSSE, OLB_NONE)
  54. MACRO(CMPLEPD, Empty, None, RNON, f(MODRM), o(CMPPD), D66|DSSE, OLB_NONE)
  55. MACRO(CMPEQPD, Empty, None, RNON, f(MODRM), o(CMPPD), D66|DSSE, OLB_NONE)
  56. MACRO(CMPNEQPD, Empty, None, RNON, f(MODRM), o(CMPPD), D66|DSSE, OLB_NONE)
  57. MACRO(COMISD, Empty, OpSideEffect, RNON, f(MODRM), o(COMISD), DNO16|D66|DSETCC, OLB_NONE)
  58. MACRO(COMISS, Empty, OpSideEffect, RNON, f(MODRM), o(COMISS), DNO16|DZEROF|DSETCC, OLB_NONE)
  59. MACRO(CVTDQ2PD, Reg2, None, RNON, f(MODRM), o(CVTDQ2PD),DDST|DNO16|DF3, OLB_NONE)
  60. MACRO(CVTDQ2PS, Reg2, None, RNON, f(MODRM), o(CVTDQ2PS),DDST|DNO16|DZEROF, OLB_NONE)
  61. MACRO(CVTSD2SI, Reg2, None, RNON, f(MODRM), o(CVTSD2SI),DDST|DNO16|DF2, OLB_NONE)
  62. MACRO(CVTSI2SD, Reg2, None, RNON, f(MODRM), o(CVTSI2SD),DDST|DNO16|DF2, OLB_NONE)
  63. MACRO(CVTSI2SS, Reg2, None, RNON, f(MODRM), o(CVTSI2SS),DDST|DNO16|DF3, OLB_NONE)
  64. MACRO(CVTPD2PS, Reg2, None, RNON, f(MODRM), o(CVTPD2PS),DDST|DNO16|D66, OLB_NONE)
  65. MACRO(CVTPS2PD, Reg2, None, RNON, f(MODRM), o(CVTPS2PD),DDST|DNO16|DZEROF, OLB_NONE)
  66. MACRO(CVTSD2SS, Reg2, None, RNON, f(MODRM), o(CVTSD2SS),DDST|DNO16|DF2, OLB_NONE)
  67. MACRO(CVTSS2SD, Reg2, None, RNON, f(MODRM), o(CVTSD2SS),DDST|DNO16|DF3, OLB_NONE)
  68. MACRO(CVTSS2SI, Reg2, None, RNON, f(MODRM), o(CVTSS2SI),DDST|DNO16|DF3, OLB_NONE)
  69. MACRO(CVTTSD2SI,Reg2, None, RNON, f(MODRM), o(CVTTSD2SI),DDST|DNO16|DF2, OLB_NONE)
  70. MACRO(CVTTSS2SI,Reg2, None, RNON, f(MODRM), o(CVTTSS2SI),DDST|DNO16|DF3, OLB_NONE)
  71. MACRO(CVTTPD2DQ,Reg2, None, RNON, f(MODRM), o(CVTTPD2DQ),DDST|DNO16|D66, OLB_NONE)
  72. MACRO(CVTTPS2DQ,Reg2, None, RNON, f(MODRM), o(CVTTPS2DQ),DDST|DNO16|DF3, OLB_NONE)
  73. MACRO(DEC, Reg2, None, R001, f(INCDEC), o(DEC), DOPEQ|DSETCC, OLB_NONE)
  74. MACRO(DIV, Reg3, None, R110, f(MULDIV), o(DIV), DSETCC, OLB_NONE)
  75. MACRO(DIVPD, Reg3, None, RNON, f(MODRM), o(DIVPD), DNO16|DOPEQ|D66, OLB_NONE)
  76. MACRO(DIVPS, Reg3, None, RNON, f(MODRM), o(DIVPS), DNO16|DOPEQ|DZEROF, OLB_NONE)
  77. MACRO(DIVSD, Reg3, None, RNON, f(MODRM), o(DIVSD), DNO16|DOPEQ|DF2, OLB_NONE)
  78. MACRO(DIVSS, Reg3, None, RNON, f(MODRM), o(DIVSS), DNO16|DOPEQ|DF3, OLB_NONE)
  79. MACRO(FISTTP, Reg2, None, R001, f(FILD), o(FISTTP), DFLT|NDPdec|DDST, OLB_NONE)
  80. MACRO(FLD, Reg2, None, R000, f(FLD), o(FLD), DFLT|NDPinc|DDST, OLB_NONE)
  81. MACRO(FSTP, Reg1, None, R011, f(FLD), o(FSTP), DDST|DFLT, OLB_NONE)
  82. MACRO(IDIV, Reg3, None, R111, f(MULDIV), o(IDIV), DSETCC, OLB_NONE)
  83. MACRO(INC, Reg2, None, R000, f(INCDEC), o(INC), DOPEQ|DSETCC, OLB_NONE)
  84. MACRO(IMUL, Reg3, None, R101, f(MULDIV), o(IMUL), DSETCC, OLB_NONE)
  85. MACRO(IMUL2, Reg3, None, RNON, f(SPMOD), o(IMUL2), DOPEQ|DSETCC|DZEROF|DCOMMOP,OLB_NONE)
  86. MACRO(INT, Reg1, OpSideEffect, RNON, f(SPECIAL), o(INT), DUSECC|DSETCC, OLB_NONE)
  87. MACRO(JA, BrReg2, OpSideEffect, RNON, f(SPECIAL), o(JCC), DUSECC|DNO16, OLB_NONE)
  88. MACRO(JAE, BrReg2, OpSideEffect, RNON, f(SPECIAL), o(JCC), DUSECC|DNO16, OLB_NONE)
  89. MACRO(JB, BrReg2, OpSideEffect, RNON, f(SPECIAL), o(JCC), DUSECC|DNO16, OLB_NONE)
  90. MACRO(JBE, BrReg2, OpSideEffect, RNON, f(SPECIAL), o(JCC), DUSECC|DNO16, OLB_NONE)
  91. MACRO(JEQ, BrReg2, OpSideEffect, RNON, f(SPECIAL), o(JCC), DUSECC|DNO16, OLB_NONE)
  92. MACRO(JNE, BrReg2, OpSideEffect, RNON, f(SPECIAL), o(JCC), DUSECC|DNO16, OLB_NONE)
  93. MACRO(JNP, BrReg2, OpSideEffect, RNON, f(SPECIAL), o(JCC), DUSECC|DNO16, OLB_NONE)
  94. MACRO(JLT, BrReg2, OpSideEffect, RNON, f(SPECIAL), o(JCC), DUSECC|DNO16, OLB_NONE)
  95. MACRO(JLE, BrReg2, OpSideEffect, RNON, f(SPECIAL), o(JCC), DUSECC|DNO16, OLB_NONE)
  96. MACRO(JGT, BrReg2, OpSideEffect, RNON, f(SPECIAL), o(JCC), DUSECC|DNO16, OLB_NONE)
  97. MACRO(JGE, BrReg2, OpSideEffect, RNON, f(SPECIAL), o(JCC), DUSECC|DNO16, OLB_NONE)
  98. MACRO(JNO, BrReg2, OpSideEffect, RNON, f(SPECIAL), o(JCC), DUSECC|DNO16, OLB_NONE)
  99. MACRO(JO, BrReg2, OpSideEffect, RNON, f(SPECIAL), o(JCC), DUSECC|DNO16, OLB_NONE)
  100. MACRO(JP, BrReg2, OpSideEffect, RNON, f(SPECIAL), o(JCC), DUSECC|DNO16, OLB_NONE)
  101. MACRO(JNSB, BrReg2, OpSideEffect, RNON, f(SPECIAL), o(JCC), DUSECC|DNO16, OLB_NONE)
  102. MACRO(JSB, BrReg2, OpSideEffect, RNON, f(SPECIAL), o(JCC), DUSECC|DNO16, OLB_NONE)
  103. MACRO(JMP, Br, OpSideEffect, R100, f(JMP), o(JMP), DNO16, OLB_NONE)
  104. MACRO(LAHF, Reg1, None, RNON, f(NO), o(LAHF), DUSECC, 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_NONE)
  107. MACRO(MAXPS, Reg2, None, RNON, f(MODRM), o(MAXPS), DNO16|DOPEQ|DZEROF, OLB_NONE)
  108. MACRO(MINPD, Reg2, None, RNON, f(MODRM), o(MINPD), DNO16|DOPEQ|D66, OLB_NONE)
  109. MACRO(MINPS, Reg2, None, RNON, f(MODRM), o(MINPS), DNO16|DOPEQ|DZEROF, OLB_NONE)
  110. MACRO(LZCNT, Reg2, None, RNON, f(MODRM), o(LZCNT), DF3|DSETCC|DDST, OLB_NONE)
  111. MACRO(MOV, Reg2, None, R000, f(MOV), o(MOV), DDST, OLB_NONE)
  112. MACRO(MOVAPS, Reg2, None, RNON, f(SPECIAL), o(MOVAPS), DDST|DNO16|DZEROF, OLB_NONE)
  113. MACRO(MOVD, Reg2, None, RNON, f(SPECIAL), o(MOVD), DDST|DNO16|D66, OLB_NONE)
  114. MACRO(MOVHLPS, Reg2, None, RNON, f(SPECIAL), o(MOVHLPS), DDST|DNO16|DZEROF, OLB_NONE)
  115. MACRO(MOVHPD, Reg2, None, RNON, f(SPECIAL), o(MOVHPD), DDST|DNO16|D66, OLB_NONE)
  116. MACRO(MOVLHPS, Reg2, None, RNON, f(SPECIAL), o(MOVLHPS), DDST|DNO16|DZEROF, OLB_NONE)
  117. MACRO(MOVMSKPD, Reg2, None, RNON, f(SPECIAL), o(MOVMSKPD), DDST|DNO16|D66, OLB_NONE)
  118. MACRO(MOVMSKPS, Reg2, None, RNON, f(SPECIAL), o(MOVMSKPS), DDST|DNO16|DZEROF, OLB_NONE)
  119. MACRO(MOVSD, Reg2, None, RNON, f(MODRM), o(MOVSD), DDST|DNO16|DF2, OLB_NONE)
  120. MACRO(MOVSD_ZERO,Reg2, None, RNON, f(MODRM), o(MOVSD), 0, OLB_NONE)
  121. MACRO(MOVSS, Reg2, None, RNON, f(SPECIAL), o(MOVSS), DDST|DNO16|DF3, OLB_NONE)
  122. MACRO(MOVSX, Reg2, None, RNON, f(MODRM), o(MOVSX), DZEROF|DDST, OLB_NONE)
  123. MACRO(MOVSXW, Reg2, None, RNON, f(MODRM), o(MOVSXW), DZEROF|DDST, OLB_NONE)
  124. MACRO(MOVUPS, Reg2, None, RNON, f(SPECIAL), o(MOVUPS), DDST|DNO16|DZEROF, OLB_NONE)
  125. MACRO(MOVZX, Reg2, None, RNON, f(MODRM), o(MOVZX), DZEROF|DDST, OLB_NONE)
  126. MACRO(MOVZXW, Reg2, None, RNON, f(MODRM), o(MOVZXW), DZEROF|DDST, OLB_NONE)
  127. MACRO(MULPD, Reg3, None, RNON, f(MODRM), o(MULPD), DNO16|DOPEQ|D66|DCOMMOP, OLB_NONE)
  128. MACRO(MULPS, Reg3, None, RNON, f(MODRM), o(MULPS), DNO16|DOPEQ|DZEROF|DCOMMOP, OLB_NONE)
  129. MACRO(MULSD, Reg3, None, RNON, f(MODRM), o(MULSD), DNO16|DOPEQ|DF2, OLB_NONE)
  130. MACRO(MULSS, Reg3, None, RNON, f(MODRM), o(MULSS), DNO16|DOPEQ|DF3|DCOMMOP, OLB_NONE)
  131. MACRO(NEG, Reg2, None, R011, f(MODRMW), o(NEG), DOPEQ|DSETCC, OLB_NONE)
  132. MACRO(NOP, Empty, None, RNON, f(SPECIAL), o(NOP), DNO16, OLB_NONE)
  133. MACRO(NOT, Reg2, None, R010, f(MODRMW), o(NOT), DOPEQ, OLB_NONE)
  134. MACRO(OR , Reg2, None, R001, f(BINOP), o(OR), DOPEQ|DSETCC|DCOMMOP, OLB_NONE)
  135. MACRO(ORPS, Reg2, None, R001, f(MODRM), o(ORPS), DOPEQ|DOPEQ|DZEROF|DCOMMOP, OLB_NONE)
  136. MACRO(PADDD, Reg2, None, RNON, f(MODRM), o(PADDD), DNO16|DOPEQ|D66|DCOMMOP, OLB_NONE)
  137. MACRO(PAND, Reg2, None, RNON, f(MODRM), o(PAND), DNO16|DOPEQ|D66, OLB_NONE)
  138. MACRO(PCMPEQD, Reg2, None, RNON, f(MODRM), o(PCMPEQD), DNO16|DOPEQ|D66, OLB_NONE)
  139. MACRO(PCMPGTD, Reg2, None, RNON, f(MODRM), o(PCMPGTD), DNO16|DOPEQ|D66, OLB_NONE)
  140. MACRO(PMULUDQ, Reg2, None, RNON, f(MODRM), o(PMULUDQ), DNO16|DOPEQ|D66|DCOMMOP, OLB_NONE)
  141. MACRO(POP, Reg1, OpSideEffect, R000, f(PSHPOP), o(POP), DDST, OLB_NONE)
  142. MACRO(POR, Reg2, None, RNON, f(MODRM), o(POR), DNO16|DOPEQ|D66|DCOMMOP, OLB_NONE)
  143. MACRO(PSHUFD, Reg3, None, RNON, f(MODRM), o(PSHUFD), DDST|DNO16|D66|DSSE, OLB_NONE)
  144. MACRO(PSLLDQ, Reg2, None, R111, f(SPECIAL), o(PSLLDQ), DDST|DNO16|DOPEQ|D66|DSSE, OLB_NONE)
  145. MACRO(PSRLDQ, Reg2, None, R011, f(SPECIAL), o(PSRLDQ), DDST|DNO16|DOPEQ|D66|DSSE, OLB_NONE)
  146. MACRO(PSUBD, Reg3, None, RNON, f(MODRM), o(PSUBD), DNO16|DOPEQ|D66, OLB_NONE)
  147. MACRO(PUNPCKLDQ, Reg3, None, RNON, f(MODRM), o(PUNPCKLDQ),DNO16|DOPEQ|D66, OLB_NONE)
  148. MACRO(PUSH, Reg1, OpSideEffect, R110, f(PSHPOP), o(PUSH), 0, OLB_NONE)
  149. MACRO(PXOR, Reg2, None, RNON, f(MODRM), o(PXOR), DNO16|DOPEQ|D66|DCOMMOP, OLB_NONE)
  150. MACRO(RET, Empty, OpSideEffect, RNON, f(SPECIAL), o(RET), DSETCC, OLB_NONE)
  151. MACRO(ROUNDSD, Reg3, None, RNON, f(MODRM), o(ROUNDSD), DDST|DNO16|DSSE|D66, OLB_0F3A)
  152. MACRO(ROUNDSS, Reg3, None, RNON, f(MODRM), o(ROUNDSS), DDST|DNO16|DSSE|D66, OLB_0F3A)
  153. MACRO(SAR, Reg2, None, R111, f(SHIFT), o(SAR), DOPEQ|DSETCC, OLB_NONE)
  154. MACRO(SBB, Reg2, None, R011, f(BINOP), o(SBB), DOPEQ|DUSECC|DSETCC, OLB_NONE)
  155. MACRO(SETE, Reg1, None, RNON, f(MODRM), o(SETE), DOPEQ|DUSECC|DZEROF|DDST, OLB_NONE)
  156. MACRO(SETG, Reg1, None, RNON, f(MODRM), o(SETG), DOPEQ|DUSECC|DZEROF|DDST, OLB_NONE)
  157. MACRO(SETGE, Reg1, None, RNON, f(MODRM), o(SETGE), DOPEQ|DUSECC|DZEROF|DDST, OLB_NONE)
  158. MACRO(SETL, Reg1, None, RNON, f(MODRM), o(SETL), DOPEQ|DUSECC|DZEROF|DDST, OLB_NONE)
  159. MACRO(SETLE, Reg1, None, RNON, f(MODRM), o(SETLE), DOPEQ|DUSECC|DZEROF|DDST, OLB_NONE)
  160. MACRO(SETNE, Reg1, None, RNON, f(MODRM), o(SETNE), DOPEQ|DUSECC|DZEROF|DDST, OLB_NONE)
  161. MACRO(SETO, Reg1, None, RNON, f(MODRM), o(SETO), DOPEQ|DUSECC|DZEROF|DDST, OLB_NONE)
  162. MACRO(SETA, Reg1, None, RNON, f(MODRM), o(SETA), DOPEQ|DUSECC|DZEROF|DDST, OLB_NONE)
  163. MACRO(SETAE, Reg1, None, RNON, f(MODRM), o(SETAE), DOPEQ|DUSECC|DZEROF|DDST, OLB_NONE)
  164. MACRO(SETB, Reg1, None, RNON, f(MODRM), o(SETB), DOPEQ|DUSECC|DZEROF|DDST, OLB_NONE)
  165. MACRO(SETBE, Reg1, None, RNON, f(MODRM), o(SETBE), DOPEQ|DUSECC|DZEROF|DDST, OLB_NONE)
  166. MACRO(SHL, Reg2, None, R100, f(SHIFT), o(SHL), DOPEQ|DSETCC, OLB_NONE)
  167. MACRO(SHR, Reg2, None, R101, f(SHIFT), o(SHR), DOPEQ|DSETCC, OLB_NONE)
  168. MACRO(SHUFPD, Reg2, None, RNON, f(MODRM), o(SHUFPD), DDST|DNO16|D66|DSSE, OLB_NONE)
  169. MACRO(SHUFPS, Reg2, None, RNON, f(MODRM), o(SHUFPS), DDST|DNO16|DZEROF|DSSE, OLB_NONE)
  170. MACRO(SQRTPD, Reg2, None, RNON, f(MODRM), o(SQRTPD), DDST|DNO16|D66, OLB_NONE)
  171. MACRO(SQRTPS, Reg2, None, RNON, f(MODRM), o(SQRTPS), DDST|DNO16|DZEROF, OLB_NONE)
  172. MACRO(SQRTSD, Reg2, None, RNON, f(MODRM), o(SQRTSD), DDST|DNO16|DF2, OLB_NONE)
  173. MACRO(SQRTSS, Reg2, None, RNON, f(MODRM), o(SQRTSS), DDST|DNO16|DF3, OLB_NONE)
  174. MACRO(SUB, Reg2, None, R101, f(BINOP), o(SUB), DOPEQ|DSETCC, OLB_NONE)
  175. MACRO(SUBPD, Reg3, None, RNON, f(MODRM), o(SUBPD), DNO16|DOPEQ|D66, OLB_NONE)
  176. MACRO(SUBPS, Reg3, None, RNON, f(MODRM), o(SUBPS), DNO16|DOPEQ|DZEROF, OLB_NONE)
  177. MACRO(SUBSD, Reg3, None, RNON, f(MODRM), o(SUBSD), DNO16|DOPEQ|DF2, OLB_NONE)
  178. MACRO(SUBSS, Reg3, None, RNON, f(MODRM), o(SUBSS), DNO16|DOPEQ|DF3, OLB_NONE)
  179. MACRO(TEST, Empty, None, R000, f(TEST), o(TEST), DSETCC|DCOMMOP, OLB_NONE)
  180. MACRO(TEST_AH, Empty, None, R000, f(TEST_AH), o(TEST_AH), DSETCC|DCOMMOP, OLB_NONE)
  181. MACRO(UCOMISD, Empty, None, RNON, f(MODRM), o(UCOMISD), DNO16|D66|DSETCC, OLB_NONE)
  182. MACRO(UCOMISS, Empty, None, RNON, f(MODRM), o(UCOMISS), DNO16|DZEROF|DSETCC, OLB_NONE)
  183. MACRO(XCHG, Reg2, None, RNON, f(XCHG), o(XCHG), DOPEQ, OLB_NONE)
  184. MACRO(XOR, Reg2, None, R110, f(BINOP), o(XOR), DOPEQ|DSETCC|DCOMMOP, OLB_NONE)
  185. MACRO(XORPS, Reg3, None, RNON, f(MODRM), o(XORPS), DNO16|DOPEQ|DZEROF|DCOMMOP, OLB_NONE)
  186. #undef o
  187. #undef f