insnsa.c
上传用户:yuppie_zhu
上传日期:2007-01-08
资源大小:535k
文件大小:125k
源码类别:

编译器/解释器

开发平台:

C/C++

  1. /* This file auto-generated from insns.dat by insns.pl - don't edit it */
  2. #include <stdio.h>
  3. #include "nasm.h"
  4. #include "insns.h"
  5. static struct itemplate instrux_AAA[] = {
  6.     {I_AAA, 0, {0,0,0}, "1x37", IF_8086},
  7.     {-1}
  8. };
  9. static struct itemplate instrux_AAD[] = {
  10.     {I_AAD, 0, {0,0,0}, "2xD5x0A", IF_8086},
  11.     {I_AAD, 1, {IMMEDIATE,0,0}, "1xD524", IF_8086|IF_SB},
  12.     {-1}
  13. };
  14. static struct itemplate instrux_AAM[] = {
  15.     {I_AAM, 0, {0,0,0}, "2xD4x0A", IF_8086},
  16.     {I_AAM, 1, {IMMEDIATE,0,0}, "1xD424", IF_8086|IF_SB},
  17.     {-1}
  18. };
  19. static struct itemplate instrux_AAS[] = {
  20.     {I_AAS, 0, {0,0,0}, "1x3F", IF_8086},
  21.     {-1}
  22. };
  23. static struct itemplate instrux_ADC[] = {
  24.     {I_ADC, 2, {MEMORY,REG8,0}, "3001x10101", IF_8086|IF_SM},
  25.     {I_ADC, 2, {REG8,REG8,0}, "3001x10101", IF_8086},
  26.     {I_ADC, 2, {MEMORY,REG16,0}, "3203001x11101", IF_8086|IF_SM},
  27.     {I_ADC, 2, {REG16,REG16,0}, "3203001x11101", IF_8086},
  28.     {I_ADC, 2, {MEMORY,REG32,0}, "3213001x11101", IF_386|IF_SM},
  29.     {I_ADC, 2, {REG32,REG32,0}, "3213001x11101", IF_386},
  30.     {I_ADC, 2, {REG8,MEMORY,0}, "3011x12110", IF_8086|IF_SM},
  31.     {I_ADC, 2, {REG8,REG8,0}, "3011x12110", IF_8086},
  32.     {I_ADC, 2, {REG16,MEMORY,0}, "3203011x13110", IF_8086|IF_SM},
  33.     {I_ADC, 2, {REG16,REG16,0}, "3203011x13110", IF_8086},
  34.     {I_ADC, 2, {REG32,MEMORY,0}, "3213011x13110", IF_386|IF_SM},
  35.     {I_ADC, 2, {REG32,REG32,0}, "3213011x13110", IF_386},
  36.     {I_ADC, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "3203001x8320215", IF_8086},
  37.     {I_ADC, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "3213001x8320215", IF_386},
  38.     {I_ADC, 2, {REG_AL,IMMEDIATE,0}, "1x1421", IF_8086|IF_SM},
  39.     {I_ADC, 2, {REG_AX,IMMEDIATE,0}, "3201x1531", IF_8086|IF_SM},
  40.     {I_ADC, 2, {REG_EAX,IMMEDIATE,0}, "3211x1541", IF_386|IF_SM},
  41.     {I_ADC, 2, {REGMEM|BITS8,IMMEDIATE,0}, "3001x8020221", IF_8086|IF_SM},
  42.     {I_ADC, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203001x8120231", IF_8086|IF_SM},
  43.     {I_ADC, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213001x8120241", IF_386|IF_SM},
  44.     {I_ADC, 2, {MEMORY,IMMEDIATE|BITS8,0}, "3001x8020221", IF_8086|IF_SM},
  45.     {I_ADC, 2, {MEMORY,IMMEDIATE|BITS16,0}, "3203001x8120231", IF_8086|IF_SM},
  46.     {I_ADC, 2, {MEMORY,IMMEDIATE|BITS32,0}, "3213001x8120241", IF_386|IF_SM},
  47.     {-1}
  48. };
  49. static struct itemplate instrux_ADD[] = {
  50.     {I_ADD, 2, {MEMORY,REG8,0}, "30017101", IF_8086|IF_SM},
  51.     {I_ADD, 2, {REG8,REG8,0}, "30017101", IF_8086},
  52.     {I_ADD, 2, {MEMORY,REG16,0}, "3203001x01101", IF_8086|IF_SM},
  53.     {I_ADD, 2, {REG16,REG16,0}, "3203001x01101", IF_8086},
  54.     {I_ADD, 2, {MEMORY,REG32,0}, "3213001x01101", IF_386|IF_SM},
  55.     {I_ADD, 2, {REG32,REG32,0}, "3213001x01101", IF_386},
  56.     {I_ADD, 2, {REG8,MEMORY,0}, "3011x02110", IF_8086|IF_SM},
  57.     {I_ADD, 2, {REG8,REG8,0}, "3011x02110", IF_8086},
  58.     {I_ADD, 2, {REG16,MEMORY,0}, "3203011x03110", IF_8086|IF_SM},
  59.     {I_ADD, 2, {REG16,REG16,0}, "3203011x03110", IF_8086},
  60.     {I_ADD, 2, {REG32,MEMORY,0}, "3213011x03110", IF_386|IF_SM},
  61.     {I_ADD, 2, {REG32,REG32,0}, "3213011x03110", IF_386},
  62.     {I_ADD, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "3203001x8320015", IF_8086},
  63.     {I_ADD, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "3213001x8320015", IF_386},
  64.     {I_ADD, 2, {REG_AL,IMMEDIATE,0}, "1x0421", IF_8086|IF_SM},
  65.     {I_ADD, 2, {REG_AX,IMMEDIATE,0}, "3201x0531", IF_8086|IF_SM},
  66.     {I_ADD, 2, {REG_EAX,IMMEDIATE,0}, "3211x0541", IF_386|IF_SM},
  67.     {I_ADD, 2, {REGMEM|BITS8,IMMEDIATE,0}, "3001x8020021", IF_8086|IF_SM},
  68.     {I_ADD, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203001x8120031", IF_8086|IF_SM},
  69.     {I_ADD, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213001x8120041", IF_386|IF_SM},
  70.     {I_ADD, 2, {MEMORY,IMMEDIATE|BITS8,0}, "3001x8020021", IF_8086|IF_SM},
  71.     {I_ADD, 2, {MEMORY,IMMEDIATE|BITS16,0}, "3203001x8120031", IF_8086|IF_SM},
  72.     {I_ADD, 2, {MEMORY,IMMEDIATE|BITS32,0}, "3213001x8120041", IF_386|IF_SM},
  73.     {-1}
  74. };
  75. static struct itemplate instrux_ADDPS[] = {
  76.     {I_ADDPS, 2, {XMMREG,MEMORY,0}, "3013312x0Fx58110", IF_KATMAI|IF_SSE},
  77.     {I_ADDPS, 2, {XMMREG,XMMREG,0}, "3312x0Fx58110", IF_KATMAI|IF_SSE},
  78.     {-1}
  79. };
  80. static struct itemplate instrux_ADDSS[] = {
  81.     {I_ADDSS, 2, {XMMREG,MEMORY,0}, "3013332x0Fx58110", IF_KATMAI|IF_SSE},
  82.     {I_ADDSS, 2, {XMMREG,XMMREG,0}, "3332x0Fx58110", IF_KATMAI|IF_SSE},
  83.     {-1}
  84. };
  85. static struct itemplate instrux_AND[] = {
  86.     {I_AND, 2, {MEMORY,REG8,0}, "3001x20101", IF_8086|IF_SM},
  87.     {I_AND, 2, {REG8,REG8,0}, "3001x20101", IF_8086},
  88.     {I_AND, 2, {MEMORY,REG16,0}, "3203001x21101", IF_8086|IF_SM},
  89.     {I_AND, 2, {REG16,REG16,0}, "3203001x21101", IF_8086},
  90.     {I_AND, 2, {MEMORY,REG32,0}, "3213001x21101", IF_386|IF_SM},
  91.     {I_AND, 2, {REG32,REG32,0}, "3213001x21101", IF_386},
  92.     {I_AND, 2, {REG8,MEMORY,0}, "3011x22110", IF_8086|IF_SM},
  93.     {I_AND, 2, {REG8,REG8,0}, "3011x22110", IF_8086},
  94.     {I_AND, 2, {REG16,MEMORY,0}, "3203011x23110", IF_8086|IF_SM},
  95.     {I_AND, 2, {REG16,REG16,0}, "3203011x23110", IF_8086},
  96.     {I_AND, 2, {REG32,MEMORY,0}, "3213011x23110", IF_386|IF_SM},
  97.     {I_AND, 2, {REG32,REG32,0}, "3213011x23110", IF_386},
  98.     {I_AND, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "3203001x8320415", IF_8086},
  99.     {I_AND, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "3213001x8320415", IF_386},
  100.     {I_AND, 2, {REG_AL,IMMEDIATE,0}, "1x2421", IF_8086|IF_SM},
  101.     {I_AND, 2, {REG_AX,IMMEDIATE,0}, "3201x2531", IF_8086|IF_SM},
  102.     {I_AND, 2, {REG_EAX,IMMEDIATE,0}, "3211x2541", IF_386|IF_SM},
  103.     {I_AND, 2, {REGMEM|BITS8,IMMEDIATE,0}, "3001x8020421", IF_8086|IF_SM},
  104.     {I_AND, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203001x8120431", IF_8086|IF_SM},
  105.     {I_AND, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213001x8120441", IF_386|IF_SM},
  106.     {I_AND, 2, {MEMORY,IMMEDIATE|BITS8,0}, "3001x8020421", IF_8086|IF_SM},
  107.     {I_AND, 2, {MEMORY,IMMEDIATE|BITS16,0}, "3203001x8120431", IF_8086|IF_SM},
  108.     {I_AND, 2, {MEMORY,IMMEDIATE|BITS32,0}, "3213001x8120441", IF_386|IF_SM},
  109.     {-1}
  110. };
  111. static struct itemplate instrux_ANDNPS[] = {
  112.     {I_ANDNPS, 2, {XMMREG,MEMORY,0}, "3012x0Fx55110", IF_KATMAI|IF_SSE},
  113.     {I_ANDNPS, 2, {XMMREG,XMMREG,0}, "2x0Fx55110", IF_KATMAI|IF_SSE},
  114.     {-1}
  115. };
  116. static struct itemplate instrux_ANDPS[] = {
  117.     {I_ANDPS, 2, {XMMREG,MEMORY,0}, "3012x0Fx54110", IF_KATMAI|IF_SSE},
  118.     {I_ANDPS, 2, {XMMREG,XMMREG,0}, "2x0Fx54110", IF_KATMAI|IF_SSE},
  119.     {-1}
  120. };
  121. static struct itemplate instrux_ARPL[] = {
  122.     {I_ARPL, 2, {MEMORY,REG16,0}, "3001x63101", IF_286|IF_PROT|IF_SM},
  123.     {I_ARPL, 2, {REG16,REG16,0}, "3001x63101", IF_286|IF_PROT},
  124.     {-1}
  125. };
  126. static struct itemplate instrux_BOUND[] = {
  127.     {I_BOUND, 2, {REG16,MEMORY,0}, "3203011x62110", IF_186},
  128.     {I_BOUND, 2, {REG32,MEMORY,0}, "3213011x62110", IF_386},
  129.     {-1}
  130. };
  131. static struct itemplate instrux_BSF[] = {
  132.     {I_BSF, 2, {REG16,MEMORY,0}, "3203012x0FxBC110", IF_386|IF_SM},
  133.     {I_BSF, 2, {REG16,REG16,0}, "3203012x0FxBC110", IF_386},
  134.     {I_BSF, 2, {REG32,MEMORY,0}, "3213012x0FxBC110", IF_386|IF_SM},
  135.     {I_BSF, 2, {REG32,REG32,0}, "3213012x0FxBC110", IF_386},
  136.     {-1}
  137. };
  138. static struct itemplate instrux_BSR[] = {
  139.     {I_BSR, 2, {REG16,MEMORY,0}, "3203012x0FxBD110", IF_386|IF_SM},
  140.     {I_BSR, 2, {REG16,REG16,0}, "3203012x0FxBD110", IF_386},
  141.     {I_BSR, 2, {REG32,MEMORY,0}, "3213012x0FxBD110", IF_386|IF_SM},
  142.     {I_BSR, 2, {REG32,REG32,0}, "3213012x0FxBD110", IF_386},
  143.     {-1}
  144. };
  145. static struct itemplate instrux_BSWAP[] = {
  146.     {I_BSWAP, 1, {REG32,0,0}, "3211x0F10xC8", IF_486},
  147.     {-1}
  148. };
  149. static struct itemplate instrux_BT[] = {
  150.     {I_BT, 2, {MEMORY,REG16,0}, "3203002x0FxA3101", IF_386|IF_SM},
  151.     {I_BT, 2, {REG16,REG16,0}, "3203002x0FxA3101", IF_386},
  152.     {I_BT, 2, {MEMORY,REG32,0}, "3213002x0FxA3101", IF_386|IF_SM},
  153.     {I_BT, 2, {REG32,REG32,0}, "3213002x0FxA3101", IF_386},
  154.     {I_BT, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203002x0FxBA20425", IF_386|IF_SB},
  155.     {I_BT, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213002x0FxBA20425", IF_386|IF_SB},
  156.     {-1}
  157. };
  158. static struct itemplate instrux_BTC[] = {
  159.     {I_BTC, 2, {MEMORY,REG16,0}, "3203002x0FxBB101", IF_386|IF_SM},
  160.     {I_BTC, 2, {REG16,REG16,0}, "3203002x0FxBB101", IF_386},
  161.     {I_BTC, 2, {MEMORY,REG32,0}, "3213002x0FxBB101", IF_386|IF_SM},
  162.     {I_BTC, 2, {REG32,REG32,0}, "3213002x0FxBB101", IF_386},
  163.     {I_BTC, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203002x0FxBA20725", IF_386|IF_SB},
  164.     {I_BTC, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213002x0FxBA20725", IF_386|IF_SB},
  165.     {-1}
  166. };
  167. static struct itemplate instrux_BTR[] = {
  168.     {I_BTR, 2, {MEMORY,REG16,0}, "3203002x0FxB3101", IF_386|IF_SM},
  169.     {I_BTR, 2, {REG16,REG16,0}, "3203002x0FxB3101", IF_386},
  170.     {I_BTR, 2, {MEMORY,REG32,0}, "3213002x0FxB3101", IF_386|IF_SM},
  171.     {I_BTR, 2, {REG32,REG32,0}, "3213002x0FxB3101", IF_386},
  172.     {I_BTR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203002x0FxBA20625", IF_386|IF_SB},
  173.     {I_BTR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213002x0FxBA20625", IF_386|IF_SB},
  174.     {-1}
  175. };
  176. static struct itemplate instrux_BTS[] = {
  177.     {I_BTS, 2, {MEMORY,REG16,0}, "3203002x0FxAB101", IF_386|IF_SM},
  178.     {I_BTS, 2, {REG16,REG16,0}, "3203002x0FxAB101", IF_386},
  179.     {I_BTS, 2, {MEMORY,REG32,0}, "3213002x0FxAB101", IF_386|IF_SM},
  180.     {I_BTS, 2, {REG32,REG32,0}, "3213002x0FxAB101", IF_386},
  181.     {I_BTS, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203002x0FxBA20525", IF_386|IF_SB},
  182.     {I_BTS, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213002x0FxBA20525", IF_386|IF_SB},
  183.     {-1}
  184. };
  185. static struct itemplate instrux_CALL[] = {
  186.     {I_CALL, 1, {IMMEDIATE,0,0}, "3221xE864", IF_8086},
  187.     {I_CALL, 1, {IMMEDIATE|NEAR,0,0}, "3221xE864", IF_8086},
  188.     {I_CALL, 1, {IMMEDIATE|FAR,0,0}, "3221x9A3437", IF_8086},
  189.     {I_CALL, 1, {IMMEDIATE|BITS16,0,0}, "3201xE864", IF_8086},
  190.     {I_CALL, 1, {IMMEDIATE|BITS16|NEAR,0,0}, "3201xE864", IF_8086},
  191.     {I_CALL, 1, {IMMEDIATE|BITS16|FAR,0,0}, "3201x9A3437", IF_8086},
  192.     {I_CALL, 1, {IMMEDIATE|BITS32,0,0}, "3211xE864", IF_8086},
  193.     {I_CALL, 1, {IMMEDIATE|BITS32|NEAR,0,0}, "3211xE864", IF_8086},
  194.     {I_CALL, 1, {IMMEDIATE|BITS32|FAR,0,0}, "3211x9A3437", IF_8086},
  195.     {I_CALL, 2, {IMMEDIATE|COLON,IMMEDIATE,0}, "3221x9A3530", IF_8086},
  196.     {I_CALL, 2, {IMMEDIATE|BITS16|COLON,IMMEDIATE,0}, "3201x9A3130", IF_8086},
  197.     {I_CALL, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS16,0}, "3201x9A3130", IF_8086},
  198.     {I_CALL, 2, {IMMEDIATE|BITS32|COLON,IMMEDIATE,0}, "3211x9A4130", IF_386},
  199.     {I_CALL, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS32,0}, "3211x9A4130", IF_386},
  200.     {I_CALL, 1, {MEMORY|FAR,0,0}, "3223001xFF203", IF_8086},
  201.     {I_CALL, 1, {MEMORY|BITS16|FAR,0,0}, "3203001xFF203", IF_8086},
  202.     {I_CALL, 1, {MEMORY|BITS32|FAR,0,0}, "3213001xFF203", IF_386},
  203.     {I_CALL, 1, {MEMORY|NEAR,0,0}, "3223001xFF202", IF_8086},
  204.     {I_CALL, 1, {MEMORY|BITS16|NEAR,0,0}, "3203001xFF202", IF_8086},
  205.     {I_CALL, 1, {MEMORY|BITS32|NEAR,0,0}, "3213001xFF202", IF_386},
  206.     {I_CALL, 1, {REG16,0,0}, "3203001xFF202", IF_8086},
  207.     {I_CALL, 1, {REG32,0,0}, "3213001xFF202", IF_386},
  208.     {I_CALL, 1, {MEMORY,0,0}, "3223001xFF202", IF_8086},
  209.     {I_CALL, 1, {MEMORY|BITS16,0,0}, "3203001xFF202", IF_8086},
  210.     {I_CALL, 1, {MEMORY|BITS32,0,0}, "3213001xFF202", IF_386},
  211.     {-1}
  212. };
  213. static struct itemplate instrux_CBW[] = {
  214.     {I_CBW, 0, {0,0,0}, "3201x98", IF_8086},
  215.     {-1}
  216. };
  217. static struct itemplate instrux_CDQ[] = {
  218.     {I_CDQ, 0, {0,0,0}, "3211x99", IF_386},
  219.     {-1}
  220. };
  221. static struct itemplate instrux_CLC[] = {
  222.     {I_CLC, 0, {0,0,0}, "1xF8", IF_8086},
  223.     {-1}
  224. };
  225. static struct itemplate instrux_CLD[] = {
  226.     {I_CLD, 0, {0,0,0}, "1xFC", IF_8086},
  227.     {-1}
  228. };
  229. static struct itemplate instrux_CLI[] = {
  230.     {I_CLI, 0, {0,0,0}, "1xFA", IF_8086},
  231.     {-1}
  232. };
  233. static struct itemplate instrux_CLTS[] = {
  234.     {I_CLTS, 0, {0,0,0}, "2x0Fx06", IF_286|IF_PRIV},
  235.     {-1}
  236. };
  237. static struct itemplate instrux_CMC[] = {
  238.     {I_CMC, 0, {0,0,0}, "1xF5", IF_8086},
  239.     {-1}
  240. };
  241. static struct itemplate instrux_CMP[] = {
  242.     {I_CMP, 2, {MEMORY,REG8,0}, "3001x38101", IF_8086|IF_SM},
  243.     {I_CMP, 2, {REG8,REG8,0}, "3001x38101", IF_8086},
  244.     {I_CMP, 2, {MEMORY,REG16,0}, "3203001x39101", IF_8086|IF_SM},
  245.     {I_CMP, 2, {REG16,REG16,0}, "3203001x39101", IF_8086},
  246.     {I_CMP, 2, {MEMORY,REG32,0}, "3213001x39101", IF_386|IF_SM},
  247.     {I_CMP, 2, {REG32,REG32,0}, "3213001x39101", IF_386},
  248.     {I_CMP, 2, {REG8,MEMORY,0}, "3011x3A110", IF_8086|IF_SM},
  249.     {I_CMP, 2, {REG8,REG8,0}, "3011x3A110", IF_8086},
  250.     {I_CMP, 2, {REG16,MEMORY,0}, "3203011x3B110", IF_8086|IF_SM},
  251.     {I_CMP, 2, {REG16,REG16,0}, "3203011x3B110", IF_8086},
  252.     {I_CMP, 2, {REG32,MEMORY,0}, "3213011x3B110", IF_386|IF_SM},
  253.     {I_CMP, 2, {REG32,REG32,0}, "3213011x3B110", IF_386},
  254.     {I_CMP, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "3203001x8320715", IF_8086},
  255.     {I_CMP, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "3213001x8320715", IF_386},
  256.     {I_CMP, 2, {REG_AL,IMMEDIATE,0}, "1x3C21", IF_8086|IF_SM},
  257.     {I_CMP, 2, {REG_AX,IMMEDIATE,0}, "3201x3D31", IF_8086|IF_SM},
  258.     {I_CMP, 2, {REG_EAX,IMMEDIATE,0}, "3211x3D41", IF_386|IF_SM},
  259.     {I_CMP, 2, {REGMEM|BITS8,IMMEDIATE,0}, "3001x8020721", IF_8086|IF_SM},
  260.     {I_CMP, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203001x8120731", IF_8086|IF_SM},
  261.     {I_CMP, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213001x8120741", IF_386|IF_SM},
  262.     {I_CMP, 2, {MEMORY,IMMEDIATE|BITS8,0}, "3001x8020721", IF_8086|IF_SM},
  263.     {I_CMP, 2, {MEMORY,IMMEDIATE|BITS16,0}, "3203001x8120731", IF_8086|IF_SM},
  264.     {I_CMP, 2, {MEMORY,IMMEDIATE|BITS32,0}, "3213001x8120741", IF_386|IF_SM},
  265.     {-1}
  266. };
  267. static struct itemplate instrux_CMPEQPS[] = {
  268.     {I_CMPEQPS, 2, {XMMREG,MEMORY,0}, "3013312x0FxC21101x00", IF_KATMAI|IF_SSE},
  269.     {I_CMPEQPS, 2, {XMMREG,XMMREG,0}, "3312x0FxC21101x00", IF_KATMAI|IF_SSE},
  270.     {-1}
  271. };
  272. static struct itemplate instrux_CMPEQSS[] = {
  273.     {I_CMPEQSS, 2, {XMMREG,MEMORY,0}, "3013332x0FxC21101x00", IF_KATMAI|IF_SSE},
  274.     {I_CMPEQSS, 2, {XMMREG,XMMREG,0}, "3332x0FxC21101x00", IF_KATMAI|IF_SSE},
  275.     {-1}
  276. };
  277. static struct itemplate instrux_CMPLEPS[] = {
  278.     {I_CMPLEPS, 2, {XMMREG,MEMORY,0}, "3013312x0FxC21101x02", IF_KATMAI|IF_SSE},
  279.     {I_CMPLEPS, 2, {XMMREG,XMMREG,0}, "3312x0FxC21101x02", IF_KATMAI|IF_SSE},
  280.     {-1}
  281. };
  282. static struct itemplate instrux_CMPLESS[] = {
  283.     {I_CMPLESS, 2, {XMMREG,MEMORY,0}, "3013332x0FxC21101x02", IF_KATMAI|IF_SSE},
  284.     {I_CMPLESS, 2, {XMMREG,XMMREG,0}, "3332x0FxC21101x02", IF_KATMAI|IF_SSE},
  285.     {-1}
  286. };
  287. static struct itemplate instrux_CMPLTPS[] = {
  288.     {I_CMPLTPS, 2, {XMMREG,MEMORY,0}, "3013312x0FxC21101x01", IF_KATMAI|IF_SSE},
  289.     {I_CMPLTPS, 2, {XMMREG,XMMREG,0}, "3312x0FxC21101x01", IF_KATMAI|IF_SSE},
  290.     {-1}
  291. };
  292. static struct itemplate instrux_CMPLTSS[] = {
  293.     {I_CMPLTSS, 2, {XMMREG,MEMORY,0}, "3013332x0FxC21101x01", IF_KATMAI|IF_SSE},
  294.     {I_CMPLTSS, 2, {XMMREG,XMMREG,0}, "3332x0FxC21101x01", IF_KATMAI|IF_SSE},
  295.     {-1}
  296. };
  297. static struct itemplate instrux_CMPNEQPS[] = {
  298.     {I_CMPNEQPS, 2, {XMMREG,MEMORY,0}, "3013312x0FxC21101x04", IF_KATMAI|IF_SSE},
  299.     {I_CMPNEQPS, 2, {XMMREG,XMMREG,0}, "3312x0FxC21101x04", IF_KATMAI|IF_SSE},
  300.     {-1}
  301. };
  302. static struct itemplate instrux_CMPNEQSS[] = {
  303.     {I_CMPNEQSS, 2, {XMMREG,MEMORY,0}, "3013332x0FxC21101x04", IF_KATMAI|IF_SSE},
  304.     {I_CMPNEQSS, 2, {XMMREG,XMMREG,0}, "3332x0FxC21101x04", IF_KATMAI|IF_SSE},
  305.     {-1}
  306. };
  307. static struct itemplate instrux_CMPNLEPS[] = {
  308.     {I_CMPNLEPS, 2, {XMMREG,MEMORY,0}, "3013312x0FxC21101x06", IF_KATMAI|IF_SSE},
  309.     {I_CMPNLEPS, 2, {XMMREG,XMMREG,0}, "3312x0FxC21101x06", IF_KATMAI|IF_SSE},
  310.     {-1}
  311. };
  312. static struct itemplate instrux_CMPNLESS[] = {
  313.     {I_CMPNLESS, 2, {XMMREG,MEMORY,0}, "3013332x0FxC21101x06", IF_KATMAI|IF_SSE},
  314.     {I_CMPNLESS, 2, {XMMREG,XMMREG,0}, "3332x0FxC21101x06", IF_KATMAI|IF_SSE},
  315.     {-1}
  316. };
  317. static struct itemplate instrux_CMPNLTPS[] = {
  318.     {I_CMPNLTPS, 2, {XMMREG,MEMORY,0}, "3013312x0FxC21101x05", IF_KATMAI|IF_SSE},
  319.     {I_CMPNLTPS, 2, {XMMREG,XMMREG,0}, "3312x0FxC21101x05", IF_KATMAI|IF_SSE},
  320.     {-1}
  321. };
  322. static struct itemplate instrux_CMPNLTSS[] = {
  323.     {I_CMPNLTSS, 2, {XMMREG,MEMORY,0}, "3013332x0FxC21101x05", IF_KATMAI|IF_SSE},
  324.     {I_CMPNLTSS, 2, {XMMREG,XMMREG,0}, "3332x0FxC21101x05", IF_KATMAI|IF_SSE},
  325.     {-1}
  326. };
  327. static struct itemplate instrux_CMPORDPS[] = {
  328.     {I_CMPORDPS, 2, {XMMREG,MEMORY,0}, "3013312x0FxC21101x07", IF_KATMAI|IF_SSE},
  329.     {I_CMPORDPS, 2, {XMMREG,XMMREG,0}, "3312x0FxC21101x07", IF_KATMAI|IF_SSE},
  330.     {-1}
  331. };
  332. static struct itemplate instrux_CMPORDSS[] = {
  333.     {I_CMPORDSS, 2, {XMMREG,MEMORY,0}, "3013332x0FxC21101x07", IF_KATMAI|IF_SSE},
  334.     {I_CMPORDSS, 2, {XMMREG,XMMREG,0}, "3332x0FxC21101x07", IF_KATMAI|IF_SSE},
  335.     {-1}
  336. };
  337. static struct itemplate instrux_CMPPS[] = {
  338.     {I_CMPPS, 3, {XMMREG,MEMORY,IMMEDIATE}, "3013312x0FxC211022", IF_KATMAI|IF_SSE|IF_SB|IF_AR2},
  339.     {I_CMPPS, 3, {XMMREG,XMMREG,IMMEDIATE}, "3312x0FxC211022", IF_KATMAI|IF_SSE|IF_SB|IF_AR2},
  340.     {-1}
  341. };
  342. static struct itemplate instrux_CMPSB[] = {
  343.     {I_CMPSB, 0, {0,0,0}, "3321xA6", IF_8086},
  344.     {-1}
  345. };
  346. static struct itemplate instrux_CMPSD[] = {
  347.     {I_CMPSD, 0, {0,0,0}, "3323211xA7", IF_386},
  348.     {-1}
  349. };
  350. static struct itemplate instrux_CMPSS[] = {
  351.     {I_CMPSS, 3, {XMMREG,MEMORY,IMMEDIATE}, "3013332x0FxC211022", IF_KATMAI|IF_SSE|IF_SB|IF_AR2},
  352.     {I_CMPSS, 3, {XMMREG,XMMREG,IMMEDIATE}, "3332x0FxC211022", IF_KATMAI|IF_SSE|IF_SB|IF_AR2},
  353.     {-1}
  354. };
  355. static struct itemplate instrux_CMPSW[] = {
  356.     {I_CMPSW, 0, {0,0,0}, "3323201xA7", IF_8086},
  357.     {-1}
  358. };
  359. static struct itemplate instrux_CMPUNORDPS[] = {
  360.     {I_CMPUNORDPS, 2, {XMMREG,MEMORY,0}, "3013312x0FxC21101x03", IF_KATMAI|IF_SSE},
  361.     {I_CMPUNORDPS, 2, {XMMREG,XMMREG,0}, "3312x0FxC21101x03", IF_KATMAI|IF_SSE},
  362.     {-1}
  363. };
  364. static struct itemplate instrux_CMPUNORDSS[] = {
  365.     {I_CMPUNORDSS, 2, {XMMREG,MEMORY,0}, "3013332x0FxC21101x03", IF_KATMAI|IF_SSE},
  366.     {I_CMPUNORDSS, 2, {XMMREG,XMMREG,0}, "3332x0FxC21101x03", IF_KATMAI|IF_SSE},
  367.     {-1}
  368. };
  369. static struct itemplate instrux_CMPXCHG[] = {
  370.     {I_CMPXCHG, 2, {MEMORY,REG8,0}, "3002x0FxB0101", IF_PENT|IF_SM},
  371.     {I_CMPXCHG, 2, {REG8,REG8,0}, "3002x0FxB0101", IF_PENT},
  372.     {I_CMPXCHG, 2, {MEMORY,REG16,0}, "3203002x0FxB1101", IF_PENT|IF_SM},
  373.     {I_CMPXCHG, 2, {REG16,REG16,0}, "3203002x0FxB1101", IF_PENT},
  374.     {I_CMPXCHG, 2, {MEMORY,REG32,0}, "3213002x0FxB1101", IF_PENT|IF_SM},
  375.     {I_CMPXCHG, 2, {REG32,REG32,0}, "3213002x0FxB1101", IF_PENT},
  376.     {-1}
  377. };
  378. static struct itemplate instrux_CMPXCHG486[] = {
  379.     {I_CMPXCHG486, 2, {MEMORY,REG8,0}, "3002x0FxA6101", IF_486|IF_SM|IF_UNDOC},
  380.     {I_CMPXCHG486, 2, {REG8,REG8,0}, "3002x0FxA6101", IF_486|IF_UNDOC},
  381.     {I_CMPXCHG486, 2, {MEMORY,REG16,0}, "3203002x0FxA7101", IF_486|IF_SM|IF_UNDOC},
  382.     {I_CMPXCHG486, 2, {REG16,REG16,0}, "3203002x0FxA7101", IF_486|IF_UNDOC},
  383.     {I_CMPXCHG486, 2, {MEMORY,REG32,0}, "3213002x0FxA7101", IF_486|IF_SM|IF_UNDOC},
  384.     {I_CMPXCHG486, 2, {REG32,REG32,0}, "3213002x0FxA7101", IF_486|IF_UNDOC},
  385.     {-1}
  386. };
  387. static struct itemplate instrux_CMPXCHG8B[] = {
  388.     {I_CMPXCHG8B, 1, {MEMORY,0,0}, "3002x0FxC7201", IF_PENT},
  389.     {-1}
  390. };
  391. static struct itemplate instrux_COMISS[] = {
  392.     {I_COMISS, 2, {XMMREG,MEMORY,0}, "3012x0Fx2F110", IF_KATMAI|IF_SSE},
  393.     {I_COMISS, 2, {XMMREG,XMMREG,0}, "2x0Fx2F110", IF_KATMAI|IF_SSE},
  394.     {-1}
  395. };
  396. static struct itemplate instrux_CPUID[] = {
  397.     {I_CPUID, 0, {0,0,0}, "2x0FxA2", IF_PENT},
  398.     {-1}
  399. };
  400. static struct itemplate instrux_CVTPI2PS[] = {
  401.     {I_CVTPI2PS, 2, {XMMREG,MEMORY,0}, "3013312x0Fx2A110", IF_KATMAI|IF_SSE|IF_MMX},
  402.     {I_CVTPI2PS, 2, {XMMREG,MMXREG,0}, "3312x0Fx2A110", IF_KATMAI|IF_SSE|IF_MMX},
  403.     {-1}
  404. };
  405. static struct itemplate instrux_CVTPS2PI[] = {
  406.     {I_CVTPS2PI, 2, {MMXREG,MEMORY,0}, "3013312x0Fx2D110", IF_KATMAI|IF_SSE|IF_MMX},
  407.     {I_CVTPS2PI, 2, {MMXREG,XMMREG,0}, "3312x0Fx2D110", IF_KATMAI|IF_SSE|IF_MMX},
  408.     {-1}
  409. };
  410. static struct itemplate instrux_CVTSI2SS[] = {
  411.     {I_CVTSI2SS, 2, {XMMREG,MEMORY,0}, "3013332x0Fx2A110", IF_KATMAI|IF_SSE|IF_SD|IF_AR1},
  412.     {I_CVTSI2SS, 2, {XMMREG,REG32,0}, "3332x0Fx2A110", IF_KATMAI|IF_SSE},
  413.     {-1}
  414. };
  415. static struct itemplate instrux_CVTSS2SI[] = {
  416.     {I_CVTSS2SI, 2, {REG32,MEMORY,0}, "3013332x0Fx2D110", IF_KATMAI|IF_SSE},
  417.     {I_CVTSS2SI, 2, {REG32,XMMREG,0}, "3332x0Fx2D110", IF_KATMAI|IF_SSE},
  418.     {-1}
  419. };
  420. static struct itemplate instrux_CVTTPS2PI[] = {
  421.     {I_CVTTPS2PI, 2, {MMXREG,MEMORY,0}, "3013312x0Fx2C110", IF_KATMAI|IF_SSE|IF_MMX},
  422.     {I_CVTTPS2PI, 2, {MMXREG,XMMREG,0}, "3312x0Fx2C110", IF_KATMAI|IF_SSE|IF_MMX},
  423.     {-1}
  424. };
  425. static struct itemplate instrux_CVTTSS2SI[] = {
  426.     {I_CVTTSS2SI, 2, {REG32,MEMORY,0}, "3013332x0Fx2C110", IF_KATMAI|IF_SSE},
  427.     {I_CVTTSS2SI, 2, {REG32,XMMREG,0}, "3332x0Fx2C110", IF_KATMAI|IF_SSE},
  428.     {-1}
  429. };
  430. static struct itemplate instrux_CWD[] = {
  431.     {I_CWD, 0, {0,0,0}, "3201x99", IF_8086},
  432.     {-1}
  433. };
  434. static struct itemplate instrux_CWDE[] = {
  435.     {I_CWDE, 0, {0,0,0}, "3211x98", IF_386},
  436.     {-1}
  437. };
  438. static struct itemplate instrux_DAA[] = {
  439.     {I_DAA, 0, {0,0,0}, "1x27", IF_8086},
  440.     {-1}
  441. };
  442. static struct itemplate instrux_DAS[] = {
  443.     {I_DAS, 0, {0,0,0}, "1x2F", IF_8086},
  444.     {-1}
  445. };
  446. static struct itemplate instrux_DB[] = {
  447.     {-1}
  448. };
  449. static struct itemplate instrux_DD[] = {
  450.     {-1}
  451. };
  452. static struct itemplate instrux_DEC[] = {
  453.     {I_DEC, 1, {REG16,0,0}, "32010x48", IF_8086},
  454.     {I_DEC, 1, {REG32,0,0}, "32110x48", IF_386},
  455.     {I_DEC, 1, {REGMEM|BITS8,0,0}, "3001xFE201", IF_8086},
  456.     {I_DEC, 1, {REGMEM|BITS16,0,0}, "3203001xFF201", IF_8086},
  457.     {I_DEC, 1, {REGMEM|BITS32,0,0}, "3213001xFF201", IF_386},
  458.     {-1}
  459. };
  460. static struct itemplate instrux_DIV[] = {
  461.     {I_DIV, 1, {REGMEM|BITS8,0,0}, "3001xF6206", IF_8086},
  462.     {I_DIV, 1, {REGMEM|BITS16,0,0}, "3203001xF7206", IF_8086},
  463.     {I_DIV, 1, {REGMEM|BITS32,0,0}, "3213001xF7206", IF_386},
  464.     {-1}
  465. };
  466. static struct itemplate instrux_DIVPS[] = {
  467.     {I_DIVPS, 2, {XMMREG,MEMORY,0}, "3013312x0Fx5E110", IF_KATMAI|IF_SSE},
  468.     {I_DIVPS, 2, {XMMREG,XMMREG,0}, "3312x0Fx5E110", IF_KATMAI|IF_SSE},
  469.     {-1}
  470. };
  471. static struct itemplate instrux_DIVSS[] = {
  472.     {I_DIVSS, 2, {XMMREG,MEMORY,0}, "3013332x0Fx5E110", IF_KATMAI|IF_SSE},
  473.     {I_DIVSS, 2, {XMMREG,XMMREG,0}, "3332x0Fx5E110", IF_KATMAI|IF_SSE},
  474.     {-1}
  475. };
  476. static struct itemplate instrux_DQ[] = {
  477.     {-1}
  478. };
  479. static struct itemplate instrux_DT[] = {
  480.     {-1}
  481. };
  482. static struct itemplate instrux_DW[] = {
  483.     {-1}
  484. };
  485. static struct itemplate instrux_EMMS[] = {
  486.     {I_EMMS, 0, {0,0,0}, "2x0Fx77", IF_PENT|IF_MMX},
  487.     {-1}
  488. };
  489. static struct itemplate instrux_ENTER[] = {
  490.     {I_ENTER, 2, {IMMEDIATE,IMMEDIATE,0}, "1xC83025", IF_186},
  491.     {-1}
  492. };
  493. static struct itemplate instrux_EQU[] = {
  494.     {I_EQU, 1, {IMMEDIATE,0,0}, "", IF_8086},
  495.     {I_EQU, 2, {IMMEDIATE|COLON,IMMEDIATE,0}, "", IF_8086},
  496.     {-1}
  497. };
  498. static struct itemplate instrux_F2XM1[] = {
  499.     {I_F2XM1, 0, {0,0,0}, "2xD9xF0", IF_8086|IF_FPU},
  500.     {-1}
  501. };
  502. static struct itemplate instrux_FABS[] = {
  503.     {I_FABS, 0, {0,0,0}, "2xD9xE1", IF_8086|IF_FPU},
  504.     {-1}
  505. };
  506. static struct itemplate instrux_FADD[] = {
  507.     {I_FADD, 1, {MEMORY|BITS32,0,0}, "3001xD8200", IF_8086|IF_FPU},
  508.     {I_FADD, 1, {MEMORY|BITS64,0,0}, "3001xDC200", IF_8086|IF_FPU},
  509.     {I_FADD, 1, {FPUREG|TO,0,0}, "1xDC10xC0", IF_8086|IF_FPU},
  510.     {I_FADD, 1, {FPUREG,0,0}, "1xD810xC0", IF_8086|IF_FPU},
  511.     {I_FADD, 2, {FPUREG,FPU0,0}, "1xDC10xC0", IF_8086|IF_FPU},
  512.     {I_FADD, 2, {FPU0,FPUREG,0}, "1xD811xC0", IF_8086|IF_FPU},
  513.     {-1}
  514. };
  515. static struct itemplate instrux_FADDP[] = {
  516.     {I_FADDP, 1, {FPUREG,0,0}, "1xDE10xC0", IF_8086|IF_FPU},
  517.     {I_FADDP, 2, {FPUREG,FPU0,0}, "1xDE10xC0", IF_8086|IF_FPU},
  518.     {-1}
  519. };
  520. static struct itemplate instrux_FBLD[] = {
  521.     {I_FBLD, 1, {MEMORY|BITS80,0,0}, "3001xDF204", IF_8086|IF_FPU},
  522.     {I_FBLD, 1, {MEMORY,0,0}, "3001xDF204", IF_8086|IF_FPU},
  523.     {-1}
  524. };
  525. static struct itemplate instrux_FBSTP[] = {
  526.     {I_FBSTP, 1, {MEMORY|BITS80,0,0}, "3001xDF206", IF_8086|IF_FPU},
  527.     {I_FBSTP, 1, {MEMORY,0,0}, "3001xDF206", IF_8086|IF_FPU},
  528.     {-1}
  529. };
  530. static struct itemplate instrux_FCHS[] = {
  531.     {I_FCHS, 0, {0,0,0}, "2xD9xE0", IF_8086|IF_FPU},
  532.     {-1}
  533. };
  534. static struct itemplate instrux_FCLEX[] = {
  535.     {I_FCLEX, 0, {0,0,0}, "3x9BxDBxE2", IF_8086|IF_FPU},
  536.     {-1}
  537. };
  538. static struct itemplate instrux_FCMOVB[] = {
  539.     {I_FCMOVB, 1, {FPUREG,0,0}, "1xDA10xC0", IF_P6|IF_FPU},
  540.     {I_FCMOVB, 2, {FPU0,FPUREG,0}, "1xDA11xC0", IF_P6|IF_FPU},
  541.     {-1}
  542. };
  543. static struct itemplate instrux_FCMOVBE[] = {
  544.     {I_FCMOVBE, 1, {FPUREG,0,0}, "1xDA10xD0", IF_P6|IF_FPU},
  545.     {I_FCMOVBE, 2, {FPU0,FPUREG,0}, "1xDA11xD0", IF_P6|IF_FPU},
  546.     {-1}
  547. };
  548. static struct itemplate instrux_FCMOVE[] = {
  549.     {I_FCMOVE, 1, {FPUREG,0,0}, "1xDA10xC8", IF_P6|IF_FPU},
  550.     {I_FCMOVE, 2, {FPU0,FPUREG,0}, "1xDA11xC8", IF_P6|IF_FPU},
  551.     {-1}
  552. };
  553. static struct itemplate instrux_FCMOVNB[] = {
  554.     {I_FCMOVNB, 1, {FPUREG,0,0}, "1xDB10xC0", IF_P6|IF_FPU},
  555.     {I_FCMOVNB, 2, {FPU0,FPUREG,0}, "1xDB11xC0", IF_P6|IF_FPU},
  556.     {-1}
  557. };
  558. static struct itemplate instrux_FCMOVNBE[] = {
  559.     {I_FCMOVNBE, 1, {FPUREG,0,0}, "1xDB10xD0", IF_P6|IF_FPU},
  560.     {I_FCMOVNBE, 2, {FPU0,FPUREG,0}, "1xDB11xD0", IF_P6|IF_FPU},
  561.     {-1}
  562. };
  563. static struct itemplate instrux_FCMOVNE[] = {
  564.     {I_FCMOVNE, 1, {FPUREG,0,0}, "1xDB10xC8", IF_P6|IF_FPU},
  565.     {I_FCMOVNE, 2, {FPU0,FPUREG,0}, "1xDB11xC8", IF_P6|IF_FPU},
  566.     {-1}
  567. };
  568. static struct itemplate instrux_FCMOVNU[] = {
  569.     {I_FCMOVNU, 1, {FPUREG,0,0}, "1xDB10xD8", IF_P6|IF_FPU},
  570.     {I_FCMOVNU, 2, {FPU0,FPUREG,0}, "1xDB11xD8", IF_P6|IF_FPU},
  571.     {-1}
  572. };
  573. static struct itemplate instrux_FCMOVU[] = {
  574.     {I_FCMOVU, 1, {FPUREG,0,0}, "1xDA10xD8", IF_P6|IF_FPU},
  575.     {I_FCMOVU, 2, {FPU0,FPUREG,0}, "1xDA11xD8", IF_P6|IF_FPU},
  576.     {-1}
  577. };
  578. static struct itemplate instrux_FCOM[] = {
  579.     {I_FCOM, 1, {MEMORY|BITS32,0,0}, "3001xD8202", IF_8086|IF_FPU},
  580.     {I_FCOM, 1, {MEMORY|BITS64,0,0}, "3001xDC202", IF_8086|IF_FPU},
  581.     {I_FCOM, 1, {FPUREG,0,0}, "1xD810xD0", IF_8086|IF_FPU},
  582.     {I_FCOM, 2, {FPU0,FPUREG,0}, "1xD811xD0", IF_8086|IF_FPU},
  583.     {-1}
  584. };
  585. static struct itemplate instrux_FCOMI[] = {
  586.     {I_FCOMI, 1, {FPUREG,0,0}, "1xDB10xF0", IF_P6|IF_FPU},
  587.     {I_FCOMI, 2, {FPU0,FPUREG,0}, "1xDB11xF0", IF_P6|IF_FPU},
  588.     {-1}
  589. };
  590. static struct itemplate instrux_FCOMIP[] = {
  591.     {I_FCOMIP, 1, {FPUREG,0,0}, "1xDF10xF0", IF_P6|IF_FPU},
  592.     {I_FCOMIP, 2, {FPU0,FPUREG,0}, "1xDF11xF0", IF_P6|IF_FPU},
  593.     {-1}
  594. };
  595. static struct itemplate instrux_FCOMP[] = {
  596.     {I_FCOMP, 1, {MEMORY|BITS32,0,0}, "3001xD8203", IF_8086|IF_FPU},
  597.     {I_FCOMP, 1, {MEMORY|BITS64,0,0}, "3001xDC203", IF_8086|IF_FPU},
  598.     {I_FCOMP, 1, {FPUREG,0,0}, "1xD810xD8", IF_8086|IF_FPU},
  599.     {I_FCOMP, 2, {FPU0,FPUREG,0}, "1xD811xD8", IF_8086|IF_FPU},
  600.     {-1}
  601. };
  602. static struct itemplate instrux_FCOMPP[] = {
  603.     {I_FCOMPP, 0, {0,0,0}, "2xDExD9", IF_8086|IF_FPU},
  604.     {-1}
  605. };
  606. static struct itemplate instrux_FCOS[] = {
  607.     {I_FCOS, 0, {0,0,0}, "2xD9xFF", IF_386|IF_FPU},
  608.     {-1}
  609. };
  610. static struct itemplate instrux_FDECSTP[] = {
  611.     {I_FDECSTP, 0, {0,0,0}, "2xD9xF6", IF_8086|IF_FPU},
  612.     {-1}
  613. };
  614. static struct itemplate instrux_FDISI[] = {
  615.     {I_FDISI, 0, {0,0,0}, "3x9BxDBxE1", IF_8086|IF_FPU},
  616.     {-1}
  617. };
  618. static struct itemplate instrux_FDIV[] = {
  619.     {I_FDIV, 1, {MEMORY|BITS32,0,0}, "3001xD8206", IF_8086|IF_FPU},
  620.     {I_FDIV, 1, {MEMORY|BITS64,0,0}, "3001xDC206", IF_8086|IF_FPU},
  621.     {I_FDIV, 1, {FPUREG|TO,0,0}, "1xDC10xF8", IF_8086|IF_FPU},
  622.     {I_FDIV, 2, {FPUREG,FPU0,0}, "1xDC10xF8", IF_8086|IF_FPU},
  623.     {I_FDIV, 1, {FPUREG,0,0}, "1xD810xF0", IF_8086|IF_FPU},
  624.     {I_FDIV, 2, {FPU0,FPUREG,0}, "1xD811xF0", IF_8086|IF_FPU},
  625.     {-1}
  626. };
  627. static struct itemplate instrux_FDIVP[] = {
  628.     {I_FDIVP, 2, {FPUREG,FPU0,0}, "1xDE10xF8", IF_8086|IF_FPU},
  629.     {I_FDIVP, 1, {FPUREG,0,0}, "1xDE10xF8", IF_8086|IF_FPU},
  630.     {-1}
  631. };
  632. static struct itemplate instrux_FDIVR[] = {
  633.     {I_FDIVR, 1, {MEMORY|BITS32,0,0}, "3001xD8207", IF_8086|IF_FPU},
  634.     {I_FDIVR, 1, {MEMORY|BITS64,0,0}, "3001xDC207", IF_8086|IF_FPU},
  635.     {I_FDIVR, 1, {FPUREG|TO,0,0}, "1xDC10xF0", IF_8086|IF_FPU},
  636.     {I_FDIVR, 2, {FPUREG,FPU0,0}, "1xDC10xF0", IF_8086|IF_FPU},
  637.     {I_FDIVR, 1, {FPUREG,0,0}, "1xD810xF8", IF_8086|IF_FPU},
  638.     {I_FDIVR, 2, {FPU0,FPUREG,0}, "1xD811xF8", IF_8086|IF_FPU},
  639.     {-1}
  640. };
  641. static struct itemplate instrux_FDIVRP[] = {
  642.     {I_FDIVRP, 1, {FPUREG,0,0}, "1xDE10xF0", IF_8086|IF_FPU},
  643.     {I_FDIVRP, 2, {FPUREG,FPU0,0}, "1xDE10xF0", IF_8086|IF_FPU},
  644.     {-1}
  645. };
  646. static struct itemplate instrux_FEMMS[] = {
  647.     {I_FEMMS, 0, {0,0,0}, "2x0Fx0E", IF_PENT|IF_3DNOW},
  648.     {-1}
  649. };
  650. static struct itemplate instrux_FENI[] = {
  651.     {I_FENI, 0, {0,0,0}, "3x9BxDBxE0", IF_8086|IF_FPU},
  652.     {-1}
  653. };
  654. static struct itemplate instrux_FFREE[] = {
  655.     {I_FFREE, 1, {FPUREG,0,0}, "1xDD10xC0", IF_8086|IF_FPU},
  656.     {-1}
  657. };
  658. static struct itemplate instrux_FIADD[] = {
  659.     {I_FIADD, 1, {MEMORY|BITS32,0,0}, "3001xDA200", IF_8086|IF_FPU},
  660.     {I_FIADD, 1, {MEMORY|BITS16,0,0}, "3001xDE200", IF_8086|IF_FPU},
  661.     {-1}
  662. };
  663. static struct itemplate instrux_FICOM[] = {
  664.     {I_FICOM, 1, {MEMORY|BITS32,0,0}, "3001xDA202", IF_8086|IF_FPU},
  665.     {I_FICOM, 1, {MEMORY|BITS16,0,0}, "3001xDE202", IF_8086|IF_FPU},
  666.     {-1}
  667. };
  668. static struct itemplate instrux_FICOMP[] = {
  669.     {I_FICOMP, 1, {MEMORY|BITS32,0,0}, "3001xDA203", IF_8086|IF_FPU},
  670.     {I_FICOMP, 1, {MEMORY|BITS16,0,0}, "3001xDE203", IF_8086|IF_FPU},
  671.     {-1}
  672. };
  673. static struct itemplate instrux_FIDIV[] = {
  674.     {I_FIDIV, 1, {MEMORY|BITS32,0,0}, "3001xDA206", IF_8086|IF_FPU},
  675.     {I_FIDIV, 1, {MEMORY|BITS16,0,0}, "3001xDE206", IF_8086|IF_FPU},
  676.     {-1}
  677. };
  678. static struct itemplate instrux_FIDIVR[] = {
  679.     {I_FIDIVR, 1, {MEMORY|BITS32,0,0}, "3001xDA207", IF_8086|IF_FPU},
  680.     {I_FIDIVR, 1, {MEMORY|BITS16,0,0}, "3001xDE207", IF_8086|IF_FPU},
  681.     {-1}
  682. };
  683. static struct itemplate instrux_FILD[] = {
  684.     {I_FILD, 1, {MEMORY|BITS32,0,0}, "3001xDB200", IF_8086|IF_FPU},
  685.     {I_FILD, 1, {MEMORY|BITS16,0,0}, "3001xDF200", IF_8086|IF_FPU},
  686.     {I_FILD, 1, {MEMORY|BITS64,0,0}, "3001xDF205", IF_8086|IF_FPU},
  687.     {-1}
  688. };
  689. static struct itemplate instrux_FIMUL[] = {
  690.     {I_FIMUL, 1, {MEMORY|BITS32,0,0}, "3001xDA201", IF_8086|IF_FPU},
  691.     {I_FIMUL, 1, {MEMORY|BITS16,0,0}, "3001xDE201", IF_8086|IF_FPU},
  692.     {-1}
  693. };
  694. static struct itemplate instrux_FINCSTP[] = {
  695.     {I_FINCSTP, 0, {0,0,0}, "2xD9xF7", IF_8086|IF_FPU},
  696.     {-1}
  697. };
  698. static struct itemplate instrux_FINIT[] = {
  699.     {I_FINIT, 0, {0,0,0}, "3x9BxDBxE3", IF_8086|IF_FPU},
  700.     {-1}
  701. };
  702. static struct itemplate instrux_FIST[] = {
  703.     {I_FIST, 1, {MEMORY|BITS32,0,0}, "3001xDB202", IF_8086|IF_FPU},
  704.     {I_FIST, 1, {MEMORY|BITS16,0,0}, "3001xDF202", IF_8086|IF_FPU},
  705.     {-1}
  706. };
  707. static struct itemplate instrux_FISTP[] = {
  708.     {I_FISTP, 1, {MEMORY|BITS32,0,0}, "3001xDB203", IF_8086|IF_FPU},
  709.     {I_FISTP, 1, {MEMORY|BITS16,0,0}, "3001xDF203", IF_8086|IF_FPU},
  710.     {I_FISTP, 1, {MEMORY|BITS64,0,0}, "3001xDF207", IF_8086|IF_FPU},
  711.     {-1}
  712. };
  713. static struct itemplate instrux_FISUB[] = {
  714.     {I_FISUB, 1, {MEMORY|BITS32,0,0}, "3001xDA204", IF_8086|IF_FPU},
  715.     {I_FISUB, 1, {MEMORY|BITS16,0,0}, "3001xDE204", IF_8086|IF_FPU},
  716.     {-1}
  717. };
  718. static struct itemplate instrux_FISUBR[] = {
  719.     {I_FISUBR, 1, {MEMORY|BITS32,0,0}, "3001xDA205", IF_8086|IF_FPU},
  720.     {I_FISUBR, 1, {MEMORY|BITS16,0,0}, "3001xDE205", IF_8086|IF_FPU},
  721.     {-1}
  722. };
  723. static struct itemplate instrux_FLD[] = {
  724.     {I_FLD, 1, {MEMORY|BITS32,0,0}, "3001xD9200", IF_8086|IF_FPU},
  725.     {I_FLD, 1, {MEMORY|BITS64,0,0}, "3001xDD200", IF_8086|IF_FPU},
  726.     {I_FLD, 1, {MEMORY|BITS80,0,0}, "3001xDB205", IF_8086|IF_FPU},
  727.     {I_FLD, 1, {FPUREG,0,0}, "1xD910xC0", IF_8086|IF_FPU},
  728.     {-1}
  729. };
  730. static struct itemplate instrux_FLD1[] = {
  731.     {I_FLD1, 0, {0,0,0}, "2xD9xE8", IF_8086|IF_FPU},
  732.     {-1}
  733. };
  734. static struct itemplate instrux_FLDCW[] = {
  735.     {I_FLDCW, 1, {MEMORY,0,0}, "3001xD9205", IF_8086|IF_FPU|IF_SW},
  736.     {-1}
  737. };
  738. static struct itemplate instrux_FLDENV[] = {
  739.     {I_FLDENV, 1, {MEMORY,0,0}, "3001xD9204", IF_8086|IF_FPU},
  740.     {-1}
  741. };
  742. static struct itemplate instrux_FLDL2E[] = {
  743.     {I_FLDL2E, 0, {0,0,0}, "2xD9xEA", IF_8086|IF_FPU},
  744.     {-1}
  745. };
  746. static struct itemplate instrux_FLDL2T[] = {
  747.     {I_FLDL2T, 0, {0,0,0}, "2xD9xE9", IF_8086|IF_FPU},
  748.     {-1}
  749. };
  750. static struct itemplate instrux_FLDLG2[] = {
  751.     {I_FLDLG2, 0, {0,0,0}, "2xD9xEC", IF_8086|IF_FPU},
  752.     {-1}
  753. };
  754. static struct itemplate instrux_FLDLN2[] = {
  755.     {I_FLDLN2, 0, {0,0,0}, "2xD9xED", IF_8086|IF_FPU},
  756.     {-1}
  757. };
  758. static struct itemplate instrux_FLDPI[] = {
  759.     {I_FLDPI, 0, {0,0,0}, "2xD9xEB", IF_8086|IF_FPU},
  760.     {-1}
  761. };
  762. static struct itemplate instrux_FLDZ[] = {
  763.     {I_FLDZ, 0, {0,0,0}, "2xD9xEE", IF_8086|IF_FPU},
  764.     {-1}
  765. };
  766. static struct itemplate instrux_FMUL[] = {
  767.     {I_FMUL, 1, {MEMORY|BITS32,0,0}, "3001xD8201", IF_8086|IF_FPU},
  768.     {I_FMUL, 1, {MEMORY|BITS64,0,0}, "3001xDC201", IF_8086|IF_FPU},
  769.     {I_FMUL, 1, {FPUREG|TO,0,0}, "1xDC10xC8", IF_8086|IF_FPU},
  770.     {I_FMUL, 2, {FPUREG,FPU0,0}, "1xDC10xC8", IF_8086|IF_FPU},
  771.     {I_FMUL, 1, {FPUREG,0,0}, "1xD810xC8", IF_8086|IF_FPU},
  772.     {I_FMUL, 2, {FPU0,FPUREG,0}, "1xD811xC8", IF_8086|IF_FPU},
  773.     {-1}
  774. };
  775. static struct itemplate instrux_FMULP[] = {
  776.     {I_FMULP, 1, {FPUREG,0,0}, "1xDE10xC8", IF_8086|IF_FPU},
  777.     {I_FMULP, 2, {FPUREG,FPU0,0}, "1xDE10xC8", IF_8086|IF_FPU},
  778.     {-1}
  779. };
  780. static struct itemplate instrux_FNCLEX[] = {
  781.     {I_FNCLEX, 0, {0,0,0}, "2xDBxE2", IF_8086|IF_FPU},
  782.     {-1}
  783. };
  784. static struct itemplate instrux_FNDISI[] = {
  785.     {I_FNDISI, 0, {0,0,0}, "2xDBxE1", IF_8086|IF_FPU},
  786.     {-1}
  787. };
  788. static struct itemplate instrux_FNENI[] = {
  789.     {I_FNENI, 0, {0,0,0}, "2xDBxE0", IF_8086|IF_FPU},
  790.     {-1}
  791. };
  792. static struct itemplate instrux_FNINIT[] = {
  793.     {I_FNINIT, 0, {0,0,0}, "2xDBxE3", IF_8086|IF_FPU},
  794.     {-1}
  795. };
  796. static struct itemplate instrux_FNOP[] = {
  797.     {I_FNOP, 0, {0,0,0}, "2xD9xD0", IF_8086|IF_FPU},
  798.     {-1}
  799. };
  800. static struct itemplate instrux_FNSAVE[] = {
  801.     {I_FNSAVE, 1, {MEMORY,0,0}, "3001xDD206", IF_8086|IF_FPU},
  802.     {-1}
  803. };
  804. static struct itemplate instrux_FNSTCW[] = {
  805.     {I_FNSTCW, 1, {MEMORY,0,0}, "3001xD9207", IF_8086|IF_FPU|IF_SW},
  806.     {-1}
  807. };
  808. static struct itemplate instrux_FNSTENV[] = {
  809.     {I_FNSTENV, 1, {MEMORY,0,0}, "3001xD9206", IF_8086|IF_FPU},
  810.     {-1}
  811. };
  812. static struct itemplate instrux_FNSTSW[] = {
  813.     {I_FNSTSW, 1, {MEMORY,0,0}, "3001xDD207", IF_8086|IF_FPU|IF_SW},
  814.     {I_FNSTSW, 1, {REG_AX,0,0}, "2xDFxE0", IF_286|IF_FPU},
  815.     {-1}
  816. };
  817. static struct itemplate instrux_FPATAN[] = {
  818.     {I_FPATAN, 0, {0,0,0}, "2xD9xF3", IF_8086|IF_FPU},
  819.     {-1}
  820. };
  821. static struct itemplate instrux_FPREM[] = {
  822.     {I_FPREM, 0, {0,0,0}, "2xD9xF8", IF_8086|IF_FPU},
  823.     {-1}
  824. };
  825. static struct itemplate instrux_FPREM1[] = {
  826.     {I_FPREM1, 0, {0,0,0}, "2xD9xF5", IF_386|IF_FPU},
  827.     {-1}
  828. };
  829. static struct itemplate instrux_FPTAN[] = {
  830.     {I_FPTAN, 0, {0,0,0}, "2xD9xF2", IF_8086|IF_FPU},
  831.     {-1}
  832. };
  833. static struct itemplate instrux_FRNDINT[] = {
  834.     {I_FRNDINT, 0, {0,0,0}, "2xD9xFC", IF_8086|IF_FPU},
  835.     {-1}
  836. };
  837. static struct itemplate instrux_FRSTOR[] = {
  838.     {I_FRSTOR, 1, {MEMORY,0,0}, "3001xDD204", IF_8086|IF_FPU},
  839.     {-1}
  840. };
  841. static struct itemplate instrux_FSAVE[] = {
  842.     {I_FSAVE, 1, {MEMORY,0,0}, "3002x9BxDD206", IF_8086|IF_FPU},
  843.     {-1}
  844. };
  845. static struct itemplate instrux_FSCALE[] = {
  846.     {I_FSCALE, 0, {0,0,0}, "2xD9xFD", IF_8086|IF_FPU},
  847.     {-1}
  848. };
  849. static struct itemplate instrux_FSETPM[] = {
  850.     {I_FSETPM, 0, {0,0,0}, "2xDBxE4", IF_286|IF_FPU},
  851.     {-1}
  852. };
  853. static struct itemplate instrux_FSIN[] = {
  854.     {I_FSIN, 0, {0,0,0}, "2xD9xFE", IF_386|IF_FPU},
  855.     {-1}
  856. };
  857. static struct itemplate instrux_FSINCOS[] = {
  858.     {I_FSINCOS, 0, {0,0,0}, "2xD9xFB", IF_386|IF_FPU},
  859.     {-1}
  860. };
  861. static struct itemplate instrux_FSQRT[] = {
  862.     {I_FSQRT, 0, {0,0,0}, "2xD9xFA", IF_8086|IF_FPU},
  863.     {-1}
  864. };
  865. static struct itemplate instrux_FST[] = {
  866.     {I_FST, 1, {MEMORY|BITS32,0,0}, "3001xD9202", IF_8086|IF_FPU},
  867.     {I_FST, 1, {MEMORY|BITS64,0,0}, "3001xDD202", IF_8086|IF_FPU},
  868.     {I_FST, 1, {FPUREG,0,0}, "1xDD10xD0", IF_8086|IF_FPU},
  869.     {-1}
  870. };
  871. static struct itemplate instrux_FSTCW[] = {
  872.     {I_FSTCW, 1, {MEMORY,0,0}, "3002x9BxD9207", IF_8086|IF_FPU|IF_SW},
  873.     {-1}
  874. };
  875. static struct itemplate instrux_FSTENV[] = {
  876.     {I_FSTENV, 1, {MEMORY,0,0}, "3002x9BxD9206", IF_8086|IF_FPU},
  877.     {-1}
  878. };
  879. static struct itemplate instrux_FSTP[] = {
  880.     {I_FSTP, 1, {MEMORY|BITS32,0,0}, "3001xD9203", IF_8086|IF_FPU},
  881.     {I_FSTP, 1, {MEMORY|BITS64,0,0}, "3001xDD203", IF_8086|IF_FPU},
  882.     {I_FSTP, 1, {MEMORY|BITS80,0,0}, "3001xDB207", IF_8086|IF_FPU},
  883.     {I_FSTP, 1, {FPUREG,0,0}, "1xDD10xD8", IF_8086|IF_FPU},
  884.     {-1}
  885. };
  886. static struct itemplate instrux_FSTSW[] = {
  887.     {I_FSTSW, 1, {MEMORY,0,0}, "3002x9BxDD207", IF_8086|IF_FPU|IF_SW},
  888.     {I_FSTSW, 1, {REG_AX,0,0}, "3x9BxDFxE0", IF_286|IF_FPU},
  889.     {-1}
  890. };
  891. static struct itemplate instrux_FSUB[] = {
  892.     {I_FSUB, 1, {MEMORY|BITS32,0,0}, "3001xD8204", IF_8086|IF_FPU},
  893.     {I_FSUB, 1, {MEMORY|BITS64,0,0}, "3001xDC204", IF_8086|IF_FPU},
  894.     {I_FSUB, 1, {FPUREG|TO,0,0}, "1xDC10xE8", IF_8086|IF_FPU},
  895.     {I_FSUB, 2, {FPUREG,FPU0,0}, "1xDC10xE8", IF_8086|IF_FPU},
  896.     {I_FSUB, 1, {FPUREG,0,0}, "1xD810xE0", IF_8086|IF_FPU},
  897.     {I_FSUB, 2, {FPU0,FPUREG,0}, "1xD811xE0", IF_8086|IF_FPU},
  898.     {-1}
  899. };
  900. static struct itemplate instrux_FSUBP[] = {
  901.     {I_FSUBP, 1, {FPUREG,0,0}, "1xDE10xE8", IF_8086|IF_FPU},
  902.     {I_FSUBP, 2, {FPUREG,FPU0,0}, "1xDE10xE8", IF_8086|IF_FPU},
  903.     {-1}
  904. };
  905. static struct itemplate instrux_FSUBR[] = {
  906.     {I_FSUBR, 1, {MEMORY|BITS32,0,0}, "3001xD8205", IF_8086|IF_FPU},
  907.     {I_FSUBR, 1, {MEMORY|BITS64,0,0}, "3001xDC205", IF_8086|IF_FPU},
  908.     {I_FSUBR, 1, {FPUREG|TO,0,0}, "1xDC10xE0", IF_8086|IF_FPU},
  909.     {I_FSUBR, 2, {FPUREG,FPU0,0}, "1xDC10xE0", IF_8086|IF_FPU},
  910.     {I_FSUBR, 1, {FPUREG,0,0}, "1xD810xE8", IF_8086|IF_FPU},
  911.     {I_FSUBR, 2, {FPU0,FPUREG,0}, "1xD811xE8", IF_8086|IF_FPU},
  912.     {-1}
  913. };
  914. static struct itemplate instrux_FSUBRP[] = {
  915.     {I_FSUBRP, 1, {FPUREG,0,0}, "1xDE10xE0", IF_8086|IF_FPU},
  916.     {I_FSUBRP, 2, {FPUREG,FPU0,0}, "1xDE10xE0", IF_8086|IF_FPU},
  917.     {-1}
  918. };
  919. static struct itemplate instrux_FTST[] = {
  920.     {I_FTST, 0, {0,0,0}, "2xD9xE4", IF_8086|IF_FPU},
  921.     {-1}
  922. };
  923. static struct itemplate instrux_FUCOM[] = {
  924.     {I_FUCOM, 1, {FPUREG,0,0}, "1xDD10xE0", IF_386|IF_FPU},
  925.     {I_FUCOM, 2, {FPU0,FPUREG,0}, "1xDD11xE0", IF_386|IF_FPU},
  926.     {-1}
  927. };
  928. static struct itemplate instrux_FUCOMI[] = {
  929.     {I_FUCOMI, 1, {FPUREG,0,0}, "1xDB10xE8", IF_P6|IF_FPU},
  930.     {I_FUCOMI, 2, {FPU0,FPUREG,0}, "1xDB11xE8", IF_P6|IF_FPU},
  931.     {-1}
  932. };
  933. static struct itemplate instrux_FUCOMIP[] = {
  934.     {I_FUCOMIP, 1, {FPUREG,0,0}, "1xDF10xE8", IF_P6|IF_FPU},
  935.     {I_FUCOMIP, 2, {FPU0,FPUREG,0}, "1xDF11xE8", IF_P6|IF_FPU},
  936.     {-1}
  937. };
  938. static struct itemplate instrux_FUCOMP[] = {
  939.     {I_FUCOMP, 1, {FPUREG,0,0}, "1xDD10xE8", IF_386|IF_FPU},
  940.     {I_FUCOMP, 2, {FPU0,FPUREG,0}, "1xDD11xE8", IF_386|IF_FPU},
  941.     {-1}
  942. };
  943. static struct itemplate instrux_FUCOMPP[] = {
  944.     {I_FUCOMPP, 0, {0,0,0}, "2xDAxE9", IF_386|IF_FPU},
  945.     {-1}
  946. };
  947. static struct itemplate instrux_FXAM[] = {
  948.     {I_FXAM, 0, {0,0,0}, "2xD9xE5", IF_8086|IF_FPU},
  949.     {-1}
  950. };
  951. static struct itemplate instrux_FXCH[] = {
  952.     {I_FXCH, 0, {0,0,0}, "2xD9xC9", IF_8086|IF_FPU},
  953.     {I_FXCH, 1, {FPUREG,0,0}, "1xD910xC8", IF_8086|IF_FPU},
  954.     {I_FXCH, 2, {FPUREG,FPU0,0}, "1xD910xC8", IF_8086|IF_FPU},
  955.     {I_FXCH, 2, {FPU0,FPUREG,0}, "1xD911xC8", IF_8086|IF_FPU},
  956.     {-1}
  957. };
  958. static struct itemplate instrux_FXRSTOR[] = {
  959.     {I_FXRSTOR, 1, {MEMORY,0,0}, "3002x0FxAE201", IF_P6|IF_SSE|IF_FPU},
  960.     {-1}
  961. };
  962. static struct itemplate instrux_FXSAVE[] = {
  963.     {I_FXSAVE, 1, {MEMORY,0,0}, "3002x0FxAE200", IF_P6|IF_SSE|IF_FPU},
  964.     {-1}
  965. };
  966. static struct itemplate instrux_FXTRACT[] = {
  967.     {I_FXTRACT, 0, {0,0,0}, "2xD9xF4", IF_8086|IF_FPU},
  968.     {-1}
  969. };
  970. static struct itemplate instrux_FYL2X[] = {
  971.     {I_FYL2X, 0, {0,0,0}, "2xD9xF1", IF_8086|IF_FPU},
  972.     {-1}
  973. };
  974. static struct itemplate instrux_FYL2XP1[] = {
  975.     {I_FYL2XP1, 0, {0,0,0}, "2xD9xF9", IF_8086|IF_FPU},
  976.     {-1}
  977. };
  978. static struct itemplate instrux_HLT[] = {
  979.     {I_HLT, 0, {0,0,0}, "1xF4", IF_8086|IF_PRIV},
  980.     {-1}
  981. };
  982. static struct itemplate instrux_IBTS[] = {
  983.     {I_IBTS, 2, {MEMORY,REG16,0}, "3203002x0FxA7101", IF_386|IF_SW|IF_UNDOC},
  984.     {I_IBTS, 2, {REG16,REG16,0}, "3203002x0FxA7101", IF_386|IF_UNDOC},
  985.     {I_IBTS, 2, {MEMORY,REG32,0}, "3213002x0FxA7101", IF_386|IF_SD|IF_UNDOC},
  986.     {I_IBTS, 2, {REG32,REG32,0}, "3213002x0FxA7101", IF_386|IF_UNDOC},
  987.     {-1}
  988. };
  989. static struct itemplate instrux_ICEBP[] = {
  990.     {I_ICEBP, 0, {0,0,0}, "1xF1", IF_386},
  991.     {-1}
  992. };
  993. static struct itemplate instrux_IDIV[] = {
  994.     {I_IDIV, 1, {REGMEM|BITS8,0,0}, "3001xF6207", IF_8086},
  995.     {I_IDIV, 1, {REGMEM|BITS16,0,0}, "3203001xF7207", IF_8086},
  996.     {I_IDIV, 1, {REGMEM|BITS32,0,0}, "3213001xF7207", IF_386},
  997.     {-1}
  998. };
  999. static struct itemplate instrux_IMUL[] = {
  1000.     {I_IMUL, 1, {REGMEM|BITS8,0,0}, "3001xF6205", IF_8086},
  1001.     {I_IMUL, 1, {REGMEM|BITS16,0,0}, "3203001xF7205", IF_8086},
  1002.     {I_IMUL, 1, {REGMEM|BITS32,0,0}, "3213001xF7205", IF_386},
  1003.     {I_IMUL, 2, {REG16,MEMORY,0}, "3203012x0FxAF110", IF_386|IF_SM},
  1004.     {I_IMUL, 2, {REG16,REG16,0}, "3203012x0FxAF110", IF_386},
  1005.     {I_IMUL, 2, {REG32,MEMORY,0}, "3213012x0FxAF110", IF_386|IF_SM},
  1006.     {I_IMUL, 2, {REG32,REG32,0}, "3213012x0FxAF110", IF_386},
  1007.     {I_IMUL, 3, {REG16,MEMORY,IMMEDIATE|BITS8}, "3203011x6B11016", IF_286|IF_SM},
  1008.     {I_IMUL, 3, {REG16,REG16,IMMEDIATE|BITS8}, "3203011x6B11016", IF_286},
  1009.     {I_IMUL, 3, {REG16,MEMORY,IMMEDIATE}, "3203011x6911032", IF_286|IF_SM},
  1010.     {I_IMUL, 3, {REG16,REG16,IMMEDIATE}, "3203011x6911032", IF_286|IF_SM},
  1011.     {I_IMUL, 3, {REG32,MEMORY,IMMEDIATE|BITS8}, "3213011x6B11016", IF_386|IF_SM},
  1012.     {I_IMUL, 3, {REG32,REG32,IMMEDIATE|BITS8}, "3213011x6B11016", IF_386},
  1013.     {I_IMUL, 3, {REG32,MEMORY,IMMEDIATE}, "3213011x6911042", IF_386|IF_SM},
  1014.     {I_IMUL, 3, {REG32,REG32,IMMEDIATE}, "3213011x6911042", IF_386|IF_SM},
  1015.     {I_IMUL, 2, {REG16,IMMEDIATE|BITS8,0}, "3201x6B10015", IF_286},
  1016.     {I_IMUL, 2, {REG16,IMMEDIATE,0}, "3201x6910031", IF_286|IF_SM},
  1017.     {I_IMUL, 2, {REG32,IMMEDIATE|BITS8,0}, "3211x6B10015", IF_386},
  1018.     {I_IMUL, 2, {REG32,IMMEDIATE,0}, "3211x6910041", IF_386|IF_SM},
  1019.     {-1}
  1020. };
  1021. static struct itemplate instrux_IN[] = {
  1022.     {I_IN, 2, {REG_AL,IMMEDIATE,0}, "1xE425", IF_8086|IF_SB},
  1023.     {I_IN, 2, {REG_AX,IMMEDIATE,0}, "3201xE525", IF_8086|IF_SB},
  1024.     {I_IN, 2, {REG_EAX,IMMEDIATE,0}, "3211xE525", IF_386|IF_SB},
  1025.     {I_IN, 2, {REG_AL,REG_DX,0}, "1xEC", IF_8086},
  1026.     {I_IN, 2, {REG_AX,REG_DX,0}, "3201xED", IF_8086},
  1027.     {I_IN, 2, {REG_EAX,REG_DX,0}, "3211xED", IF_386},
  1028.     {-1}
  1029. };
  1030. static struct itemplate instrux_INC[] = {
  1031.     {I_INC, 1, {REG16,0,0}, "32010x40", IF_8086},
  1032.     {I_INC, 1, {REG32,0,0}, "32110x40", IF_386},
  1033.     {I_INC, 1, {REGMEM|BITS8,0,0}, "3001xFE200", IF_8086},
  1034.     {I_INC, 1, {REGMEM|BITS16,0,0}, "3203001xFF200", IF_8086},
  1035.     {I_INC, 1, {REGMEM|BITS32,0,0}, "3213001xFF200", IF_386},
  1036.     {-1}
  1037. };
  1038. static struct itemplate instrux_INCBIN[] = {
  1039.     {-1}
  1040. };
  1041. static struct itemplate instrux_INSB[] = {
  1042.     {I_INSB, 0, {0,0,0}, "1x6C", IF_186},
  1043.     {-1}
  1044. };
  1045. static struct itemplate instrux_INSD[] = {
  1046.     {I_INSD, 0, {0,0,0}, "3211x6D", IF_386},
  1047.     {-1}
  1048. };
  1049. static struct itemplate instrux_INSW[] = {
  1050.     {I_INSW, 0, {0,0,0}, "3201x6D", IF_186},
  1051.     {-1}
  1052. };
  1053. static struct itemplate instrux_INT[] = {
  1054.     {I_INT, 1, {IMMEDIATE,0,0}, "1xCD24", IF_8086|IF_SB},
  1055.     {-1}
  1056. };
  1057. static struct itemplate instrux_INT01[] = {
  1058.     {I_INT01, 0, {0,0,0}, "1xF1", IF_386},
  1059.     {-1}
  1060. };
  1061. static struct itemplate instrux_INT03[] = {
  1062.     {I_INT03, 0, {0,0,0}, "1xCC", IF_8086},
  1063.     {-1}
  1064. };
  1065. static struct itemplate instrux_INT1[] = {
  1066.     {I_INT1, 0, {0,0,0}, "1xF1", IF_386},
  1067.     {-1}
  1068. };
  1069. static struct itemplate instrux_INT3[] = {
  1070.     {I_INT3, 0, {0,0,0}, "1xCC", IF_8086},
  1071.     {-1}
  1072. };
  1073. static struct itemplate instrux_INTO[] = {
  1074.     {I_INTO, 0, {0,0,0}, "1xCE", IF_8086},
  1075.     {-1}
  1076. };
  1077. static struct itemplate instrux_INVD[] = {
  1078.     {I_INVD, 0, {0,0,0}, "2x0Fx08", IF_486|IF_PRIV},
  1079.     {-1}
  1080. };
  1081. static struct itemplate instrux_INVLPG[] = {
  1082.     {I_INVLPG, 1, {MEMORY,0,0}, "3002x0Fx01207", IF_486|IF_PRIV},
  1083.     {-1}
  1084. };
  1085. static struct itemplate instrux_IRET[] = {
  1086.     {I_IRET, 0, {0,0,0}, "3221xCF", IF_8086},
  1087.     {-1}
  1088. };
  1089. static struct itemplate instrux_IRETD[] = {
  1090.     {I_IRETD, 0, {0,0,0}, "3211xCF", IF_386},
  1091.     {-1}
  1092. };
  1093. static struct itemplate instrux_IRETW[] = {
  1094.     {I_IRETW, 0, {0,0,0}, "3201xCF", IF_8086},
  1095.     {-1}
  1096. };
  1097. static struct itemplate instrux_JCXZ[] = {
  1098.     {I_JCXZ, 1, {IMMEDIATE,0,0}, "3201xE350", IF_8086},
  1099.     {-1}
  1100. };
  1101. static struct itemplate instrux_JECXZ[] = {
  1102.     {I_JECXZ, 1, {IMMEDIATE,0,0}, "3211xE350", IF_386},
  1103.     {-1}
  1104. };
  1105. static struct itemplate instrux_JMP[] = {
  1106.     {I_JMP, 1, {IMMEDIATE|SHORT,0,0}, "1xEB50", IF_8086},
  1107.     {I_JMP, 1, {IMMEDIATE,0,0}, "3221xE964", IF_8086},
  1108.     {I_JMP, 1, {IMMEDIATE|NEAR,0,0}, "3221xE964", IF_8086},
  1109.     {I_JMP, 1, {IMMEDIATE|FAR,0,0}, "3221xEA3437", IF_8086},
  1110.     {I_JMP, 1, {IMMEDIATE|BITS16,0,0}, "3201xE964", IF_8086},
  1111.     {I_JMP, 1, {IMMEDIATE|BITS16|NEAR,0,0}, "3201xE964", IF_8086},
  1112.     {I_JMP, 1, {IMMEDIATE|BITS16|FAR,0,0}, "3201xEA3437", IF_8086},
  1113.     {I_JMP, 1, {IMMEDIATE|BITS32,0,0}, "3211xE964", IF_8086},
  1114.     {I_JMP, 1, {IMMEDIATE|BITS32|NEAR,0,0}, "3211xE964", IF_8086},
  1115.     {I_JMP, 1, {IMMEDIATE|BITS32|FAR,0,0}, "3211xEA3437", IF_8086},
  1116.     {I_JMP, 2, {IMMEDIATE|COLON,IMMEDIATE,0}, "3221xEA3530", IF_8086},
  1117.     {I_JMP, 2, {IMMEDIATE|BITS16|COLON,IMMEDIATE,0}, "3201xEA3130", IF_8086},
  1118.     {I_JMP, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS16,0}, "3201xEA3130", IF_8086},
  1119.     {I_JMP, 2, {IMMEDIATE|BITS32|COLON,IMMEDIATE,0}, "3211xEA4130", IF_386},
  1120.     {I_JMP, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS32,0}, "3211xEA4130", IF_386},
  1121.     {I_JMP, 1, {MEMORY|FAR,0,0}, "3223001xFF205", IF_8086},
  1122.     {I_JMP, 1, {MEMORY|BITS16|FAR,0,0}, "3203001xFF205", IF_8086},
  1123.     {I_JMP, 1, {MEMORY|BITS32|FAR,0,0}, "3213001xFF205", IF_386},
  1124.     {I_JMP, 1, {MEMORY|NEAR,0,0}, "3223001xFF204", IF_8086},
  1125.     {I_JMP, 1, {MEMORY|BITS16|NEAR,0,0}, "3203001xFF204", IF_8086},
  1126.     {I_JMP, 1, {MEMORY|BITS32|NEAR,0,0}, "3213001xFF204", IF_386},
  1127.     {I_JMP, 1, {REG16,0,0}, "3203001xFF204", IF_8086},
  1128.     {I_JMP, 1, {REG32,0,0}, "3213001xFF204", IF_386},
  1129.     {I_JMP, 1, {MEMORY,0,0}, "3223001xFF204", IF_8086},
  1130.     {I_JMP, 1, {MEMORY|BITS16,0,0}, "3203001xFF204", IF_8086},
  1131.     {I_JMP, 1, {MEMORY|BITS32,0,0}, "3213001xFF204", IF_386},
  1132.     {-1}
  1133. };
  1134. static struct itemplate instrux_LAHF[] = {
  1135.     {I_LAHF, 0, {0,0,0}, "1x9F", IF_8086},
  1136.     {-1}
  1137. };
  1138. static struct itemplate instrux_LAR[] = {
  1139.     {I_LAR, 2, {REG16,MEMORY,0}, "3203012x0Fx02110", IF_286|IF_PROT|IF_SM},
  1140.     {I_LAR, 2, {REG16,REG16,0}, "3203012x0Fx02110", IF_286|IF_PROT},
  1141.     {I_LAR, 2, {REG32,MEMORY,0}, "3213012x0Fx02110", IF_286|IF_PROT|IF_SM},
  1142.     {I_LAR, 2, {REG32,REG32,0}, "3213012x0Fx02110", IF_286|IF_PROT},
  1143.     {-1}
  1144. };
  1145. static struct itemplate instrux_LDMXCSR[] = {
  1146.     {I_LDMXCSR, 1, {MEMORY,0,0}, "3002x0FxAE202", IF_KATMAI|IF_SSE|IF_SD},
  1147.     {-1}
  1148. };
  1149. static struct itemplate instrux_LDS[] = {
  1150.     {I_LDS, 2, {REG16,MEMORY,0}, "3203011xC5110", IF_8086},
  1151.     {I_LDS, 2, {REG32,MEMORY,0}, "3213011xC5110", IF_8086},
  1152.     {-1}
  1153. };
  1154. static struct itemplate instrux_LEA[] = {
  1155.     {I_LEA, 2, {REG16,MEMORY,0}, "3203011x8D110", IF_8086},
  1156.     {I_LEA, 2, {REG32,MEMORY,0}, "3213011x8D110", IF_8086},
  1157.     {-1}
  1158. };
  1159. static struct itemplate instrux_LEAVE[] = {
  1160.     {I_LEAVE, 0, {0,0,0}, "1xC9", IF_186},
  1161.     {-1}
  1162. };
  1163. static struct itemplate instrux_LES[] = {
  1164.     {I_LES, 2, {REG16,MEMORY,0}, "3203011xC4110", IF_8086},
  1165.     {I_LES, 2, {REG32,MEMORY,0}, "3213011xC4110", IF_8086},
  1166.     {-1}
  1167. };
  1168. static struct itemplate instrux_LFS[] = {
  1169.     {I_LFS, 2, {REG16,MEMORY,0}, "3203012x0FxB4110", IF_386},
  1170.     {I_LFS, 2, {REG32,MEMORY,0}, "3213012x0FxB4110", IF_386},
  1171.     {-1}
  1172. };
  1173. static struct itemplate instrux_LGDT[] = {
  1174.     {I_LGDT, 1, {MEMORY,0,0}, "3002x0Fx01202", IF_286|IF_PRIV},
  1175.     {-1}
  1176. };
  1177. static struct itemplate instrux_LGS[] = {
  1178.     {I_LGS, 2, {REG16,MEMORY,0}, "3203012x0FxB5110", IF_386},
  1179.     {I_LGS, 2, {REG32,MEMORY,0}, "3213012x0FxB5110", IF_386},
  1180.     {-1}
  1181. };
  1182. static struct itemplate instrux_LIDT[] = {
  1183.     {I_LIDT, 1, {MEMORY,0,0}, "3002x0Fx01203", IF_286|IF_PRIV},
  1184.     {-1}
  1185. };
  1186. static struct itemplate instrux_LLDT[] = {
  1187.     {I_LLDT, 1, {MEMORY,0,0}, "3001x0F17202", IF_286|IF_PROT|IF_PRIV},
  1188.     {I_LLDT, 1, {MEMORY|BITS16,0,0}, "3001x0F17202", IF_286|IF_PROT|IF_PRIV},
  1189.     {I_LLDT, 1, {REG16,0,0}, "3001x0F17202", IF_286|IF_PROT|IF_PRIV},
  1190.     {-1}
  1191. };
  1192. static struct itemplate instrux_LMSW[] = {
  1193.     {I_LMSW, 1, {MEMORY,0,0}, "3002x0Fx01206", IF_286|IF_PRIV},
  1194.     {I_LMSW, 1, {MEMORY|BITS16,0,0}, "3002x0Fx01206", IF_286|IF_PRIV},
  1195.     {I_LMSW, 1, {REG16,0,0}, "3002x0Fx01206", IF_286|IF_PRIV},
  1196.     {-1}
  1197. };
  1198. static struct itemplate instrux_LOADALL[] = {
  1199.     {I_LOADALL, 0, {0,0,0}, "2x0Fx07", IF_386|IF_UNDOC},
  1200.     {-1}
  1201. };
  1202. static struct itemplate instrux_LOADALL286[] = {
  1203.     {I_LOADALL286, 0, {0,0,0}, "2x0Fx05", IF_286|IF_UNDOC},
  1204.     {-1}
  1205. };
  1206. static struct itemplate instrux_LODSB[] = {
  1207.     {I_LODSB, 0, {0,0,0}, "1xAC", IF_8086},
  1208.     {-1}
  1209. };
  1210. static struct itemplate instrux_LODSD[] = {
  1211.     {I_LODSD, 0, {0,0,0}, "3211xAD", IF_386},
  1212.     {-1}
  1213. };
  1214. static struct itemplate instrux_LODSW[] = {
  1215.     {I_LODSW, 0, {0,0,0}, "3201xAD", IF_8086},
  1216.     {-1}
  1217. };
  1218. static struct itemplate instrux_LOOP[] = {
  1219.     {I_LOOP, 1, {IMMEDIATE,0,0}, "3121xE250", IF_8086},
  1220.     {I_LOOP, 2, {IMMEDIATE,REG_CX,0}, "3101xE250", IF_8086},
  1221.     {I_LOOP, 2, {IMMEDIATE,REG_ECX,0}, "3111xE250", IF_386},
  1222.     {-1}
  1223. };
  1224. static struct itemplate instrux_LOOPE[] = {
  1225.     {I_LOOPE, 1, {IMMEDIATE,0,0}, "3121xE150", IF_8086},
  1226.     {I_LOOPE, 2, {IMMEDIATE,REG_CX,0}, "3101xE150", IF_8086},
  1227.     {I_LOOPE, 2, {IMMEDIATE,REG_ECX,0}, "3111xE150", IF_386},
  1228.     {-1}
  1229. };
  1230. static struct itemplate instrux_LOOPNE[] = {
  1231.     {I_LOOPNE, 1, {IMMEDIATE,0,0}, "3121xE050", IF_8086},
  1232.     {I_LOOPNE, 2, {IMMEDIATE,REG_CX,0}, "3101xE050", IF_8086},
  1233.     {I_LOOPNE, 2, {IMMEDIATE,REG_ECX,0}, "3111xE050", IF_386},
  1234.     {-1}
  1235. };
  1236. static struct itemplate instrux_LOOPNZ[] = {
  1237.     {I_LOOPNZ, 1, {IMMEDIATE,0,0}, "3121xE050", IF_8086},
  1238.     {I_LOOPNZ, 2, {IMMEDIATE,REG_CX,0}, "3101xE050", IF_8086},
  1239.     {I_LOOPNZ, 2, {IMMEDIATE,REG_ECX,0}, "3111xE050", IF_386},
  1240.     {-1}
  1241. };
  1242. static struct itemplate instrux_LOOPZ[] = {
  1243.     {I_LOOPZ, 1, {IMMEDIATE,0,0}, "3121xE150", IF_8086},
  1244.     {I_LOOPZ, 2, {IMMEDIATE,REG_CX,0}, "3101xE150", IF_8086},
  1245.     {I_LOOPZ, 2, {IMMEDIATE,REG_ECX,0}, "3111xE150", IF_386},
  1246.     {-1}
  1247. };
  1248. static struct itemplate instrux_LSL[] = {
  1249.     {I_LSL, 2, {REG16,MEMORY,0}, "3203012x0Fx03110", IF_286|IF_PROT|IF_SM},
  1250.     {I_LSL, 2, {REG16,REG16,0}, "3203012x0Fx03110", IF_286|IF_PROT},
  1251.     {I_LSL, 2, {REG32,MEMORY,0}, "3213012x0Fx03110", IF_286|IF_PROT|IF_SM},
  1252.     {I_LSL, 2, {REG32,REG32,0}, "3213012x0Fx03110", IF_286|IF_PROT},
  1253.     {-1}
  1254. };
  1255. static struct itemplate instrux_LSS[] = {
  1256.     {I_LSS, 2, {REG16,MEMORY,0}, "3203012x0FxB2110", IF_386},
  1257.     {I_LSS, 2, {REG32,MEMORY,0}, "3213012x0FxB2110", IF_386},
  1258.     {-1}
  1259. };
  1260. static struct itemplate instrux_LTR[] = {
  1261.     {I_LTR, 1, {MEMORY,0,0}, "3001x0F17203", IF_286|IF_PROT|IF_PRIV},
  1262.     {I_LTR, 1, {MEMORY|BITS16,0,0}, "3001x0F17203", IF_286|IF_PROT|IF_PRIV},
  1263.     {I_LTR, 1, {REG16,0,0}, "3001x0F17203", IF_286|IF_PROT|IF_PRIV},
  1264.     {-1}
  1265. };
  1266. static struct itemplate instrux_MASKMOVQ[] = {
  1267.     {I_MASKMOVQ, 2, {MMXREG,MMXREG,0}, "2x0FxF7110", IF_KATMAI|IF_MMX},
  1268.     {-1}
  1269. };
  1270. static struct itemplate instrux_MAXPS[] = {
  1271.     {I_MAXPS, 2, {XMMREG,MEMORY,0}, "3013312x0Fx5F110", IF_KATMAI|IF_SSE},
  1272.     {I_MAXPS, 2, {XMMREG,XMMREG,0}, "3312x0Fx5F110", IF_KATMAI|IF_SSE},
  1273.     {-1}
  1274. };
  1275. static struct itemplate instrux_MAXSS[] = {
  1276.     {I_MAXSS, 2, {XMMREG,MEMORY,0}, "3013332x0Fx5F110", IF_KATMAI|IF_SSE},
  1277.     {I_MAXSS, 2, {XMMREG,XMMREG,0}, "3332x0Fx5F110", IF_KATMAI|IF_SSE},
  1278.     {-1}
  1279. };
  1280. static struct itemplate instrux_MINPS[] = {
  1281.     {I_MINPS, 2, {XMMREG,MEMORY,0}, "3013312x0Fx5D110", IF_KATMAI|IF_SSE},
  1282.     {I_MINPS, 2, {XMMREG,XMMREG,0}, "3312x0Fx5D110", IF_KATMAI|IF_SSE},
  1283.     {-1}
  1284. };
  1285. static struct itemplate instrux_MINSS[] = {
  1286.     {I_MINSS, 2, {XMMREG,MEMORY,0}, "3013332x0Fx5D110", IF_KATMAI|IF_SSE},
  1287.     {I_MINSS, 2, {XMMREG,XMMREG,0}, "3332x0Fx5D110", IF_KATMAI|IF_SSE},
  1288.     {-1}
  1289. };
  1290. static struct itemplate instrux_MOV[] = {
  1291.     {I_MOV, 2, {MEMORY,REG_CS,0}, "3203001x8C201", IF_8086|IF_SM},
  1292.     {I_MOV, 2, {MEMORY,REG_DESS,0}, "3203001x8C101", IF_8086|IF_SM},
  1293.     {I_MOV, 2, {MEMORY,REG_FSGS,0}, "3203001x8C101", IF_386|IF_SM},
  1294.     {I_MOV, 2, {REG16,REG_CS,0}, "3203001x8C201", IF_8086},
  1295.     {I_MOV, 2, {REG16,REG_DESS,0}, "3203001x8C101", IF_8086},
  1296.     {I_MOV, 2, {REG16,REG_FSGS,0}, "3203001x8C101", IF_386},
  1297.     {I_MOV, 2, {REGMEM|BITS32,REG_CS,0}, "3213001x8C201", IF_8086},
  1298.     {I_MOV, 2, {REGMEM|BITS32,REG_DESS,0}, "3213001x8C101", IF_8086},
  1299.     {I_MOV, 2, {REGMEM|BITS32,REG_FSGS,0}, "3213001x8C101", IF_386},
  1300.     {I_MOV, 2, {REG_DESS,MEMORY,0}, "3203011x8E110", IF_8086|IF_SM},
  1301.     {I_MOV, 2, {REG_FSGS,MEMORY,0}, "3203011x8E110", IF_386|IF_SM},
  1302.     {I_MOV, 2, {REG_DESS,REG16,0}, "3203011x8E110", IF_8086},
  1303.     {I_MOV, 2, {REG_FSGS,REG16,0}, "3203011x8E110", IF_386},
  1304.     {I_MOV, 2, {REG_DESS,REGMEM|BITS32,0}, "3213011x8E110", IF_8086},
  1305.     {I_MOV, 2, {REG_FSGS,REGMEM|BITS32,0}, "3213011x8E110", IF_386},
  1306.     {I_MOV, 2, {REG_AL,MEM_OFFS,0}, "3011xA035", IF_8086|IF_SM},
  1307.     {I_MOV, 2, {REG_AX,MEM_OFFS,0}, "3013201xA135", IF_8086|IF_SM},
  1308.     {I_MOV, 2, {REG_EAX,MEM_OFFS,0}, "3013211xA135", IF_386|IF_SM},
  1309.     {I_MOV, 2, {MEM_OFFS,REG_AL,0}, "3001xA234", IF_8086|IF_SM},
  1310.     {I_MOV, 2, {MEM_OFFS,REG_AX,0}, "3003201xA334", IF_8086|IF_SM},
  1311.     {I_MOV, 2, {MEM_OFFS,REG_EAX,0}, "3003211xA334", IF_386|IF_SM},
  1312.     {I_MOV, 2, {REG32,REG_CR4,0}, "2x0Fx20204", IF_PENT|IF_PRIV},
  1313.     {I_MOV, 2, {REG32,REG_CREG,0}, "2x0Fx20101", IF_386|IF_PRIV},
  1314.     {I_MOV, 2, {REG32,REG_DREG,0}, "2x0Fx21101", IF_386|IF_PRIV},
  1315.     {I_MOV, 2, {REG32,REG_TREG,0}, "2x0Fx24101", IF_386|IF_PRIV},
  1316.     {I_MOV, 2, {REG_CR4,REG32,0}, "2x0Fx22214", IF_PENT|IF_PRIV},
  1317.     {I_MOV, 2, {REG_CREG,REG32,0}, "2x0Fx22110", IF_386|IF_PRIV},
  1318.     {I_MOV, 2, {REG_DREG,REG32,0}, "2x0Fx23110", IF_386|IF_PRIV},
  1319.     {I_MOV, 2, {REG_TREG,REG32,0}, "2x0Fx26110", IF_386|IF_PRIV},
  1320.     {I_MOV, 2, {MEMORY,REG8,0}, "3001x88101", IF_8086|IF_SM},
  1321.     {I_MOV, 2, {REG8,REG8,0}, "3001x88101", IF_8086},
  1322.     {I_MOV, 2, {MEMORY,REG16,0}, "3203001x89101", IF_8086|IF_SM},
  1323.     {I_MOV, 2, {REG16,REG16,0}, "3203001x89101", IF_8086},
  1324.     {I_MOV, 2, {MEMORY,REG32,0}, "3213001x89101", IF_386|IF_SM},
  1325.     {I_MOV, 2, {REG32,REG32,0}, "3213001x89101", IF_386},
  1326.     {I_MOV, 2, {REG8,MEMORY,0}, "3011x8A110", IF_8086|IF_SM},
  1327.     {I_MOV, 2, {REG8,REG8,0}, "3011x8A110", IF_8086},
  1328.     {I_MOV, 2, {REG16,MEMORY,0}, "3203011x8B110", IF_8086|IF_SM},
  1329.     {I_MOV, 2, {REG16,REG16,0}, "3203011x8B110", IF_8086},
  1330.     {I_MOV, 2, {REG32,MEMORY,0}, "3213011x8B110", IF_386|IF_SM},
  1331.     {I_MOV, 2, {REG32,REG32,0}, "3213011x8B110", IF_386},
  1332.     {I_MOV, 2, {REG8,IMMEDIATE,0}, "10xB021", IF_8086|IF_SM},
  1333.     {I_MOV, 2, {REG16,IMMEDIATE,0}, "32010xB831", IF_8086|IF_SM},
  1334.     {I_MOV, 2, {REG32,IMMEDIATE,0}, "32110xB841", IF_386|IF_SM},
  1335.     {I_MOV, 2, {REGMEM|BITS8,IMMEDIATE,0}, "3001xC620021", IF_8086|IF_SM},
  1336.     {I_MOV, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203001xC720031", IF_8086|IF_SM},
  1337.     {I_MOV, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213001xC720041", IF_386|IF_SM},
  1338.     {I_MOV, 2, {MEMORY,IMMEDIATE|BITS8,0}, "3001xC620021", IF_8086|IF_SM},
  1339.     {I_MOV, 2, {MEMORY,IMMEDIATE|BITS16,0}, "3203001xC720031", IF_8086|IF_SM},
  1340.     {I_MOV, 2, {MEMORY,IMMEDIATE|BITS32,0}, "3213001xC720041", IF_386|IF_SM},
  1341.     {-1}
  1342. };
  1343. static struct itemplate instrux_MOVAPS[] = {
  1344.     {I_MOVAPS, 2, {XMMREG,MEMORY,0}, "3012x0Fx28110", IF_KATMAI|IF_SSE},
  1345.     {I_MOVAPS, 2, {MEMORY,XMMREG,0}, "3002x0Fx29101", IF_KATMAI|IF_SSE},
  1346.     {I_MOVAPS, 2, {XMMREG,XMMREG,0}, "2x0Fx28110", IF_KATMAI|IF_SSE},
  1347.     {I_MOVAPS, 2, {XMMREG,XMMREG,0}, "2x0Fx29101", IF_KATMAI|IF_SSE},
  1348.     {-1}
  1349. };
  1350. static struct itemplate instrux_MOVD[] = {
  1351.     {I_MOVD, 2, {MMXREG,MEMORY,0}, "3012x0Fx6E110", IF_PENT|IF_MMX|IF_SD},
  1352.     {I_MOVD, 2, {MMXREG,REG32,0}, "2x0Fx6E110", IF_PENT|IF_MMX},
  1353.     {I_MOVD, 2, {MEMORY,MMXREG,0}, "3002x0Fx7E101", IF_PENT|IF_MMX|IF_SD},
  1354.     {I_MOVD, 2, {REG32,MMXREG,0}, "2x0Fx7E101", IF_PENT|IF_MMX},
  1355.     {-1}
  1356. };
  1357. static struct itemplate instrux_MOVHLPS[] = {
  1358.     {I_MOVHLPS, 2, {XMMREG,XMMREG,0}, "2x0Fx12110", IF_KATMAI|IF_SSE},
  1359.     {-1}
  1360. };
  1361. static struct itemplate instrux_MOVHPS[] = {
  1362.     {I_MOVHPS, 2, {XMMREG,MEMORY,0}, "3012x0Fx16110", IF_KATMAI|IF_SSE},
  1363.     {I_MOVHPS, 2, {MEMORY,XMMREG,0}, "3002x0Fx17101", IF_KATMAI|IF_SSE},
  1364.     {I_MOVHPS, 2, {XMMREG,XMMREG,0}, "2x0Fx16101", IF_KATMAI|IF_SSE},
  1365.     {-1}
  1366. };
  1367. static struct itemplate instrux_MOVLHPS[] = {
  1368.     {I_MOVLHPS, 2, {XMMREG,XMMREG,0}, "2x0Fx16110", IF_KATMAI|IF_SSE},
  1369.     {-1}
  1370. };
  1371. static struct itemplate instrux_MOVLPS[] = {
  1372.     {I_MOVLPS, 2, {XMMREG,MEMORY,0}, "3012x0Fx12110", IF_KATMAI|IF_SSE},
  1373.     {I_MOVLPS, 2, {MEMORY,XMMREG,0}, "3002x0Fx13101", IF_KATMAI|IF_SSE},
  1374.     {I_MOVLPS, 2, {XMMREG,XMMREG,0}, "2x0Fx12101", IF_KATMAI|IF_SSE},
  1375.     {-1}
  1376. };
  1377. static struct itemplate instrux_MOVMSKPS[] = {
  1378.     {I_MOVMSKPS, 2, {REG32,XMMREG,0}, "2x0Fx50110", IF_KATMAI|IF_SSE},
  1379.     {-1}
  1380. };
  1381. static struct itemplate instrux_MOVNTPS[] = {
  1382.     {I_MOVNTPS, 2, {MEMORY,XMMREG,0}, "2x0Fx2B101", IF_KATMAI|IF_SSE},
  1383.     {-1}
  1384. };
  1385. static struct itemplate instrux_MOVNTQ[] = {
  1386.     {I_MOVNTQ, 2, {MEMORY,MMXREG,0}, "2x0FxE7101", IF_KATMAI|IF_MMX|IF_SM},
  1387.     {-1}
  1388. };
  1389. static struct itemplate instrux_MOVQ[] = {
  1390.     {I_MOVQ, 2, {MMXREG,MEMORY,0}, "3012x0Fx6F110", IF_PENT|IF_MMX|IF_SM},
  1391.     {I_MOVQ, 2, {MMXREG,MMXREG,0}, "2x0Fx6F110", IF_PENT|IF_MMX},
  1392.     {I_MOVQ, 2, {MEMORY,MMXREG,0}, "3002x0Fx7F101", IF_PENT|IF_MMX|IF_SM},
  1393.     {I_MOVQ, 2, {MMXREG,MMXREG,0}, "2x0Fx7F101", IF_PENT|IF_MMX},
  1394.     {-1}
  1395. };
  1396. static struct itemplate instrux_MOVSB[] = {
  1397.     {I_MOVSB, 0, {0,0,0}, "1xA4", IF_8086},
  1398.     {-1}
  1399. };
  1400. static struct itemplate instrux_MOVSD[] = {
  1401.     {I_MOVSD, 0, {0,0,0}, "3211xA5", IF_386},
  1402.     {-1}
  1403. };
  1404. static struct itemplate instrux_MOVSS[] = {
  1405.     {I_MOVSS, 2, {XMMREG,MEMORY,0}, "3013332x0Fx10110", IF_KATMAI|IF_SSE},
  1406.     {I_MOVSS, 2, {MEMORY,XMMREG,0}, "3003332x0Fx11101", IF_KATMAI|IF_SSE},
  1407.     {I_MOVSS, 2, {XMMREG,XMMREG,0}, "3332x0Fx10110", IF_KATMAI|IF_SSE},
  1408.     {I_MOVSS, 2, {XMMREG,XMMREG,0}, "3332x0Fx11101", IF_KATMAI|IF_SSE},
  1409.     {-1}
  1410. };
  1411. static struct itemplate instrux_MOVSW[] = {
  1412.     {I_MOVSW, 0, {0,0,0}, "3201xA5", IF_8086},
  1413.     {-1}
  1414. };
  1415. static struct itemplate instrux_MOVSX[] = {
  1416.     {I_MOVSX, 2, {REG16,MEMORY,0}, "3203012x0FxBE110", IF_386|IF_SB},
  1417.     {I_MOVSX, 2, {REG16,REG8,0}, "3203012x0FxBE110", IF_386},
  1418.     {I_MOVSX, 2, {REG32,REGMEM|BITS8,0}, "3213012x0FxBE110", IF_386},
  1419.     {I_MOVSX, 2, {REG32,REGMEM|BITS16,0}, "3213012x0FxBF110", IF_386},
  1420.     {-1}
  1421. };
  1422. static struct itemplate instrux_MOVUPS[] = {
  1423.     {I_MOVUPS, 2, {XMMREG,MEMORY,0}, "3013312x0Fx10110", IF_KATMAI|IF_SSE},
  1424.     {I_MOVUPS, 2, {MEMORY,XMMREG,0}, "3003312x0Fx11101", IF_KATMAI|IF_SSE},
  1425.     {I_MOVUPS, 2, {XMMREG,XMMREG,0}, "3312x0Fx10110", IF_KATMAI|IF_SSE},
  1426.     {I_MOVUPS, 2, {XMMREG,XMMREG,0}, "3312x0Fx11101", IF_KATMAI|IF_SSE},
  1427.     {-1}
  1428. };
  1429. static struct itemplate instrux_MOVZX[] = {
  1430.     {I_MOVZX, 2, {REG16,MEMORY,0}, "3203012x0FxB6110", IF_386|IF_SB},
  1431.     {I_MOVZX, 2, {REG16,REG8,0}, "3203012x0FxB6110", IF_386},
  1432.     {I_MOVZX, 2, {REG32,REGMEM|BITS8,0}, "3213012x0FxB6110", IF_386},
  1433.     {I_MOVZX, 2, {REG32,REGMEM|BITS16,0}, "3213012x0FxB7110", IF_386},
  1434.     {-1}
  1435. };
  1436. static struct itemplate instrux_MUL[] = {
  1437.     {I_MUL, 1, {REGMEM|BITS8,0,0}, "3001xF6204", IF_8086},
  1438.     {I_MUL, 1, {REGMEM|BITS16,0,0}, "3203001xF7204", IF_8086},
  1439.     {I_MUL, 1, {REGMEM|BITS32,0,0}, "3213001xF7204", IF_386},
  1440.     {-1}
  1441. };
  1442. static struct itemplate instrux_MULPS[] = {
  1443.     {I_MULPS, 2, {XMMREG,MEMORY,0}, "3012x0Fx59110", IF_KATMAI|IF_SSE},
  1444.     {I_MULPS, 2, {XMMREG,XMMREG,0}, "2x0Fx59110", IF_KATMAI|IF_SSE},
  1445.     {-1}
  1446. };
  1447. static struct itemplate instrux_MULSS[] = {
  1448.     {I_MULSS, 2, {XMMREG,MEMORY,0}, "3013332x0Fx59110", IF_KATMAI|IF_SSE},
  1449.     {I_MULSS, 2, {XMMREG,XMMREG,0}, "3332x0Fx59110", IF_KATMAI|IF_SSE},
  1450.     {-1}
  1451. };
  1452. static struct itemplate instrux_NEG[] = {
  1453.     {I_NEG, 1, {REGMEM|BITS8,0,0}, "3001xF6203", IF_8086},
  1454.     {I_NEG, 1, {REGMEM|BITS16,0,0}, "3203001xF7203", IF_8086},
  1455.     {I_NEG, 1, {REGMEM|BITS32,0,0}, "3213001xF7203", IF_386},
  1456.     {-1}
  1457. };
  1458. static struct itemplate instrux_NOP[] = {
  1459.     {I_NOP, 0, {0,0,0}, "1x90", IF_8086},
  1460.     {-1}
  1461. };
  1462. static struct itemplate instrux_NOT[] = {
  1463.     {I_NOT, 1, {REGMEM|BITS8,0,0}, "3001xF6202", IF_8086},
  1464.     {I_NOT, 1, {REGMEM|BITS16,0,0}, "3203001xF7202", IF_8086},
  1465.     {I_NOT, 1, {REGMEM|BITS32,0,0}, "3213001xF7202", IF_386},
  1466.     {-1}
  1467. };
  1468. static struct itemplate instrux_OR[] = {
  1469.     {I_OR, 2, {MEMORY,REG8,0}, "3001x08101", IF_8086|IF_SM},
  1470.     {I_OR, 2, {REG8,REG8,0}, "3001x08101", IF_8086},
  1471.     {I_OR, 2, {MEMORY,REG16,0}, "3203001x09101", IF_8086|IF_SM},
  1472.     {I_OR, 2, {REG16,REG16,0}, "3203001x09101", IF_8086},
  1473.     {I_OR, 2, {MEMORY,REG32,0}, "3213001x09101", IF_386|IF_SM},
  1474.     {I_OR, 2, {REG32,REG32,0}, "3213001x09101", IF_386},
  1475.     {I_OR, 2, {REG8,MEMORY,0}, "3011x0A110", IF_8086|IF_SM},
  1476.     {I_OR, 2, {REG8,REG8,0}, "3011x0A110", IF_8086},
  1477.     {I_OR, 2, {REG16,MEMORY,0}, "3203011x0B110", IF_8086|IF_SM},
  1478.     {I_OR, 2, {REG16,REG16,0}, "3203011x0B110", IF_8086},
  1479.     {I_OR, 2, {REG32,MEMORY,0}, "3213011x0B110", IF_386|IF_SM},
  1480.     {I_OR, 2, {REG32,REG32,0}, "3213011x0B110", IF_386},
  1481.     {I_OR, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "3203001x8320115", IF_8086},
  1482.     {I_OR, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "3213001x8320115", IF_386},
  1483.     {I_OR, 2, {REG_AL,IMMEDIATE,0}, "1x0C21", IF_8086|IF_SM},
  1484.     {I_OR, 2, {REG_AX,IMMEDIATE,0}, "3201x0D31", IF_8086|IF_SM},
  1485.     {I_OR, 2, {REG_EAX,IMMEDIATE,0}, "3211x0D41", IF_386|IF_SM},
  1486.     {I_OR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "3001x8020121", IF_8086|IF_SM},
  1487.     {I_OR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203001x8120131", IF_8086|IF_SM},
  1488.     {I_OR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213001x8120141", IF_386|IF_SM},
  1489.     {I_OR, 2, {MEMORY,IMMEDIATE|BITS8,0}, "3001x8020121", IF_8086|IF_SM},
  1490.     {I_OR, 2, {MEMORY,IMMEDIATE|BITS16,0}, "3203001x8120131", IF_8086|IF_SM},
  1491.     {I_OR, 2, {MEMORY,IMMEDIATE|BITS32,0}, "3213001x8120141", IF_386|IF_SM},
  1492.     {-1}
  1493. };
  1494. static struct itemplate instrux_ORPS[] = {
  1495.     {I_ORPS, 2, {XMMREG,MEMORY,0}, "3012x0Fx56110", IF_KATMAI|IF_SSE},
  1496.     {I_ORPS, 2, {XMMREG,XMMREG,0}, "2x0Fx56110", IF_KATMAI|IF_SSE},
  1497.     {-1}
  1498. };
  1499. static struct itemplate instrux_OUT[] = {
  1500.     {I_OUT, 2, {IMMEDIATE,REG_AL,0}, "1xE624", IF_8086|IF_SB},
  1501.     {I_OUT, 2, {IMMEDIATE,REG_AX,0}, "3201xE724", IF_8086|IF_SB},
  1502.     {I_OUT, 2, {IMMEDIATE,REG_EAX,0}, "3211xE724", IF_386|IF_SB},
  1503.     {I_OUT, 2, {REG_DX,REG_AL,0}, "1xEE", IF_8086},
  1504.     {I_OUT, 2, {REG_DX,REG_AX,0}, "3201xEF", IF_8086},
  1505.     {I_OUT, 2, {REG_DX,REG_EAX,0}, "3211xEF", IF_386},
  1506.     {-1}
  1507. };
  1508. static struct itemplate instrux_OUTSB[] = {
  1509.     {I_OUTSB, 0, {0,0,0}, "1x6E", IF_186},
  1510.     {-1}
  1511. };
  1512. static struct itemplate instrux_OUTSD[] = {
  1513.     {I_OUTSD, 0, {0,0,0}, "3211x6F", IF_386},
  1514.     {-1}
  1515. };
  1516. static struct itemplate instrux_OUTSW[] = {
  1517.     {I_OUTSW, 0, {0,0,0}, "3201x6F", IF_186},
  1518.     {-1}
  1519. };
  1520. static struct itemplate instrux_PACKSSDW[] = {
  1521.     {I_PACKSSDW, 2, {MMXREG,MEMORY,0}, "3012x0Fx6B110", IF_PENT|IF_MMX|IF_SM},
  1522.     {I_PACKSSDW, 2, {MMXREG,MMXREG,0}, "2x0Fx6B110", IF_PENT|IF_MMX},
  1523.     {-1}
  1524. };
  1525. static struct itemplate instrux_PACKSSWB[] = {
  1526.     {I_PACKSSWB, 2, {MMXREG,MEMORY,0}, "3012x0Fx63110", IF_PENT|IF_MMX|IF_SM},
  1527.     {I_PACKSSWB, 2, {MMXREG,MMXREG,0}, "2x0Fx63110", IF_PENT|IF_MMX},
  1528.     {-1}
  1529. };
  1530. static struct itemplate instrux_PACKUSWB[] = {
  1531.     {I_PACKUSWB, 2, {MMXREG,MEMORY,0}, "3012x0Fx67110", IF_PENT|IF_MMX|IF_SM},
  1532.     {I_PACKUSWB, 2, {MMXREG,MMXREG,0}, "2x0Fx67110", IF_PENT|IF_MMX},
  1533.     {-1}
  1534. };
  1535. static struct itemplate instrux_PADDB[] = {
  1536.     {I_PADDB, 2, {MMXREG,MEMORY,0}, "3012x0FxFC110", IF_PENT|IF_MMX|IF_SM},
  1537.     {I_PADDB, 2, {MMXREG,MMXREG,0}, "2x0FxFC110", IF_PENT|IF_MMX},
  1538.     {-1}
  1539. };
  1540. static struct itemplate instrux_PADDD[] = {
  1541.     {I_PADDD, 2, {MMXREG,MEMORY,0}, "3012x0FxFE110", IF_PENT|IF_MMX|IF_SM},
  1542.     {I_PADDD, 2, {MMXREG,MMXREG,0}, "2x0FxFE110", IF_PENT|IF_MMX},
  1543.     {-1}
  1544. };
  1545. static struct itemplate instrux_PADDSB[] = {
  1546.     {I_PADDSB, 2, {MMXREG,MEMORY,0}, "3012x0FxEC110", IF_PENT|IF_MMX|IF_SM},
  1547.     {I_PADDSB, 2, {MMXREG,MMXREG,0}, "2x0FxEC110", IF_PENT|IF_MMX},
  1548.     {-1}
  1549. };
  1550. static struct itemplate instrux_PADDSIW[] = {
  1551.     {I_PADDSIW, 2, {MMXREG,MEMORY,0}, "3012x0Fx51110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1552.     {I_PADDSIW, 2, {MMXREG,MMXREG,0}, "2x0Fx51110", IF_PENT|IF_MMX|IF_CYRIX},
  1553.     {-1}
  1554. };
  1555. static struct itemplate instrux_PADDSW[] = {
  1556.     {I_PADDSW, 2, {MMXREG,MEMORY,0}, "3012x0FxED110", IF_PENT|IF_MMX|IF_SM},
  1557.     {I_PADDSW, 2, {MMXREG,MMXREG,0}, "2x0FxED110", IF_PENT|IF_MMX},
  1558.     {-1}
  1559. };
  1560. static struct itemplate instrux_PADDUSB[] = {
  1561.     {I_PADDUSB, 2, {MMXREG,MEMORY,0}, "3012x0FxDC110", IF_PENT|IF_MMX|IF_SM},
  1562.     {I_PADDUSB, 2, {MMXREG,MMXREG,0}, "2x0FxDC110", IF_PENT|IF_MMX},
  1563.     {-1}
  1564. };
  1565. static struct itemplate instrux_PADDUSW[] = {
  1566.     {I_PADDUSW, 2, {MMXREG,MEMORY,0}, "3012x0FxDD110", IF_PENT|IF_MMX|IF_SM},
  1567.     {I_PADDUSW, 2, {MMXREG,MMXREG,0}, "2x0FxDD110", IF_PENT|IF_MMX},
  1568.     {-1}
  1569. };
  1570. static struct itemplate instrux_PADDW[] = {
  1571.     {I_PADDW, 2, {MMXREG,MEMORY,0}, "3012x0FxFD110", IF_PENT|IF_MMX|IF_SM},
  1572.     {I_PADDW, 2, {MMXREG,MMXREG,0}, "2x0FxFD110", IF_PENT|IF_MMX},
  1573.     {-1}
  1574. };
  1575. static struct itemplate instrux_PAND[] = {
  1576.     {I_PAND, 2, {MMXREG,MEMORY,0}, "3012x0FxDB110", IF_PENT|IF_MMX|IF_SM},
  1577.     {I_PAND, 2, {MMXREG,MMXREG,0}, "2x0FxDB110", IF_PENT|IF_MMX},
  1578.     {-1}
  1579. };
  1580. static struct itemplate instrux_PANDN[] = {
  1581.     {I_PANDN, 2, {MMXREG,MEMORY,0}, "3012x0FxDF110", IF_PENT|IF_MMX|IF_SM},
  1582.     {I_PANDN, 2, {MMXREG,MMXREG,0}, "2x0FxDF110", IF_PENT|IF_MMX},
  1583.     {-1}
  1584. };
  1585. static struct itemplate instrux_PAVEB[] = {
  1586.     {I_PAVEB, 2, {MMXREG,MEMORY,0}, "3012x0Fx50110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1587.     {I_PAVEB, 2, {MMXREG,MMXREG,0}, "2x0Fx50110", IF_PENT|IF_MMX|IF_CYRIX},
  1588.     {-1}
  1589. };
  1590. static struct itemplate instrux_PAVGB[] = {
  1591.     {I_PAVGB, 2, {MMXREG,MMXREG,0}, "2x0FxE0110", IF_KATMAI|IF_MMX},
  1592.     {I_PAVGB, 2, {MMXREG,MEMORY,0}, "3012x0FxE0110", IF_KATMAI|IF_MMX|IF_SM},
  1593.     {-1}
  1594. };
  1595. static struct itemplate instrux_PAVGUSB[] = {
  1596.     {I_PAVGUSB, 2, {MMXREG,MEMORY,0}, "3012x0Fx0F1101xBF", IF_PENT|IF_3DNOW|IF_SM},
  1597.     {I_PAVGUSB, 2, {MMXREG,MMXREG,0}, "2x0Fx0F1101xBF", IF_PENT|IF_3DNOW},
  1598.     {-1}
  1599. };
  1600. static struct itemplate instrux_PAVGW[] = {
  1601.     {I_PAVGW, 2, {MMXREG,MMXREG,0}, "2x0FxE3110", IF_KATMAI|IF_MMX},
  1602.     {I_PAVGW, 2, {MMXREG,MEMORY,0}, "3012x0FxE3110", IF_KATMAI|IF_MMX|IF_SM},
  1603.     {-1}
  1604. };
  1605. static struct itemplate instrux_PCMPEQB[] = {
  1606.     {I_PCMPEQB, 2, {MMXREG,MEMORY,0}, "3012x0Fx74110", IF_PENT|IF_MMX|IF_SM},
  1607.     {I_PCMPEQB, 2, {MMXREG,MMXREG,0}, "2x0Fx74110", IF_PENT|IF_MMX},
  1608.     {-1}
  1609. };
  1610. static struct itemplate instrux_PCMPEQD[] = {
  1611.     {I_PCMPEQD, 2, {MMXREG,MEMORY,0}, "3012x0Fx76110", IF_PENT|IF_MMX|IF_SM},
  1612.     {I_PCMPEQD, 2, {MMXREG,MMXREG,0}, "2x0Fx76110", IF_PENT|IF_MMX},
  1613.     {-1}
  1614. };
  1615. static struct itemplate instrux_PCMPEQW[] = {
  1616.     {I_PCMPEQW, 2, {MMXREG,MEMORY,0}, "3012x0Fx75110", IF_PENT|IF_MMX|IF_SM},
  1617.     {I_PCMPEQW, 2, {MMXREG,MMXREG,0}, "2x0Fx75110", IF_PENT|IF_MMX},
  1618.     {-1}
  1619. };
  1620. static struct itemplate instrux_PCMPGTB[] = {
  1621.     {I_PCMPGTB, 2, {MMXREG,MEMORY,0}, "3012x0Fx64110", IF_PENT|IF_MMX|IF_SM},
  1622.     {I_PCMPGTB, 2, {MMXREG,MMXREG,0}, "2x0Fx64110", IF_PENT|IF_MMX},
  1623.     {-1}
  1624. };
  1625. static struct itemplate instrux_PCMPGTD[] = {
  1626.     {I_PCMPGTD, 2, {MMXREG,MEMORY,0}, "3012x0Fx66110", IF_PENT|IF_MMX|IF_SM},
  1627.     {I_PCMPGTD, 2, {MMXREG,MMXREG,0}, "2x0Fx66110", IF_PENT|IF_MMX},
  1628.     {-1}
  1629. };
  1630. static struct itemplate instrux_PCMPGTW[] = {
  1631.     {I_PCMPGTW, 2, {MMXREG,MEMORY,0}, "3012x0Fx65110", IF_PENT|IF_MMX|IF_SM},
  1632.     {I_PCMPGTW, 2, {MMXREG,MMXREG,0}, "2x0Fx65110", IF_PENT|IF_MMX},
  1633.     {-1}
  1634. };
  1635. static struct itemplate instrux_PDISTIB[] = {
  1636.     {I_PDISTIB, 2, {MMXREG,MEMORY,0}, "3012x0Fx54110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1637.     {-1}
  1638. };
  1639. static struct itemplate instrux_PEXTRW[] = {
  1640.     {I_PEXTRW, 3, {REG32,MMXREG,IMMEDIATE}, "2x0FxC511022", IF_KATMAI|IF_MMX|IF_SB|IF_AR2},
  1641.     {-1}
  1642. };
  1643. static struct itemplate instrux_PF2ID[] = {
  1644.     {I_PF2ID, 2, {MMXREG,MEMORY,0}, "3012x0Fx0F1101x1D", IF_PENT|IF_3DNOW|IF_SM},
  1645.     {I_PF2ID, 2, {MMXREG,MMXREG,0}, "2x0Fx0F1101x1D", IF_PENT|IF_3DNOW},
  1646.     {-1}
  1647. };
  1648. static struct itemplate instrux_PFACC[] = {
  1649.     {I_PFACC, 2, {MMXREG,MEMORY,0}, "3012x0Fx0F1101xAE", IF_PENT|IF_3DNOW|IF_SM},
  1650.     {I_PFACC, 2, {MMXREG,MMXREG,0}, "2x0Fx0F1101xAE", IF_PENT|IF_3DNOW},
  1651.     {-1}
  1652. };
  1653. static struct itemplate instrux_PFADD[] = {
  1654.     {I_PFADD, 2, {MMXREG,MEMORY,0}, "3012x0Fx0F1101x9E", IF_PENT|IF_3DNOW|IF_SM},
  1655.     {I_PFADD, 2, {MMXREG,MMXREG,0}, "2x0Fx0F1101x9E", IF_PENT|IF_3DNOW},
  1656.     {-1}
  1657. };
  1658. static struct itemplate instrux_PFCMPEQ[] = {
  1659.     {I_PFCMPEQ, 2, {MMXREG,MEMORY,0}, "3012x0Fx0F1101xB0", IF_PENT|IF_3DNOW|IF_SM},
  1660.     {I_PFCMPEQ, 2, {MMXREG,MMXREG,0}, "2x0Fx0F1101xB0", IF_PENT|IF_3DNOW},
  1661.     {-1}
  1662. };
  1663. static struct itemplate instrux_PFCMPGE[] = {
  1664.     {I_PFCMPGE, 2, {MMXREG,MEMORY,0}, "3012x0Fx0F1101x90", IF_PENT|IF_3DNOW|IF_SM},
  1665.     {I_PFCMPGE, 2, {MMXREG,MMXREG,0}, "2x0Fx0F1101x90", IF_PENT|IF_3DNOW},
  1666.     {-1}
  1667. };
  1668. static struct itemplate instrux_PFCMPGT[] = {
  1669.     {I_PFCMPGT, 2, {MMXREG,MEMORY,0}, "3012x0Fx0F1101xA0", IF_PENT|IF_3DNOW|IF_SM},
  1670.     {I_PFCMPGT, 2, {MMXREG,MMXREG,0}, "2x0Fx0F1101xA0", IF_PENT|IF_3DNOW},
  1671.     {-1}
  1672. };
  1673. static struct itemplate instrux_PFMAX[] = {
  1674.     {I_PFMAX, 2, {MMXREG,MEMORY,0}, "3012x0Fx0F1101xA4", IF_PENT|IF_3DNOW|IF_SM},
  1675.     {I_PFMAX, 2, {MMXREG,MMXREG,0}, "2x0Fx0F1101xA4", IF_PENT|IF_3DNOW},
  1676.     {-1}
  1677. };
  1678. static struct itemplate instrux_PFMIN[] = {
  1679.     {I_PFMIN, 2, {MMXREG,MEMORY,0}, "3012x0Fx0F1101x94", IF_PENT|IF_3DNOW|IF_SM},
  1680.     {I_PFMIN, 2, {MMXREG,MMXREG,0}, "2x0Fx0F1101x94", IF_PENT|IF_3DNOW},
  1681.     {-1}
  1682. };
  1683. static struct itemplate instrux_PFMUL[] = {
  1684.     {I_PFMUL, 2, {MMXREG,MEMORY,0}, "3012x0Fx0F1101xB4", IF_PENT|IF_3DNOW|IF_SM},
  1685.     {I_PFMUL, 2, {MMXREG,MMXREG,0}, "2x0Fx0F1101xB4", IF_PENT|IF_3DNOW},
  1686.     {-1}
  1687. };
  1688. static struct itemplate instrux_PFRCP[] = {
  1689.     {I_PFRCP, 2, {MMXREG,MEMORY,0}, "3012x0Fx0F1101x96", IF_PENT|IF_3DNOW|IF_SM},
  1690.     {I_PFRCP, 2, {MMXREG,MMXREG,0}, "2x0Fx0F1101x96", IF_PENT|IF_3DNOW},
  1691.     {-1}
  1692. };
  1693. static struct itemplate instrux_PFRCPIT1[] = {
  1694.     {I_PFRCPIT1, 2, {MMXREG,MEMORY,0}, "3012x0Fx0F1101xA6", IF_PENT|IF_3DNOW|IF_SM},
  1695.     {I_PFRCPIT1, 2, {MMXREG,MMXREG,0}, "2x0Fx0F1101xA6", IF_PENT|IF_3DNOW},
  1696.     {-1}
  1697. };
  1698. static struct itemplate instrux_PFRCPIT2[] = {
  1699.     {I_PFRCPIT2, 2, {MMXREG,MEMORY,0}, "3012x0Fx0F1101xB6", IF_PENT|IF_3DNOW|IF_SM},
  1700.     {I_PFRCPIT2, 2, {MMXREG,MMXREG,0}, "2x0Fx0F1101xB6", IF_PENT|IF_3DNOW},
  1701.     {-1}
  1702. };
  1703. static struct itemplate instrux_PFRSQIT1[] = {
  1704.     {I_PFRSQIT1, 2, {MMXREG,MEMORY,0}, "3012x0Fx0F1101xA7", IF_PENT|IF_3DNOW|IF_SM},
  1705.     {I_PFRSQIT1, 2, {MMXREG,MMXREG,0}, "2x0Fx0F1101xA7", IF_PENT|IF_3DNOW},
  1706.     {-1}
  1707. };
  1708. static struct itemplate instrux_PFRSQRT[] = {
  1709.     {I_PFRSQRT, 2, {MMXREG,MEMORY,0}, "3012x0Fx0F1101x97", IF_PENT|IF_3DNOW|IF_SM},
  1710.     {I_PFRSQRT, 2, {MMXREG,MMXREG,0}, "2x0Fx0F1101x97", IF_PENT|IF_3DNOW},
  1711.     {-1}
  1712. };
  1713. static struct itemplate instrux_PFSUB[] = {
  1714.     {I_PFSUB, 2, {MMXREG,MEMORY,0}, "3012x0Fx0F1101x9A", IF_PENT|IF_3DNOW|IF_SM},
  1715.     {I_PFSUB, 2, {MMXREG,MMXREG,0}, "2x0Fx0F1101x9A", IF_PENT|IF_3DNOW},
  1716.     {-1}
  1717. };
  1718. static struct itemplate instrux_PFSUBR[] = {
  1719.     {I_PFSUBR, 2, {MMXREG,MEMORY,0}, "3012x0Fx0F1101xAA", IF_PENT|IF_3DNOW|IF_SM},
  1720.     {I_PFSUBR, 2, {MMXREG,MMXREG,0}, "2x0Fx0F1101xAA", IF_PENT|IF_3DNOW},
  1721.     {-1}
  1722. };
  1723. static struct itemplate instrux_PI2FD[] = {
  1724.     {I_PI2FD, 2, {MMXREG,MEMORY,0}, "3012x0Fx0F1101x0D", IF_PENT|IF_3DNOW|IF_SM},
  1725.     {I_PI2FD, 2, {MMXREG,MMXREG,0}, "2x0Fx0F1101x0D", IF_PENT|IF_3DNOW},
  1726.     {-1}
  1727. };
  1728. static struct itemplate instrux_PINSRW[] = {
  1729.     {I_PINSRW, 3, {MMXREG,REG16,IMMEDIATE}, "2x0FxC411022", IF_KATMAI|IF_MMX|IF_SB|IF_AR2},
  1730.     {I_PINSRW, 3, {MMXREG,REG32,IMMEDIATE}, "2x0FxC411022", IF_KATMAI|IF_MMX|IF_SB|IF_AR2},
  1731.     {I_PINSRW, 3, {MMXREG,MEMORY,IMMEDIATE}, "3012x0FxC411022", IF_KATMAI|IF_MMX|IF_SB|IF_AR2},
  1732.     {I_PINSRW, 3, {MMXREG,MEMORY|BITS16,IMMEDIATE}, "3012x0FxC411022", IF_KATMAI|IF_MMX|IF_SB|IF_AR2},
  1733.     {-1}
  1734. };
  1735. static struct itemplate instrux_PMACHRIW[] = {
  1736.     {I_PMACHRIW, 2, {MMXREG,MEMORY,0}, "3012x0Fx5E110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1737.     {-1}
  1738. };
  1739. static struct itemplate instrux_PMADDWD[] = {
  1740.     {I_PMADDWD, 2, {MMXREG,MEMORY,0}, "3012x0FxF5110", IF_PENT|IF_MMX|IF_SM},
  1741.     {I_PMADDWD, 2, {MMXREG,MMXREG,0}, "2x0FxF5110", IF_PENT|IF_MMX},
  1742.     {-1}
  1743. };
  1744. static struct itemplate instrux_PMAGW[] = {
  1745.     {I_PMAGW, 2, {MMXREG,MEMORY,0}, "3012x0Fx52110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1746.     {I_PMAGW, 2, {MMXREG,MMXREG,0}, "2x0Fx52110", IF_PENT|IF_MMX|IF_CYRIX},
  1747.     {-1}
  1748. };
  1749. static struct itemplate instrux_PMAXSW[] = {
  1750.     {I_PMAXSW, 2, {MMXREG,MMXREG,0}, "2x0FxEE110", IF_KATMAI|IF_MMX},
  1751.     {I_PMAXSW, 2, {MMXREG,MEMORY,0}, "3012x0FxEE110", IF_KATMAI|IF_MMX|IF_SM},
  1752.     {-1}
  1753. };
  1754. static struct itemplate instrux_PMAXUB[] = {
  1755.     {I_PMAXUB, 2, {MMXREG,MMXREG,0}, "2x0FxDE110", IF_KATMAI|IF_MMX},
  1756.     {I_PMAXUB, 2, {MMXREG,MEMORY,0}, "3012x0FxDE110", IF_KATMAI|IF_MMX|IF_SM},
  1757.     {-1}
  1758. };
  1759. static struct itemplate instrux_PMINSW[] = {
  1760.     {I_PMINSW, 2, {MMXREG,MMXREG,0}, "2x0FxEA110", IF_KATMAI|IF_MMX},
  1761.     {I_PMINSW, 2, {MMXREG,MEMORY,0}, "3012x0FxEA110", IF_KATMAI|IF_MMX|IF_SM},
  1762.     {-1}
  1763. };
  1764. static struct itemplate instrux_PMINUB[] = {
  1765.     {I_PMINUB, 2, {MMXREG,MMXREG,0}, "2x0FxDA110", IF_KATMAI|IF_MMX},
  1766.     {I_PMINUB, 2, {MMXREG,MEMORY,0}, "3012x0FxDA110", IF_KATMAI|IF_MMX|IF_SM},
  1767.     {-1}
  1768. };
  1769. static struct itemplate instrux_PMOVMSKB[] = {
  1770.     {I_PMOVMSKB, 2, {REG32,MMXREG,0}, "2x0FxD7110", IF_KATMAI|IF_MMX},
  1771.     {-1}
  1772. };
  1773. static struct itemplate instrux_PMULHRIW[] = {
  1774.     {I_PMULHRIW, 2, {MMXREG,MEMORY,0}, "3012x0Fx5D110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1775.     {I_PMULHRIW, 2, {MMXREG,MMXREG,0}, "2x0Fx5D110", IF_PENT|IF_MMX|IF_CYRIX},
  1776.     {-1}
  1777. };
  1778. static struct itemplate instrux_PMULHRWA[] = {
  1779.     {I_PMULHRWA, 2, {MMXREG,MEMORY,0}, "3012x0Fx0F1101xB7", IF_PENT|IF_3DNOW|IF_SM},
  1780.     {I_PMULHRWA, 2, {MMXREG,MMXREG,0}, "2x0Fx0F1101xB7", IF_PENT|IF_3DNOW},
  1781.     {-1}
  1782. };
  1783. static struct itemplate instrux_PMULHRWC[] = {
  1784.     {I_PMULHRWC, 2, {MMXREG,MEMORY,0}, "3012x0Fx59110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1785.     {I_PMULHRWC, 2, {MMXREG,MMXREG,0}, "2x0Fx59110", IF_PENT|IF_MMX|IF_CYRIX},
  1786.     {-1}
  1787. };
  1788. static struct itemplate instrux_PMULHUW[] = {
  1789.     {I_PMULHUW, 2, {MMXREG,MMXREG,0}, "2x0FxE4110", IF_KATMAI|IF_MMX},
  1790.     {I_PMULHUW, 2, {MMXREG,MEMORY,0}, "3012x0FxE4110", IF_KATMAI|IF_MMX|IF_SM},
  1791.     {-1}
  1792. };
  1793. static struct itemplate instrux_PMULHW[] = {
  1794.     {I_PMULHW, 2, {MMXREG,MEMORY,0}, "3012x0FxE5110", IF_PENT|IF_MMX|IF_SM},
  1795.     {I_PMULHW, 2, {MMXREG,MMXREG,0}, "2x0FxE5110", IF_PENT|IF_MMX},
  1796.     {-1}
  1797. };
  1798. static struct itemplate instrux_PMULLW[] = {
  1799.     {I_PMULLW, 2, {MMXREG,MEMORY,0}, "3012x0FxD5110", IF_PENT|IF_MMX|IF_SM},
  1800.     {I_PMULLW, 2, {MMXREG,MMXREG,0}, "2x0FxD5110", IF_PENT|IF_MMX},
  1801.     {-1}
  1802. };
  1803. static struct itemplate instrux_PMVGEZB[] = {
  1804.     {I_PMVGEZB, 2, {MMXREG,MEMORY,0}, "3012x0Fx5C110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1805.     {-1}
  1806. };
  1807. static struct itemplate instrux_PMVLZB[] = {
  1808.     {I_PMVLZB, 2, {MMXREG,MEMORY,0}, "3012x0Fx5B110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1809.     {-1}
  1810. };
  1811. static struct itemplate instrux_PMVNZB[] = {
  1812.     {I_PMVNZB, 2, {MMXREG,MEMORY,0}, "3012x0Fx5A110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1813.     {-1}
  1814. };
  1815. static struct itemplate instrux_PMVZB[] = {
  1816.     {I_PMVZB, 2, {MMXREG,MEMORY,0}, "3012x0Fx58110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1817.     {-1}
  1818. };
  1819. static struct itemplate instrux_POP[] = {
  1820.     {I_POP, 1, {REG16,0,0}, "32010x58", IF_8086},
  1821.     {I_POP, 1, {REG32,0,0}, "32110x58", IF_386},
  1822.     {I_POP, 1, {REGMEM|BITS16,0,0}, "3203001x8F200", IF_8086},
  1823.     {I_POP, 1, {REGMEM|BITS32,0,0}, "3213001x8F200", IF_386},
  1824.     {I_POP, 1, {REG_CS,0,0}, "1x0F", IF_8086|IF_UNDOC},
  1825.     {I_POP, 1, {REG_DESS,0,0}, "4", IF_8086},
  1826.     {I_POP, 1, {REG_FSGS,0,0}, "1x0F5", IF_386},
  1827.     {-1}
  1828. };
  1829. static struct itemplate instrux_POPA[] = {
  1830.     {I_POPA, 0, {0,0,0}, "3221x61", IF_186},
  1831.     {-1}
  1832. };
  1833. static struct itemplate instrux_POPAD[] = {
  1834.     {I_POPAD, 0, {0,0,0}, "3211x61", IF_386},
  1835.     {-1}
  1836. };
  1837. static struct itemplate instrux_POPAW[] = {
  1838.     {I_POPAW, 0, {0,0,0}, "3201x61", IF_186},
  1839.     {-1}
  1840. };
  1841. static struct itemplate instrux_POPF[] = {
  1842.     {I_POPF, 0, {0,0,0}, "3221x9D", IF_186},
  1843.     {-1}
  1844. };
  1845. static struct itemplate instrux_POPFD[] = {
  1846.     {I_POPFD, 0, {0,0,0}, "3211x9D", IF_386},
  1847.     {-1}
  1848. };
  1849. static struct itemplate instrux_POPFW[] = {
  1850.     {I_POPFW, 0, {0,0,0}, "3201x9D", IF_186},
  1851.     {-1}
  1852. };
  1853. static struct itemplate instrux_POR[] = {
  1854.     {I_POR, 2, {MMXREG,MEMORY,0}, "3012x0FxEB110", IF_PENT|IF_MMX|IF_SM},
  1855.     {I_POR, 2, {MMXREG,MMXREG,0}, "2x0FxEB110", IF_PENT|IF_MMX},
  1856.     {-1}
  1857. };
  1858. static struct itemplate instrux_PREFETCH[] = {
  1859.     {I_PREFETCH, 1, {MEMORY,0,0}, "2x0Fx0D200", IF_PENT|IF_3DNOW|IF_SM},
  1860.     {-1}
  1861. };
  1862. static struct itemplate instrux_PREFETCHNTA[] = {
  1863.     {I_PREFETCHNTA, 1, {MEMORY,0,0}, "3002x0Fx18200", IF_KATMAI},
  1864.     {-1}
  1865. };
  1866. static struct itemplate instrux_PREFETCHT0[] = {
  1867.     {I_PREFETCHT0, 1, {MEMORY,0,0}, "3002x0Fx18201", IF_KATMAI},
  1868.     {-1}
  1869. };
  1870. static struct itemplate instrux_PREFETCHT1[] = {
  1871.     {I_PREFETCHT1, 1, {MEMORY,0,0}, "3002x0Fx18202", IF_KATMAI},
  1872.     {-1}
  1873. };
  1874. static struct itemplate instrux_PREFETCHT2[] = {
  1875.     {I_PREFETCHT2, 1, {MEMORY,0,0}, "3002x0Fx18203", IF_KATMAI},
  1876.     {-1}
  1877. };
  1878. static struct itemplate instrux_PREFETCHW[] = {
  1879.     {I_PREFETCHW, 1, {MEMORY,0,0}, "2x0Fx0D201", IF_PENT|IF_3DNOW|IF_SM},
  1880.     {-1}
  1881. };
  1882. static struct itemplate instrux_PSADBW[] = {
  1883.     {I_PSADBW, 2, {MMXREG,MMXREG,0}, "2x0FxF6110", IF_KATMAI|IF_MMX},
  1884.     {I_PSADBW, 2, {MMXREG,MEMORY,0}, "3012x0FxF6110", IF_KATMAI|IF_MMX|IF_SM},
  1885.     {-1}
  1886. };
  1887. static struct itemplate instrux_PSHUFW[] = {
  1888.     {I_PSHUFW, 3, {MMXREG,MMXREG,IMMEDIATE}, "2x0Fx7011022", IF_KATMAI|IF_MMX|IF_SB|IF_AR2},
  1889.     {I_PSHUFW, 3, {MMXREG,MEMORY,IMMEDIATE}, "3012x0Fx7011022", IF_KATMAI|IF_MMX|IF_SM2|IF_SB|IF_AR2},
  1890.     {-1}
  1891. };
  1892. static struct itemplate instrux_PSLLD[] = {
  1893.     {I_PSLLD, 2, {MMXREG,MEMORY,0}, "3012x0FxF2110", IF_PENT|IF_MMX|IF_SM},
  1894.     {I_PSLLD, 2, {MMXREG,MMXREG,0}, "2x0FxF2110", IF_PENT|IF_MMX},
  1895.     {I_PSLLD, 2, {MMXREG,IMMEDIATE,0}, "2x0Fx7220625", IF_PENT|IF_MMX},
  1896.     {-1}
  1897. };
  1898. static struct itemplate instrux_PSLLQ[] = {
  1899.     {I_PSLLQ, 2, {MMXREG,MEMORY,0}, "3012x0FxF3110", IF_PENT|IF_MMX|IF_SM},
  1900.     {I_PSLLQ, 2, {MMXREG,MMXREG,0}, "2x0FxF3110", IF_PENT|IF_MMX},
  1901.     {I_PSLLQ, 2, {MMXREG,IMMEDIATE,0}, "2x0Fx7320625", IF_PENT|IF_MMX},
  1902.     {-1}
  1903. };
  1904. static struct itemplate instrux_PSLLW[] = {
  1905.     {I_PSLLW, 2, {MMXREG,MEMORY,0}, "3012x0FxF1110", IF_PENT|IF_MMX|IF_SM},
  1906.     {I_PSLLW, 2, {MMXREG,MMXREG,0}, "2x0FxF1110", IF_PENT|IF_MMX},
  1907.     {I_PSLLW, 2, {MMXREG,IMMEDIATE,0}, "2x0Fx7120625", IF_PENT|IF_MMX},
  1908.     {-1}
  1909. };
  1910. static struct itemplate instrux_PSRAD[] = {
  1911.     {I_PSRAD, 2, {MMXREG,MEMORY,0}, "3012x0FxE2110", IF_PENT|IF_MMX|IF_SM},
  1912.     {I_PSRAD, 2, {MMXREG,MMXREG,0}, "2x0FxE2110", IF_PENT|IF_MMX},
  1913.     {I_PSRAD, 2, {MMXREG,IMMEDIATE,0}, "2x0Fx7220425", IF_PENT|IF_MMX},
  1914.     {-1}
  1915. };
  1916. static struct itemplate instrux_PSRAW[] = {
  1917.     {I_PSRAW, 2, {MMXREG,MEMORY,0}, "3012x0FxE1110", IF_PENT|IF_MMX|IF_SM},
  1918.     {I_PSRAW, 2, {MMXREG,MMXREG,0}, "2x0FxE1110", IF_PENT|IF_MMX},
  1919.     {I_PSRAW, 2, {MMXREG,IMMEDIATE,0}, "2x0Fx7120425", IF_PENT|IF_MMX},
  1920.     {-1}
  1921. };
  1922. static struct itemplate instrux_PSRLD[] = {
  1923.     {I_PSRLD, 2, {MMXREG,MEMORY,0}, "3012x0FxD2110", IF_PENT|IF_MMX|IF_SM},
  1924.     {I_PSRLD, 2, {MMXREG,MMXREG,0}, "2x0FxD2110", IF_PENT|IF_MMX},
  1925.     {I_PSRLD, 2, {MMXREG,IMMEDIATE,0}, "2x0Fx7220225", IF_PENT|IF_MMX},
  1926.     {-1}
  1927. };
  1928. static struct itemplate instrux_PSRLQ[] = {
  1929.     {I_PSRLQ, 2, {MMXREG,MEMORY,0}, "3012x0FxD3110", IF_PENT|IF_MMX|IF_SM},
  1930.     {I_PSRLQ, 2, {MMXREG,MMXREG,0}, "2x0FxD3110", IF_PENT|IF_MMX},
  1931.     {I_PSRLQ, 2, {MMXREG,IMMEDIATE,0}, "2x0Fx7320225", IF_PENT|IF_MMX},
  1932.     {-1}
  1933. };
  1934. static struct itemplate instrux_PSRLW[] = {
  1935.     {I_PSRLW, 2, {MMXREG,MEMORY,0}, "3012x0FxD1110", IF_PENT|IF_MMX|IF_SM},
  1936.     {I_PSRLW, 2, {MMXREG,MMXREG,0}, "2x0FxD1110", IF_PENT|IF_MMX},
  1937.     {I_PSRLW, 2, {MMXREG,IMMEDIATE,0}, "2x0Fx7120225", IF_PENT|IF_MMX},
  1938.     {-1}
  1939. };
  1940. static struct itemplate instrux_PSUBB[] = {
  1941.     {I_PSUBB, 2, {MMXREG,MEMORY,0}, "3012x0FxF8110", IF_PENT|IF_MMX|IF_SM},
  1942.     {I_PSUBB, 2, {MMXREG,MMXREG,0}, "2x0FxF8110", IF_PENT|IF_MMX},
  1943.     {-1}
  1944. };
  1945. static struct itemplate instrux_PSUBD[] = {
  1946.     {I_PSUBD, 2, {MMXREG,MEMORY,0}, "3012x0FxFA110", IF_PENT|IF_MMX|IF_SM},
  1947.     {I_PSUBD, 2, {MMXREG,MMXREG,0}, "2x0FxFA110", IF_PENT|IF_MMX},
  1948.     {-1}
  1949. };
  1950. static struct itemplate instrux_PSUBSB[] = {
  1951.     {I_PSUBSB, 2, {MMXREG,MEMORY,0}, "3012x0FxE8110", IF_PENT|IF_MMX|IF_SM},
  1952.     {I_PSUBSB, 2, {MMXREG,MMXREG,0}, "2x0FxE8110", IF_PENT|IF_MMX},
  1953.     {-1}
  1954. };
  1955. static struct itemplate instrux_PSUBSIW[] = {
  1956.     {I_PSUBSIW, 2, {MMXREG,MEMORY,0}, "3012x0Fx55110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1957.     {I_PSUBSIW, 2, {MMXREG,MMXREG,0}, "2x0Fx55110", IF_PENT|IF_MMX|IF_CYRIX},
  1958.     {-1}
  1959. };
  1960. static struct itemplate instrux_PSUBSW[] = {
  1961.     {I_PSUBSW, 2, {MMXREG,MEMORY,0}, "3012x0FxE9110", IF_PENT|IF_MMX|IF_SM},
  1962.     {I_PSUBSW, 2, {MMXREG,MMXREG,0}, "2x0FxE9110", IF_PENT|IF_MMX},
  1963.     {-1}
  1964. };
  1965. static struct itemplate instrux_PSUBUSB[] = {
  1966.     {I_PSUBUSB, 2, {MMXREG,MEMORY,0}, "3012x0FxD8110", IF_PENT|IF_MMX|IF_SM},
  1967.     {I_PSUBUSB, 2, {MMXREG,MMXREG,0}, "2x0FxD8110", IF_PENT|IF_MMX},
  1968.     {-1}
  1969. };
  1970. static struct itemplate instrux_PSUBUSW[] = {
  1971.     {I_PSUBUSW, 2, {MMXREG,MEMORY,0}, "3012x0FxD9110", IF_PENT|IF_MMX|IF_SM},
  1972.     {I_PSUBUSW, 2, {MMXREG,MMXREG,0}, "2x0FxD9110", IF_PENT|IF_MMX},
  1973.     {-1}
  1974. };
  1975. static struct itemplate instrux_PSUBW[] = {
  1976.     {I_PSUBW, 2, {MMXREG,MEMORY,0}, "3012x0FxF9110", IF_PENT|IF_MMX|IF_SM},
  1977.     {I_PSUBW, 2, {MMXREG,MMXREG,0}, "2x0FxF9110", IF_PENT|IF_MMX},
  1978.     {-1}
  1979. };
  1980. static struct itemplate instrux_PUNPCKHBW[] = {
  1981.     {I_PUNPCKHBW, 2, {MMXREG,MEMORY,0}, "3012x0Fx68110", IF_PENT|IF_MMX|IF_SM},
  1982.     {I_PUNPCKHBW, 2, {MMXREG,MMXREG,0}, "2x0Fx68110", IF_PENT|IF_MMX},
  1983.     {-1}
  1984. };
  1985. static struct itemplate instrux_PUNPCKHDQ[] = {
  1986.     {I_PUNPCKHDQ, 2, {MMXREG,MEMORY,0}, "3012x0Fx6A110", IF_PENT|IF_MMX|IF_SM},
  1987.     {I_PUNPCKHDQ, 2, {MMXREG,MMXREG,0}, "2x0Fx6A110", IF_PENT|IF_MMX},
  1988.     {-1}
  1989. };
  1990. static struct itemplate instrux_PUNPCKHWD[] = {
  1991.     {I_PUNPCKHWD, 2, {MMXREG,MEMORY,0}, "3012x0Fx69110", IF_PENT|IF_MMX|IF_SM},
  1992.     {I_PUNPCKHWD, 2, {MMXREG,MMXREG,0}, "2x0Fx69110", IF_PENT|IF_MMX},
  1993.     {-1}
  1994. };
  1995. static struct itemplate instrux_PUNPCKLBW[] = {
  1996.     {I_PUNPCKLBW, 2, {MMXREG,MEMORY,0}, "3012x0Fx60110", IF_PENT|IF_MMX|IF_SM},
  1997.     {I_PUNPCKLBW, 2, {MMXREG,MMXREG,0}, "2x0Fx60110", IF_PENT|IF_MMX},
  1998.     {-1}
  1999. };
  2000. static struct itemplate instrux_PUNPCKLDQ[] = {
  2001.     {I_PUNPCKLDQ, 2, {MMXREG,MEMORY,0}, "3012x0Fx62110", IF_PENT|IF_MMX|IF_SM},
  2002.     {I_PUNPCKLDQ, 2, {MMXREG,MMXREG,0}, "2x0Fx62110", IF_PENT|IF_MMX},
  2003.     {-1}
  2004. };
  2005. static struct itemplate instrux_PUNPCKLWD[] = {
  2006.     {I_PUNPCKLWD, 2, {MMXREG,MEMORY,0}, "3012x0Fx61110", IF_PENT|IF_MMX|IF_SM},
  2007.     {I_PUNPCKLWD, 2, {MMXREG,MMXREG,0}, "2x0Fx61110", IF_PENT|IF_MMX},
  2008.     {-1}
  2009. };
  2010. static struct itemplate instrux_PUSH[] = {
  2011.     {I_PUSH, 1, {REG16,0,0}, "32010x50", IF_8086},
  2012.     {I_PUSH, 1, {REG32,0,0}, "32110x50", IF_386},
  2013.     {I_PUSH, 1, {REGMEM|BITS16,0,0}, "3203001xFF206", IF_8086},
  2014.     {I_PUSH, 1, {REGMEM|BITS32,0,0}, "3213001xFF206", IF_386},
  2015.     {I_PUSH, 1, {REG_FSGS,0,0}, "1x0F7", IF_386},
  2016.     {I_PUSH, 1, {REG_SREG,0,0}, "6", IF_8086},
  2017.     {I_PUSH, 1, {IMMEDIATE|BITS8,0,0}, "1x6A14", IF_286},
  2018.     {I_PUSH, 1, {IMMEDIATE|BITS16,0,0}, "3201x6830", IF_286},
  2019.     {I_PUSH, 1, {IMMEDIATE|BITS32,0,0}, "3211x6840", IF_386},
  2020.     {-1}
  2021. };
  2022. static struct itemplate instrux_PUSHA[] = {
  2023.     {I_PUSHA, 0, {0,0,0}, "3221x60", IF_186},
  2024.     {-1}
  2025. };
  2026. static struct itemplate instrux_PUSHAD[] = {
  2027.     {I_PUSHAD, 0, {0,0,0}, "3211x60", IF_386},
  2028.     {-1}
  2029. };
  2030. static struct itemplate instrux_PUSHAW[] = {
  2031.     {I_PUSHAW, 0, {0,0,0}, "3201x60", IF_186},
  2032.     {-1}
  2033. };
  2034. static struct itemplate instrux_PUSHF[] = {
  2035.     {I_PUSHF, 0, {0,0,0}, "3221x9C", IF_186},
  2036.     {-1}
  2037. };
  2038. static struct itemplate instrux_PUSHFD[] = {
  2039.     {I_PUSHFD, 0, {0,0,0}, "3211x9C", IF_386},
  2040.     {-1}
  2041. };
  2042. static struct itemplate instrux_PUSHFW[] = {
  2043.     {I_PUSHFW, 0, {0,0,0}, "3201x9C", IF_186},
  2044.     {-1}
  2045. };
  2046. static struct itemplate instrux_PXOR[] = {
  2047.     {I_PXOR, 2, {MMXREG,MEMORY,0}, "3012x0FxEF110", IF_PENT|IF_MMX|IF_SM},
  2048.     {I_PXOR, 2, {MMXREG,MMXREG,0}, "2x0FxEF110", IF_PENT|IF_MMX},
  2049.     {-1}
  2050. };
  2051. static struct itemplate instrux_RCL[] = {
  2052.     {I_RCL, 2, {REGMEM|BITS8,UNITY,0}, "3001xD0202", IF_8086},
  2053.     {I_RCL, 2, {REGMEM|BITS8,REG_CL,0}, "3001xD2202", IF_8086},
  2054.     {I_RCL, 2, {REGMEM|BITS8,IMMEDIATE,0}, "3001xC020225", IF_186|IF_SB},
  2055.     {I_RCL, 2, {REGMEM|BITS16,UNITY,0}, "3203001xD1202", IF_8086},
  2056.     {I_RCL, 2, {REGMEM|BITS16,REG_CL,0}, "3203001xD3202", IF_8086},
  2057.     {I_RCL, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203001xC120225", IF_186|IF_SB},
  2058.     {I_RCL, 2, {REGMEM|BITS32,UNITY,0}, "3213001xD1202", IF_386},
  2059.     {I_RCL, 2, {REGMEM|BITS32,REG_CL,0}, "3213001xD3202", IF_386},
  2060.     {I_RCL, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213001xC120225", IF_386|IF_SB},
  2061.     {-1}
  2062. };
  2063. static struct itemplate instrux_RCPPS[] = {
  2064.     {I_RCPPS, 2, {XMMREG,MEMORY,0}, "3013312x0Fx53110", IF_KATMAI|IF_SSE},
  2065.     {I_RCPPS, 2, {XMMREG,XMMREG,0}, "3312x0Fx53110", IF_KATMAI|IF_SSE},
  2066.     {-1}
  2067. };
  2068. static struct itemplate instrux_RCPSS[] = {
  2069.     {I_RCPSS, 2, {XMMREG,MEMORY,0}, "3013332x0Fx53110", IF_KATMAI|IF_SSE},
  2070.     {I_RCPSS, 2, {XMMREG,XMMREG,0}, "3332x0Fx53110", IF_KATMAI|IF_SSE},
  2071.     {-1}
  2072. };
  2073. static struct itemplate instrux_RCR[] = {
  2074.     {I_RCR, 2, {REGMEM|BITS8,UNITY,0}, "3001xD0203", IF_8086},
  2075.     {I_RCR, 2, {REGMEM|BITS8,REG_CL,0}, "3001xD2203", IF_8086},
  2076.     {I_RCR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "3001xC020325", IF_186|IF_SB},
  2077.     {I_RCR, 2, {REGMEM|BITS16,UNITY,0}, "3203001xD1203", IF_8086},
  2078.     {I_RCR, 2, {REGMEM|BITS16,REG_CL,0}, "3203001xD3203", IF_8086},
  2079.     {I_RCR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203001xC120325", IF_186|IF_SB},
  2080.     {I_RCR, 2, {REGMEM|BITS32,UNITY,0}, "3213001xD1203", IF_386},
  2081.     {I_RCR, 2, {REGMEM|BITS32,REG_CL,0}, "3213001xD3203", IF_386},
  2082.     {I_RCR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213001xC120325", IF_386|IF_SB},
  2083.     {-1}
  2084. };
  2085. static struct itemplate instrux_RDMSR[] = {
  2086.     {I_RDMSR, 0, {0,0,0}, "2x0Fx32", IF_PENT|IF_PRIV},
  2087.     {-1}
  2088. };
  2089. static struct itemplate instrux_RDPMC[] = {
  2090.     {I_RDPMC, 0, {0,0,0}, "2x0Fx33", IF_P6},
  2091.     {-1}
  2092. };
  2093. static struct itemplate instrux_RDSHR[] = {
  2094.     {I_RDSHR, 0, {0,0,0}, "2x0Fx36", IF_P6|IF_CYRIX|IF_SMM},
  2095.     {-1}
  2096. };
  2097. static struct itemplate instrux_RDTSC[] = {
  2098.     {I_RDTSC, 0, {0,0,0}, "2x0Fx31", IF_PENT},
  2099.     {-1}
  2100. };
  2101. static struct itemplate instrux_RESB[] = {
  2102.     {I_RESB, 1, {IMMEDIATE,0,0}, "340", IF_8086},
  2103.     {-1}
  2104. };
  2105. static struct itemplate instrux_RESD[] = {
  2106.     {-1}
  2107. };
  2108. static struct itemplate instrux_RESQ[] = {
  2109.     {-1}
  2110. };
  2111. static struct itemplate instrux_REST[] = {
  2112.     {-1}
  2113. };
  2114. static struct itemplate instrux_RESW[] = {
  2115.     {-1}
  2116. };
  2117. static struct itemplate instrux_RET[] = {
  2118.     {I_RET, 0, {0,0,0}, "1xC3", IF_8086},
  2119.     {I_RET, 1, {IMMEDIATE,0,0}, "1xC230", IF_8086|IF_SW},
  2120.     {-1}
  2121. };
  2122. static struct itemplate instrux_RETF[] = {
  2123.     {I_RETF, 0, {0,0,0}, "1xCB", IF_8086},
  2124.     {I_RETF, 1, {IMMEDIATE,0,0}, "1xCA30", IF_8086|IF_SW},
  2125.     {-1}
  2126. };
  2127. static struct itemplate instrux_RETN[] = {
  2128.     {I_RETN, 0, {0,0,0}, "1xC3", IF_8086},
  2129.     {I_RETN, 1, {IMMEDIATE,0,0}, "1xC230", IF_8086|IF_SW},
  2130.     {-1}
  2131. };
  2132. static struct itemplate instrux_ROL[] = {
  2133.     {I_ROL, 2, {REGMEM|BITS8,UNITY,0}, "3001xD0200", IF_8086},
  2134.     {I_ROL, 2, {REGMEM|BITS8,REG_CL,0}, "3001xD2200", IF_8086},
  2135.     {I_ROL, 2, {REGMEM|BITS8,IMMEDIATE,0}, "3001xC020025", IF_186|IF_SB},
  2136.     {I_ROL, 2, {REGMEM|BITS16,UNITY,0}, "3203001xD1200", IF_8086},
  2137.     {I_ROL, 2, {REGMEM|BITS16,REG_CL,0}, "3203001xD3200", IF_8086},
  2138.     {I_ROL, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203001xC120025", IF_186|IF_SB},
  2139.     {I_ROL, 2, {REGMEM|BITS32,UNITY,0}, "3213001xD1200", IF_386},
  2140.     {I_ROL, 2, {REGMEM|BITS32,REG_CL,0}, "3213001xD3200", IF_386},
  2141.     {I_ROL, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213001xC120025", IF_386|IF_SB},
  2142.     {-1}
  2143. };
  2144. static struct itemplate instrux_ROR[] = {
  2145.     {I_ROR, 2, {REGMEM|BITS8,UNITY,0}, "3001xD0201", IF_8086},
  2146.     {I_ROR, 2, {REGMEM|BITS8,REG_CL,0}, "3001xD2201", IF_8086},
  2147.     {I_ROR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "3001xC020125", IF_186|IF_SB},
  2148.     {I_ROR, 2, {REGMEM|BITS16,UNITY,0}, "3203001xD1201", IF_8086},
  2149.     {I_ROR, 2, {REGMEM|BITS16,REG_CL,0}, "3203001xD3201", IF_8086},
  2150.     {I_ROR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203001xC120125", IF_186|IF_SB},
  2151.     {I_ROR, 2, {REGMEM|BITS32,UNITY,0}, "3213001xD1201", IF_386},
  2152.     {I_ROR, 2, {REGMEM|BITS32,REG_CL,0}, "3213001xD3201", IF_386},
  2153.     {I_ROR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213001xC120125", IF_386|IF_SB},
  2154.     {-1}
  2155. };
  2156. static struct itemplate instrux_RSDC[] = {
  2157.     {I_RSDC, 2, {REG_SREG,MEMORY|BITS80,0}, "3012x0Fx79101", IF_486|IF_CYRIX|IF_SMM},
  2158.     {-1}
  2159. };
  2160. static struct itemplate instrux_RSLDT[] = {
  2161.     {I_RSLDT, 1, {MEMORY|BITS80,0,0}, "3002x0Fx7B200", IF_486|IF_CYRIX|IF_SMM},
  2162.     {-1}
  2163. };
  2164. static struct itemplate instrux_RSM[] = {
  2165.     {I_RSM, 0, {0,0,0}, "2x0FxAA", IF_PENT|IF_SMM},
  2166.     {-1}
  2167. };
  2168. static struct itemplate instrux_RSQRTPS[] = {
  2169.     {I_RSQRTPS, 2, {XMMREG,MEMORY,0}, "3013312x0Fx52110", IF_KATMAI|IF_SSE},
  2170.     {I_RSQRTPS, 2, {XMMREG,XMMREG,0}, "3312x0Fx52110", IF_KATMAI|IF_SSE},
  2171.     {-1}
  2172. };
  2173. static struct itemplate instrux_RSQRTSS[] = {
  2174.     {I_RSQRTSS, 2, {XMMREG,MEMORY,0}, "3013332x0Fx52110", IF_KATMAI|IF_SSE},
  2175.     {I_RSQRTSS, 2, {XMMREG,XMMREG,0}, "3332x0Fx52110", IF_KATMAI|IF_SSE},
  2176.     {-1}
  2177. };
  2178. static struct itemplate instrux_SAHF[] = {
  2179.     {I_SAHF, 0, {0,0,0}, "1x9E", IF_8086},
  2180.     {-1}
  2181. };
  2182. static struct itemplate instrux_SAL[] = {
  2183.     {I_SAL, 2, {REGMEM|BITS8,UNITY,0}, "3001xD0204", IF_8086},
  2184.     {I_SAL, 2, {REGMEM|BITS8,REG_CL,0}, "3001xD2204", IF_8086},
  2185.     {I_SAL, 2, {REGMEM|BITS8,IMMEDIATE,0}, "3001xC020425", IF_186|IF_SB},
  2186.     {I_SAL, 2, {REGMEM|BITS16,UNITY,0}, "3203001xD1204", IF_8086},
  2187.     {I_SAL, 2, {REGMEM|BITS16,REG_CL,0}, "3203001xD3204", IF_8086},
  2188.     {I_SAL, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203001xC120425", IF_186|IF_SB},
  2189.     {I_SAL, 2, {REGMEM|BITS32,UNITY,0}, "3213001xD1204", IF_386},
  2190.     {I_SAL, 2, {REGMEM|BITS32,REG_CL,0}, "3213001xD3204", IF_386},
  2191.     {I_SAL, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213001xC120425", IF_386|IF_SB},
  2192.     {-1}
  2193. };
  2194. static struct itemplate instrux_SALC[] = {
  2195.     {I_SALC, 0, {0,0,0}, "1xD6", IF_8086|IF_UNDOC},
  2196.     {-1}
  2197. };
  2198. static struct itemplate instrux_SAR[] = {
  2199.     {I_SAR, 2, {REGMEM|BITS8,UNITY,0}, "3001xD0207", IF_8086},
  2200.     {I_SAR, 2, {REGMEM|BITS8,REG_CL,0}, "3001xD2207", IF_8086},
  2201.     {I_SAR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "3001xC020725", IF_186|IF_SB},
  2202.     {I_SAR, 2, {REGMEM|BITS16,UNITY,0}, "3203001xD1207", IF_8086},
  2203.     {I_SAR, 2, {REGMEM|BITS16,REG_CL,0}, "3203001xD3207", IF_8086},
  2204.     {I_SAR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203001xC120725", IF_186|IF_SB},
  2205.     {I_SAR, 2, {REGMEM|BITS32,UNITY,0}, "3213001xD1207", IF_386},
  2206.     {I_SAR, 2, {REGMEM|BITS32,REG_CL,0}, "3213001xD3207", IF_386},
  2207.     {I_SAR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213001xC120725", IF_386|IF_SB},
  2208.     {-1}
  2209. };
  2210. static struct itemplate instrux_SBB[] = {
  2211.     {I_SBB, 2, {MEMORY,REG8,0}, "3001x18101", IF_8086|IF_SM},
  2212.     {I_SBB, 2, {REG8,REG8,0}, "3001x18101", IF_8086},
  2213.     {I_SBB, 2, {MEMORY,REG16,0}, "3203001x19101", IF_8086|IF_SM},
  2214.     {I_SBB, 2, {REG16,REG16,0}, "3203001x19101", IF_8086},
  2215.     {I_SBB, 2, {MEMORY,REG32,0}, "3213001x19101", IF_386|IF_SM},
  2216.     {I_SBB, 2, {REG32,REG32,0}, "3213001x19101", IF_386},
  2217.     {I_SBB, 2, {REG8,MEMORY,0}, "3011x1A110", IF_8086|IF_SM},
  2218.     {I_SBB, 2, {REG8,REG8,0}, "3011x1A110", IF_8086},
  2219.     {I_SBB, 2, {REG16,MEMORY,0}, "3203011x1B110", IF_8086|IF_SM},
  2220.     {I_SBB, 2, {REG16,REG16,0}, "3203011x1B110", IF_8086},
  2221.     {I_SBB, 2, {REG32,MEMORY,0}, "3213011x1B110", IF_386|IF_SM},
  2222.     {I_SBB, 2, {REG32,REG32,0}, "3213011x1B110", IF_386},
  2223.     {I_SBB, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "3203001x8320315", IF_8086},
  2224.     {I_SBB, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "3213001x8320315", IF_8086},
  2225.     {I_SBB, 2, {REG_AL,IMMEDIATE,0}, "1x1C21", IF_8086|IF_SM},
  2226.     {I_SBB, 2, {REG_AX,IMMEDIATE,0}, "3201x1D31", IF_8086|IF_SM},
  2227.     {I_SBB, 2, {REG_EAX,IMMEDIATE,0}, "3211x1D41", IF_386|IF_SM},
  2228.     {I_SBB, 2, {REGMEM|BITS8,IMMEDIATE,0}, "3001x8020321", IF_8086|IF_SM},
  2229.     {I_SBB, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203001x8120331", IF_8086|IF_SM},
  2230.     {I_SBB, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213001x8120341", IF_386|IF_SM},
  2231.     {I_SBB, 2, {MEMORY,IMMEDIATE|BITS8,0}, "3001x8020321", IF_8086|IF_SM},
  2232.     {I_SBB, 2, {MEMORY,IMMEDIATE|BITS16,0}, "3203001x8120331", IF_8086|IF_SM},
  2233.     {I_SBB, 2, {MEMORY,IMMEDIATE|BITS32,0}, "3213001x8120341", IF_386|IF_SM},
  2234.     {-1}
  2235. };
  2236. static struct itemplate instrux_SCASB[] = {
  2237.     {I_SCASB, 0, {0,0,0}, "3321xAE", IF_8086},
  2238.     {-1}
  2239. };
  2240. static struct itemplate instrux_SCASD[] = {
  2241.     {I_SCASD, 0, {0,0,0}, "3323211xAF", IF_386},
  2242.     {-1}
  2243. };
  2244. static struct itemplate instrux_SCASW[] = {
  2245.     {I_SCASW, 0, {0,0,0}, "3323201xAF", IF_8086},
  2246.     {-1}
  2247. };
  2248. static struct itemplate instrux_SFENCE[] = {
  2249.     {I_SFENCE, 0, {0,0,0}, "3x0FxAExF8", IF_KATMAI},
  2250.     {-1}
  2251. };
  2252. static struct itemplate instrux_SGDT[] = {
  2253.     {I_SGDT, 1, {MEMORY,0,0}, "3002x0Fx01200", IF_286},
  2254.     {-1}
  2255. };
  2256. static struct itemplate instrux_SHL[] = {
  2257.     {I_SHL, 2, {REGMEM|BITS8,UNITY,0}, "3001xD0204", IF_8086},
  2258.     {I_SHL, 2, {REGMEM|BITS8,REG_CL,0}, "3001xD2204", IF_8086},
  2259.     {I_SHL, 2, {REGMEM|BITS8,IMMEDIATE,0}, "3001xC020425", IF_186|IF_SB},
  2260.     {I_SHL, 2, {REGMEM|BITS16,UNITY,0}, "3203001xD1204", IF_8086},
  2261.     {I_SHL, 2, {REGMEM|BITS16,REG_CL,0}, "3203001xD3204", IF_8086},
  2262.     {I_SHL, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203001xC120425", IF_186|IF_SB},
  2263.     {I_SHL, 2, {REGMEM|BITS32,UNITY,0}, "3213001xD1204", IF_386},
  2264.     {I_SHL, 2, {REGMEM|BITS32,REG_CL,0}, "3213001xD3204", IF_386},
  2265.     {I_SHL, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213001xC120425", IF_386|IF_SB},
  2266.     {-1}
  2267. };
  2268. static struct itemplate instrux_SHLD[] = {
  2269.     {I_SHLD, 3, {MEMORY,REG16,IMMEDIATE}, "3003202x0FxA410126", IF_386|IF_SM2|IF_SB|IF_AR2},
  2270.     {I_SHLD, 3, {REG16,REG16,IMMEDIATE}, "3003202x0FxA410126", IF_386|IF_SM2|IF_SB|IF_AR2},
  2271.     {I_SHLD, 3, {MEMORY,REG32,IMMEDIATE}, "3003212x0FxA410126", IF_386|IF_SM2|IF_SB|IF_AR2},
  2272.     {I_SHLD, 3, {REG32,REG32,IMMEDIATE}, "3003212x0FxA410126", IF_386|IF_SM2|IF_SB|IF_AR2},
  2273.     {I_SHLD, 3, {MEMORY,REG16,REG_CL}, "3003202x0FxA5101", IF_386|IF_SM},
  2274.     {I_SHLD, 3, {REG16,REG16,REG_CL}, "3003202x0FxA5101", IF_386},
  2275.     {I_SHLD, 3, {MEMORY,REG32,REG_CL}, "3003212x0FxA5101", IF_386|IF_SM},
  2276.     {I_SHLD, 3, {REG32,REG32,REG_CL}, "3003212x0FxA5101", IF_386},
  2277.     {-1}
  2278. };
  2279. static struct itemplate instrux_SHR[] = {
  2280.     {I_SHR, 2, {REGMEM|BITS8,UNITY,0}, "3001xD0205", IF_8086},
  2281.     {I_SHR, 2, {REGMEM|BITS8,REG_CL,0}, "3001xD2205", IF_8086},
  2282.     {I_SHR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "3001xC020525", IF_186|IF_SB},
  2283.     {I_SHR, 2, {REGMEM|BITS16,UNITY,0}, "3203001xD1205", IF_8086},
  2284.     {I_SHR, 2, {REGMEM|BITS16,REG_CL,0}, "3203001xD3205", IF_8086},
  2285.     {I_SHR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203001xC120525", IF_186|IF_SB},
  2286.     {I_SHR, 2, {REGMEM|BITS32,UNITY,0}, "3213001xD1205", IF_386},
  2287.     {I_SHR, 2, {REGMEM|BITS32,REG_CL,0}, "3213001xD3205", IF_386},
  2288.     {I_SHR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213001xC120525", IF_386|IF_SB},
  2289.     {-1}
  2290. };
  2291. static struct itemplate instrux_SHRD[] = {
  2292.     {I_SHRD, 3, {MEMORY,REG16,IMMEDIATE}, "3003202x0FxAC10126", IF_386|IF_SM2|IF_SB|IF_AR2},
  2293.     {I_SHRD, 3, {REG16,REG16,IMMEDIATE}, "3003202x0FxAC10126", IF_386|IF_SM2|IF_SB|IF_AR2},
  2294.     {I_SHRD, 3, {MEMORY,REG32,IMMEDIATE}, "3003212x0FxAC10126", IF_386|IF_SM2|IF_SB|IF_AR2},
  2295.     {I_SHRD, 3, {REG32,REG32,IMMEDIATE}, "3003212x0FxAC10126", IF_386|IF_SM2|IF_SB|IF_AR2},
  2296.     {I_SHRD, 3, {MEMORY,REG16,REG_CL}, "3003202x0FxAD101", IF_386|IF_SM},
  2297.     {I_SHRD, 3, {REG16,REG16,REG_CL}, "3003202x0FxAD101", IF_386},
  2298.     {I_SHRD, 3, {MEMORY,REG32,REG_CL}, "3003212x0FxAD101", IF_386|IF_SM},
  2299.     {I_SHRD, 3, {REG32,REG32,REG_CL}, "3003212x0FxAD101", IF_386},
  2300.     {-1}
  2301. };
  2302. static struct itemplate instrux_SHUFPS[] = {
  2303.     {I_SHUFPS, 3, {XMMREG,MEMORY,IMMEDIATE}, "3012x0FxC611022", IF_KATMAI|IF_SSE|IF_SB|IF_AR2},
  2304.     {I_SHUFPS, 3, {XMMREG,XMMREG,IMMEDIATE}, "2x0FxC611022", IF_KATMAI|IF_SSE|IF_SB|IF_AR2},
  2305.     {-1}
  2306. };
  2307. static struct itemplate instrux_SIDT[] = {
  2308.     {I_SIDT, 1, {MEMORY,0,0}, "3002x0Fx01201", IF_286},
  2309.     {-1}
  2310. };
  2311. static struct itemplate instrux_SLDT[] = {
  2312.     {I_SLDT, 1, {MEMORY,0,0}, "3001x0F17200", IF_286},
  2313.     {I_SLDT, 1, {MEMORY|BITS16,0,0}, "3001x0F17200", IF_286},
  2314.     {I_SLDT, 1, {REG16,0,0}, "3001x0F17200", IF_286},
  2315.     {-1}
  2316. };
  2317. static struct itemplate instrux_SMI[] = {
  2318.     {I_SMI, 0, {0,0,0}, "1xF1", IF_386|IF_UNDOC},
  2319.     {-1}
  2320. };
  2321. static struct itemplate instrux_SMINT[] = {
  2322.     {I_SMINT, 0, {0,0,0}, "2x0Fx38", IF_P6|IF_CYRIX},
  2323.     {-1}
  2324. };
  2325. static struct itemplate instrux_SMINTOLD[] = {
  2326.     {I_SMINTOLD, 0, {0,0,0}, "2x0Fx7E", IF_486|IF_CYRIX},
  2327.     {-1}
  2328. };
  2329. static struct itemplate instrux_SMSW[] = {
  2330.     {I_SMSW, 1, {MEMORY,0,0}, "3002x0Fx01204", IF_286},
  2331.     {I_SMSW, 1, {MEMORY|BITS16,0,0}, "3002x0Fx01204", IF_286},
  2332.     {I_SMSW, 1, {REG16,0,0}, "3002x0Fx01204", IF_286},
  2333.     {-1}
  2334. };
  2335. static struct itemplate instrux_SQRTPS[] = {
  2336.     {I_SQRTPS, 2, {XMMREG,MEMORY,0}, "3013312x0Fx51110", IF_KATMAI|IF_SSE},
  2337.     {I_SQRTPS, 2, {XMMREG,XMMREG,0}, "3312x0Fx51110", IF_KATMAI|IF_SSE},
  2338.     {-1}
  2339. };
  2340. static struct itemplate instrux_SQRTSS[] = {
  2341.     {I_SQRTSS, 2, {XMMREG,MEMORY,0}, "3013332x0Fx51110", IF_KATMAI|IF_SSE},
  2342.     {I_SQRTSS, 2, {XMMREG,XMMREG,0}, "3332x0Fx51110", IF_KATMAI|IF_SSE},
  2343.     {-1}
  2344. };
  2345. static struct itemplate instrux_STC[] = {
  2346.     {I_STC, 0, {0,0,0}, "1xF9", IF_8086},
  2347.     {-1}
  2348. };
  2349. static struct itemplate instrux_STD[] = {
  2350.     {I_STD, 0, {0,0,0}, "1xFD", IF_8086},
  2351.     {-1}
  2352. };
  2353. static struct itemplate instrux_STI[] = {
  2354.     {I_STI, 0, {0,0,0}, "1xFB", IF_8086},
  2355.     {-1}
  2356. };
  2357. static struct itemplate instrux_STMXCSR[] = {
  2358.     {I_STMXCSR, 1, {MEMORY,0,0}, "3002x0FxAE203", IF_KATMAI|IF_SSE|IF_SD},
  2359.     {-1}
  2360. };
  2361. static struct itemplate instrux_STOSB[] = {
  2362.     {I_STOSB, 0, {0,0,0}, "1xAA", IF_8086},
  2363.     {-1}
  2364. };
  2365. static struct itemplate instrux_STOSD[] = {
  2366.     {I_STOSD, 0, {0,0,0}, "3211xAB", IF_386},
  2367.     {-1}
  2368. };
  2369. static struct itemplate instrux_STOSW[] = {
  2370.     {I_STOSW, 0, {0,0,0}, "3201xAB", IF_8086},
  2371.     {-1}
  2372. };
  2373. static struct itemplate instrux_STR[] = {
  2374.     {I_STR, 1, {MEMORY,0,0}, "3001x0F17201", IF_286|IF_PROT},
  2375.     {I_STR, 1, {MEMORY|BITS16,0,0}, "3001x0F17201", IF_286|IF_PROT},
  2376.     {I_STR, 1, {REG16,0,0}, "3001x0F17201", IF_286|IF_PROT},
  2377.     {-1}
  2378. };
  2379. static struct itemplate instrux_SUB[] = {
  2380.     {I_SUB, 2, {MEMORY,REG8,0}, "3001x28101", IF_8086|IF_SM},
  2381.     {I_SUB, 2, {REG8,REG8,0}, "3001x28101", IF_8086},
  2382.     {I_SUB, 2, {MEMORY,REG16,0}, "3203001x29101", IF_8086|IF_SM},
  2383.     {I_SUB, 2, {REG16,REG16,0}, "3203001x29101", IF_8086},
  2384.     {I_SUB, 2, {MEMORY,REG32,0}, "3213001x29101", IF_386|IF_SM},
  2385.     {I_SUB, 2, {REG32,REG32,0}, "3213001x29101", IF_386},
  2386.     {I_SUB, 2, {REG8,MEMORY,0}, "3011x2A110", IF_8086|IF_SM},
  2387.     {I_SUB, 2, {REG8,REG8,0}, "3011x2A110", IF_8086},
  2388.     {I_SUB, 2, {REG16,MEMORY,0}, "3203011x2B110", IF_8086|IF_SM},
  2389.     {I_SUB, 2, {REG16,REG16,0}, "3203011x2B110", IF_8086},
  2390.     {I_SUB, 2, {REG32,MEMORY,0}, "3213011x2B110", IF_386|IF_SM},
  2391.     {I_SUB, 2, {REG32,REG32,0}, "3213011x2B110", IF_386},
  2392.     {I_SUB, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "3203001x8320515", IF_8086},
  2393.     {I_SUB, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "3213001x8320515", IF_386},
  2394.     {I_SUB, 2, {REG_AL,IMMEDIATE,0}, "1x2C21", IF_8086|IF_SM},
  2395.     {I_SUB, 2, {REG_AX,IMMEDIATE,0}, "3201x2D31", IF_8086|IF_SM},
  2396.     {I_SUB, 2, {REG_EAX,IMMEDIATE,0}, "3211x2D41", IF_386|IF_SM},
  2397.     {I_SUB, 2, {REGMEM|BITS8,IMMEDIATE,0}, "3001x8020521", IF_8086|IF_SM},
  2398.     {I_SUB, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203001x8120531", IF_8086|IF_SM},
  2399.     {I_SUB, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213001x8120541", IF_386|IF_SM},
  2400.     {I_SUB, 2, {MEMORY,IMMEDIATE|BITS8,0}, "3001x8020521", IF_8086|IF_SM},
  2401.     {I_SUB, 2, {MEMORY,IMMEDIATE|BITS16,0}, "3203001x8120531", IF_8086|IF_SM},
  2402.     {I_SUB, 2, {MEMORY,IMMEDIATE|BITS32,0}, "3213001x8120541", IF_386|IF_SM},
  2403.     {-1}
  2404. };
  2405. static struct itemplate instrux_SUBPS[] = {
  2406.     {I_SUBPS, 2, {XMMREG,MEMORY,0}, "3013312x0Fx5C110", IF_KATMAI|IF_SSE},
  2407.     {I_SUBPS, 2, {XMMREG,XMMREG,0}, "3312x0Fx5C110", IF_KATMAI|IF_SSE},
  2408.     {-1}
  2409. };
  2410. static struct itemplate instrux_SUBSS[] = {
  2411.     {I_SUBSS, 2, {XMMREG,MEMORY,0}, "3013332x0Fx5C110", IF_KATMAI|IF_SSE},
  2412.     {I_SUBSS, 2, {XMMREG,XMMREG,0}, "3332x0Fx5C110", IF_KATMAI|IF_SSE},
  2413.     {-1}
  2414. };
  2415. static struct itemplate instrux_SVDC[] = {
  2416.     {I_SVDC, 2, {MEMORY|BITS80,REG_SREG,0}, "3002x0Fx78101", IF_486|IF_CYRIX|IF_SMM},
  2417.     {-1}
  2418. };
  2419. static struct itemplate instrux_SVLDT[] = {
  2420.     {I_SVLDT, 1, {MEMORY|BITS80,0,0}, "3002x0Fx7A200", IF_486|IF_CYRIX|IF_SMM},
  2421.     {-1}
  2422. };
  2423. static struct itemplate instrux_SVTS[] = {
  2424.     {I_SVTS, 1, {MEMORY|BITS80,0,0}, "3002x0Fx7C200", IF_486|IF_CYRIX|IF_SMM},
  2425.     {-1}
  2426. };
  2427. static struct itemplate instrux_SYSCALL[] = {
  2428.     {I_SYSCALL, 0, {0,0,0}, "2x0Fx05", IF_P6|IF_AMD},
  2429.     {-1}
  2430. };
  2431. static struct itemplate instrux_SYSENTER[] = {
  2432.     {I_SYSENTER, 0, {0,0,0}, "2x0Fx34", IF_P6},
  2433.     {-1}
  2434. };
  2435. static struct itemplate instrux_SYSEXIT[] = {
  2436.     {I_SYSEXIT, 0, {0,0,0}, "2x0Fx36", IF_P6|IF_PRIV},
  2437.     {-1}
  2438. };
  2439. static struct itemplate instrux_SYSRET[] = {
  2440.     {I_SYSRET, 0, {0,0,0}, "2x0Fx07", IF_P6|IF_PRIV|IF_AMD},
  2441.     {-1}
  2442. };
  2443. static struct itemplate instrux_TEST[] = {
  2444.     {I_TEST, 2, {MEMORY,REG8,0}, "3001x84101", IF_8086|IF_SM},
  2445.     {I_TEST, 2, {REG8,REG8,0}, "3001x84101", IF_8086},
  2446.     {I_TEST, 2, {MEMORY,REG16,0}, "3203001x85101", IF_8086|IF_SM},
  2447.     {I_TEST, 2, {REG16,REG16,0}, "3203001x85101", IF_8086},
  2448.     {I_TEST, 2, {MEMORY,REG32,0}, "3213001x85101", IF_386|IF_SM},
  2449.     {I_TEST, 2, {REG32,REG32,0}, "3213001x85101", IF_386},
  2450.     {I_TEST, 2, {REG8,MEMORY,0}, "3011x84110", IF_8086|IF_SM},
  2451.     {I_TEST, 2, {REG16,MEMORY,0}, "3203011x85110", IF_8086|IF_SM},
  2452.     {I_TEST, 2, {REG32,MEMORY,0}, "3213011x85110", IF_386|IF_SM},
  2453.     {I_TEST, 2, {REG_AL,IMMEDIATE,0}, "1xA821", IF_8086|IF_SM},
  2454.     {I_TEST, 2, {REG_AX,IMMEDIATE,0}, "3201xA931", IF_8086|IF_SM},
  2455.     {I_TEST, 2, {REG_EAX,IMMEDIATE,0}, "3211xA941", IF_386|IF_SM},
  2456.     {I_TEST, 2, {REGMEM|BITS8,IMMEDIATE,0}, "3001xF620021", IF_8086|IF_SM},
  2457.     {I_TEST, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203001xF720031", IF_8086|IF_SM},
  2458.     {I_TEST, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213001xF720041", IF_386|IF_SM},
  2459.     {I_TEST, 2, {MEMORY,IMMEDIATE|BITS8,0}, "3001xF620021", IF_8086|IF_SM},
  2460.     {I_TEST, 2, {MEMORY,IMMEDIATE|BITS16,0}, "3203001xF720031", IF_8086|IF_SM},
  2461.     {I_TEST, 2, {MEMORY,IMMEDIATE|BITS32,0}, "3213001xF720041", IF_386|IF_SM},
  2462.     {-1}
  2463. };
  2464. static struct itemplate instrux_UCOMISS[] = {
  2465.     {I_UCOMISS, 2, {XMMREG,MEMORY,0}, "3012x0Fx2E110", IF_KATMAI|IF_SSE},
  2466.     {I_UCOMISS, 2, {XMMREG,XMMREG,0}, "2x0Fx2E110", IF_KATMAI|IF_SSE},
  2467.     {-1}
  2468. };
  2469. static struct itemplate instrux_UD1[] = {
  2470.     {I_UD1, 0, {0,0,0}, "2x0FxB9", IF_286|IF_UNDOC},
  2471.     {-1}
  2472. };
  2473. static struct itemplate instrux_UD2[] = {
  2474.     {I_UD2, 0, {0,0,0}, "2x0Fx0B", IF_286},
  2475.     {-1}
  2476. };
  2477. static struct itemplate instrux_UMOV[] = {
  2478.     {I_UMOV, 2, {MEMORY,REG8,0}, "3002x0Fx10101", IF_386|IF_UNDOC|IF_SM},
  2479.     {I_UMOV, 2, {REG8,REG8,0}, "3002x0Fx10101", IF_386|IF_UNDOC},
  2480.     {I_UMOV, 2, {MEMORY,REG16,0}, "3203002x0Fx11101", IF_386|IF_UNDOC|IF_SM},
  2481.     {I_UMOV, 2, {REG16,REG16,0}, "3203002x0Fx11101", IF_386|IF_UNDOC},
  2482.     {I_UMOV, 2, {MEMORY,REG32,0}, "3213002x0Fx11101", IF_386|IF_UNDOC|IF_SM},
  2483.     {I_UMOV, 2, {REG32,REG32,0}, "3213002x0Fx11101", IF_386|IF_UNDOC},
  2484.     {I_UMOV, 2, {REG8,MEMORY,0}, "3012x0Fx12110", IF_386|IF_UNDOC|IF_SM},
  2485.     {I_UMOV, 2, {REG8,REG8,0}, "3012x0Fx12110", IF_386|IF_UNDOC},
  2486.     {I_UMOV, 2, {REG16,MEMORY,0}, "3203012x0Fx13110", IF_386|IF_UNDOC|IF_SM},
  2487.     {I_UMOV, 2, {REG16,REG16,0}, "3203012x0Fx13110", IF_386|IF_UNDOC},
  2488.     {I_UMOV, 2, {REG32,MEMORY,0}, "3213012x0Fx13110", IF_386|IF_UNDOC|IF_SM},
  2489.     {I_UMOV, 2, {REG32,REG32,0}, "3213012x0Fx13110", IF_386|IF_UNDOC},
  2490.     {-1}
  2491. };
  2492. static struct itemplate instrux_UNPCKHPS[] = {
  2493.     {I_UNPCKHPS, 2, {XMMREG,MEMORY,0}, "3012x0Fx15110", IF_KATMAI|IF_SSE},
  2494.     {I_UNPCKHPS, 2, {XMMREG,XMMREG,0}, "2x0Fx15110", IF_KATMAI|IF_SSE},
  2495.     {-1}
  2496. };
  2497. static struct itemplate instrux_UNPCKLPS[] = {
  2498.     {I_UNPCKLPS, 2, {XMMREG,MEMORY,0}, "3012x0Fx14110", IF_KATMAI|IF_SSE},
  2499.     {I_UNPCKLPS, 2, {XMMREG,XMMREG,0}, "2x0Fx14110", IF_KATMAI|IF_SSE},
  2500.     {-1}
  2501. };
  2502. static struct itemplate instrux_VERR[] = {
  2503.     {I_VERR, 1, {MEMORY,0,0}, "3001x0F17204", IF_286|IF_PROT},
  2504.     {I_VERR, 1, {MEMORY|BITS16,0,0}, "3001x0F17204", IF_286|IF_PROT},
  2505.     {I_VERR, 1, {REG16,0,0}, "3001x0F17204", IF_286|IF_PROT},
  2506.     {-1}
  2507. };
  2508. static struct itemplate instrux_VERW[] = {
  2509.     {I_VERW, 1, {MEMORY,0,0}, "3001x0F17205", IF_286|IF_PROT},
  2510.     {I_VERW, 1, {MEMORY|BITS16,0,0}, "3001x0F17205", IF_286|IF_PROT},
  2511.     {I_VERW, 1, {REG16,0,0}, "3001x0F17205", IF_286|IF_PROT},
  2512.     {-1}
  2513. };
  2514. static struct itemplate instrux_WAIT[] = {
  2515.     {I_WAIT, 0, {0,0,0}, "1x9B", IF_8086},
  2516.     {-1}
  2517. };
  2518. static struct itemplate instrux_WBINVD[] = {
  2519.     {I_WBINVD, 0, {0,0,0}, "2x0Fx09", IF_486|IF_PRIV},
  2520.     {-1}
  2521. };
  2522. static struct itemplate instrux_WRMSR[] = {
  2523.     {I_WRMSR, 0, {0,0,0}, "2x0Fx30", IF_PENT|IF_PRIV},
  2524.     {-1}
  2525. };
  2526. static struct itemplate instrux_WRSHR[] = {
  2527.     {I_WRSHR, 0, {0,0,0}, "2x0Fx37", IF_P6|IF_CYRIX|IF_SMM},
  2528.     {-1}
  2529. };
  2530. static struct itemplate instrux_XADD[] = {
  2531.     {I_XADD, 2, {MEMORY,REG8,0}, "3002x0FxC0101", IF_486|IF_SM},
  2532.     {I_XADD, 2, {REG8,REG8,0}, "3002x0FxC0101", IF_486},
  2533.     {I_XADD, 2, {MEMORY,REG16,0}, "3203002x0FxC1101", IF_486|IF_SM},
  2534.     {I_XADD, 2, {REG16,REG16,0}, "3203002x0FxC1101", IF_486},
  2535.     {I_XADD, 2, {MEMORY,REG32,0}, "3213002x0FxC1101", IF_486|IF_SM},
  2536.     {I_XADD, 2, {REG32,REG32,0}, "3213002x0FxC1101", IF_486},
  2537.     {-1}
  2538. };
  2539. static struct itemplate instrux_XBTS[] = {
  2540.     {I_XBTS, 2, {REG16,MEMORY,0}, "3203012x0FxA6110", IF_386|IF_SW|IF_UNDOC},
  2541.     {I_XBTS, 2, {REG16,REG16,0}, "3203012x0FxA6110", IF_386|IF_UNDOC},
  2542.     {I_XBTS, 2, {REG32,MEMORY,0}, "3213012x0FxA6110", IF_386|IF_SD|IF_UNDOC},
  2543.     {I_XBTS, 2, {REG32,REG32,0}, "3213012x0FxA6110", IF_386|IF_UNDOC},
  2544.     {-1}
  2545. };
  2546. static struct itemplate instrux_XCHG[] = {
  2547.     {I_XCHG, 2, {REG_AX,REG16,0}, "32011x90", IF_8086},
  2548.     {I_XCHG, 2, {REG_EAX,REG32,0}, "32111x90", IF_386},
  2549.     {I_XCHG, 2, {REG16,REG_AX,0}, "32010x90", IF_8086},
  2550.     {I_XCHG, 2, {REG32,REG_EAX,0}, "32110x90", IF_386},
  2551.     {I_XCHG, 2, {REG8,MEMORY,0}, "3011x86110", IF_8086|IF_SM},
  2552.     {I_XCHG, 2, {REG8,REG8,0}, "3011x86110", IF_8086},
  2553.     {I_XCHG, 2, {REG16,MEMORY,0}, "3203011x87110", IF_8086|IF_SM},
  2554.     {I_XCHG, 2, {REG16,REG16,0}, "3203011x87110", IF_8086},
  2555.     {I_XCHG, 2, {REG32,MEMORY,0}, "3213011x87110", IF_386|IF_SM},
  2556.     {I_XCHG, 2, {REG32,REG32,0}, "3213011x87110", IF_386},
  2557.     {I_XCHG, 2, {MEMORY,REG8,0}, "3001x86101", IF_8086|IF_SM},
  2558.     {I_XCHG, 2, {REG8,REG8,0}, "3001x86101", IF_8086},
  2559.     {I_XCHG, 2, {MEMORY,REG16,0}, "3203001x87101", IF_8086|IF_SM},
  2560.     {I_XCHG, 2, {REG16,REG16,0}, "3203001x87101", IF_8086},
  2561.     {I_XCHG, 2, {MEMORY,REG32,0}, "3213001x87101", IF_386|IF_SM},
  2562.     {I_XCHG, 2, {REG32,REG32,0}, "3213001x87101", IF_386},
  2563.     {-1}
  2564. };
  2565. static struct itemplate instrux_XLATB[] = {
  2566.     {I_XLATB, 0, {0,0,0}, "1xD7", IF_8086},
  2567.     {-1}
  2568. };
  2569. static struct itemplate instrux_XOR[] = {
  2570.     {I_XOR, 2, {MEMORY,REG8,0}, "3001x30101", IF_8086|IF_SM},
  2571.     {I_XOR, 2, {REG8,REG8,0}, "3001x30101", IF_8086},
  2572.     {I_XOR, 2, {MEMORY,REG16,0}, "3203001x31101", IF_8086|IF_SM},
  2573.     {I_XOR, 2, {REG16,REG16,0}, "3203001x31101", IF_8086},
  2574.     {I_XOR, 2, {MEMORY,REG32,0}, "3213001x31101", IF_386|IF_SM},
  2575.     {I_XOR, 2, {REG32,REG32,0}, "3213001x31101", IF_386},
  2576.     {I_XOR, 2, {REG8,MEMORY,0}, "3011x32110", IF_8086|IF_SM},
  2577.     {I_XOR, 2, {REG8,REG8,0}, "3011x32110", IF_8086},
  2578.     {I_XOR, 2, {REG16,MEMORY,0}, "3203011x33110", IF_8086|IF_SM},
  2579.     {I_XOR, 2, {REG16,REG16,0}, "3203011x33110", IF_8086},
  2580.     {I_XOR, 2, {REG32,MEMORY,0}, "3213011x33110", IF_386|IF_SM},
  2581.     {I_XOR, 2, {REG32,REG32,0}, "3213011x33110", IF_386},
  2582.     {I_XOR, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "3203001x8320615", IF_8086},
  2583.     {I_XOR, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "3213001x8320615", IF_386},
  2584.     {I_XOR, 2, {REG_AL,IMMEDIATE,0}, "1x3421", IF_8086|IF_SM},
  2585.     {I_XOR, 2, {REG_AX,IMMEDIATE,0}, "3201x3531", IF_8086|IF_SM},
  2586.     {I_XOR, 2, {REG_EAX,IMMEDIATE,0}, "3211x3541", IF_386|IF_SM},
  2587.     {I_XOR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "3001x8020621", IF_8086|IF_SM},
  2588.     {I_XOR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "3203001x8120631", IF_8086|IF_SM},
  2589.     {I_XOR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "3213001x8120641", IF_386|IF_SM},
  2590.     {I_XOR, 2, {MEMORY,IMMEDIATE|BITS8,0}, "3001x8020621", IF_8086|IF_SM},
  2591.     {I_XOR, 2, {MEMORY,IMMEDIATE|BITS16,0}, "3203001x8120631", IF_8086|IF_SM},
  2592.     {I_XOR, 2, {MEMORY,IMMEDIATE|BITS32,0}, "3213001x8120641", IF_386|IF_SM},
  2593.     {-1}
  2594. };
  2595. static struct itemplate instrux_XORPS[] = {
  2596.     {I_XORPS, 2, {XMMREG,MEMORY,0}, "3012x0Fx57110", IF_KATMAI|IF_SSE},
  2597.     {I_XORPS, 2, {XMMREG,XMMREG,0}, "2x0Fx57110", IF_KATMAI|IF_SSE},
  2598.     {-1}
  2599. };
  2600. static struct itemplate instrux_CMOVcc[] = {
  2601.     {I_CMOVcc, 2, {REG16,MEMORY,0}, "3203011x0F330x40110", IF_P6|IF_SM},
  2602.     {I_CMOVcc, 2, {REG16,REG16,0}, "3203011x0F330x40110", IF_P6},
  2603.     {I_CMOVcc, 2, {REG32,MEMORY,0}, "3213011x0F330x40110", IF_P6|IF_SM},
  2604.     {I_CMOVcc, 2, {REG32,REG32,0}, "3213011x0F330x40110", IF_P6},
  2605.     {-1}
  2606. };
  2607. static struct itemplate instrux_Jcc[] = {
  2608.     {I_Jcc, 1, {IMMEDIATE|NEAR,0,0}, "3221x0F330x8064", IF_386},
  2609.     {I_Jcc, 1, {IMMEDIATE|BITS16|NEAR,0,0}, "3201x0F330x8064", IF_386},
  2610.     {I_Jcc, 1, {IMMEDIATE|BITS32|NEAR,0,0}, "3211x0F330x8064", IF_386},
  2611.     {I_Jcc, 1, {IMMEDIATE,0,0}, "330x7050", IF_8086},
  2612.     {I_Jcc, 1, {IMMEDIATE|SHORT,0,0}, "330x7050", IF_8086},
  2613.     {-1}
  2614. };
  2615. static struct itemplate instrux_SETcc[] = {
  2616.     {I_SETcc, 1, {MEMORY,0,0}, "3001x0F330x90200", IF_386|IF_SB},
  2617.     {I_SETcc, 1, {REG8,0,0}, "3001x0F330x90200", IF_386},
  2618.     {-1}
  2619. };
  2620. struct itemplate *nasm_instructions[] = {
  2621.     instrux_AAA,
  2622.     instrux_AAD,
  2623.     instrux_AAM,
  2624.     instrux_AAS,
  2625.     instrux_ADC,
  2626.     instrux_ADD,
  2627.     instrux_ADDPS,
  2628.     instrux_ADDSS,
  2629.     instrux_AND,
  2630.     instrux_ANDNPS,
  2631.     instrux_ANDPS,
  2632.     instrux_ARPL,
  2633.     instrux_BOUND,
  2634.     instrux_BSF,
  2635.     instrux_BSR,
  2636.     instrux_BSWAP,
  2637.     instrux_BT,
  2638.     instrux_BTC,
  2639.     instrux_BTR,
  2640.     instrux_BTS,
  2641.     instrux_CALL,
  2642.     instrux_CBW,
  2643.     instrux_CDQ,
  2644.     instrux_CLC,
  2645.     instrux_CLD,
  2646.     instrux_CLI,
  2647.     instrux_CLTS,
  2648.     instrux_CMC,
  2649.     instrux_CMP,
  2650.     instrux_CMPEQPS,
  2651.     instrux_CMPEQSS,
  2652.     instrux_CMPLEPS,
  2653.     instrux_CMPLESS,
  2654.     instrux_CMPLTPS,
  2655.     instrux_CMPLTSS,
  2656.     instrux_CMPNEQPS,
  2657.     instrux_CMPNEQSS,
  2658.     instrux_CMPNLEPS,
  2659.     instrux_CMPNLESS,
  2660.     instrux_CMPNLTPS,
  2661.     instrux_CMPNLTSS,
  2662.     instrux_CMPORDPS,
  2663.     instrux_CMPORDSS,
  2664.     instrux_CMPPS,
  2665.     instrux_CMPSB,
  2666.     instrux_CMPSD,
  2667.     instrux_CMPSS,
  2668.     instrux_CMPSW,
  2669.     instrux_CMPUNORDPS,
  2670.     instrux_CMPUNORDSS,
  2671.     instrux_CMPXCHG,
  2672.     instrux_CMPXCHG486,
  2673.     instrux_CMPXCHG8B,
  2674.     instrux_COMISS,
  2675.     instrux_CPUID,
  2676.     instrux_CVTPI2PS,
  2677.     instrux_CVTPS2PI,
  2678.     instrux_CVTSI2SS,
  2679.     instrux_CVTSS2SI,
  2680.     instrux_CVTTPS2PI,
  2681.     instrux_CVTTSS2SI,
  2682.     instrux_CWD,
  2683.     instrux_CWDE,
  2684.     instrux_DAA,
  2685.     instrux_DAS,
  2686.     instrux_DB,
  2687.     instrux_DD,
  2688.     instrux_DEC,
  2689.     instrux_DIV,
  2690.     instrux_DIVPS,
  2691.     instrux_DIVSS,
  2692.     instrux_DQ,
  2693.     instrux_DT,
  2694.     instrux_DW,
  2695.     instrux_EMMS,
  2696.     instrux_ENTER,
  2697.     instrux_EQU,
  2698.     instrux_F2XM1,
  2699.     instrux_FABS,
  2700.     instrux_FADD,
  2701.     instrux_FADDP,
  2702.     instrux_FBLD,
  2703.     instrux_FBSTP,
  2704.     instrux_FCHS,
  2705.     instrux_FCLEX,
  2706.     instrux_FCMOVB,
  2707.     instrux_FCMOVBE,
  2708.     instrux_FCMOVE,
  2709.     instrux_FCMOVNB,
  2710.     instrux_FCMOVNBE,
  2711.     instrux_FCMOVNE,
  2712.     instrux_FCMOVNU,
  2713.     instrux_FCMOVU,
  2714.     instrux_FCOM,
  2715.     instrux_FCOMI,
  2716.     instrux_FCOMIP,
  2717.     instrux_FCOMP,
  2718.     instrux_FCOMPP,
  2719.     instrux_FCOS,
  2720.     instrux_FDECSTP,
  2721.     instrux_FDISI,
  2722.     instrux_FDIV,
  2723.     instrux_FDIVP,
  2724.     instrux_FDIVR,
  2725.     instrux_FDIVRP,
  2726.     instrux_FEMMS,
  2727.     instrux_FENI,
  2728.     instrux_FFREE,
  2729.     instrux_FIADD,
  2730.     instrux_FICOM,
  2731.     instrux_FICOMP,
  2732.     instrux_FIDIV,
  2733.     instrux_FIDIVR,
  2734.     instrux_FILD,
  2735.     instrux_FIMUL,
  2736.     instrux_FINCSTP,
  2737.     instrux_FINIT,
  2738.     instrux_FIST,
  2739.     instrux_FISTP,
  2740.     instrux_FISUB,
  2741.     instrux_FISUBR,
  2742.     instrux_FLD,
  2743.     instrux_FLD1,
  2744.     instrux_FLDCW,
  2745.     instrux_FLDENV,
  2746.     instrux_FLDL2E,
  2747.     instrux_FLDL2T,
  2748.     instrux_FLDLG2,
  2749.     instrux_FLDLN2,
  2750.     instrux_FLDPI,
  2751.     instrux_FLDZ,
  2752.     instrux_FMUL,
  2753.     instrux_FMULP,
  2754.     instrux_FNCLEX,
  2755.     instrux_FNDISI,
  2756.     instrux_FNENI,
  2757.     instrux_FNINIT,
  2758.     instrux_FNOP,
  2759.     instrux_FNSAVE,
  2760.     instrux_FNSTCW,
  2761.     instrux_FNSTENV,
  2762.     instrux_FNSTSW,
  2763.     instrux_FPATAN,
  2764.     instrux_FPREM,
  2765.     instrux_FPREM1,
  2766.     instrux_FPTAN,
  2767.     instrux_FRNDINT,
  2768.     instrux_FRSTOR,
  2769.     instrux_FSAVE,
  2770.     instrux_FSCALE,
  2771.     instrux_FSETPM,
  2772.     instrux_FSIN,
  2773.     instrux_FSINCOS,
  2774.     instrux_FSQRT,
  2775.     instrux_FST,
  2776.     instrux_FSTCW,
  2777.     instrux_FSTENV,
  2778.     instrux_FSTP,
  2779.     instrux_FSTSW,
  2780.     instrux_FSUB,
  2781.     instrux_FSUBP,
  2782.     instrux_FSUBR,
  2783.     instrux_FSUBRP,
  2784.     instrux_FTST,
  2785.     instrux_FUCOM,
  2786.     instrux_FUCOMI,
  2787.     instrux_FUCOMIP,
  2788.     instrux_FUCOMP,
  2789.     instrux_FUCOMPP,
  2790.     instrux_FXAM,
  2791.     instrux_FXCH,
  2792.     instrux_FXRSTOR,
  2793.     instrux_FXSAVE,
  2794.     instrux_FXTRACT,
  2795.     instrux_FYL2X,
  2796.     instrux_FYL2XP1,
  2797.     instrux_HLT,
  2798.     instrux_IBTS,
  2799.     instrux_ICEBP,
  2800.     instrux_IDIV,
  2801.     instrux_IMUL,
  2802.     instrux_IN,
  2803.     instrux_INC,
  2804.     instrux_INCBIN,
  2805.     instrux_INSB,
  2806.     instrux_INSD,
  2807.     instrux_INSW,
  2808.     instrux_INT,
  2809.     instrux_INT01,
  2810.     instrux_INT03,
  2811.     instrux_INT1,
  2812.     instrux_INT3,
  2813.     instrux_INTO,
  2814.     instrux_INVD,
  2815.     instrux_INVLPG,
  2816.     instrux_IRET,
  2817.     instrux_IRETD,
  2818.     instrux_IRETW,
  2819.     instrux_JCXZ,
  2820.     instrux_JECXZ,
  2821.     instrux_JMP,
  2822.     instrux_LAHF,
  2823.     instrux_LAR,
  2824.     instrux_LDMXCSR,
  2825.     instrux_LDS,
  2826.     instrux_LEA,
  2827.     instrux_LEAVE,
  2828.     instrux_LES,
  2829.     instrux_LFS,
  2830.     instrux_LGDT,
  2831.     instrux_LGS,
  2832.     instrux_LIDT,
  2833.     instrux_LLDT,
  2834.     instrux_LMSW,
  2835.     instrux_LOADALL,
  2836.     instrux_LOADALL286,
  2837.     instrux_LODSB,
  2838.     instrux_LODSD,
  2839.     instrux_LODSW,
  2840.     instrux_LOOP,
  2841.     instrux_LOOPE,
  2842.     instrux_LOOPNE,
  2843.     instrux_LOOPNZ,
  2844.     instrux_LOOPZ,
  2845.     instrux_LSL,
  2846.     instrux_LSS,
  2847.     instrux_LTR,
  2848.     instrux_MASKMOVQ,
  2849.     instrux_MAXPS,
  2850.     instrux_MAXSS,
  2851.     instrux_MINPS,
  2852.     instrux_MINSS,
  2853.     instrux_MOV,
  2854.     instrux_MOVAPS,
  2855.     instrux_MOVD,
  2856.     instrux_MOVHLPS,
  2857.     instrux_MOVHPS,
  2858.     instrux_MOVLHPS,
  2859.     instrux_MOVLPS,
  2860.     instrux_MOVMSKPS,
  2861.     instrux_MOVNTPS,
  2862.     instrux_MOVNTQ,
  2863.     instrux_MOVQ,
  2864.     instrux_MOVSB,
  2865.     instrux_MOVSD,
  2866.     instrux_MOVSS,
  2867.     instrux_MOVSW,
  2868.     instrux_MOVSX,
  2869.     instrux_MOVUPS,
  2870.     instrux_MOVZX,
  2871.     instrux_MUL,
  2872.     instrux_MULPS,
  2873.     instrux_MULSS,
  2874.     instrux_NEG,
  2875.     instrux_NOP,
  2876.     instrux_NOT,
  2877.     instrux_OR,
  2878.     instrux_ORPS,
  2879.     instrux_OUT,
  2880.     instrux_OUTSB,
  2881.     instrux_OUTSD,
  2882.     instrux_OUTSW,
  2883.     instrux_PACKSSDW,
  2884.     instrux_PACKSSWB,
  2885.     instrux_PACKUSWB,
  2886.     instrux_PADDB,
  2887.     instrux_PADDD,
  2888.     instrux_PADDSB,
  2889.     instrux_PADDSIW,
  2890.     instrux_PADDSW,
  2891.     instrux_PADDUSB,
  2892.     instrux_PADDUSW,
  2893.     instrux_PADDW,
  2894.     instrux_PAND,
  2895.     instrux_PANDN,
  2896.     instrux_PAVEB,
  2897.     instrux_PAVGB,
  2898.     instrux_PAVGUSB,
  2899.     instrux_PAVGW,
  2900.     instrux_PCMPEQB,
  2901.     instrux_PCMPEQD,
  2902.     instrux_PCMPEQW,
  2903.     instrux_PCMPGTB,
  2904.     instrux_PCMPGTD,
  2905.     instrux_PCMPGTW,
  2906.     instrux_PDISTIB,
  2907.     instrux_PEXTRW,
  2908.     instrux_PF2ID,
  2909.     instrux_PFACC,
  2910.     instrux_PFADD,
  2911.     instrux_PFCMPEQ,
  2912.     instrux_PFCMPGE,
  2913.     instrux_PFCMPGT,
  2914.     instrux_PFMAX,
  2915.     instrux_PFMIN,
  2916.     instrux_PFMUL,
  2917.     instrux_PFRCP,
  2918.     instrux_PFRCPIT1,
  2919.     instrux_PFRCPIT2,
  2920.     instrux_PFRSQIT1,
  2921.     instrux_PFRSQRT,
  2922.     instrux_PFSUB,
  2923.     instrux_PFSUBR,
  2924.     instrux_PI2FD,
  2925.     instrux_PINSRW,
  2926.     instrux_PMACHRIW,
  2927.     instrux_PMADDWD,
  2928.     instrux_PMAGW,
  2929.     instrux_PMAXSW,
  2930.     instrux_PMAXUB,
  2931.     instrux_PMINSW,
  2932.     instrux_PMINUB,
  2933.     instrux_PMOVMSKB,
  2934.     instrux_PMULHRIW,
  2935.     instrux_PMULHRWA,
  2936.     instrux_PMULHRWC,
  2937.     instrux_PMULHUW,
  2938.     instrux_PMULHW,
  2939.     instrux_PMULLW,
  2940.     instrux_PMVGEZB,
  2941.     instrux_PMVLZB,
  2942.     instrux_PMVNZB,
  2943.     instrux_PMVZB,
  2944.     instrux_POP,
  2945.     instrux_POPA,
  2946.     instrux_POPAD,
  2947.     instrux_POPAW,
  2948.     instrux_POPF,
  2949.     instrux_POPFD,
  2950.     instrux_POPFW,
  2951.     instrux_POR,
  2952.     instrux_PREFETCH,
  2953.     instrux_PREFETCHNTA,
  2954.     instrux_PREFETCHT0,
  2955.     instrux_PREFETCHT1,
  2956.     instrux_PREFETCHT2,
  2957.     instrux_PREFETCHW,
  2958.     instrux_PSADBW,
  2959.     instrux_PSHUFW,
  2960.     instrux_PSLLD,
  2961.     instrux_PSLLQ,
  2962.     instrux_PSLLW,
  2963.     instrux_PSRAD,
  2964.     instrux_PSRAW,
  2965.     instrux_PSRLD,
  2966.     instrux_PSRLQ,
  2967.     instrux_PSRLW,
  2968.     instrux_PSUBB,
  2969.     instrux_PSUBD,
  2970.     instrux_PSUBSB,
  2971.     instrux_PSUBSIW,
  2972.     instrux_PSUBSW,
  2973.     instrux_PSUBUSB,
  2974.     instrux_PSUBUSW,
  2975.     instrux_PSUBW,
  2976.     instrux_PUNPCKHBW,
  2977.     instrux_PUNPCKHDQ,
  2978.     instrux_PUNPCKHWD,
  2979.     instrux_PUNPCKLBW,
  2980.     instrux_PUNPCKLDQ,
  2981.     instrux_PUNPCKLWD,
  2982.     instrux_PUSH,
  2983.     instrux_PUSHA,
  2984.     instrux_PUSHAD,
  2985.     instrux_PUSHAW,
  2986.     instrux_PUSHF,
  2987.     instrux_PUSHFD,
  2988.     instrux_PUSHFW,
  2989.     instrux_PXOR,
  2990.     instrux_RCL,
  2991.     instrux_RCPPS,
  2992.     instrux_RCPSS,
  2993.     instrux_RCR,
  2994.     instrux_RDMSR,
  2995.     instrux_RDPMC,
  2996.     instrux_RDSHR,
  2997.     instrux_RDTSC,
  2998.     instrux_RESB,
  2999.     instrux_RESD,
  3000.     instrux_RESQ,
  3001.     instrux_REST,
  3002.     instrux_RESW,
  3003.     instrux_RET,
  3004.     instrux_RETF,
  3005.     instrux_RETN,
  3006.     instrux_ROL,
  3007.     instrux_ROR,
  3008.     instrux_RSDC,
  3009.     instrux_RSLDT,
  3010.     instrux_RSM,
  3011.     instrux_RSQRTPS,
  3012.     instrux_RSQRTSS,
  3013.     instrux_SAHF,
  3014.     instrux_SAL,
  3015.     instrux_SALC,
  3016.     instrux_SAR,
  3017.     instrux_SBB,
  3018.     instrux_SCASB,
  3019.     instrux_SCASD,
  3020.     instrux_SCASW,
  3021.     instrux_SFENCE,
  3022.     instrux_SGDT,
  3023.     instrux_SHL,
  3024.     instrux_SHLD,
  3025.     instrux_SHR,
  3026.     instrux_SHRD,
  3027.     instrux_SHUFPS,
  3028.     instrux_SIDT,
  3029.     instrux_SLDT,
  3030.     instrux_SMI,
  3031.     instrux_SMINT,
  3032.     instrux_SMINTOLD,
  3033.     instrux_SMSW,
  3034.     instrux_SQRTPS,
  3035.     instrux_SQRTSS,
  3036.     instrux_STC,
  3037.     instrux_STD,
  3038.     instrux_STI,
  3039.     instrux_STMXCSR,
  3040.     instrux_STOSB,
  3041.     instrux_STOSD,
  3042.     instrux_STOSW,
  3043.     instrux_STR,
  3044.     instrux_SUB,
  3045.     instrux_SUBPS,
  3046.     instrux_SUBSS,
  3047.     instrux_SVDC,
  3048.     instrux_SVLDT,
  3049.     instrux_SVTS,
  3050.     instrux_SYSCALL,
  3051.     instrux_SYSENTER,
  3052.     instrux_SYSEXIT,
  3053.     instrux_SYSRET,
  3054.     instrux_TEST,
  3055.     instrux_UCOMISS,
  3056.     instrux_UD1,
  3057.     instrux_UD2,
  3058.     instrux_UMOV,
  3059.     instrux_UNPCKHPS,
  3060.     instrux_UNPCKLPS,
  3061.     instrux_VERR,
  3062.     instrux_VERW,
  3063.     instrux_WAIT,
  3064.     instrux_WBINVD,
  3065.     instrux_WRMSR,
  3066.     instrux_WRSHR,
  3067.     instrux_XADD,
  3068.     instrux_XBTS,
  3069.     instrux_XCHG,
  3070.     instrux_XLATB,
  3071.     instrux_XOR,
  3072.     instrux_XORPS,
  3073.     instrux_CMOVcc,
  3074.     instrux_Jcc,
  3075.     instrux_SETcc,
  3076. };