- ir.addr++;
- opcode = (uint32_t) opcode8 | opcode << 8;
- goto reswitch_prefix_add;
- break;
-
- case 0x0f10: /* movups */
- case 0x660f10: /* movupd */
- case 0xf30f10: /* movss */
- case 0xf20f10: /* movsd */
- case 0x0f12: /* movlps */
- case 0x660f12: /* movlpd */
- case 0xf30f12: /* movsldup */
- case 0xf20f12: /* movddup */
- case 0x0f14: /* unpcklps */
- case 0x660f14: /* unpcklpd */
- case 0x0f15: /* unpckhps */
- case 0x660f15: /* unpckhpd */
- case 0x0f16: /* movhps */
- case 0x660f16: /* movhpd */
- case 0xf30f16: /* movshdup */
- case 0x0f28: /* movaps */
- case 0x660f28: /* movapd */
- case 0x0f2a: /* cvtpi2ps */
- case 0x660f2a: /* cvtpi2pd */
- case 0xf30f2a: /* cvtsi2ss */
- case 0xf20f2a: /* cvtsi2sd */
- case 0x0f2c: /* cvttps2pi */
- case 0x660f2c: /* cvttpd2pi */
- case 0x0f2d: /* cvtps2pi */
- case 0x660f2d: /* cvtpd2pi */
- case 0x660f3800: /* pshufb */
- case 0x660f3801: /* phaddw */
- case 0x660f3802: /* phaddd */
- case 0x660f3803: /* phaddsw */
- case 0x660f3804: /* pmaddubsw */
- case 0x660f3805: /* phsubw */
- case 0x660f3806: /* phsubd */
- case 0x660f3807: /* phsubsw */
- case 0x660f3808: /* psignb */
- case 0x660f3809: /* psignw */
- case 0x660f380a: /* psignd */
- case 0x660f380b: /* pmulhrsw */
- case 0x660f3810: /* pblendvb */
- case 0x660f3814: /* blendvps */
- case 0x660f3815: /* blendvpd */
- case 0x660f381c: /* pabsb */
- case 0x660f381d: /* pabsw */
- case 0x660f381e: /* pabsd */
- case 0x660f3820: /* pmovsxbw */
- case 0x660f3821: /* pmovsxbd */
- case 0x660f3822: /* pmovsxbq */
- case 0x660f3823: /* pmovsxwd */
- case 0x660f3824: /* pmovsxwq */
- case 0x660f3825: /* pmovsxdq */
- case 0x660f3828: /* pmuldq */
- case 0x660f3829: /* pcmpeqq */
- case 0x660f382a: /* movntdqa */
- case 0x660f3a08: /* roundps */
- case 0x660f3a09: /* roundpd */
- case 0x660f3a0a: /* roundss */
- case 0x660f3a0b: /* roundsd */
- case 0x660f3a0c: /* blendps */
- case 0x660f3a0d: /* blendpd */
- case 0x660f3a0e: /* pblendw */
- case 0x660f3a0f: /* palignr */
- case 0x660f3a20: /* pinsrb */
- case 0x660f3a21: /* insertps */
- case 0x660f3a22: /* pinsrd pinsrq */
- case 0x660f3a40: /* dpps */
- case 0x660f3a41: /* dppd */
- case 0x660f3a42: /* mpsadbw */
- case 0x660f3a60: /* pcmpestrm */
- case 0x660f3a61: /* pcmpestri */
- case 0x660f3a62: /* pcmpistrm */
- case 0x660f3a63: /* pcmpistri */
- case 0x0f51: /* sqrtps */
- case 0x660f51: /* sqrtpd */
- case 0xf20f51: /* sqrtsd */
- case 0xf30f51: /* sqrtss */
- case 0x0f52: /* rsqrtps */
- case 0xf30f52: /* rsqrtss */
- case 0x0f53: /* rcpps */
- case 0xf30f53: /* rcpss */
- case 0x0f54: /* andps */
- case 0x660f54: /* andpd */
- case 0x0f55: /* andnps */
- case 0x660f55: /* andnpd */
- case 0x0f56: /* orps */
- case 0x660f56: /* orpd */
- case 0x0f57: /* xorps */
- case 0x660f57: /* xorpd */
- case 0x0f58: /* addps */
- case 0x660f58: /* addpd */
- case 0xf20f58: /* addsd */
- case 0xf30f58: /* addss */
- case 0x0f59: /* mulps */
- case 0x660f59: /* mulpd */
- case 0xf20f59: /* mulsd */
- case 0xf30f59: /* mulss */
- case 0x0f5a: /* cvtps2pd */
- case 0x660f5a: /* cvtpd2ps */
- case 0xf20f5a: /* cvtsd2ss */
- case 0xf30f5a: /* cvtss2sd */
- case 0x0f5b: /* cvtdq2ps */
- case 0x660f5b: /* cvtps2dq */
- case 0xf30f5b: /* cvttps2dq */
- case 0x0f5c: /* subps */
- case 0x660f5c: /* subpd */
- case 0xf20f5c: /* subsd */
- case 0xf30f5c: /* subss */
- case 0x0f5d: /* minps */
- case 0x660f5d: /* minpd */
- case 0xf20f5d: /* minsd */
- case 0xf30f5d: /* minss */
- case 0x0f5e: /* divps */
- case 0x660f5e: /* divpd */
- case 0xf20f5e: /* divsd */
- case 0xf30f5e: /* divss */
- case 0x0f5f: /* maxps */
- case 0x660f5f: /* maxpd */
- case 0xf20f5f: /* maxsd */
- case 0xf30f5f: /* maxss */
- case 0x660f60: /* punpcklbw */
- case 0x660f61: /* punpcklwd */
- case 0x660f62: /* punpckldq */
- case 0x660f63: /* packsswb */
- case 0x660f64: /* pcmpgtb */
- case 0x660f65: /* pcmpgtw */
- case 0x660f66: /* pcmpgtd */
- case 0x660f67: /* packuswb */
- case 0x660f68: /* punpckhbw */
- case 0x660f69: /* punpckhwd */
- case 0x660f6a: /* punpckhdq */
- case 0x660f6b: /* packssdw */
- case 0x660f6c: /* punpcklqdq */
- case 0x660f6d: /* punpckhqdq */
- case 0x660f6e: /* movd */
- case 0x660f6f: /* movdqa */
- case 0xf30f6f: /* movdqu */
- case 0x660f70: /* pshufd */
- case 0xf20f70: /* pshuflw */
- case 0xf30f70: /* pshufhw */
- case 0x660f74: /* pcmpeqb */
- case 0x660f75: /* pcmpeqw */
- case 0x660f76: /* pcmpeqd */
- case 0x660f7c: /* haddpd */
- case 0xf20f7c: /* haddps */
- case 0x660f7d: /* hsubpd */
- case 0xf20f7d: /* hsubps */
- case 0xf30f7e: /* movq */
- case 0x0fc2: /* cmpps */
- case 0x660fc2: /* cmppd */
- case 0xf20fc2: /* cmpsd */
- case 0xf30fc2: /* cmpss */
- case 0x660fc4: /* pinsrw */
- case 0x0fc6: /* shufps */
- case 0x660fc6: /* shufpd */
- case 0x660fd0: /* addsubpd */
- case 0xf20fd0: /* addsubps */
- case 0x660fd1: /* psrlw */
- case 0x660fd2: /* psrld */
- case 0x660fd3: /* psrlq */
- case 0x660fd4: /* paddq */
- case 0x660fd5: /* pmullw */
- case 0xf30fd6: /* movq2dq */
- case 0x660fd8: /* psubusb */
- case 0x660fd9: /* psubusw */
- case 0x660fda: /* pminub */
- case 0x660fdb: /* pand */
- case 0x660fdc: /* paddusb */
- case 0x660fdd: /* paddusw */
- case 0x660fde: /* pmaxub */
- case 0x660fdf: /* pandn */
- case 0x660fe0: /* pavgb */
- case 0x660fe1: /* psraw */
- case 0x660fe2: /* psrad */
- case 0x660fe3: /* pavgw */
- case 0x660fe4: /* pmulhuw */
- case 0x660fe5: /* pmulhw */
- case 0x660fe6: /* cvttpd2dq */
- case 0xf20fe6: /* cvtpd2dq */
- case 0xf30fe6: /* cvtdq2pd */
- case 0x660fe8: /* psubsb */
- case 0x660fe9: /* psubsw */
- case 0x660fea: /* pminsw */
- case 0x660feb: /* por */
- case 0x660fec: /* paddsb */
- case 0x660fed: /* paddsw */
- case 0x660fee: /* pmaxsw */
- case 0x660fef: /* pxor */
- case 0xf20ff0: /* lddqu */
- case 0x660ff1: /* psllw */
- case 0x660ff2: /* pslld */
- case 0x660ff3: /* psllq */
- case 0x660ff4: /* pmuludq */
- case 0x660ff5: /* pmaddwd */
- case 0x660ff6: /* psadbw */
- case 0x660ff8: /* psubb */
- case 0x660ff9: /* psubw */
- case 0x660ffa: /* psubd */
- case 0x660ffb: /* psubq */
- case 0x660ffc: /* paddb */
- case 0x660ffd: /* paddw */
- case 0x660ffe: /* paddd */
- if (i386_record_modrm (&ir))
+ ir.addr++;
+ opcode = (uint32_t) opcode8 | opcode << 8;
+ goto reswitch_prefix_add;
+ break;
+
+ case 0x0f10: /* movups */
+ case 0x660f10: /* movupd */
+ case 0xf30f10: /* movss */
+ case 0xf20f10: /* movsd */
+ case 0x0f12: /* movlps */
+ case 0x660f12: /* movlpd */
+ case 0xf30f12: /* movsldup */
+ case 0xf20f12: /* movddup */
+ case 0x0f14: /* unpcklps */
+ case 0x660f14: /* unpcklpd */
+ case 0x0f15: /* unpckhps */
+ case 0x660f15: /* unpckhpd */
+ case 0x0f16: /* movhps */
+ case 0x660f16: /* movhpd */
+ case 0xf30f16: /* movshdup */
+ case 0x0f28: /* movaps */
+ case 0x660f28: /* movapd */
+ case 0x0f2a: /* cvtpi2ps */
+ case 0x660f2a: /* cvtpi2pd */
+ case 0xf30f2a: /* cvtsi2ss */
+ case 0xf20f2a: /* cvtsi2sd */
+ case 0x0f2c: /* cvttps2pi */
+ case 0x660f2c: /* cvttpd2pi */
+ case 0x0f2d: /* cvtps2pi */
+ case 0x660f2d: /* cvtpd2pi */
+ case 0x660f3800: /* pshufb */
+ case 0x660f3801: /* phaddw */
+ case 0x660f3802: /* phaddd */
+ case 0x660f3803: /* phaddsw */
+ case 0x660f3804: /* pmaddubsw */
+ case 0x660f3805: /* phsubw */
+ case 0x660f3806: /* phsubd */
+ case 0x660f3807: /* phsubsw */
+ case 0x660f3808: /* psignb */
+ case 0x660f3809: /* psignw */
+ case 0x660f380a: /* psignd */
+ case 0x660f380b: /* pmulhrsw */
+ case 0x660f3810: /* pblendvb */
+ case 0x660f3814: /* blendvps */
+ case 0x660f3815: /* blendvpd */
+ case 0x660f381c: /* pabsb */
+ case 0x660f381d: /* pabsw */
+ case 0x660f381e: /* pabsd */
+ case 0x660f3820: /* pmovsxbw */
+ case 0x660f3821: /* pmovsxbd */
+ case 0x660f3822: /* pmovsxbq */
+ case 0x660f3823: /* pmovsxwd */
+ case 0x660f3824: /* pmovsxwq */
+ case 0x660f3825: /* pmovsxdq */
+ case 0x660f3828: /* pmuldq */
+ case 0x660f3829: /* pcmpeqq */
+ case 0x660f382a: /* movntdqa */
+ case 0x660f3a08: /* roundps */
+ case 0x660f3a09: /* roundpd */
+ case 0x660f3a0a: /* roundss */
+ case 0x660f3a0b: /* roundsd */
+ case 0x660f3a0c: /* blendps */
+ case 0x660f3a0d: /* blendpd */
+ case 0x660f3a0e: /* pblendw */
+ case 0x660f3a0f: /* palignr */
+ case 0x660f3a20: /* pinsrb */
+ case 0x660f3a21: /* insertps */
+ case 0x660f3a22: /* pinsrd pinsrq */
+ case 0x660f3a40: /* dpps */
+ case 0x660f3a41: /* dppd */
+ case 0x660f3a42: /* mpsadbw */
+ case 0x660f3a60: /* pcmpestrm */
+ case 0x660f3a61: /* pcmpestri */
+ case 0x660f3a62: /* pcmpistrm */
+ case 0x660f3a63: /* pcmpistri */
+ case 0x0f51: /* sqrtps */
+ case 0x660f51: /* sqrtpd */
+ case 0xf20f51: /* sqrtsd */
+ case 0xf30f51: /* sqrtss */
+ case 0x0f52: /* rsqrtps */
+ case 0xf30f52: /* rsqrtss */
+ case 0x0f53: /* rcpps */
+ case 0xf30f53: /* rcpss */
+ case 0x0f54: /* andps */
+ case 0x660f54: /* andpd */
+ case 0x0f55: /* andnps */
+ case 0x660f55: /* andnpd */
+ case 0x0f56: /* orps */
+ case 0x660f56: /* orpd */
+ case 0x0f57: /* xorps */
+ case 0x660f57: /* xorpd */
+ case 0x0f58: /* addps */
+ case 0x660f58: /* addpd */
+ case 0xf20f58: /* addsd */
+ case 0xf30f58: /* addss */
+ case 0x0f59: /* mulps */
+ case 0x660f59: /* mulpd */
+ case 0xf20f59: /* mulsd */
+ case 0xf30f59: /* mulss */
+ case 0x0f5a: /* cvtps2pd */
+ case 0x660f5a: /* cvtpd2ps */
+ case 0xf20f5a: /* cvtsd2ss */
+ case 0xf30f5a: /* cvtss2sd */
+ case 0x0f5b: /* cvtdq2ps */
+ case 0x660f5b: /* cvtps2dq */
+ case 0xf30f5b: /* cvttps2dq */
+ case 0x0f5c: /* subps */
+ case 0x660f5c: /* subpd */
+ case 0xf20f5c: /* subsd */
+ case 0xf30f5c: /* subss */
+ case 0x0f5d: /* minps */
+ case 0x660f5d: /* minpd */
+ case 0xf20f5d: /* minsd */
+ case 0xf30f5d: /* minss */
+ case 0x0f5e: /* divps */
+ case 0x660f5e: /* divpd */
+ case 0xf20f5e: /* divsd */
+ case 0xf30f5e: /* divss */
+ case 0x0f5f: /* maxps */
+ case 0x660f5f: /* maxpd */
+ case 0xf20f5f: /* maxsd */
+ case 0xf30f5f: /* maxss */
+ case 0x660f60: /* punpcklbw */
+ case 0x660f61: /* punpcklwd */
+ case 0x660f62: /* punpckldq */
+ case 0x660f63: /* packsswb */
+ case 0x660f64: /* pcmpgtb */
+ case 0x660f65: /* pcmpgtw */
+ case 0x660f66: /* pcmpgtd */
+ case 0x660f67: /* packuswb */
+ case 0x660f68: /* punpckhbw */
+ case 0x660f69: /* punpckhwd */
+ case 0x660f6a: /* punpckhdq */
+ case 0x660f6b: /* packssdw */
+ case 0x660f6c: /* punpcklqdq */
+ case 0x660f6d: /* punpckhqdq */
+ case 0x660f6e: /* movd */
+ case 0x660f6f: /* movdqa */
+ case 0xf30f6f: /* movdqu */
+ case 0x660f70: /* pshufd */
+ case 0xf20f70: /* pshuflw */
+ case 0xf30f70: /* pshufhw */
+ case 0x660f74: /* pcmpeqb */
+ case 0x660f75: /* pcmpeqw */
+ case 0x660f76: /* pcmpeqd */
+ case 0x660f7c: /* haddpd */
+ case 0xf20f7c: /* haddps */
+ case 0x660f7d: /* hsubpd */
+ case 0xf20f7d: /* hsubps */
+ case 0xf30f7e: /* movq */
+ case 0x0fc2: /* cmpps */
+ case 0x660fc2: /* cmppd */
+ case 0xf20fc2: /* cmpsd */
+ case 0xf30fc2: /* cmpss */
+ case 0x660fc4: /* pinsrw */
+ case 0x0fc6: /* shufps */
+ case 0x660fc6: /* shufpd */
+ case 0x660fd0: /* addsubpd */
+ case 0xf20fd0: /* addsubps */
+ case 0x660fd1: /* psrlw */
+ case 0x660fd2: /* psrld */
+ case 0x660fd3: /* psrlq */
+ case 0x660fd4: /* paddq */
+ case 0x660fd5: /* pmullw */
+ case 0xf30fd6: /* movq2dq */
+ case 0x660fd8: /* psubusb */
+ case 0x660fd9: /* psubusw */
+ case 0x660fda: /* pminub */
+ case 0x660fdb: /* pand */
+ case 0x660fdc: /* paddusb */
+ case 0x660fdd: /* paddusw */
+ case 0x660fde: /* pmaxub */
+ case 0x660fdf: /* pandn */
+ case 0x660fe0: /* pavgb */
+ case 0x660fe1: /* psraw */
+ case 0x660fe2: /* psrad */
+ case 0x660fe3: /* pavgw */
+ case 0x660fe4: /* pmulhuw */
+ case 0x660fe5: /* pmulhw */
+ case 0x660fe6: /* cvttpd2dq */
+ case 0xf20fe6: /* cvtpd2dq */
+ case 0xf30fe6: /* cvtdq2pd */
+ case 0x660fe8: /* psubsb */
+ case 0x660fe9: /* psubsw */
+ case 0x660fea: /* pminsw */
+ case 0x660feb: /* por */
+ case 0x660fec: /* paddsb */
+ case 0x660fed: /* paddsw */
+ case 0x660fee: /* pmaxsw */
+ case 0x660fef: /* pxor */
+ case 0xf20ff0: /* lddqu */
+ case 0x660ff1: /* psllw */
+ case 0x660ff2: /* pslld */
+ case 0x660ff3: /* psllq */
+ case 0x660ff4: /* pmuludq */
+ case 0x660ff5: /* pmaddwd */
+ case 0x660ff6: /* psadbw */
+ case 0x660ff8: /* psubb */
+ case 0x660ff9: /* psubw */
+ case 0x660ffa: /* psubd */
+ case 0x660ffb: /* psubq */
+ case 0x660ffc: /* paddb */
+ case 0x660ffd: /* paddw */
+ case 0x660ffe: /* paddd */
+ if (i386_record_modrm (&ir))