Home | History | Annotate | Download | only in priv

Lines Matching refs:pfx

676 static Bool IS_VALID_PFX ( Prefix pfx ) {
677 return toBool((pfx & 0xFF000000) == PFX_EMPTY);
680 static Bool haveREX ( Prefix pfx ) {
681 return toBool(pfx & PFX_REX);
684 static Int getRexW ( Prefix pfx ) {
685 return (pfx & PFX_REXW) ? 1 : 0;
687 static Int getRexR ( Prefix pfx ) {
688 return (pfx & PFX_REXR) ? 1 : 0;
690 static Int getRexX ( Prefix pfx ) {
691 return (pfx & PFX_REXX) ? 1 : 0;
693 static Int getRexB ( Prefix pfx ) {
694 return (pfx & PFX_REXB) ? 1 : 0;
699 static Bool haveF2orF3 ( Prefix pfx ) {
700 return toBool((pfx & (PFX_F2|PFX_F3)) > 0);
702 static Bool haveF2andF3 ( Prefix pfx ) {
703 return toBool((pfx & (PFX_F2|PFX_F3)) == (PFX_F2|PFX_F3));
705 static Bool haveF2 ( Prefix pfx ) {
706 return toBool((pfx & PFX_F2) > 0);
708 static Bool haveF3 ( Prefix pfx ) {
709 return toBool((pfx & PFX_F3) > 0);
712 static Bool have66 ( Prefix pfx ) {
713 return toBool((pfx & PFX_66) > 0);
715 static Bool haveASO ( Prefix pfx ) {
716 return toBool((pfx & PFX_ASO) > 0);
718 static Bool haveLOCK ( Prefix pfx ) {
719 return toBool((pfx & PFX_LOCK) > 0);
722 /* Return True iff pfx has 66 set and F2 and F3 clear */
723 static Bool have66noF2noF3 ( Prefix pfx )
726 toBool((pfx & (PFX_66|PFX_F2|PFX_F3)) == PFX_66);
729 /* Return True iff pfx has F2 set and 66 and F3 clear */
730 static Bool haveF2no66noF3 ( Prefix pfx )
733 toBool((pfx & (PFX_66|PFX_F2|PFX_F3)) == PFX_F2);
736 /* Return True iff pfx has F3 set and 66 and F2 clear */
737 static Bool haveF3no66noF2 ( Prefix pfx )
740 toBool((pfx & (PFX_66|PFX_F2|PFX_F3)) == PFX_F3);
743 /* Return True iff pfx has F3 set and F2 clear */
744 static Bool haveF3noF2 ( Prefix pfx )
747 toBool((pfx & (PFX_F2|PFX_F3)) == PFX_F3);
750 /* Return True iff pfx has F2 set and F3 clear */
751 static Bool haveF2noF3 ( Prefix pfx )
754 toBool((pfx & (PFX_F2|PFX_F3)) == PFX_F2);
757 /* Return True iff pfx has 66, F2 and F3 clear */
758 static Bool haveNo66noF2noF3 ( Prefix pfx )
761 toBool((pfx & (PFX_66|PFX_F2|PFX_F3)) == 0);
764 /* Return True iff pfx has any of 66, F2 and F3 set */
765 static Bool have66orF2orF3 ( Prefix pfx )
767 return toBool( ! haveNo66noF2noF3(pfx) );
770 /* Return True iff pfx has 66 or F3 set */
771 static Bool have66orF3 ( Prefix pfx )
773 return toBool((pfx & (PFX_66|PFX_F3)) > 0);
784 static UInt getVexNvvvv ( Prefix pfx ) {
785 UInt r = (UInt)pfx;
790 static Bool haveVEX ( Prefix pfx ) {
791 return toBool(pfx & PFX_VEX);
794 static Int getVexL ( Prefix pfx ) {
795 return (pfx & PFX_VEXL) ? 1 : 0;
1157 static IRExpr* getIReg64rexX ( Prefix pfx, UInt lo3bits )
1160 vassert(IS_VALID_PFX(pfx));
1161 return getIReg64( lo3bits | (getRexX(pfx) << 3) );
1164 static const HChar* nameIReg64rexX ( Prefix pfx, UInt lo3bits )
1167 vassert(IS_VALID_PFX(pfx));
1168 return nameIReg( 8, lo3bits | (getRexX(pfx) << 3), False );
1171 static const HChar* nameIRegRexB ( Int sz, Prefix pfx, UInt lo3bits )
1174 vassert(IS_VALID_PFX(pfx));
1176 return nameIReg( sz, lo3bits | (getRexB(pfx) << 3),
1177 toBool(sz==1 && !haveREX(pfx)) );
1180 static IRExpr* getIRegRexB ( Int sz, Prefix pfx, UInt lo3bits )
1183 vassert(IS_VALID_PFX(pfx));
1189 offsetIReg( sz, lo3bits | (getRexB(pfx) << 3),
1196 offsetIReg( sz, lo3bits | (getRexB(pfx) << 3),
1197 toBool(sz==1 && !haveREX(pfx)) ),
1203 static void putIRegRexB ( Int sz, Prefix pfx, UInt lo3bits, IRExpr* e )
1206 vassert(IS_VALID_PFX(pfx));
1210 offsetIReg( sz, lo3bits | (getRexB(pfx) << 3),
1211 toBool(sz==1 && !haveREX(pfx)) ),
1225 static UInt gregOfRexRM ( Prefix pfx, UChar mod_reg_rm )
1228 reg += (pfx & PFX_REXR) ? 8 : 0;
1237 static UInt eregOfRexRM ( Prefix pfx, UChar mod_reg_rm )
1242 rm += (pfx & PFX_REXB) ? 8 : 0;
1253 static UInt offsetIRegG ( Int sz, Prefix pfx, UChar mod_reg_rm )
1257 vassert(IS_VALID_PFX(pfx));
1259 reg = gregOfRexRM( pfx, mod_reg_rm );
1260 return offsetIReg( sz, reg, toBool(sz == 1 && !haveREX(pfx)) );
1264 IRExpr* getIRegG ( Int sz, Prefix pfx, UChar mod_reg_rm )
1269 IRExpr_Get( offsetIRegG( sz, pfx, mod_reg_rm ),
1272 return IRExpr_Get( offsetIRegG( sz, pfx, mod_reg_rm ),
1278 void putIRegG ( Int sz, Prefix pfx, UChar mod_reg_rm, IRExpr* e )
1284 stmt( IRStmt_Put( offsetIRegG( sz, pfx, mod_reg_rm ), e ) );
1288 const HChar* nameIRegG ( Int sz, Prefix pfx, UChar mod_reg_rm )
1290 return nameIReg( sz, gregOfRexRM(pfx,mod_reg_rm),
1291 toBool(sz==1 && !haveREX(pfx)) );
1296 IRExpr* getIRegV ( Int sz, Prefix pfx )
1301 IRExpr_Get( offsetIReg( sz, getVexNvvvv(pfx), False ),
1304 return IRExpr_Get( offsetIReg( sz, getVexNvvvv(pfx), False ),
1310 void putIRegV ( Int sz, Prefix pfx, IRExpr* e )
1316 stmt( IRStmt_Put( offsetIReg( sz, getVexNvvvv(pfx), False ), e ) );
1320 const HChar* nameIRegV ( Int sz, Prefix pfx )
1322 return nameIReg( sz, getVexNvvvv(pfx), False );
1332 static UInt offsetIRegE ( Int sz, Prefix pfx, UChar mod_reg_rm )
1336 vassert(IS_VALID_PFX(pfx));
1338 reg = eregOfRexRM( pfx, mod_reg_rm );
1339 return offsetIReg( sz, reg, toBool(sz == 1 && !haveREX(pfx)) );
1343 IRExpr* getIRegE ( Int sz, Prefix pfx, UChar mod_reg_rm )
1348 IRExpr_Get( offsetIRegE( sz, pfx, mod_reg_rm ),
1351 return IRExpr_Get( offsetIRegE( sz, pfx, mod_reg_rm ),
1357 void putIRegE ( Int sz, Prefix pfx, UChar mod_reg_rm, IRExpr* e )
1363 stmt( IRStmt_Put( offsetIRegE( sz, pfx, mod_reg_rm ), e ) );
1367 const HChar* nameIRegE ( Int sz, Prefix pfx, UChar mod_reg_rm )
1369 return nameIReg( sz, eregOfRexRM(pfx,mod_reg_rm),
1370 toBool(sz==1 && !haveREX(pfx)) );
2306 const HChar* segRegTxt ( Prefix pfx )
2308 if (pfx & PFX_CS) return "%cs:";
2309 if (pfx & PFX_DS) return "%ds:";
2310 if (pfx & PFX_ES) return "%es:";
2311 if (pfx & PFX_FS) return "%fs:";
2312 if (pfx & PFX_GS) return "%gs:";
2313 if (pfx & PFX_SS) return "%ss:";
2324 Prefix pfx, IRExpr* virtual )
2327 if (pfx & PFX_FS) {
2339 if (pfx & PFX_GS) {
2354 if (haveASO(pfx))
2448 VexAbiInfo* vbi, Prefix pfx, Long delta,
2472 DIS(buf, "%s(%s)", segRegTxt(pfx), nameIRegRexB(8,pfx,rm));
2475 handleAddrOverrides(vbi, pfx, getIRegRexB(8,pfx,rm)));
2486 DIS(buf, "%s(%s)", segRegTxt(pfx), nameIRegRexB(8,pfx,rm));
2488 DIS(buf, "%s%lld(%s)", segRegTxt(pfx), d, nameIRegRexB(8,pfx,rm));
2492 handleAddrOverrides(vbi, pfx,
2493 binop(Iop_Add64,getIRegRexB(8,pfx,rm),mkU64(d))));
2503 DIS(buf, "%s%lld(%s)", segRegTxt(pfx), d, nameIRegRexB(8,pfx,rm));
2506 handleAddrOverrides(vbi, pfx,
2507 binop(Iop_Add64,getIRegRexB(8,pfx,rm),mkU64(d))));
2521 DIS(buf, "%s%lld(%%rip)", segRegTxt(pfx), d);
2531 handleAddrOverrides(vbi, pfx,
2559 Bool index_is_SP = toBool(index_r == R_RSP && 0==getRexX(pfx));
2564 DIS(buf, "%s(%s,%s)", segRegTxt(pfx),
2565 nameIRegRexB(8,pfx,base_r),
2566 nameIReg64rexX(pfx,index_r));
2568 DIS(buf, "%s(%s,%s,%d)", segRegTxt(pfx),
2569 nameIRegRexB(8,pfx,base_r),
2570 nameIReg64rexX(pfx,index_r), 1<<scale);
2575 handleAddrOverrides(vbi, pfx,
2577 getIRegRexB(8,pfx,base_r),
2578 binop(Iop_Shl64, getIReg64rexX(pfx,index_r),
2584 DIS(buf, "%s%lld(,%s,%d)", segRegTxt(pfx), d,
2585 nameIReg64rexX(pfx,index_r), 1<<scale);
2589 handleAddrOverrides(vbi, pfx,
2591 binop(Iop_Shl64, getIReg64rexX(pfx,index_r),
2597 DIS(buf, "%s(%s)", segRegTxt(pfx), nameIRegRexB(8,pfx,base_r));
2600 handleAddrOverrides(vbi, pfx, getIRegRexB(8,pfx,base_r)));
2605 DIS(buf, "%s%lld", segRegTxt(pfx), d);
2608 handleAddrOverrides(vbi, pfx, mkU64(d)));
2630 if (index_r == R_RSP && 0==getRexX(pfx)) {
2631 DIS(buf, "%s%lld(%s)", segRegTxt(pfx),
2632 d, nameIRegRexB(8,pfx,base_r));
2635 handleAddrOverrides(vbi, pfx,
2636 binop(Iop_Add64, getIRegRexB(8,pfx,base_r), mkU64(d)) ));
2639 DIS(buf, "%s%lld(%s,%s)", segRegTxt(pfx), d,
2640 nameIRegRexB(8,pfx,base_r),
2641 nameIReg64rexX(pfx,index_r));
2643 DIS(buf, "%s%lld(%s,%s,%d)", segRegTxt(pfx), d,
2644 nameIRegRexB(8,pfx,base_r),
2645 nameIReg64rexX(pfx,index_r), 1<<scale);
2650 handleAddrOverrides(vbi, pfx,
2653 getIRegRexB(8,pfx,base_r),
2655 getIReg64rexX(pfx,index_r), mkU8(scale))),
2677 if (index_r == R_RSP && 0==getRexX(pfx)) {
2678 DIS(buf, "%s%lld(%s)", segRegTxt(pfx),
2679 d, nameIRegRexB(8,pfx,base_r));
2682 handleAddrOverrides(vbi, pfx,
2683 binop(Iop_Add64, getIRegRexB(8,pfx,base_r), mkU64(d)) ));
2686 DIS(buf, "%s%lld(%s,%s)", segRegTxt(pfx), d,
2687 nameIRegRexB(8,pfx,base_r),
2688 nameIReg64rexX(pfx,index_r));
2690 DIS(buf, "%s%lld(%s,%s,%d)", segRegTxt(pfx), d,
2691 nameIRegRexB(8,pfx,base_r),
2692 nameIReg64rexX(pfx,index_r), 1<<scale);
2697 handleAddrOverrides(vbi, pfx,
2700 getIRegRexB(8,pfx,base_r),
2702 getIReg64rexX(pfx,index_r), mkU8(scale))),
2720 VexAbiInfo* vbi, Prefix pfx, Long delta,
2744 *rI = index_r | (getRexX(pfx) << 3);
2757 DIS(buf, "%s%lld(,%s)", segRegTxt(pfx), d, vindex);
2759 DIS(buf, "%s%lld(,%s,%d)", segRegTxt(pfx), d, vindex, 1<<scale);
2764 DIS(buf, "%s(%s,%s)", segRegTxt(pfx),
2765 nameIRegRexB(8,pfx,base_r), vindex);
2767 DIS(buf, "%s(%s,%s,%d)", segRegTxt(pfx),
2768 nameIRegRexB(8,pfx,base_r), vindex, 1<<scale);
2781 DIS(buf, "%s%lld(%s,%s)", segRegTxt(pfx), d,
2782 nameIRegRexB(8,pfx,base_r), vindex);
2784 DIS(buf, "%s%lld(%s,%s,%d)", segRegTxt(pfx), d,
2785 nameIRegRexB(8,pfx,base_r), vindex, 1<<scale);
2791 return disAMode_copy2tmp( getIRegRexB(8,pfx,base_r) );
2792 return disAMode_copy2tmp( binop(Iop_Add64, getIRegRexB(8,pfx,base_r),
2801 static UInt lengthAMode ( Prefix pfx, Long delta )
2909 Prefix pfx,
2939 && offsetIRegG(size,pfx,rm) == offsetIRegE(size,pfx,rm)) {
2942 putIRegG(size,pfx,rm, mkU(ty,0));
2945 assign( dst0, getIRegG(size,pfx,rm) );
2946 assign( src, getIRegE(size,pfx,rm) );
2951 putIRegG(size, pfx, rm, mkexpr(dst1));
2956 putIRegG(size, pfx, rm, mkexpr(dst1));
2964 putIRegG(size, pfx, rm, mkexpr(dst1));
2968 nameIRegE(size,pfx,rm),
2969 nameIRegG(size,pfx,rm));
2973 addr = disAMode ( &len, vbi, pfx, delta0, dis_buf, 0 );
2974 assign( dst0, getIRegG(size,pfx,rm) );
2980 putIRegG(size, pfx, rm, mkexpr(dst1));
2985 putIRegG(size, pfx, rm, mkexpr(dst1));
2993 putIRegG(size, pfx, rm, mkexpr(dst1));
2997 dis_buf, nameIRegG(size, pfx, rm));
3025 Prefix pfx,
3055 && offsetIRegG(size,pfx,rm) == offsetIRegE(size,pfx,rm)) {
3056 putIRegE(size,pfx,rm, mkU(ty,0));
3059 assign(dst0, getIRegE(size,pfx,rm));
3060 assign(src, getIRegG(size,pfx,rm));
3065 putIRegE(size, pfx, rm, mkexpr(dst1));
3070 putIRegE(size, pfx, rm, mkexpr(dst1));
3078 putIRegE(size, pfx, rm, mkexpr(dst1));
3082 nameIRegG(size,pfx,rm),
3083 nameIRegE(size,pfx,rm));
3089 addr = disAMode ( &len, vbi, pfx, delta0, dis_buf, 0 );
3091 assign(src, getIRegG(size,pfx,rm));
3094 if (haveLOCK(pfx)) {
3105 if (haveLOCK(pfx)) {
3117 if (haveLOCK(pfx)) {
3134 nameIRegG(size,pfx,rm), dis_buf);
3158 Prefix pfx,
3167 putIRegG(size, pfx, rm, getIRegE(size, pfx, rm));
3169 nameIRegE(size,pfx,rm),
3170 nameIRegG(size,pfx,rm));
3176 IRTemp addr = disAMode ( &len, vbi, pfx, delta0, dis_buf, 0 );
3177 putIRegG(size, pfx, rm, loadLE(szToITy(size), mkexpr(addr)));
3180 nameIRegG(size,pfx,rm));
3205 Prefix pfx,
3217 if (haveF2orF3(pfx)) { *ok = False; return delta0; }
3218 putIRegE(size, pfx, rm, getIRegG(size, pfx, rm));
3220 nameIRegG(size,pfx,rm),
3221 nameIRegE(size,pfx,rm));
3227 if (haveF2(pfx)) { *ok = False; return delta0; }
3229 IRTemp addr = disAMode ( &len, vbi, pfx, delta0, dis_buf, 0 );
3230 storeLE( mkexpr(addr), getIRegG(size, pfx, rm) );
3232 nameIRegG(size,pfx,rm),
3292 Prefix pfx,
3297 putIRegG(szd, pfx, rm,
3300 getIRegE(szs,pfx,rm)));
3304 nameIRegE(szs,pfx,rm),
3305 nameIRegG(szd,pfx,rm));
3313 IRTemp addr = disAMode ( &len, vbi, pfx, delta, dis_buf, 0 );
3314 putIRegG(szd, pfx, rm,
3322 nameIRegG(szd,pfx,rm));
3396 Prefix pfx,
3423 assign(dst0, getIRegE(sz,pfx,modrm));
3442 putIRegE(sz, pfx, modrm, mkexpr(dst1));
3447 nameIRegE(sz,pfx,modrm));
3449 addr = disAMode ( &len, vbi, pfx, delta, dis_buf, /*xtra*/d_sz );
3455 if (haveLOCK(pfx)) {
3466 if (haveLOCK(pfx)) {
3478 if (haveLOCK(pfx)) {
3506 Prefix pfx,
3526 assign(dst0, getIRegE(sz, pfx, modrm));
3529 addr = disAMode ( &len, vbi, pfx, delta, dis_buf, /*xtra*/d_sz );
3751 putIRegE(sz, pfx, modrm, mkexpr(dst1));
3759 vex_printf(", %s\n", nameIRegE(sz,pfx,modrm));
3780 Prefix pfx,
3801 if (haveF2orF3(pfx)) {
3808 if (haveF2orF3(pfx)) {
3809 if (haveF2andF3(pfx) || !haveLOCK(pfx)) {
3843 assign( t2, widenUto64(getIRegE(sz, pfx, modrm)) );
3847 src_val, nameIRegE(sz,pfx,modrm));
3850 t_addr = disAMode ( &len, vbi, pfx, delta, dis_buf, 1 );
3879 putIRegE(sz, pfx, modrm, narrowTo(ty, mkexpr(t2m)));
3881 if (haveLOCK(pfx)) {
3990 Prefix pfx, Int sz, Long delta, Bool* decode_OK )
4004 if (haveF2orF3(pfx)) goto unhandled;
4012 getIRegE(sz,pfx,modrm),
4017 nameIRegE(sz, pfx, modrm));
4025 putIRegE(sz, pfx, modrm,
4027 getIRegE(sz, pfx, modrm)));
4029 nameIRegE(sz, pfx, modrm));
4037 assign(src, getIRegE(sz, pfx, modrm));
4041 putIRegE(sz, pfx, modrm, mkexpr(dst1));
4042 DIP("neg%c %s\n", nameISize(sz), nameIRegE(sz, pfx, modrm));
4047 assign(src, getIRegE(sz,pfx,modrm));
4049 nameIRegE(sz,pfx,modrm) );
4054 assign(src, getIRegE(sz,pfx,modrm));
4056 nameIRegE(sz,pfx,modrm) );
4060 assign( t1, getIRegE(sz, pfx, modrm) );
4063 nameIRegE(sz, pfx, modrm));
4067 assign( t1, getIRegE(sz, pfx, modrm) );
4070 nameIRegE(sz, pfx, modrm));
4078 Bool validF2orF3 = haveF2orF3(pfx) ? False : True;
4080 && haveF2orF3(pfx) && !haveF2andF3(pfx) && haveLOCK(pfx)) {
4085 addr = disAMode ( &len, vbi, pfx, delta, dis_buf,
4113 if (haveLOCK(pfx)) {
4129 if (haveLOCK(pfx)) {
4168 Prefix pfx, Long delta, Bool* decode_OK )
4182 if (haveF2orF3(pfx)) goto unhandled;
4183 assign(t1, getIRegE(1, pfx, modrm));
4187 putIRegE(1, pfx, modrm, mkexpr(t2));
4192 putIRegE(1, pfx, modrm, mkexpr(t2));
4201 nameIRegE(1, pfx, modrm));
4204 Bool validF2orF3 = haveF2orF3(pfx) ? False : True;
4206 && haveF2orF3(pfx) && !haveF2andF3(pfx) && haveLOCK(pfx)) {
4211 IRTemp addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
4216 if (haveLOCK(pfx)) {
4226 if (haveLOCK(pfx)) {
4252 Prefix pfx, Int sz, Long delta,
4271 if (haveF2orF3(pfx)
4272 && ! (haveF2(pfx)
4275 assign(t1, getIRegE(sz,pfx,modrm));
4282 putIRegE(sz,pfx,modrm, mkexpr(t2));
4289 putIRegE(sz,pfx,modrm, mkexpr(t2));
4294 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
4297 assign(t3, getIRegE(sz,pfx,modrm));
4310 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
4313 assign(t3, getIRegE(sz,pfx,modrm));
4324 assign(t3, getIRegE(sz,pfx,modrm));
4341 nameIRegE(sz, pfx, modrm));
4344 Bool validF2orF3 = haveF2orF3(pfx) ? False : True;
4346 && haveF2orF3(pfx) && !haveF2andF3(pfx) && haveLOCK(pfx)) {
4349 && (haveF2(pfx) && !haveF3(pfx))) {
4354 addr = disAMode ( &len, vbi, pfx, delta, dis_buf, 0 );
4364 if (haveLOCK(pfx)) {
4376 if (haveLOCK(pfx)) {
4387 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
4403 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
4463 void dis_string_op( void (*dis_OP)( Int, IRTemp, Prefix pfx ),
4464 Int sz, const HChar* name, Prefix pfx )
4469 vassert(pfx == clearSegBits(pfx));
4471 dis_OP( sz, t_inc, pfx );
4476 void dis_MOVS ( Int sz, IRTemp t_inc, Prefix pfx )
4483 if (haveASO(pfx)) {
4495 if (haveASO(pfx)) {
4504 void dis_LODS ( Int sz, IRTemp t_inc, Prefix pfx )
4510 if (haveASO(pfx))
4518 if (haveASO(pfx))
4524 void dis_STOS ( Int sz, IRTemp t_inc, Prefix pfx )
4533 if (haveASO(pfx))
4541 if (haveASO(pfx))
4547 void dis_CMPS ( Int sz, IRTemp t_inc, Prefix pfx )
4556 if (haveASO(pfx)) {
4572 if (haveASO(pfx)) {
4581 void dis_SCAS ( Int sz, IRTemp t_inc, Prefix pfx )
4591 if (haveASO(pfx))
4601 if (haveASO(pfx))
4615 Prefix pfx )
4623 vassert(pfx == clearSegBits(pfx));
4625 if (haveASO(pfx)) {
4638 if (haveASO(pfx))
4644 dis_OP (sz, t_inc, pfx);
4668 Prefix pfx,
4680 assign( tg, getIRegG(size, pfx, rm) );
4682 assign( te, getIRegE(size, pfx, rm) );
4684 IRTemp addr = disAMode( &alen, vbi, pfx, delta0, dis_buf, 0 );
4692 putIRegG(size, pfx, rm, mkexpr(resLo) );
4696 nameIRegE(size,pfx,rm),
4697 nameIRegG(size,pfx,rm));
4702 nameIRegG(size,pfx,rm));
4711 Prefix pfx,
4728 assign(te, getIRegE(size, pfx, rm));
4731 IRTemp addr = disAMode( &alen, vbi, pfx, delta, dis_buf,
4746 putIRegG(size, pfx, rm, mkexpr(resLo));
4750 ( epartIsReg(rm) ? nameIRegE(size,pfx,rm) : dis_buf ),
4751 nameIRegG(size,pfx,rm) );
5337 VexAbiInfo* vbi, Prefix pfx, Long delta )
5356 IRTemp addr = disAMode( &len, vbi, pfx, delta, dis_buf, 0 );
5499 IRTemp addr = disAMode( &len, vbi, pfx, delta, dis_buf, 0 );
6028 IRTemp addr = disAMode( &len, vbi, pfx, delta, dis_buf, 0 );
6156 IRTemp addr = disAMode( &len, vbi, pfx, delta, dis_buf, 0 );
6368 IRTemp addr = disAMode( &len, vbi, pfx, delta, dis_buf, 0 );
6477 IRTemp addr = disAMode( &len, vbi, pfx, delta, dis_buf, 0 );
6510 if ( have66(pfx) ) {
6581 if ( have66(pfx) ) {
6591 if ( have66(pfx) ) {
6646 if ( have66(pfx) ) {
6740 IRTemp addr = disAMode( &len, vbi, pfx, delta, dis_buf, 0 );
6860 IRTemp addr = disAMode( &len, vbi, pfx, delta, dis_buf, 0 );
7037 Prefix pfx,
7143 IRTemp addr = disAMode( &len, vbi, pfx, delta, dis_buf, 0 );
7187 Prefix pfx, Long delta,
7207 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
7319 VexAbiInfo* vbi, Prefix pfx, Int sz, Long delta )
7342 getIReg32(eregOfRexRM(pfx
7344 nameIReg32(eregOfRexRM(pfx,modrm)),
7347 IRTemp addr = disAMode( &len, vbi, pfx, delta, dis_buf, 0 );
7364 getIReg64(eregOfRexRM(pfx,modrm)) );
7366 nameIReg64(eregOfRexRM(pfx,modrm)),
7369 IRTemp addr = disAMode( &len, vbi, pfx, delta, dis_buf, 0 );
7387 putIReg32( eregOfRexRM(pfx,modrm),
7391 nameIReg32(eregOfRexRM(pfx,modrm)));
7393 IRTemp addr = disAMode( &len, vbi, pfx, delta, dis_buf, 0 );
7406 putIReg64( eregOfRexRM(pfx,modrm),
7410 nameIReg64(eregOfRexRM(pfx,modrm)));
7412 IRTemp addr = disAMode( &len, vbi, pfx, delta, dis_buf, 0 );
7426 && /*ignore redundant REX.W*/!(sz==8 && haveNo66noF2noF3(pfx)))
7436 IRTemp addr = disAMode( &len, vbi, pfx, delta, dis_buf, 0 );
7447 && /*ignore redundant REX.W*/!(sz==8 && haveNo66noF2noF3(pfx)))
7457 IRTemp addr = disAMode( &len, vbi, pfx, delta, dis_buf, 0 );
7470 delta = dis_MMXop_regmem_to_reg ( vbi, pfx, delta, opc, "padd", True );
7476 && /*ignore redundant REX.W*/!(sz==8 && haveNo66noF2noF3(pfx)))
7478 delta = dis_MMXop_regmem_to_reg ( vbi, pfx, delta, opc, "padds", True );
7485 delta = dis_MMXop_regmem_to_reg ( vbi, pfx, delta, opc, "paddus", True );
7493 delta = dis_MMXop_regmem_to_reg ( vbi, pfx, delta, opc, "psub", True );
7500 delta = dis_MMXop_regmem_to_reg ( vbi, pfx, delta, opc, "psubs", True );
7507 delta = dis_MMXop_regmem_to_reg ( vbi, pfx, delta, opc, "psubus", True );
7513 delta = dis_MMXop_regmem_to_reg ( vbi, pfx, delta, opc, "pmulhw", False );
7519 delta = dis_MMXop_regmem_to_reg ( vbi, pfx, delta, opc, "pmullw", False );
7524 delta = dis_MMXop_regmem_to_reg ( vbi, pfx, delta, opc, "pmaddwd", False );
7532 delta = dis_MMXop_regmem_to_reg ( vbi, pfx, delta, opc, "pcmpeq", True );
7540 delta = dis_MMXop_regmem_to_reg ( vbi, pfx, delta, opc, "pcmpgt", True );
7546 delta = dis_MMXop_regmem_to_reg ( vbi, pfx, delta, opc, "packssdw", False );
7552 delta = dis_MMXop_regmem_to_reg ( vbi, pfx, delta, opc, "packsswb", False );
7558 delta = dis_MMXop_regmem_to_reg ( vbi, pfx, delta, opc, "packuswb", False );
7565 && /*ignore redundant REX.W*/!(sz==8 && haveNo66noF2noF3(pfx)))
7567 delta = dis_MMXop_regmem_to_reg ( vbi, pfx, delta, opc, "punpckh", True );
7574 && /*ignore redundant REX.W*/!(sz==8 && haveNo66noF2noF3(pfx)))
7576 delta = dis_MMXop_regmem_to_reg ( vbi, pfx, delta, opc, "punpckl", True );
7582 delta = dis_MMXop_regmem_to_reg ( vbi, pfx, delta, opc, "pand", False );
7588 delta = dis_MMXop_regmem_to_reg ( vbi, pfx, delta, opc, "pandn", False );
7594 delta = dis_MMXop_regmem_to_reg ( vbi, pfx, delta, opc, "por", False );
7600 delta = dis_MMXop_regmem_to_reg ( vbi, pfx, delta, opc, "pxor", False );
7604 delta = dis_MMX_shiftG_byE(vbi, pfx, delta, _name, _op); \
7675 assign( addr, handleAddrOverrides( vbi, pfx, getIReg64(R_RDI) ));
7757 Prefix pfx,
7799 assign( gsrc, getIRegG(sz, pfx, modrm) );
7803 assign( esrc, getIRegE(sz, pfx, modrm) );
7807 nameIRegG(sz, pfx, modrm), nameIRegE(sz, pfx, modrm));
7809 addr = disAMode ( &len, vbi, pfx, delta, dis_buf,
7817 nameIRegG(sz, pfx, modrm), dis_buf);
7913 putIRegE(sz, pfx, modrm, mkexpr(resTy));
7942 Prefix pfx, Int sz, Long delta, BtOp op,
7968 if (haveF2orF3(pfx)) {
7975 if (haveF2orF3(pfx)) {
7976 if (haveF2andF3(pfx) || !haveLOCK(pfx) || op == BtOpNone) {
7983 assign( t_bitno0, widenSto64(getIRegG(sz, pfx, modrm)) );
8008 storeLE( mkexpr(t_rsp), getIRegE(sz, pfx, modrm) );
8020 t_addr0 = disAMode ( &len, vbi, pfx, delta, dis_buf, 0 );
8071 if ((haveLOCK(pfx)) && !epartIsReg(modrm)) {
8103 putIRegE(sz, pfx, modrm, loadLE(szToITy(sz), mkexpr(t_rsp)) );
8108 nameBtOp(op), nameISize(sz), nameIRegG(sz, pfx, modrm),
8109 ( epartIsReg(modrm) ? nameIRegE(sz, pfx, modrm) : dis_buf ) );
8119 Prefix pfx, Int sz, Long delta, Bool fwds )
8138 assign( src, getIRegE(sz, pfx, modrm) );
8141 IRTemp addr = disAMode( &len, vbi, pfx, delta, dis_buf, 0 );
8148 ( isReg ? nameIRegE(sz, pfx, modrm) : dis_buf ),
8149 nameIRegG(sz, pfx, modrm));
8215 widenUto64( getIRegG( sz, pfx, modrm ) )
8228 putIRegG( sz, pfx, modrm, mkexpr(dst) );
8236 void codegen_xchg_rAX_Reg ( Prefix pfx, Int sz, UInt regLo3 )
8245 assign( t2, getIRegRexB(8, pfx, regLo3) );
8247 putIRegRexB(8, pfx, regLo3, mkexpr(t1) );
8250 assign( t2, getIRegRexB(4, pfx, regLo3) );
8252 putIRegRexB(4, pfx, regLo3, mkexpr(t1) );
8255 assign( t2, getIRegRexB(2, pfx, regLo3) );
8257 putIRegRexB(2, pfx, regLo3, mkexpr(t1) );
8261 nameIRegRexB(sz,pfx, regLo3));
8320 Prefix pfx,
8352 if (haveF2orF3(pfx)) {
8357 if (haveF2orF3(pfx)) {
8358 if (haveF2andF3(pfx) || !haveLOCK(pfx)) {
8367 assign( dest, getIRegE(size, pfx, rm) );
8369 assign( src, getIRegG(size, pfx, rm) );
8376 putIRegE(size, pfx, rm, mkexpr(dest2));
8378 nameIRegG(size,pfx,rm),
8379 nameIRegE(size,pfx,rm) );
8381 else if (!epartIsReg(rm) && !haveLOCK(pfx)) {
8383 addr = disAMode ( &len, vbi, pfx, delta0, dis_buf, 0 );
8386 assign( src, getIRegG(size, pfx, rm) );
8395 nameIRegG(size,pfx,rm), dis_buf);
8397 else if (!epartIsReg(rm) && haveLOCK(pfx)) {
8403 addr = disAMode ( &len, vbi, pfx, delta0, dis_buf, 0 );
8405 assign( src, getIRegG(size, pfx, rm) );
8416 nameIRegG(size,pfx,rm), dis_buf);
8444 Prefix pfx,
8458 assign( tmps, getIRegE(sz, pfx, rm) );
8459 assign( tmpd, getIRegG(sz, pfx, rm) );
8461 putIRegG( sz, pfx, rm,
8467 nameIRegE(sz,pfx,rm),
8468 nameIRegG(sz,pfx,rm));
8474 IRTemp addr = disAMode ( &len, vbi, pfx, delta0, dis_buf, 0 );
8476 assign( tmpd, getIRegG(sz, pfx, rm) );
8478 putIRegG( sz, pfx, rm,
8486 nameIRegG(sz,pfx,rm));
8495 Prefix pfx, Int sz, Long delta0 )
8519 assign( tmpd, getIRegE(sz, pfx, rm) );
8520 assign( tmpt0, getIRegG(sz, pfx, rm) );
8524 putIRegG(sz, pfx, rm, mkexpr(tmpd));
8525 putIRegE(sz, pfx, rm, mkexpr(tmpt1));
8527 nameISize(sz), nameIRegG(sz,pfx,rm), nameIRegE(sz,pfx,rm));
8531 else if (!epartIsReg(rm) && !haveLOCK(pfx)) {
8533 IRTemp addr = disAMode ( &len, vbi, pfx, delta0, dis_buf, 0 );
8535 assign( tmpt0, getIRegG(sz, pfx, rm) );
8540 putIRegG(sz, pfx, rm, mkexpr(tmpd));
8542 nameISize(sz), nameIRegG(sz,pfx,rm), dis_buf);
8546 else if (!epartIsReg(rm) && haveLOCK(pfx)) {
8548 IRTemp addr = disAMode ( &len, vbi, pfx, delta0, dis_buf, 0 );
8550 assign( tmpt0, getIRegG(sz, pfx, rm) );
8556 putIRegG(sz, pfx, rm, mkexpr(tmpd));
8558 nameISize(sz), nameIRegG(sz,pfx,rm), dis_buf);
8702 Prefix pfx, Long delta,
8713 = invertG ? unop(Iop_NotV128, getXMMReg(gregOfRexRM(pfx,rm)))
8714 : getXMMReg(gregOfRexRM(pfx,rm));
8717 gregOfRexRM(pfx,rm),
8721 getXMMReg(eregOfRexRM(pfx,rm)))
8723 getXMMReg(eregOfRexRM(pfx,rm)))
8726 nameXMMReg(eregOfRexRM(pfx,rm)),
8727 nameXMMReg(gregOfRexRM(pfx,rm)) );
8730 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
8732 gregOfRexRM(pfx,rm),
8742 nameXMMReg(gregOfRexRM(pfx,rm)) );
8752 Prefix pfx, Long delta,
8755 return dis_SSE_E_to_G_all_wrk( vbi, pfx, delta, opname, op, False );
8762 Prefix pfx, Long delta,
8765 return dis_SSE_E_to_G_all_wrk( vbi, pfx, delta, opname, op, True );
8772 Prefix pfx, Long delta,
8779 IRExpr* gpart = getXMMReg(gregOfRexRM(pfx,rm));
8781 putXMMReg( gregOfRexRM(pfx,rm),
8783 getXMMReg(eregOfRexRM(pfx,rm))) );
8785 pfx,rm)),
8786 nameXMMReg(gregOfRexRM(pfx,rm)) );
8792 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
8795 putXMMReg( gregOfRexRM(pfx,rm),
8799 nameXMMReg(gregOfRexRM(pfx,rm)) );
8808 Prefix pfx, Long delta,
8815 IRExpr* gpart = getXMMReg(gregOfRexRM(pfx,rm));
8817 putXMMReg( gregOfRexRM(pfx,rm),
8819 getXMMReg(eregOfRexRM(pfx,rm))) );
8821 nameXMMReg(eregOfRexRM(pfx,rm)),
8822 nameXMMReg(gregOfRexRM(pfx,rm)) );
8828 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
8831 putXMMReg( gregOfRexRM(pfx,rm),
8835 nameXMMReg(gregOfRexRM(pfx,rm)) );
8845 Prefix pfx, Long delta,
8854 putXMMReg( gregOfRexRM(pfx,rm),
8855 unop(op, getXMMReg(eregOfRexRM(pfx,rm))) );
8857 nameXMMReg(eregOfRexRM(pfx,rm)),
8858 nameXMMReg(gregOfRexRM(pfx,rm)) );
8861 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
8862 putXMMReg( gregOfRexRM(pfx,rm),
8866 nameXMMReg(gregOfRexRM(pfx,rm)) );
8876 Prefix pfx, Long delta,
8889 assign( oldG0, getXMMReg(gregOfRexRM(pfx,rm)) );
8895 getXMMRegLane32(eregOfRexRM(pfx,rm), 0)) );
8896 putXMMReg( gregOfRexRM(pfx,rm), unop(op, mkexpr(oldG1)) );
8898 nameXMMReg(eregOfRexRM(pfx,rm)),
8899 nameXMMReg(gregOfRexRM(pfx,rm)) );
8902 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
8907 putXMMReg( gregOfRexRM(pfx,rm), unop(op, mkexpr(oldG1)) );
8910 nameXMMReg(gregOfRexRM(pfx,rm)) );
8920 Prefix pfx, Long delta,
8933 assign( oldG0, getXMMReg(gregOfRexRM(pfx,rm)) );
8939 getXMMRegLane64(eregOfRexRM(pfx,rm), 0)) );
8940 putXMMReg( gregOfRexRM(pfx,rm), unop(op, mkexpr(oldG1)) );
8942 nameXMMReg(eregOfRexRM(pfx,rm)),
8943 nameXMMReg(gregOfRexRM(pfx,rm)) );
8946 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
8951 putXMMReg( gregOfRexRM(pfx,rm), unop(op, mkexpr(oldG1)) );
8954 nameXMMReg(gregOfRexRM(pfx,rm)) );
8966 Prefix pfx, Long delta,
8975 IRExpr* gpart = getXMMReg(gregOfRexRM(pfx,rm));
8978 epart = getXMMReg(eregOfRexRM(pfx,rm));
8980 nameXMMReg(eregOfRexRM(pfx,rm)),
8981 nameXMMReg(gregOfRexRM(pfx,rm)) );
8984 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
8988 nameXMMReg(gregOfRexRM(pfx,rm)) );
8991 putXMMReg( gregOfRexRM(pfx,rm),
9121 Prefix pfx, Long delta,
9142 assign( plain, binop(op, getXMMReg(gregOfRexRM(pfx,rm)),
9143 getXMMReg(eregOfRexRM(pfx,rm))) );
9147 nameXMMReg(eregOfRexRM(pfx,rm)),
9148 nameXMMReg(gregOfRexRM(pfx,rm)) );
9150 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 1 );
9159 getXMMReg(gregOfRexRM(pfx,rm)),
9172 nameXMMReg(gregOfRexRM(pfx,rm)) );
9176 putXMMReg( gregOfRexRM(pfx,rm),
9182 putXMMReg( gregOfRexRM(pfx,rm),
9186 putXMMReg( gregOfRexRM(pfx,rm), mkexpr(plain) );
9197 Prefix pfx, Long delta,
9210 assign( amt, getXMMRegLane64(eregOfRexRM(pfx,rm), 0) );
9212 nameXMMReg(eregOfRexRM(pfx,rm)),
9213 nameXMMReg(gregOfRexRM(pfx,rm)) );
9216 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
9220 nameXMMReg(gregOfRexRM(pfx,rm)) );
9223 assign( g0, getXMMReg(gregOfRexRM(pfx,rm)) );
9263 putXMMReg( gregOfRexRM(pfx,rm), mkexpr(g1) );
9271 ULong dis_SSE_shiftE_imm ( Prefix pfx,
9286 nameXMMReg(eregOfRexRM(pfx,rm)) );
9287 assign( e0, getXMMReg(eregOfRexRM(pfx,rm)) );
9318 putXMMReg( eregOfRexRM(pfx,rm), mkexpr(e1) );
9948 static Long dis_COMISD ( VexAbiInfo* vbi, Prefix pfx,
9959 assign( argR, getXMMRegLane64F( eregOfRexRM(pfx,modrm),
9964 nameXMMReg(eregOfRexRM(pfx,modrm)),
9965 nameXMMReg(gregOfRexRM(pfx,modrm)) );
9967 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
9973 nameXMMReg(gregOfRexRM(pfx,modrm)) );
9975 assign( argL, getXMMRegLane64F( gregOfRexRM(pfx,modrm),
9991 static Long dis_COMISS ( VexAbiInfo* vbi, Prefix pfx,
10002 assign( argR, getXMMRegLane32F( eregOfRexRM(pfx,modrm),
10007 nameXMMReg(eregOfRexRM(pfx,modrm)),
10008 nameXMMReg(gregOfRexRM(pfx,modrm)) );
10010 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
10016 nameXMMReg(gregOfRexRM(pfx,modrm)) );
10018 assign( argL, getXMMRegLane32F( gregOfRexRM(pfx,modrm),
10036 static Long dis_PSHUFD_32x4 ( VexAbiInfo* vbi, Prefix pfx,
10047 assign( sV, getXMMReg(eregOfRexRM(pfx,modrm)) );
10051 nameXMMReg(eregOfRexRM(pfx,modrm)),
10052 nameXMMReg(gregOfRexRM(pfx,modrm)));
10054 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf,
10061 nameXMMReg(gregOfRexRM(pfx,modrm)));
10077 (gregOfRexRM(pfx,modrm), mkexpr(dV));
10082 static Long dis_PSHUFD_32x8 ( VexAbiInfo* vbi, Prefix pfx, Long delta )
10090 UInt rG = gregOfRexRM(pfx,modrm);
10092 UInt rE = eregOfRexRM(pfx,modrm);
10098 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf,
10217 static Long dis_CVTxSD2SI ( VexAbiInfo* vbi, Prefix pfx,
10231 assign(f64lo, getXMMRegLane64F(eregOfRexRM(pfx,modrm), 0));
10233 nameXMMReg(eregOfRexRM(pfx,modrm)),
10234 nameIReg(sz, gregOfRexRM(pfx,modrm),
10237 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
10242 nameIReg(sz, gregOfRexRM(pfx,modrm),
10253 putIReg32( gregOfRexRM(pfx,modrm),
10257 putIReg64( gregOfRexRM(pfx,modrm),
10265 static Long dis_CVTxSS2SI ( VexAbiInfo* vbi, Prefix pfx,
10279 assign(f32lo, getXMMRegLane32F(eregOfRexRM(pfx,modrm), 0));
10281 nameXMMReg(eregOfRexRM(pfx,modrm)),
10282 nameIReg(sz, gregOfRexRM(pfx,modrm),
10285 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
10290 nameIReg(sz, gregOfRexRM(pfx,modrm),
10301 putIReg32( gregOfRexRM(pfx,modrm),
10307 putIReg64( gregOfRexRM(pfx,modrm),
10317 static Long dis_CVTPS2PD_128 ( VexAbiInfo* vbi, Prefix pfx,
10326 UInt rG = gregOfRexRM(pfx,modrm);
10328 UInt rE = eregOfRexRM(pfx,modrm);
10335 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
10352 static Long dis_CVTPS2PD_256 ( VexAbiInfo* vbi, Prefix pfx,
10363 UInt rG = gregOfRexRM(pfx,modrm);
10365 UInt rE = eregOfRexRM(pfx,modrm);
10373 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
10393 static Long dis_CVTPD2PS_128 ( VexAbiInfo* vbi, Prefix pfx,
10400 UInt rG = gregOfRexRM(pfx,modrm);
10404 UInt rE = eregOfRexRM(pfx,modrm);
10410 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
10438 static Long dis_CVTxPS2DQ_128 ( VexAbiInfo* vbi, Prefix pfx,
10447 UInt rG = gregOfRexRM(pfx,modrm);
10451 UInt rE = eregOfRexRM(pfx,modrm);
10457 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
10488 static Long dis_CVTxPS2DQ_256 ( VexAbiInfo* vbi, Prefix pfx,
10497 UInt rG = gregOfRexRM(pfx,modrm);
10501 UInt rE = eregOfRexRM(pfx,modrm);
10507 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
10540 static Long dis_CVTxPD2DQ_128 ( VexAbiInfo* vbi, Prefix pfx,
10549 UInt rG = gregOfRexRM(pfx,modrm);
10553 UInt rE = eregOfRexRM(pfx,modrm);
10559 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
10595 static Long dis_CVTxPD2DQ_256 ( VexAbiInfo* vbi, Prefix pfx,
10604 UInt rG = gregOfRexRM(pfx,modrm);
10608 UInt rE = eregOfRexRM(pfx,modrm);
10614 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
10649 static Long dis_CVTDQ2PS_128 ( VexAbiInfo* vbi, Prefix pfx,
10658 UInt rG = gregOfRexRM(pfx,modrm);
10662 UInt rE = eregOfRexRM(pfx,modrm);
10668 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
10697 static Long dis_CVTDQ2PS_256 ( VexAbiInfo* vbi, Prefix pfx,
10706 UInt rG = gregOfRexRM(pfx,modrm);
10710 UInt rE = eregOfRexRM(pfx,modrm);
10715 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
10750 static Long dis_PMOVMSKB_128 ( VexAbiInfo* vbi, Prefix pfx,
10755 UInt rE = eregOfRexRM(pfx,modrm);
10756 UInt rG = gregOfRexRM(pfx,modrm);
10769 static Long dis_PMOVMSKB_256 ( VexAbiInfo* vbi, Prefix pfx,
10774 UInt rE = eregOfRexRM(pfx,modrm);
10775 UInt rG = gregOfRexRM(pfx,modrm);
11224 static Long dis_PSHUFxW_128 ( VexAbiInfo* vbi, Prefix pfx,
11231 UInt rG = gregOfRexRM(pfx,modrm);
11241 UInt rE = eregOfRexRM(pfx,modrm);
11249 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 1 );
11279 static Long dis_PSHUFxW_256 ( VexAbiInfo* vbi, Prefix pfx,
11286 UInt rG = gregOfRexRM(pfx,modrm);
11295 UInt rE = eregOfRexRM(pfx,modrm);
11302 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 1 );
11326 static Long dis_PEXTRW_128_EregOnly_toG ( VexAbiInfo* vbi, Prefix pfx,
11331 UInt rG = gregOfRexRM(pfx,modrm);
11337 UInt rE = eregOfRexRM(pfx,modrm);
11365 static Long dis_CVTDQ2PD_128 ( VexAbiInfo* vbi, Prefix pfx,
11373 UInt rG = gregOfRexRM(pfx,modrm);
11376 UInt rE = eregOfRexRM(pfx,modrm);
11381 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
11400 static Long dis_STMXCSR ( VexAbiInfo* vbi, Prefix pfx,
11408 vassert(gregOfRexRM(pfx,modrm) == 3); /* ditto */
11410 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
11432 static Long dis_LDMXCSR ( VexAbiInfo* vbi, Prefix pfx,
11440 vassert(gregOfRexRM(pfx,modrm) == 2); /* ditto */
11445 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
11550 static Long dis_MASKMOVDQU ( VexAbiInfo* vbi, Prefix pfx,
11559 UInt rG = gregOfRexRM(pfx,modrm);
11560 UInt rE = eregOfRexRM(pfx,modrm);
11562 assign( addr, handleAddrOverrides( vbi, pfx, getIReg64(R_RDI) ));
11571 getXMMRegLane64( eregOfRexRM(pfx,modrm), 1 ),
11574 getXMMRegLane64( eregOfRexRM(pfx,modrm), 0 ),
11593 static Long dis_MOVMSKPS_128 ( VexAbiInfo* vbi, Prefix pfx,
11597 UInt rG = gregOfRexRM(pfx,modrm);
11598 UInt rE = eregOfRexRM(pfx,modrm);
11625 static Long dis_MOVMSKPS_256 ( VexAbiInfo* vbi, Prefix pfx, Long delta )
11628 UInt rG = gregOfRexRM(pfx,modrm);
11629 UInt rE = eregOfRexRM(pfx,modrm);
11675 static Long dis_MOVMSKPD_128 ( VexAbiInfo* vbi, Prefix pfx,
11679 UInt rG = gregOfRexRM(pfx,modrm);
11680 UInt rE = eregOfRexRM(pfx,modrm);
11697 static Long dis_MOVMSKPD_256 ( VexAbiInfo* vbi, Prefix pfx, Long delta )
11700 UInt rG = gregOfRexRM(pfx,modrm);
11701 UInt rE = eregOfRexRM(pfx,modrm);
11732 Prefix pfx, Int sz, Long deltaIN,
11755 if (have66noF2noF3(pfx)
11760 putXMMReg( gregOfRexRM(pfx,modrm),
11761 getXMMReg( eregOfRexRM(pfx,modrm) ));
11762 DIP("movupd %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
11763 nameXMMReg(gregOfRexRM(pfx,modrm)));
11766 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
11767 putXMMReg( gregOfRexRM(pfx,modrm),
11770 nameXMMReg(gregOfRexRM(pfx,modrm)));
11778 if (haveF2no66noF3(pfx)
11782 putXMMRegLane64( gregOfRexRM(pfx,modrm), 0,
11783 getXMMRegLane64( eregOfRexRM(pfx,modrm), 0 ));
11784 DIP("movsd %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
11785 nameXMMReg(gregOfRexRM(pfx,modrm)));
11788 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
11789 putXMMReg( gregOfRexRM(pfx,modrm), mkV128(0) );
11790 putXMMRegLane64( gregOfRexRM(pfx,modrm), 0,
11793 nameXMMReg(gregOfRexRM(pfx,modrm)));
11800 if (haveF3no66noF2(pfx)
11804 putXMMRegLane32( gregOfRexRM(pfx,modrm), 0,
11805 getXMMRegLane32( eregOfRexRM(pfx,modrm), 0 ));
11806 DIP("movss %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
11807 nameXMMReg(gregOfRexRM(pfx,modrm)));
11810 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
11811 putXMMReg( gregOfRexRM(pfx,modrm), mkV128(0) );
11812 putXMMRegLane32( gregOfRexRM(pfx,modrm), 0,
11815 nameXMMReg(gregOfRexRM(pfx,modrm)));
11821 if (haveNo66noF2noF3(pfx)
11825 putXMMReg( gregOfRexRM(pfx,modrm),
11826 getXMMReg( eregOfRexRM(pfx,modrm) ));
11827 DIP("movups %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
11828 nameXMMReg(gregOfRexRM(pfx,modrm)));
11831 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
11832 putXMMReg( gregOfRexRM(pfx,modrm),
11835 nameXMMReg(gregOfRexRM(pfx,modrm)));
11845 if (haveF2no66noF3(pfx)
11849 putXMMRegLane64( eregOfRexRM(pfx,modrm), 0,
11850 getXMMRegLane64( gregOfRexRM(pfx,modrm), 0 ));
11851 DIP("movsd %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
11852 nameXMMReg(eregOfRexRM(pfx,modrm)));
11855 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
11857 getXMMRegLane64(gregOfRexRM(pfx,modrm), 0) );
11858 DIP("movsd %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
11866 if (haveF3no66noF2(pfx) && sz == 4) {
11871 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
11873 getXMMRegLane32(gregOfRexRM(pfx,modrm), 0) );
11874 DIP("movss %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
11881 if (have66noF2noF3(pfx)
11885 putXMMReg( eregOfRexRM(pfx,modrm),
11886 getXMMReg( gregOfRexRM(pfx,modrm) ) );
11887 DIP("movupd %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
11888 nameXMMReg(eregOfRexRM(pfx,modrm)));
11891 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
11892 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
11893 DIP("movupd %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
11900 if (haveNo66noF2noF3(pfx)
11906 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
11907 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
11908 DIP("movups %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
11919 if (have66noF2noF3(pfx)
11925 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
11927 putXMMRegLane64( gregOfRexRM(pfx,modrm),
11931 dis_buf, nameXMMReg( gregOfRexRM(pfx,modrm) ));
11937 if (haveNo66noF2noF3(pfx)
11942 putXMMRegLane64( gregOfRexRM(pfx,modrm),
11944 getXMMRegLane64( eregOfRexRM(pfx,modrm), 1 ));
11945 DIP("movhlps %s, %s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
11946 nameXMMReg(gregOfRexRM(pfx,modrm)));
11948 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
11950 putXMMRegLane64( gregOfRexRM(pfx,modrm), 0/*lower lane*/,
11953 dis_buf, nameXMMReg( gregOfRexRM(pfx,modrm) ));
11961 if (haveNo66noF2noF3(pfx)
11965 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
11968 getXMMRegLane64( gregOfRexRM(pfx,modrm),
11970 DIP("movlps %s, %s\n", nameXMMReg( gregOfRexRM(pfx,modrm) ),
11978 if (have66noF2noF3(pfx)
11982 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
11985 getXMMRegLane64( gregOfRexRM(pfx,modrm),
11987 DIP("movlpd %s, %s\n", nameXMMReg( gregOfRexRM(pfx,modrm) ),
12000 if (haveNo66noF2noF3(pfx) && sz == 4) {
12005 UInt rG = gregOfRexRM(pfx,modrm);
12008 UInt rE = eregOfRexRM(pfx,modrm);
12014 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12027 if (have66noF2noF3(pfx)
12033 UInt rG = gregOfRexRM(pfx,modrm);
12036 UInt rE = eregOfRexRM(pfx,modrm);
12042 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12058 if (have66noF2noF3(pfx)
12064 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12066 putXMMRegLane64( gregOfRexRM(pfx,modrm), 1/*upper lane*/,
12069 nameXMMReg( gregOfRexRM(pfx,modrm) ));
12075 if (haveNo66noF2noF3(pfx)
12080 putXMMRegLane64( gregOfRexRM(pfx,modrm), 1/*upper lane*/,
12081 getXMMRegLane64( eregOfRexRM(pfx,modrm), 0 ) );
12082 DIP("movhps %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
12083 nameXMMReg(gregOfRexRM(pfx,modrm)));
12085 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12087 putXMMRegLane64( gregOfRexRM(pfx,modrm), 1/*upper lane*/,
12090 nameXMMReg( gregOfRexRM(pfx,modrm) ));
12098 if (haveNo66noF2noF3(pfx)
12102 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12105 getXMMRegLane64( gregOfRexRM(pfx,modrm),
12107 DIP("movhps %s,%s\n", nameXMMReg( gregOfRexRM(pfx,modrm) ),
12115 if (have66noF2noF3(pfx)
12119 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12122 getXMMRegLane64( gregOfRexRM(pfx,modrm),
12124 DIP("movhpd %s,%s\n", nameXMMReg( gregOfRexRM(pfx,modrm) ),
12137 if (haveNo66noF2noF3(pfx)
12146 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12164 if (have66noF2noF3(pfx)
12168 putXMMReg( gregOfRexRM(pfx,modrm),
12169 getXMMReg( eregOfRexRM(pfx,modrm) ));
12170 DIP("movapd %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
12171 nameXMMReg(gregOfRexRM(pfx,modrm)));
12174 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12176 putXMMReg( gregOfRexRM(pfx,modrm),
12179 nameXMMReg(gregOfRexRM(pfx,modrm)));
12185 if (haveNo66noF2noF3(pfx)
12189 putXMMReg( gregOfRexRM(pfx,modrm),
12190 getXMMReg( eregOfRexRM(pfx,modrm) ));
12191 DIP("movaps %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
12192 nameXMMReg(gregOfRexRM(pfx,modrm)));
12195 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12197 putXMMReg( gregOfRexRM(pfx,modrm),
12200 nameXMMReg(gregOfRexRM(pfx,modrm)));
12209 if (haveNo66noF2noF3(pfx)
12213 putXMMReg( eregOfRexRM(pfx,modrm),
12214 getXMMReg( gregOfRexRM(pfx,modrm) ));
12215 DIP("movaps %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12216 nameXMMReg(eregOfRexRM(pfx,modrm)));
12219 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12221 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
12222 DIP("movaps %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12229 if (have66noF2noF3(pfx)
12233 putXMMReg( eregOfRexRM(pfx,modrm),
12234 getXMMReg( gregOfRexRM(pfx,modrm) ) );
12235 DIP("movapd %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12236 nameXMMReg(eregOfRexRM(pfx,modrm)));
12239 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12241 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
12242 DIP("movapd %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12253 if (haveNo66noF2noF3(pfx) && sz == 4) {
12263 nameXMMReg(gregOfRexRM(pfx,modrm)));
12265 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12269 nameXMMReg(gregOfRexRM(pfx,modrm)) );
12275 gregOfRexRM(pfx,modrm), 0,
12282 gregOfRexRM(pfx,modrm), 1,
12293 if (haveF3no66noF2(pfx) && (sz == 4 || sz == 8)) {
12300 assign( arg32, getIReg32(eregOfRexRM(pfx,modrm)) );
12302 DIP("cvtsi2ss %s,%s\n", nameIReg32(eregOfRexRM(pfx,modrm)),
12303 nameXMMReg(gregOfRexRM(pfx,modrm)));
12305 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12309 nameXMMReg(gregOfRexRM(pfx,modrm)) );
12312 gregOfRexRM(pfx,modrm), 0,
12320 assign( arg64, getIReg64(eregOfRexRM(pfx,modrm)) );
12322 DIP("cvtsi2ssq %s,%s\n", nameIReg64(eregOfRexRM(pfx,modrm)),
12323 nameXMMReg(gregOfRexRM(pfx,modrm)));
12325 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12329 nameXMMReg(gregOfRexRM(pfx,modrm)) );
12332 gregOfRexRM(pfx,modrm), 0,
12343 if (haveF2no66noF3(pfx) && (sz == 4 || sz == 8)) {
12348 assign( arg32, getIReg32(eregOfRexRM(pfx,modrm)) );
12350 DIP("cvtsi2sdl %s,%s\n", nameIReg32(eregOfRexRM(pfx,modrm)),
12351 nameXMMReg(gregOfRexRM(pfx,modrm)));
12353 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12357 nameXMMReg(gregOfRexRM(pfx,modrm)) );
12359 putXMMRegLane64F( gregOfRexRM(pfx,modrm), 0,
12366 assign( arg64, getIReg64(eregOfRexRM(pfx,modrm)) );
12368 DIP("cvtsi2sdq %s,%s\n", nameIReg64(eregOfRexRM(pfx,modrm)),
12369 nameXMMReg(gregOfRexRM(pfx,modrm)));
12371 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12375 nameXMMReg(gregOfRexRM(pfx,modrm)) );
12378 gregOfRexRM(pfx,modrm),
12390 if (have66noF2noF3(pfx) && sz == 2) {
12405 nameXMMReg(gregOfRexRM(pfx,modrm)));
12407 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12411 nameXMMReg(gregOfRexRM(pfx,modrm)) );
12415 gregOfRexRM(pfx,modrm), 0,
12420 gregOfRexRM(pfx,modrm), 1,
12431 if ( (haveNo66noF2noF3(pfx) && sz == 4)
12432 || (have66noF2noF3(pfx) && sz == 2) ) {
12435 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12437 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
12440 nameXMMReg(gregOfRexRM(pfx,modrm)));
12454 if (haveNo66noF2noF3(pfx) && sz == 4) {
12466 assign(f32lo, getXMMRegLane32F(eregOfRexRM(pfx,modrm), 0));
12467 assign(f32hi, getXMMRegLane32F(eregOfRexRM(pfx,modrm), 1));
12469 nameXMMReg(eregOfRexRM(pfx,modrm)),
12472 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12516 if (haveF3no66noF2(pfx) && (sz == 4 || sz == 8)) {
12517 delta = dis_CVTxSS2SI( vbi, pfx, delta, False/*!isAvx*/, opc, sz);
12532 if (haveF2no66noF3(pfx) && (sz == 4 || sz == 8)) {
12533 delta = dis_CVTxSD2SI( vbi, pfx, delta, False/*!isAvx*/, opc, sz);
12540 if (have66noF2noF3(pfx) && sz == 2) {
12552 assign(f64lo, getXMMRegLane64F(eregOfRexRM(pfx,modrm), 0));
12553 assign(f64hi, getXMMRegLane64F(eregOfRexRM(pfx,modrm), 1));
12555 nameXMMReg(eregOfRexRM(pfx,modrm)),
12558 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12592 if (have66noF2noF3(pfx) && sz == 2) {
12593 delta = dis_COMISD( vbi, pfx, delta, False/*!isAvx*/, opc );
12598 if (haveNo66noF2noF3(pfx) && sz == 4) {
12599 delta = dis_COMISS( vbi, pfx, delta, False/*!isAvx*/, opc );
12607 if (haveNo66noF2noF3(pfx) && (sz == 4 || sz == 8)
12627 delta = dis_MOVMSKPS_128( vbi, pfx, delta, False/*!isAvx*/ );
12632 if (have66noF2noF3(pfx) && (sz == 2 || sz == 8)) {
12638 delta = dis_MOVMSKPD_128( vbi, pfx, delta, False/*!isAvx*/ );
12645 if (haveF3no66noF2(pfx) && sz == 4) {
12646 delta = dis_SSE_E_to_G_unary_lo32( vbi, pfx, delta,
12651 if (haveNo66noF2noF3(pfx) && sz == 4) {
12652 delta = dis_SSE_E_to_G_unary_all( vbi, pfx, delta,
12657 if (haveF2no66noF3(pfx) && sz == 4) {
12658 delta = dis_SSE_E_to_G_unary_lo64( vbi, pfx, delta,
12663 if (have66noF2noF3(pfx) && sz == 2) {
12664 delta = dis_SSE_E_to_G_unary_all( vbi, pfx, delta,
12672 if (haveF3no66noF2(pfx) && sz == 4) {
12673 delta = dis_SSE_E_to_G_unary_lo32( vbi, pfx, delta,
12678 if (haveNo66noF2noF3(pfx) && sz == 4) {
12679 delta = dis_SSE_E_to_G_unary_all( vbi, pfx, delta,
12687 if (haveF3no66noF2(pfx) && sz == 4) {
12688 delta = dis_SSE_E_to_G_unary_lo32( vbi, pfx, delta,
12693 if (haveNo66noF2noF3(pfx) && sz == 4) {
12694 delta = dis_SSE_E_to_G_unary_all( vbi, pfx, delta,
12702 if (haveNo66noF2noF3(pfx) && sz == 4) {
12703 delta = dis_SSE_E_to_G_all( vbi, pfx, delta, "andps", Iop_AndV128 );
12707 if (have66noF2noF3(pfx) && sz == 2) {
12708 delta = dis_SSE_E_to_G_all( vbi, pfx, delta, "andpd", Iop_AndV128 );
12715 if (haveNo66noF2noF3(pfx) && sz == 4) {
12716 delta = dis_SSE_E_to_G_all_invG( vbi, pfx, delta, "andnps",
12721 if (have66noF2noF3(pfx) && sz == 2) {
12722 delta = dis_SSE_E_to_G_all_invG( vbi, pfx, delta, "andnpd",
12730 if (haveNo66noF2noF3(pfx) && sz == 4) {
12731 delta = dis_SSE_E_to_G_all( vbi, pfx, delta, "orps", Iop_OrV128 );
12735 if (have66noF2noF3(pfx) && sz == 2) {
12736 delta = dis_SSE_E_to_G_all( vbi, pfx, delta, "orpd", Iop_OrV128 );
12743 if (have66noF2noF3(pfx) && sz == 2) {
12744 delta = dis_SSE_E_to_G_all( vbi, pfx, delta, "xorpd", Iop_XorV128 );
12748 if (haveNo66noF2noF3(pfx) && sz == 4) {
12749 delta = dis_SSE_E_to_G_all( vbi, pfx, delta, "xorps", Iop_XorV128 );
12756 if (haveNo66noF2noF3(pfx) && sz == 4) {
12757 delta = dis_SSE_E_to_G_all( vbi, pfx, delta, "addps", Iop_Add32Fx4 );
12761 if (haveF3no66noF2(pfx) && sz == 4) {
12762 delta = dis_SSE_E_to_G_lo32( vbi, pfx, delta, "addss", Iop_Add32F0x4 );
12766 if (haveF2no66noF3(pfx)
12768 delta = dis_SSE_E_to_G_lo64( vbi, pfx, delta, "addsd", Iop_Add64F0x2 );
12772 if (have66noF2noF3(pfx)
12774 delta = dis_SSE_E_to_G_all( vbi, pfx, delta, "addpd", Iop_Add64Fx2 );
12781 if (haveF2no66noF3(pfx)
12783 delta = dis_SSE_E_to_G_lo64( vbi, pfx, delta, "mulsd", Iop_Mul64F0x2 );
12787 if (haveF3no66noF2(pfx) && sz == 4) {
12788 delta = dis_SSE_E_to_G_lo32( vbi, pfx, delta, "mulss", Iop_Mul32F0x4 );
12792 if (haveNo66noF2noF3(pfx) && sz == 4) {
12793 delta = dis_SSE_E_to_G_all( vbi, pfx, delta, "mulps", Iop_Mul32Fx4 );
12797 if (have66noF2noF3(pfx)
12799 delta = dis_SSE_E_to_G_all( vbi, pfx, delta, "mulpd", Iop_Mul64Fx2 );
12807 if (haveNo66noF2noF3(pfx) && sz == 4) {
12808 delta = dis_CVTPS2PD_128( vbi, pfx, delta, False/*!isAvx*/ );
12813 if (haveF3no66noF2(pfx) && sz == 4) {
12819 assign(f32lo, getXMMRegLane32F(eregOfRexRM(pfx,modrm), 0));
12820 DIP("cvtss2sd %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
12821 nameXMMReg(gregOfRexRM(pfx,modrm)));
12823 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12827 nameXMMReg(gregOfRexRM(pfx,modrm)));
12830 putXMMRegLane64F( gregOfRexRM(pfx,modrm), 0,
12837 if (haveF2no66noF3(pfx) && sz == 4) {
12844 assign(f64lo, getXMMRegLane64F(eregOfRexRM(pfx,modrm), 0));
12845 DIP("cvtsd2ss %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
12846 nameXMMReg(gregOfRexRM(pfx,modrm)));
12848 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
12852 nameXMMReg(gregOfRexRM(pfx,modrm)));
12857 gregOfRexRM(pfx,modrm), 0,
12868 if (have66noF2noF3(pfx) && sz == 2) {
12869 delta = dis_CVTPD2PS_128( vbi, pfx, delta, False/*!isAvx*/ );
12879 if ( (have66noF2noF3(pfx) && sz == 2)
12880 || (haveF3no66noF2(pfx) && sz == 4) ) {
12882 delta = dis_CVTxPS2DQ_128( vbi, pfx, delta, False/*!isAvx*/, r2zero );
12887 if (haveNo66noF2noF3(pfx) && sz == 4) {
12888 delta = dis_CVTDQ2PS_128( vbi, pfx, delta, False/*!isAvx*/ );
12895 if (haveF3no66noF2(pfx) && sz == 4) {
12896 delta = dis_SSE_E_to_G_lo32( vbi, pfx, delta, "subss", Iop_Sub32F0x4 );
12900 if (haveF2no66noF3(pfx)
12902 delta = dis_SSE_E_to_G_lo64( vbi, pfx, delta, "subsd", Iop_Sub64F0x2 );
12906 if (haveNo66noF2noF3(pfx) && sz == 4) {
12907 delta = dis_SSE_E_to_G_all( vbi, pfx, delta, "subps", Iop_Sub32Fx4 );
12911 if (have66noF2noF3(pfx) && sz == 2) {
12912 delta = dis_SSE_E_to_G_all( vbi, pfx, delta, "subpd", Iop_Sub64Fx2 );
12919 if (haveNo66noF2noF3(pfx) && sz == 4) {
12920 delta = dis_SSE_E_to_G_all( vbi, pfx, delta, "minps", Iop_Min32Fx4 );
12924 if (haveF3no66noF2(pfx) && sz == 4) {
12925 delta = dis_SSE_E_to_G_lo32( vbi, pfx, delta, "minss", Iop_Min32F0x4 );
12929 if (haveF2no66noF3(pfx) && sz == 4) {
12930 delta = dis_SSE_E_to_G_lo64( vbi, pfx, delta, "minsd", Iop_Min64F0x2 );
12934 if (have66noF2noF3(pfx) && sz == 2) {
12935 delta = dis_SSE_E_to_G_all( vbi, pfx, delta, "minpd", Iop_Min64Fx2 );
12942 if (haveF2no66noF3(pfx) && sz == 4) {
12943 delta = dis_SSE_E_to_G_lo64( vbi, pfx, delta, "divsd", Iop_Div64F0x2 );
12947 if (haveNo66noF2noF3(pfx) && sz == 4) {
12948 delta = dis_SSE_E_to_G_all( vbi, pfx, delta, "divps", Iop_Div32Fx4 );
12952 if (haveF3no66noF2(pfx) && sz == 4) {
12953 delta = dis_SSE_E_to_G_lo32( vbi, pfx, delta, "divss", Iop_Div32F0x4 );
12957 if (have66noF2noF3(pfx) && sz == 2) {
12958 delta = dis_SSE_E_to_G_all( vbi, pfx, delta, "divpd", Iop_Div64Fx2 );
12965 if (haveNo66noF2noF3(pfx) && sz == 4) {
12966 delta = dis_SSE_E_to_G_all( vbi, pfx, delta, "maxps", Iop_Max32Fx4 );
12970 if (haveF3no66noF2(pfx) && sz == 4) {
12971 delta = dis_SSE_E_to_G_lo32( vbi, pfx, delta, "maxss", Iop_Max32F0x4 );
12975 if (haveF2no66noF3(pfx) && sz == 4) {
12976 delta = dis_SSE_E_to_G_lo64( vbi, pfx, delta, "maxsd", Iop_Max64F0x2 );
12980 if (have66noF2noF3(pfx) && sz == 2) {
12981 delta = dis_SSE_E_to_G_all( vbi, pfx, delta, "maxpd", Iop_Max64Fx2 );
12988 if (have66noF2noF3(pfx) && sz == 2) {
12989 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
12998 if (have66noF2noF3(pfx) && sz == 2) {
12999 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
13008 if (have66noF2noF3(pfx) && sz == 2) {
13009 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
13018 if (have66noF2noF3(pfx) && sz == 2) {
13019 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
13028 if (have66noF2noF3(pfx) && sz == 2) {
13029 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
13037 if (have66noF2noF3(pfx) && sz == 2) {
13038 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
13046 if (have66noF2noF3(pfx) && sz == 2) {
13047 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
13055 if (have66noF2noF3(pfx) && sz == 2) {
13056 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
13065 if (have66noF2noF3(pfx) && sz == 2) {
13066 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
13075 if (have66noF2noF3(pfx) && sz == 2) {
13076 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
13085 if (have66noF2noF3(pfx) && sz == 2) {
13086 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
13095 if (have66noF2noF3(pfx) && sz == 2) {
13096 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
13105 if (have66noF2noF3(pfx) && sz == 2) {
13106 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
13115 if (have66noF2noF3(pfx) && sz == 2) {
13116 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
13128 if (have66noF2noF3(pfx)) {
13136 gregOfRexRM(pfx,modrm),
13137 unop( Iop_32UtoV128, getIReg32(eregOfRexRM(pfx,modrm)) )
13139 DIP("movd %s, %s\n", nameIReg32(eregOfRexRM(pfx,modrm)),
13140 nameXMMReg(gregOfRexRM(pfx,modrm)));
13143 gregOfRexRM(pfx,modrm),
13144 unop( Iop_64UtoV128, getIReg64(eregOfRexRM(pfx,modrm)) )
13146 DIP("movq %s, %s\n", nameIReg64(eregOfRexRM(pfx,modrm)),
13147 nameXMMReg(gregOfRexRM(pfx,modrm)));
13150 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
13153 gregOfRexRM(pfx,modrm),
13159 nameXMMReg(gregOfRexRM(pfx,modrm)));
13166 if (have66noF2noF3(pfx)
13171 putXMMReg( gregOfRexRM(pfx,modrm),
13172 getXMMReg( eregOfRexRM(pfx,modrm) ));
13173 DIP("movdqa %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
13174 nameXMMReg(gregOfRexRM(pfx,modrm)));
13177 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
13179 putXMMReg( gregOfRexRM(pfx,modrm),
13182 nameXMMReg(gregOfRexRM(pfx,modrm)));
13187 if (haveF3no66noF2(pfx) && sz == 4) {
13191 putXMMReg( gregOfRexRM(pfx,modrm),
13192 getXMMReg( eregOfRexRM(pfx,modrm) ));
13193 DIP("movdqu %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
13194 nameXMMReg(gregOfRexRM(pfx,modrm)));
13197 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
13198 putXMMReg( gregOfRexRM(pfx,modrm),
13201 nameXMMReg(gregOfRexRM(pfx,modrm)));
13210 if (have66noF2noF3(pfx) && sz == 2) {
13211 delta = dis_PSHUFD_32x4( vbi, pfx, delta, False/*!writesYmm*/);
13216 if (haveNo66noF2noF3(pfx) && sz == 4) {
13232 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf,
13254 if (haveF2no66noF3(pfx) && sz == 4) {
13255 delta = dis_PSHUFxW_128( vbi, pfx, delta,
13261 if (haveF3no66noF2(pfx) && sz == 4) {
13262 delta = dis_PSHUFxW_128( vbi, pfx, delta,
13270 if (have66noF2noF3(pfx) && sz == 2
13273 delta = dis_SSE_shiftE_imm( pfx, delta, "psrlw", Iop_ShrN16x8 );
13277 if (have66noF2noF3(pfx) && sz == 2
13280 delta = dis_SSE_shiftE_imm( pfx, delta, "psraw", Iop_SarN16x8 );
13284 if (have66noF2noF3(pfx) && sz == 2
13287 delta = dis_SSE_shiftE_imm( pfx, delta, "psllw", Iop_ShlN16x8 );
13294 if (have66noF2noF3(pfx) && sz == 2
13297 delta = dis_SSE_shiftE_imm( pfx, delta, "psrld", Iop_ShrN32x4 );
13301 if (have66noF2noF3(pfx) && sz == 2
13304 delta = dis_SSE_shiftE_imm( pfx, delta, "psrad", Iop_SarN32x4 );
13308 if (have66noF2noF3(pfx) && sz == 2
13311 delta = dis_SSE_shiftE_imm( pfx, delta, "pslld", Iop_ShlN32x4 );
13319 if (have66noF2noF3(pfx) && sz == 2
13323 Int reg = eregOfRexRM(pfx,getUChar(delta));
13333 if (have66noF2noF3(pfx) && sz == 2
13337 Int reg = eregOfRexRM(pfx,getUChar(delta));
13347 if (have66noF2noF3(pfx) && sz == 2
13350 delta = dis_SSE_shiftE_imm( pfx, delta, "psrlq", Iop_ShrN64x2 );
13354 if (have66noF2noF3(pfx) && sz == 2
13357 delta = dis_SSE_shiftE_imm( pfx, delta, "psllq", Iop_ShlN64x2 );
13364 if (have66noF2noF3(pfx) && sz == 2) {
13365 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
13373 if (have66noF2noF3(pfx) && sz == 2) {
13374 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
13382 if (have66noF2noF3(pfx) && sz == 2) {
13383 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
13392 if (haveF3no66noF2(pfx)
13396 putXMMRegLane64( gregOfRexRM(pfx,modrm), 0,
13397 getXMMRegLane64( eregOfRexRM(pfx,modrm), 0 ));
13399 putXMMRegLane64( gregOfRexRM(pfx,modrm), 1, mkU64(0) );
13400 DIP("movsd %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
13401 nameXMMReg(gregOfRexRM(pfx,modrm)));
13404 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
13405 putXMMReg( gregOfRexRM(pfx,modrm), mkV128(0) );
13406 putXMMRegLane64( gregOfRexRM(pfx,modrm), 0,
13409 nameXMMReg(gregOfRexRM(pfx,modrm)));
13416 if (have66noF2noF3(pfx) && (sz == 2 || sz == 8)) {
13422 putIReg32( eregOfRexRM(pfx,modrm),
13423 getXMMRegLane32(gregOfRexRM(pfx,modrm), 0) );
13424 DIP("movd %s, %s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
13425 nameIReg32(eregOfRexRM(pfx,modrm)));
13427 putIReg64( eregOfRexRM(pfx,modrm),
13428 getXMMRegLane64(gregOfRexRM(pfx,modrm), 0) );
13429 DIP("movq %s, %s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
13430 nameIReg64(eregOfRexRM(pfx,modrm)));
13433 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
13437 ? getXMMRegLane32(gregOfRexRM(pfx,modrm),0)
13438 : getXMMRegLane64(gregOfRexRM(pfx,modrm),0) );
13440 nameXMMReg(gregOfRexRM(pfx,modrm)), dis_buf);
13448 if (haveF3no66noF2(pfx) && sz == 4) {
13453 putXMMReg( eregOfRexRM(pfx,modrm),
13454 getXMMReg(gregOfRexRM(pfx,modrm)) );
13455 DIP("movdqu %s, %s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
13456 nameXMMReg(eregOfRexRM(pfx,modrm)));
13458 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
13460 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
13461 DIP("movdqu %s, %s\n", nameXMMReg(gregOfRexRM(pfx,modrm)), dis_buf);
13466 if (have66noF2noF3(pfx) && sz == 2) {
13470 putXMMReg( eregOfRexRM(pfx,modrm),
13471 getXMMReg(gregOfRexRM(pfx,modrm)) );
13472 DIP("movdqa %s, %s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
13473 nameXMMReg(eregOfRexRM(pfx,modrm)));
13475 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
13478 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
13479 DIP("movdqa %s, %s\n", nameXMMReg(gregOfRexRM(pfx,modrm)), dis_buf);
13487 if (haveNo66noF2noF3(pfx)
13500 if (haveNo66noF2noF3(pfx)
13514 if (haveNo66noF2noF3(pfx)
13525 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
13544 if (haveNo66noF2noF3(pfx)
13547 delta = dis_STMXCSR(vbi, pfx, delta, False/*!isAvx*/);
13551 if (haveNo66noF2noF3(pfx)
13554 delta = dis_LDMXCSR(vbi, pfx, delta, False/*!isAvx*/);
13564 if (haveNo66noF2noF3(pfx) && (sz == 4 || sz == 8)
13566 && gregOfRexRM(pfx,getUChar(delta)) == 0) {
13571 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
13639 if (haveNo66noF2noF3(pfx) && (sz == 4 || sz == 8)
13641 && gregOfRexRM(pfx,getUChar(delta)) == 1) {
13646 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
13718 if (haveNo66noF2noF3(pfx) && sz == 4) {
13720 delta = dis_SSE_cmp_E_to_G( vbi, pfx, delta, "cmpps", True, 4 );
13724 if (haveF3no66noF2(pfx) && sz == 4) {
13726 delta = dis_SSE_cmp_E_to_G( vbi, pfx, delta, "cmpss", False, 4 );
13730 if (haveF2no66noF3(pfx) && sz == 4) {
13732 delta = dis_SSE_cmp_E_to_G( vbi, pfx, delta, "cmpsd", False, 8 );
13736 if (have66noF2noF3(pfx) && sz == 2) {
13738 delta = dis_SSE_cmp_E_to_G( vbi, pfx, delta, "cmppd", True, 8 );
13745 if (haveNo66noF2noF3(pfx) && (sz == 4 || sz == 8)) {
13748 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
13749 storeLE( mkexpr(addr), getIRegG(sz, pfx, modrm) );
13751 nameIRegG(sz, pfx, modrm));
13763 if (haveNo66noF2noF3(pfx)
13779 assign(t4, getIReg16(eregOfRexRM(pfx,modrm)));
13783 nameIReg16(eregOfRexRM(pfx,modrm)),
13786 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 1 );
13807 if (have66noF2noF3(pfx)
13812 UInt rG = gregOfRexRM(pfx,modrm);
13814 UInt rE = eregOfRexRM(pfx,modrm);
13821 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf,
13841 if (haveNo66noF2noF3(pfx) && (sz == 4 || sz == 8)) {
13857 putIReg64(gregOfRexRM(pfx,modrm), unop(Iop_16Uto64, mkexpr(t5)));
13859 putIReg32(gregOfRexRM(pfx,modrm), unop(Iop_16Uto32, mkexpr(t5)));
13863 sz==8 ? nameIReg64(gregOfRexRM(pfx,modrm))
13864 : nameIReg32(gregOfRexRM(pfx,modrm))
13876 if (have66noF2noF3(pfx)
13879 delta = dis_PEXTRW_128_EregOnly_toG( vbi, pfx, delta,
13888 if (haveNo66noF2noF3(pfx) && sz == 4) {
13893 UInt rG = gregOfRexRM(pfx,modrm);
13896 UInt rE = eregOfRexRM(pfx,modrm);
13902 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 1 );
13909 putXMMReg( gregOfRexRM(pfx,modrm), mkexpr(res) );
13913 if (have66noF2noF3(pfx) && sz == 2) {
13919 assign( dV, getXMMReg(gregOfRexRM(pfx,modrm)) );
13922 assign( sV, getXMMReg(eregOfRexRM(pfx,modrm)) );
13926 nameXMMReg(eregOfRexRM(pfx,modrm)),
13927 nameXMMReg(gregOfRexRM(pfx,modrm)));
13929 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 1 );
13935 nameXMMReg(gregOfRexRM(pfx,modrm)));
13939 putXMMReg( gregOfRexRM(pfx,modrm), mkexpr(res) );
13946 if (have66noF2noF3(pfx) && sz == 2) {
13947 delta = dis_SSE_shiftG_byE( vbi, pfx, delta, "psrlw", Iop_ShrN16x8 );
13954 if (have66noF2noF3(pfx) && sz == 2) {
13955 delta = dis_SSE_shiftG_byE( vbi, pfx, delta, "psrld", Iop_ShrN32x4 );
13962 if (have66noF2noF3(pfx) && sz == 2) {
13963 delta = dis_SSE_shiftG_byE( vbi, pfx, delta, "psrlq", Iop_ShrN64x2 );
13970 if (have66noF2noF3(pfx) && sz == 2) {
13971 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
13977 if (haveNo66noF2noF3(pfx) && sz == 4) {
13980 vbi, pfx, delta, opc, "paddq", False );
13987 if (have66noF2noF3(pfx) && sz == 2) {
13988 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
13997 if (haveF3no66noF2(pfx) && sz == 4) {
14001 putXMMReg( gregOfRexRM(pfx,modrm),
14004 nameXMMReg(gregOfRexRM(pfx,modrm)));
14012 if (have66noF2noF3(pfx)
14019 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
14021 getXMMRegLane64( gregOfRexRM(pfx,modrm), 0 ));
14022 DIP("movq %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)), dis_buf );
14028 if (haveF2no66noF3(pfx) && sz == 4) {
14033 getXMMRegLane64( eregOfRexRM(pfx,modrm), 0 ));
14034 DIP("movdq2q %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
14048 if (have66noF2noF3(pfx)
14051 delta = dis_PMOVMSKB_128( vbi, pfx, delta, False/*!isAvx*/ );
14058 if (haveNo66noF2noF3(pfx)
14067 putIReg32(gregOfRexRM(pfx,modrm), mkexpr(t1));
14069 nameIReg32(gregOfRexRM(pfx,modrm)));
14079 if (have66noF2noF3(pfx) && sz == 2) {
14080 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14088 if (have66noF2noF3(pfx) && sz == 2) {
14089 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14098 if (haveNo66noF2noF3(pfx) && sz == 4) {
14101 vbi, pfx, delta, opc, "pminub", False );
14105 if (have66noF2noF3(pfx) && sz == 2) {
14106 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14114 if (have66noF2noF3(pfx) && sz == 2) {
14115 delta = dis_SSE_E_to_G_all( vbi, pfx, delta, "pand", Iop_AndV128 );
14122 if (have66noF2noF3(pfx) && sz == 2) {
14123 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14131 if (have66noF2noF3(pfx) && sz == 2) {
14132 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14141 if (haveNo66noF2noF3(pfx) && sz == 4) {
14144 vbi, pfx, delta, opc, "pmaxub", False );
14148 if (have66noF2noF3(pfx) && sz == 2) {
14149 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14157 if (have66noF2noF3(pfx) && sz == 2) {
14158 delta = dis_SSE_E_to_G_all_invG( vbi, pfx, delta, "pandn", Iop_AndV128 );
14166 if (haveNo66noF2noF3(pfx) && sz == 4) {
14169 vbi, pfx, delta, opc, "pavgb", False );
14173 if (have66noF2noF3(pfx) && sz == 2) {
14174 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14182 if (have66noF2noF3(pfx) && sz == 2) {
14183 delta = dis_SSE_shiftG_byE( vbi, pfx, delta, "psraw", Iop_SarN16x8 );
14190 if (have66noF2noF3(pfx) && sz == 2) {
14191 delta = dis_SSE_shiftG_byE( vbi, pfx, delta, "psrad", Iop_SarN32x4 );
14199 if (haveNo66noF2noF3(pfx) && sz == 4) {
14202 vbi, pfx, delta, opc, "pavgw", False );
14206 if (have66noF2noF3(pfx) && sz == 2) {
14207 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14216 if (haveNo66noF2noF3(pfx) && sz == 4) {
14219 vbi, pfx, delta, opc, "pmuluh", False );
14223 if (have66noF2noF3(pfx) && sz == 2) {
14224 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14232 if (have66noF2noF3(pfx) && sz == 2) {
14233 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14245 if ( (haveF2no66noF3(pfx) && sz == 4)
14246 || (have66noF2noF3(pfx) && sz == 2) ) {
14247 delta = dis_CVTxPD2DQ_128( vbi, pfx, delta, False/*!isAvx*/,
14253 if (haveF3no66noF2(pfx) && sz == 4) {
14254 delta = dis_CVTDQ2PD_128(vbi, pfx, delta, False/*!isAvx*/);
14266 if (haveNo66noF2noF3(pfx) && sz == 4) {
14270 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
14280 if (have66noF2noF3(pfx) && sz == 2) {
14283 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
14285 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
14287 nameXMMReg(gregOfRexRM(pfx,modrm)));
14297 if (have66noF2noF3(pfx) && sz == 2) {
14298 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14306 if (have66noF2noF3(pfx) && sz == 2) {
14307 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14316 if (haveNo66noF2noF3(pfx) && sz == 4) {
14319 vbi, pfx, delta, opc, "pminsw", False );
14323 if (have66noF2noF3(pfx) && sz == 2) {
14324 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14332 if (have66noF2noF3(pfx) && sz == 2) {
14333 delta = dis_SSE_E_to_G_all( vbi, pfx, delta, "por", Iop_OrV128 );
14340 if (have66noF2noF3(pfx) && sz == 2) {
14341 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14349 if (have66noF2noF3(pfx) && sz == 2) {
14350 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14359 if (haveNo66noF2noF3(pfx) && sz == 4) {
14362 vbi, pfx, delta, opc, "pmaxsw", False );
14366 if (have66noF2noF3(pfx) && sz == 2) {
14367 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14375 if (have66noF2noF3(pfx) && sz == 2) {
14376 delta = dis_SSE_E_to_G_all( vbi, pfx, delta, "pxor", Iop_XorV128 );
14383 if (have66noF2noF3(pfx) && sz == 2) {
14384 delta = dis_SSE_shiftG_byE( vbi, pfx, delta, "psllw", Iop_ShlN16x8 );
14391 if (have66noF2noF3(pfx) && sz == 2) {
14392 delta = dis_SSE_shiftG_byE( vbi, pfx, delta, "pslld", Iop_ShlN32x4 );
14399 if (have66noF2noF3(pfx) && sz == 2) {
14400 delta = dis_SSE_shiftG_byE( vbi, pfx, delta, "psllq", Iop_ShlN64x2 );
14409 if (have66noF2noF3(pfx) && sz == 2) {
14413 UInt rG = gregOfRexRM(pfx,modrm);
14416 UInt rE = eregOfRexRM(pfx,modrm);
14421 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
14432 if (haveNo66noF2noF3(pfx) && sz == 4) {
14448 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
14466 if (have66noF2noF3(pfx) && sz == 2) {
14470 UInt rG = gregOfRexRM(pfx,modrm);
14472 UInt rE = eregOfRexRM(pfx,modrm);
14477 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
14491 if (haveNo66noF2noF3(pfx) && sz == 4) {
14494 vbi, pfx, delta, opc, "psadbw", False );
14499 if (have66noF2noF3(pfx) && sz == 2) {
14503 UInt rG = gregOfRexRM(pfx,modrm);
14505 UInt rE = eregOfRexRM(pfx,modrm);
14510 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
14525 if (haveNo66noF2noF3(pfx) && sz == 4) {
14527 delta = dis_MMX( &ok, vbi, pfx, sz, delta-1 );
14531 if (have66noF2noF3(pfx) && sz == 2 && epartIsReg(getUChar(delta))) {
14532 delta = dis_MASKMOVDQU( vbi, pfx, delta, False/*!isAvx*/ );
14539 if (have66noF2noF3(pfx) && sz == 2) {
14540 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14548 if (have66noF2noF3(pfx) && sz == 2) {
14549 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14557 if (have66noF2noF3(pfx) && sz == 2) {
14558 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14566 if (have66noF2noF3(pfx) && sz == 2) {
14567 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14573 if (haveNo66noF2noF3(pfx) && sz == 4) {
14576 vbi, pfx, delta, opc, "psubq", False );
14583 if (have66noF2noF3(pfx) && sz == 2) {
14584 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14592 if (have66noF2noF3(pfx) && sz == 2) {
14593 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14601 if (have66noF2noF3(pfx) && sz == 2) {
14602 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
14629 static Long dis_MOVDDUP_128 ( VexAbiInfo* vbi, Prefix pfx,
14638 UInt rG = gregOfRexRM(pfx,modrm);
14640 UInt rE = eregOfRexRM(pfx,modrm);
14647 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
14659 static Long dis_MOVDDUP_256 ( VexAbiInfo* vbi, Prefix pfx,
14668 UInt rG = gregOfRexRM(pfx,modrm);
14670 UInt rE = eregOfRexRM(pfx,modrm);
14676 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
14691 static Long dis_MOVSxDUP_128 ( VexAbiInfo* vbi, Prefix pfx,
14699 UInt rG = gregOfRexRM(pfx,modrm);
14703 UInt rE = eregOfRexRM(pfx,modrm);
14709 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
14725 static Long dis_MOVSxDUP_256 ( VexAbiInfo* vbi, Prefix pfx,
14733 UInt rG = gregOfRexRM(pfx,modrm);
14737 UInt rE = eregOfRexRM(pfx,modrm);
14743 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
14806 Prefix pfx, Int sz, Long deltaIN )
14823 if (haveF3no66noF2(pfx) && sz == 4) {
14824 delta = dis_MOVSxDUP_128( vbi, pfx, delta, False/*!isAvx*/,
14830 if (haveF2no66noF3(pfx)
14832 delta = dis_MOVDDUP_128( vbi, pfx, delta, False/*!isAvx*/ );
14840 if (haveF3no66noF2(pfx) && sz == 4) {
14841 delta = dis_MOVSxDUP_128( vbi, pfx, delta, False/*!isAvx*/,
14851 if (haveF2no66noF3(pfx) && sz == 4) {
14857 UInt rG = gregOfRexRM(pfx,modrm);
14859 UInt rE = eregOfRexRM(pfx,modrm);
14864 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
14876 if (have66noF2noF3(pfx) && sz == 2) {
14882 UInt rG = gregOfRexRM(pfx,modrm);
14884 UInt rE = eregOfRexRM(pfx,modrm);
14889 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
14903 if (have66noF2noF3(pfx) && sz == 2) {
14907 UInt rG = gregOfRexRM(pfx,modrm);
14909 UInt rE = eregOfRexRM(pfx,modrm);
14914 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
14925 if (haveF2no66noF3(pfx) && sz == 4) {
14929 UInt rG = gregOfRexRM(pfx,modrm);
14933 UInt rE = eregOfRexRM(pfx,modrm);
14938 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
14952 if (haveF2no66noF3(pfx) && sz == 4) {
14957 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
14958 putXMMReg( gregOfRexRM(pfx,modrm),
14961 nameXMMReg(gregOfRexRM(pfx,modrm)));
15095 static Long dis_PHADD_128 ( VexAbiInfo* vbi, Prefix pfx, Long delta,
15112 UInt rG = gregOfRexRM(pfx,modrm);
15113 UInt rV = isAvx ? getVexNvvvv(pfx) : rG;
15132 UInt rE = eregOfRexRM(pfx,modrm);
15138 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
15169 static Long dis_PHADD_256 ( VexAbiInfo* vbi, Prefix pfx, Long delta, UChar opc )
15183 UInt rG = gregOfRexRM(pfx,modrm);
15184 UInt rV = getVexNvvvv(pfx);
15203 UInt rE = eregOfRexRM(pfx,modrm);
15208 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
15286 Prefix pfx, Int sz, Long deltaIN )
15302 if (have66noF2noF3(pfx)
15308 assign( dV, getXMMReg(gregOfRexRM(pfx,modrm)) );
15311 assign( sV, getXMMReg(eregOfRexRM(pfx,modrm)) );
15313 DIP("pshufb %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
15314 nameXMMReg(gregOfRexRM(pfx,modrm)));
15316 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
15321 nameXMMReg(gregOfRexRM(pfx,modrm)));
15325 putXMMReg(gregOfRexRM(pfx,modrm), mkexpr(res));
15329 if (haveNo66noF2noF3(pfx) && sz == 4) {
15343 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
15386 if (have66noF2noF3(pfx)
15388 delta = dis_PHADD_128( vbi, pfx, delta, False/*isAvx*/, opc );
15404 if (haveNo66noF2noF3(pfx) && sz == 4) {
15437 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
15458 if (have66noF2noF3(pfx)
15463 UInt rG = gregOfRexRM(pfx,modrm);
15468 UInt rE = eregOfRexRM(pfx,modrm);
15473 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
15485 if (haveNo66noF2noF3(pfx) && sz == 4) {
15503 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
15541 if (have66noF2noF3(pfx)
15560 assign( dV, getXMMReg(gregOfRexRM(pfx,modrm)) );
15563 assign( sV, getXMMReg(eregOfRexRM(pfx,modrm)) );
15565 DIP("psign%s %s,%s\n", str, nameXMMReg(eregOfRexRM(pfx,modrm)),
15566 nameXMMReg(gregOfRexRM(pfx,modrm)));
15568 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
15573 nameXMMReg(gregOfRexRM(pfx,modrm)));
15582 gregOfRexRM(pfx,modrm),
15593 if (haveNo66noF2noF3(pfx) && sz == 4) {
15616 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
15634 if (have66noF2noF3(pfx)
15644 assign( dV, getXMMReg(gregOfRexRM(pfx,modrm)) );
15647 assign( sV, getXMMReg(eregOfRexRM(pfx,modrm)) );
15649 DIP("pmulhrsw %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
15650 nameXMMReg(gregOfRexRM(pfx,modrm)));
15652 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
15657 nameXMMReg(gregOfRexRM(pfx,modrm)));
15666 gregOfRexRM(pfx,modrm),
15676 if (haveNo66noF2noF3(pfx) && sz == 4) {
15690 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
15711 if (have66noF2noF3(pfx)
15726 assign( sV, getXMMReg(eregOfRexRM(pfx,modrm)) );
15728 DIP("pabs%s %s,%s\n", str, nameXMMReg(eregOfRexRM(pfx,modrm)),
15729 nameXMMReg(gregOfRexRM(pfx,modrm)));
15731 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
15736 nameXMMReg(gregOfRexRM(pfx,modrm)));
15739 putXMMReg( gregOfRexRM(pfx,modrm),
15746 if (haveNo66noF2noF3(pfx) && sz == 4) {
15767 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
15805 Prefix pfx, Int sz, Long deltaIN )
15822 if (have66noF2noF3(pfx)
15828 assign( dV, getXMMReg(gregOfRexRM(pfx,modrm)) );
15831 assign( sV, getXMMReg(eregOfRexRM(pfx,modrm)) );
15835 nameXMMReg(eregOfRexRM(pfx,modrm)),
15836 nameXMMReg(gregOfRexRM(pfx,modrm)));
15838 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 1 );
15845 nameXMMReg(gregOfRexRM(pfx,modrm)));
15849 putXMMReg( gregOfRexRM(pfx,modrm), mkexpr(res) );
15853 if (haveNo66noF2noF3(pfx) && sz == 4) {
15870 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 1 );
15932 Prefix pfx, Int sz, Long deltaIN )
15951 if (haveF3noF2(pfx) /* so both 66 and REX.W are possibilities */
15957 assign(src, getIRegE(sz, pfx, modrm));
15959 DIP("popcnt%c %s, %s\n", nameISize(sz), nameIRegE(sz, pfx, modrm),
15960 nameIRegG(sz, pfx, modrm));
15962 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0);
15966 nameIRegG(sz, pfx, modrm));
15970 putIRegG(sz, pfx, modrm, mkexpr(result));
15995 if (haveF3noF2(pfx) /* so both 66 and 48 are possibilities */
16002 assign(src, getIRegE(sz, pfx, modrm));
16004 DIP("tzcnt%c %s, %s\n", nameISize(sz), nameIRegE(sz, pfx, modrm),
16005 nameIRegG(sz, pfx, modrm));
16007 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0);
16011 nameIRegG(sz, pfx, modrm));
16015 putIRegG(sz, pfx, modrm, mkexpr(res));
16056 if (haveF3noF2(pfx) /* so both 66 and 48 are possibilities */
16063 assign(src, getIRegE(sz, pfx, modrm));
16065 DIP("lzcnt%c %s, %s\n", nameISize(sz), nameIRegE(sz, pfx, modrm),
16066 nameIRegG(sz, pfx, modrm));
16068 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0);
16072 nameIRegG(sz, pfx, modrm));
16076 putIRegG(sz, pfx, modrm, mkexpr(res));
16184 static Long dis_VBLENDV_128 ( VexAbiInfo* vbi, Prefix pfx, Long delta,
16191 UInt rG = gregOfRexRM(pfx, modrm);
16192 UInt rV = getVexNvvvv(pfx);
16199 UInt rE = eregOfRexRM(pfx, modrm);
16207 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
16223 static Long dis_VBLENDV_256 ( VexAbiInfo* vbi, Prefix pfx, Long delta,
16230 UInt rG = gregOfRexRM(pfx, modrm);
16231 UInt rV = getVexNvvvv(pfx);
16238 UInt rE = eregOfRexRM(pfx, modrm);
16246 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
16362 static Long dis_xTESTy_128 ( VexAbiInfo* vbi, Prefix pfx,
16369 UInt rG = gregOfRexRM(pfx, modrm);
16374 UInt rE = eregOfRexRM(pfx, modrm);
16382 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
16415 static Long dis_xTESTy_256 ( VexAbiInfo* vbi, Prefix pfx,
16422 UInt rG = gregOfRexRM(pfx, modrm);
16427 UInt rE = eregOfRexRM(pfx, modrm);
16434 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
16473 static Long dis_PMOVxXBW_128 ( VexAbiInfo* vbi, Prefix pfx,
16483 UInt rG = gregOfRexRM(pfx, modrm);
16485 UInt rE = eregOfRexRM(pfx, modrm);
16490 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
16516 static Long dis_PMOVxXBW_256 ( VexAbiInfo* vbi, Prefix pfx,
16525 UInt rG = gregOfRexRM(pfx, modrm);
16527 UInt rE = eregOfRexRM(pfx, modrm);
16532 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
16556 static Long dis_PMOVxXWD_128 ( VexAbiInfo* vbi, Prefix pfx,
16566 pfx, modrm);
16569 UInt rE = eregOfRexRM(pfx, modrm);
16574 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
16589 ( gregOfRexRM(pfx, modrm), res );
16595 static Long dis_PMOVxXWD_256 ( VexAbiInfo* vbi, Prefix pfx,
16604 UInt rG = gregOfRexRM(pfx, modrm);
16607 UInt rE = eregOfRexRM(pfx, modrm);
16612 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
16634 static Long dis_PMOVSXWQ_128 ( VexAbiInfo* vbi, Prefix pfx,
16643 UInt rG = gregOfRexRM(pfx, modrm);
16646 UInt rE = eregOfRexRM(pfx, modrm);
16651 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
16667 static Long dis_PMOVSXWQ_256 ( VexAbiInfo* vbi, Prefix pfx, Long delta )
16674 UInt rG = gregOfRexRM(pfx, modrm);
16679 UInt rE = eregOfRexRM(pfx, modrm);
16684 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
16702 static Long dis_PMOVZXWQ_128 ( VexAbiInfo* vbi, Prefix pfx,
16711 UInt rG = gregOfRexRM(pfx, modrm);
16714 UInt rE = eregOfRexRM(pfx, modrm);
16719 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
16738 static Long dis_PMOVZXWQ_256 ( VexAbiInfo* vbi, Prefix pfx,
16746 UInt rG = gregOfRexRM(pfx, modrm);
16749 UInt rE = eregOfRexRM(pfx, modrm);
16754 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
16778 static Long dis_PMOVxXDQ_128 ( VexAbiInfo* vbi, Prefix pfx,
16789 UInt rG = gregOfRexRM(pfx, modrm);
16795 UInt rE = eregOfRexRM(pfx, modrm);
16801 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
16825 static Long dis_PMOVxXDQ_256 ( VexAbiInfo* vbi, Prefix pfx,
16834 UInt rG = gregOfRexRM(pfx, modrm);
16840 UInt rE = eregOfRexRM(pfx, modrm);
16845 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
16878 static Long dis_PMOVxXBD_128 ( VexAbiInfo* vbi, Prefix pfx,
16888 UInt rG = gregOfRexRM(pfx, modrm);
16890 UInt rE = eregOfRexRM(pfx, modrm);
16895 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
16921 static Long dis_PMOVxXBD_256 ( VexAbiInfo* vbi, Prefix pfx,
16930 UInt rG = gregOfRexRM(pfx, modrm);
16932 UInt rE = eregOfRexRM(pfx, modrm);
16937 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
16968 static Long dis_PMOVSXBQ_128 ( VexAbiInfo* vbi, Prefix pfx,
16977 UInt rG = gregOfRexRM(pfx, modrm);
16979 UInt rE = eregOfRexRM(pfx, modrm);
16984 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
17001 static Long dis_PMOVSXBQ_256 ( VexAbiInfo* vbi, Prefix pfx,
17009 UInt rG = gregOfRexRM(pfx, modrm);
17011 UInt rE = eregOfRexRM(pfx, modrm);
17016 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
17047 static Long dis_PMOVZXBQ_128 ( VexAbiInfo* vbi, Prefix pfx,
17056 UInt rG = gregOfRexRM(pfx, modrm);
17058 UInt rE = eregOfRexRM(pfx, modrm);
17063 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
17086 static Long dis_PMOVZXBQ_256 ( VexAbiInfo* vbi, Prefix pfx,
17094 UInt rG = gregOfRexRM(pfx, modrm);
17096 UInt rE = eregOfRexRM(pfx, modrm);
17101 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
17130 static Long dis_PHMINPOSUW_128 ( VexAbiInfo* vbi, Prefix pfx,
17142 UInt rG = gregOfRexRM(pfx,modrm);
17144 UInt rE = eregOfRexRM(pfx,modrm);
17149 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
17170 static Long dis_AESx ( VexAbiInfo* vbi, Prefix pfx,
17177 UInt rG = gregOfRexRM(pfx, modrm);
17179 UInt regNoR = (isAvx && opc != 0xDB) ? getVexNvvvv(pfx) : rG;
17188 regNoL = eregOfRexRM(pfx, modrm);
17192 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
17262 static Long dis_AESKEYGENASSIST ( VexAbiInfo* vbi, Prefix pfx,
17270 UInt regNoR = gregOfRexRM(pfx, modrm);
17276 regNoL = eregOfRexRM(pfx, modrm);
17281 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
17331 Prefix pfx, Int sz, Long deltaIN )
17354 if (have66noF2noF3(pfx) && sz == 2) {
17378 assign(vecE, getXMMReg(eregOfRexRM(pfx, modrm)));
17381 nameXMMReg( eregOfRexRM(pfx, modrm) ),
17382 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
17384 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
17389 dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
17392 assign(vecG, getXMMReg(gregOfRexRM(pfx, modrm)));
17396 putXMMReg(gregOfRexRM(pfx, modrm), mkexpr(res));
17405 if (have66noF2noF3(pfx)
17407 delta = dis_xTESTy_128( vbi, pfx, delta, False/*!isAvx*/, 0 );
17415 if (have66noF2noF3(pfx) && sz == 2) {
17416 delta = dis_PMOVxXBW_128( vbi, pfx, delta,
17425 if (have66noF2noF3(pfx) && sz == 2) {
17426 delta = dis_PMOVxXBD_128( vbi, pfx, delta,
17435 if (have66noF2noF3(pfx) && sz == 2) {
17436 delta = dis_PMOVSXBQ_128( vbi, pfx, delta, False/*!isAvx*/ );
17444 if (have66noF2noF3(pfx) && sz == 2) {
17445 delta = dis_PMOVxXWD_128(vbi, pfx, delta,
17454 if (have66noF2noF3(pfx) && sz == 2) {
17455 delta = dis_PMOVSXWQ_128( vbi, pfx, delta, False/*!isAvx*/ );
17463 if (have66noF2noF3(pfx) && sz == 2) {
17464 delta = dis_PMOVxXDQ_128( vbi, pfx, delta,
17476 if (have66noF2noF3(pfx) && sz == 2) {
17480 UInt rG = gregOfRexRM(pfx,modrm);
17483 UInt rE = eregOfRexRM(pfx,modrm);
17488 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
17502 if (have66noF2noF3(pfx) && sz == 2) {
17504 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
17514 if (have66noF2noF3(pfx) && sz == 2) {
17517 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
17519 putXMMReg( gregOfRexRM(pfx,modrm),
17522 nameXMMReg(gregOfRexRM(pfx,modrm)));
17532 if (have66noF2noF3(pfx) && sz == 2) {
17540 assign( argL, getXMMReg( eregOfRexRM(pfx, modrm) ) );
17543 nameXMMReg( eregOfRexRM(pfx, modrm) ),
17544 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
17546 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
17551 dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
17554 assign(argR, getXMMReg( gregOfRexRM(pfx, modrm) ));
17556 putXMMReg( gregOfRexRM(pfx, modrm),
17567 if (have66noF2noF3(pfx) && sz == 2) {
17568 delta = dis_PMOVxXBW_128( vbi, pfx, delta,
17577 if (have66noF2noF3(pfx) && sz == 2) {
17578 delta = dis_PMOVxXBD_128( vbi, pfx, delta,
17587 if (have66noF2noF3(pfx) && sz == 2) {
17588 delta = dis_PMOVZXBQ_128( vbi, pfx, delta, False/*!isAvx*/ );
17596 if (have66noF2noF3(pfx) && sz == 2) {
17597 delta = dis_PMOVxXWD_128( vbi, pfx, delta,
17606 if (have66noF2noF3(pfx) && sz == 2) {
17607 delta = dis_PMOVZXWQ_128( vbi, pfx, delta, False/*!isAvx*/ );
17615 if (have66noF2noF3(pfx) && sz == 2) {
17616 delta = dis_PMOVxXDQ_128( vbi, pfx, delta,
17626 if (have66noF2noF3(pfx) && sz == 2) {
17628 delta = dis_SSEint_E_to_G( vbi, pfx, delta,
17639 if (have66noF2noF3(pfx) && sz == 2) {
17643 vbi, pfx, delta,
17659 if (have66noF2noF3(pfx) && sz == 2) {
17663 vbi, pfx, delta,
17679 if (have66noF2noF3(pfx) && sz == 2) {
17683 vbi, pfx, delta,
17699 if (have66noF2noF3(pfx) && sz == 2) {
17703 vbi, pfx, delta,
17715 if (have66noF2noF3(pfx) && sz == 2) {
17723 assign( argL, getXMMReg( eregOfRexRM(pfx, modrm) ) );
17726 nameXMMReg( eregOfRexRM(pfx, modrm) ),
17727 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
17729 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
17734 dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
17737 assign(argR, getXMMReg( gregOfRexRM(pfx, modrm) ));
17739 putXMMReg( gregOfRexRM(pfx, modrm),
17749 if (have66noF2noF3(pfx) && sz == 2) {
17750 delta = dis_PHMINPOSUW_128( vbi, pfx, delta, False/*!isAvx*/ );
17766 if (have66noF2noF3(pfx) && sz == 2) {
17767 delta = dis_AESx( vbi, pfx, delta, False/*!isAvx*/, opc );
17778 if (haveF2noF3(pfx)
17779 && (opc == 0xF1 || (opc == 0xF0 && !have66(pfx)))) {
17791 assign(valE, getIRegE(sz, pfx, modrm));
17793 DIP("crc32b %s,%s\n", nameIRegE(sz, pfx, modrm),
17794 nameIRegG(1==getRexW(pfx) ? 8 : 4, pfx, modrm));
17796 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
17800 nameIRegG(1==getRexW(pfx) ? 8 : 4, pfx, modrm));
17808 assign(valG0, binop(Iop_And64, getIRegG(8, pfx, modrm),
17830 putIRegG(4, pfx, modrm, unop(Iop_64to32, mkexpr(valG1)));
17856 static Long dis_PEXTRW ( VexAbiInfo* vbi, Prefix pfx,
17867 UInt rG = gregOfRexRM(pfx,modrm);
17873 vassert(0==getRexW(pfx)); /* ensured by caller */
17880 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
17897 UInt rE = eregOfRexRM(pfx,modrm);
17911 static Long dis_PEXTRD ( VexAbiInfo* vbi, Prefix pfx,
17928 vassert(0==getRexW(pfx)); /* ensured by caller */
17930 assign( xmm_vec, getXMMReg( gregOfRexRM(pfx,modrm) ) );
17936 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
17949 putIReg32( eregOfRexRM(pfx,modrm), mkexpr(src_dword) );
17952 nameXMMReg( gregOfRexRM(pfx, modrm) ),
17953 nameIReg32( eregOfRexRM(pfx, modrm) ) );
17958 imm8_10, nameXMMReg( gregOfRexRM(pfx, modrm) ), dis_buf );
17964 static Long dis_PEXTRQ ( VexAbiInfo* vbi, Prefix pfx,
17977 vassert(1==getRexW(pfx)); /* ensured by caller */
17979 assign( xmm_vec, getXMMReg( gregOfRexRM(pfx,modrm) ) );
17984 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
17997 putIReg64( eregOfRexRM(pfx,modrm), mkexpr(src_qword) );
18000 nameXMMReg( gregOfRexRM(pfx, modrm) ),
18001 nameIReg64( eregOfRexRM(pfx, modrm) ) );
18006 imm8_0, nameXMMReg( gregOfRexRM(pfx, modrm) ), dis_buf );
18145 static Long dis_PCMPxSTRx ( VexAbiInfo* vbi, Prefix pfx,
18165 regNoL = eregOfRexRM(pfx, modrm);
18166 regNoR = gregOfRexRM(pfx, modrm);
18171 regNoR = gregOfRexRM(pfx, modrm);
18172 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
18388 static Long dis_PEXTRB_128_GtoE ( VexAbiInfo* vbi, Prefix pfx,
18401 assign( xmm_vec, getXMMReg( gregOfRexRM(pfx,modrm) ) );
18408 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
18422 putIReg64( eregOfRexRM(pfx,modrm),
18427 nameXMMReg( gregOfRexRM(pfx, modrm) ),
18428 nameIReg64( eregOfRexRM(pfx, modrm) ) );
18433 imm8, nameXMMReg( gregOfRexRM(pfx, modrm) ), dis_buf );
18564 static Long dis_EXTRACTPS ( VexAbiInfo* vbi, Prefix pfx,
18574 UInt rG = gregOfRexRM(pfx,modrm);
18584 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
18597 UInt rE = eregOfRexRM(pfx,modrm);
18644 Prefix pfx, Int sz, Long deltaIN )
18660 if (have66noF2noF3(pfx) && sz == 2) {
18677 getXMMRegLane32F( eregOfRexRM(pfx, modrm), 0 ) );
18679 getXMMRegLane32F( eregOfRexRM(pfx, modrm), 1 ) );
18681 getXMMRegLane32F( eregOfRexRM(pfx, modrm), 2 ) );
18683 getXMMRegLane32F( eregOfRexRM(pfx, modrm), 3 ) );
18688 imm, nameXMMReg( eregOfRexRM(pfx, modrm) ),
18689 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
18691 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
18705 imm, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
18719 putXMMRegLane32F( gregOfRexRM(pfx, modrm), 0, mkexpr(res0) );
18720 putXMMRegLane32F( gregOfRexRM(pfx, modrm), 1, mkexpr(res1) );
18721 putXMMRegLane32F( gregOfRexRM(pfx, modrm), 2, mkexpr(res2) );
18722 putXMMRegLane32F( gregOfRexRM(pfx, modrm), 3, mkexpr(res3) );
18730 if (have66noF2noF3(pfx) && sz == 2) {
18743 getXMMRegLane64F( eregOfRexRM(pfx, modrm), 0 ) );
18745 getXMMRegLane64F( eregOfRexRM(pfx, modrm), 1 ) );
18750 imm, nameXMMReg( eregOfRexRM(pfx, modrm) ),
18751 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
18753 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
18763 imm, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
18775 putXMMRegLane64F( gregOfRexRM(pfx, modrm), 0, mkexpr(res0) );
18776 putXMMRegLane64F( gregOfRexRM(pfx, modrm), 1, mkexpr(res1) );
18787 if (have66noF2noF3(pfx) && sz == 2) {
18798 isD ? getXMMRegLane64F( eregOfRexRM(pfx, modrm), 0 )
18799 : getXMMRegLane32F( eregOfRexRM(pfx, modrm), 0 ) );
18805 imm, nameXMMReg( eregOfRexRM(pfx, modrm) ),
18806 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
18808 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
18815 imm, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
18828 putXMMRegLane64F( gregOfRexRM(pfx, modrm), 0, mkexpr(res) );
18830 putXMMRegLane32F( gregOfRexRM(pfx, modrm), 0, mkexpr(res) );
18839 if (have66noF2noF3(pfx) && sz == 2) {
18847 assign( dst_vec, getXMMReg( gregOfRexRM(pfx, modrm) ) );
18851 assign( src_vec, getXMMReg( eregOfRexRM(pfx, modrm) ) );
18854 nameXMMReg( eregOfRexRM(pfx, modrm) ),
18855 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
18857 addr = disAMode( &alen, vbi, pfx, delta, dis_buf,
18864 imm8, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
18867 putXMMReg( gregOfRexRM(pfx, modrm),
18876 if (have66noF2noF3(pfx) && sz == 2) {
18883 assign( dst_vec, getXMMReg( gregOfRexRM(pfx, modrm) ) );
18887 assign( src_vec, getXMMReg( eregOfRexRM(pfx, modrm) ) );
18890 nameXMMReg( eregOfRexRM(pfx, modrm) ),
18891 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
18893 addr = disAMode( &alen, vbi, pfx, delta, dis_buf,
18900 imm8, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
18903 putXMMReg( gregOfRexRM(pfx, modrm),
18912 if (have66noF2noF3(pfx) && sz == 2) {
18920 assign( dst_vec, getXMMReg( gregOfRexRM(pfx, modrm) ) );
18924 assign( src_vec, getXMMReg( eregOfRexRM(pfx, modrm) ) );
18927 nameXMMReg( eregOfRexRM(pfx, modrm) ),
18928 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
18930 addr = disAMode( &alen, vbi, pfx, delta, dis_buf,
18937 imm8, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
18940 putXMMReg( gregOfRexRM(pfx, modrm),
18950 if (have66noF2noF3(pfx) && sz == 2) {
18951 delta = dis_PEXTRB_128_GtoE( vbi, pfx, delta, False/*!isAvx*/ );
18960 if (have66noF2noF3(pfx) && sz == 2) {
18961 delta = dis_PEXTRW( vbi, pfx, delta, False/*!isAvx*/ );
18971 if (have66noF2noF3(pfx)
18973 delta = dis_PEXTRD( vbi, pfx, delta, False/*!isAvx*/ );
18980 if (have66noF2noF3(pfx)
18982 delta = dis_PEXTRQ( vbi, pfx, delta, False/*!isAvx*/);
18992 if (have66noF2noF3(pfx)
18994 delta = dis_EXTRACTPS( vbi, pfx, delta, False/*!isAvx*/ );
19002 if (have66noF2noF3(pfx) && sz == 2) {
19006 UInt rG = gregOfRexRM(pfx, modrm);
19008 UInt rE = eregOfRexRM(pfx,modrm);
19015 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
19023 assign(src_vec, getXMMReg( gregOfRexRM(pfx, modrm) ));
19033 if (have66noF2noF3(pfx) && sz == 2) {
19039 UInt rG = gregOfRexRM(pfx, modrm);
19042 UInt rE = eregOfRexRM(pfx, modrm);
19053 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
19072 if (have66noF2noF3(pfx)
19077 UInt rG = gregOfRexRM(pfx, modrm);
19080 UInt rE = eregOfRexRM(pfx,modrm);
19087 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
19103 if (have66noF2noF3(pfx)
19108 UInt rG = gregOfRexRM(pfx, modrm);
19111 UInt rE = eregOfRexRM(pfx,modrm);
19118 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
19137 if (have66noF2noF3(pfx) && sz == 2) {
19142 UInt rG = gregOfRexRM(pfx, modrm);
19145 UInt rE = eregOfRexRM(pfx, modrm);
19152 addr = disAMode( &alen, vbi, pfx, delta, dis_buf,
19170 if (have66noF2noF3(pfx) && sz == 2) {
19175 UInt rG = gregOfRexRM(pfx, modrm);
19178 UInt rE = eregOfRexRM(pfx, modrm);
19185 addr = disAMode( &alen, vbi, pfx, delta, dis_buf,
19203 if (have66noF2noF3(pfx) && sz == 2) {
19208 UInt rG = gregOfRexRM(pfx, modrm);
19213 UInt rE = eregOfRexRM(pfx, modrm);
19221 addr = disAMode( &alen, vbi, pfx, delta, dis_buf,
19240 if (have66noF2noF3(pfx) && sz == 2) {
19246 UInt rG = gregOfRexRM(pfx, modrm);
19251 UInt rE = eregOfRexRM(pfx, modrm);
19258 addr = disAMode( &alen, vbi, pfx, delta, dis_buf,
19284 if (have66noF2noF3(pfx) && sz == 2) {
19286 delta = dis_PCMPxSTRx( vbi, pfx, delta, False/*!isAvx*/, opc );
19294 if (have66noF2noF3(pfx) && sz == 2) {
19295 delta = dis_AESKEYGENASSIST( vbi, pfx, delta, False/*!isAvx*/ );
19331 Prefix pfx, Int sz, Long deltaIN
19360 Bool validF2orF3 = haveF2orF3(pfx) ? False : True;
19371 && haveF2orF3(pfx) && !haveF2andF3(pfx) && haveLOCK(pfx)) {
19382 switch above, use validF2orF3 rather than looking at pfx
19388 delta = dis_op2_G_E ( vbi, pfx, False, Iop_Add8, True, 1, delta, "add" );
19392 delta = dis_op2_G_E ( vbi, pfx, False, Iop_Add8, True, sz, delta, "add" );
19396 if (haveF2orF3(pfx)) goto decode_failure;
19397 delta = dis_op2_E_G ( vbi, pfx, False, Iop_Add8, True, 1, delta, "add" );
19400 if (haveF2orF3(pfx)) goto decode_failure;
19401 delta = dis_op2_E_G ( vbi, pfx, False, Iop_Add8, True, sz, delta, "add" );
19405 if (haveF2orF3(pfx)) goto decode_failure;
19409 if (haveF2orF3(pfx)) goto decode_failure;
19415 delta = dis_op2_G_E ( vbi, pfx, False, Iop_Or8, True, 1, delta, "or" );
19419 delta = dis_op2_G_E ( vbi, pfx, False, Iop_Or8, True, sz, delta, "or" );
19423 if (haveF2orF3(pfx)) goto decode_failure;
19424 delta = dis_op2_E_G ( vbi, pfx, False, Iop_Or8, True, 1, delta, "or" );
19427 if (haveF2orF3(pfx)) goto decode_failure;
19428 delta = dis_op2_E_G ( vbi, pfx, False, Iop_Or8, True, sz, delta, "or" );
19432 if (haveF2orF3(pfx)) goto decode_failure;
19436 if (haveF2orF3(pfx)) goto decode_failure;
19442 delta = dis_op2_G_E ( vbi, pfx, True, Iop_Add8, True, 1, delta, "adc" );
19446 delta = dis_op2_G_E ( vbi, pfx, True, Iop_Add8, True, sz, delta, "adc" );
19450 if (haveF2orF3(pfx)) goto decode_failure;
19451 delta = dis_op2_E_G ( vbi, pfx, True, Iop_Add8, True, 1, delta, "adc" );
19454 if (haveF2orF3(pfx)) goto decode_failure;
19455 delta = dis_op2_E_G ( vbi, pfx, True, Iop_Add8, True, sz, delta, "adc" );
19459 if (haveF2orF3(pfx)) goto decode_failure;
19463 if (haveF2orF3(pfx)) goto decode_failure;
19469 delta = dis_op2_G_E ( vbi, pfx, True, Iop_Sub8, True, 1, delta, "sbb" );
19473 delta = dis_op2_G_E ( vbi, pfx, True, Iop_Sub8, True, sz, delta, "sbb" );
19477 if (haveF2orF3(pfx)) goto decode_failure;
19478 delta = dis_op2_E_G ( vbi, pfx, True, Iop_Sub8, True, 1, delta, "sbb" );
19481 if (haveF2orF3(pfx)) goto decode_failure;
19482 delta = dis_op2_E_G ( vbi, pfx, True, Iop_Sub8, True, sz, delta, "sbb" );
19486 if (haveF2orF3(pfx)) goto decode_failure;
19490 if (haveF2orF3(pfx)) goto decode_failure;
19496 delta = dis_op2_G_E ( vbi, pfx, False, Iop_And8, True, 1, delta, "and" );
19500 delta = dis_op2_G_E ( vbi, pfx, False, Iop_And8, True, sz, delta, "and" );
19504 if (haveF2orF3(pfx)) goto decode_failure;
19505 delta = dis_op2_E_G ( vbi, pfx, False, Iop_And8, True, 1, delta, "and" );
19508 if (haveF2orF3(pfx)) goto decode_failure;
19509 delta = dis_op2_E_G ( vbi, pfx, False, Iop_And8, True, sz, delta, "and" );
19513 if (haveF2orF3(pfx)) goto decode_failure;
19517 if (haveF2orF3(pfx)) goto decode_failure;
19523 delta = dis_op2_G_E ( vbi, pfx, False, Iop_Sub8, True, 1, delta, "sub" );
19527 delta = dis_op2_G_E ( vbi, pfx, False, Iop_Sub8, True, sz, delta, "sub" );
19531 if (haveF2orF3(pfx)) goto decode_failure;
19532 delta = dis_op2_E_G ( vbi, pfx, False, Iop_Sub8, True, 1, delta, "sub" );
19535 if (haveF2orF3(pfx)) goto decode_failure;
19536 delta = dis_op2_E_G ( vbi, pfx, False, Iop_Sub8, True, sz, delta, "sub" );
19540 if (haveF2orF3(pfx)) goto decode_failure;
19544 if (haveF2orF3(pfx)) goto decode_failure;
19550 delta = dis_op2_G_E ( vbi, pfx, False, Iop_Xor8, True, 1, delta, "xor" );
19554 delta = dis_op2_G_E ( vbi, pfx, False, Iop_Xor8, True, sz, delta, "xor" );
19558 if (haveF2orF3(pfx)) goto decode_failure;
19559 delta = dis_op2_E_G ( vbi, pfx, False, Iop_Xor8, True, 1, delta, "xor" );
19562 if (haveF2orF3(pfx)) goto decode_failure;
19563 delta = dis_op2_E_G ( vbi, pfx, False, Iop_Xor8, True, sz, delta, "xor" );
19567 if (haveF2orF3(pfx)) goto decode_failure;
19571 if (haveF2orF3(pfx)) goto decode_failure;
19576 if (haveF2orF3(pfx)) goto decode_failure;
19577 delta = dis_op2_G_E ( vbi, pfx, False, Iop_Sub8, False, 1, delta, "cmp" );
19580 if (haveF2orF3(pfx)) goto decode_failure;
19581 delta = dis_op2_G_E ( vbi, pfx, False, Iop_Sub8, False, sz, delta, "cmp" );
19585 if (haveF2orF3(pfx)) goto decode_failure;
19586 delta = dis_op2_E_G ( vbi, pfx, False, Iop_Sub8, False, 1, delta, "cmp" );
19589 if (haveF2orF3(pfx)) goto decode_failure;
19590 delta = dis_op2_E_G ( vbi, pfx, False, Iop_Sub8, False, sz, delta, "cmp" );
19594 if (haveF2orF3(pfx)) goto decode_failure;
19598 if (haveF2orF3(pfx)) goto decode_failure;
19613 if (haveF2orF3(pfx)) goto decode_failure;
19620 assign(t1, getIRegRexB(sz, pfx, opc-0x50));
19624 DIP("push%c %s\n", nameISize(sz), nameIRegRexB(sz,pfx,opc-0x50));
19635 if (haveF2orF3(pfx)) goto decode_failure;
19644 putIRegRexB(sz, pfx, opc-0x58, mkexpr(t1));
19645 DIP("pop%c %s\n", nameISize(sz), nameIRegRexB(sz,pfx,opc-0x58));
19649 if (haveF2orF3(pfx)) goto decode_failure;
19650 if (haveREX(pfx) && 1==getRexW(pfx)) {
19656 putIRegG(8, pfx, modrm,
19658 getIRegE(4, pfx, modrm)));
19660 nameIRegE(4, pfx, modrm),
19661 nameIRegG(8, pfx, modrm));
19664 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
19666 putIRegG(8, pfx, modrm,
19670 nameIRegG(8, pfx, modrm));
19678 if (haveF2orF3(pfx)) goto decode_failure;
19686 if (haveF2orF3(pfx)) goto decode_failure;
19687 delta = dis_imul_I_E_G ( vbi, pfx, sz, delta, sz );
19691 if (haveF2orF3(pfx)) goto decode_failure;
19711 delta = dis_imul_I_E_G ( vbi, pfx, sz, delta, 1 );
19732 if (haveF3(pfx)) goto decode_failure;
19733 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
19795 if (epartIsReg(modrm) && haveF2orF3(pfx))
19797 if (!epartIsReg(modrm) && haveF2andF3(pfx))
19799 if (!epartIsReg(modrm) && haveF2orF3(pfx) && !haveLOCK(pfx))
19801 am_sz = lengthAMode(pfx,delta);
19805 delta = dis_Grp1 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz, d64 );
19811 if (epartIsReg(modrm) && haveF2orF3(pfx))
19813 if (!epartIsReg(modrm) && haveF2andF3(pfx))
19815 if (!epartIsReg(modrm) && haveF2orF3(pfx) && !haveLOCK(pfx))
19817 am_sz = lengthAMode(pfx,delta);
19820 delta = dis_Grp1 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz, d64 );
19824 if (haveF2orF3(pfx)) goto decode_failure;
19826 am_sz = lengthAMode(pfx,delta);
19829 delta = dis_Grp1 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz, d64 );
19833 if (haveF2orF3(pfx)) goto decode_failure;
19834 delta = dis_op2_E_G ( vbi, pfx, False, Iop_And8, False, 1, delta, "test" );
19838 if (haveF2orF3(pfx)) goto decode_failure;
19839 delta = dis_op2_E_G ( vbi, pfx, False, Iop_And8, False, sz, delta, "test" );
19854 if (haveF2orF3(pfx)) {
19858 if (haveF2andF3(pfx))
19865 assign(t1, getIRegE(sz, pfx, modrm));
19866 assign(t2, getIRegG(sz, pfx, modrm));
19867 putIRegG(sz, pfx, modrm, mkexpr(t1));
19868 putIRegE(sz, pfx, modrm, mkexpr(t2));
19871 nameISize(sz), nameIRegG(sz, pfx, modrm),
19872 nameIRegE(sz, pfx, modrm));
19875 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
19877 assign( t2, getIRegG(sz, pfx, modrm) );
19880 putIRegG( sz, pfx, modrm, mkexpr(t1) );
19883 nameIRegG(sz, pfx, modrm), dis_buf);
19890 delta = dis_mov_G_E(vbi, pfx, 1, delta, &ok);
19898 delta = dis_mov_G_E(vbi, pfx, sz, delta, &ok);
19904 if (haveF2orF3(pfx)) goto decode_failure;
19905 delta = dis_mov_E_G(vbi, pfx, 1, delta);
19909 if (haveF2orF3(pfx)) goto decode_failure;
19910 delta = dis_mov_E_G(vbi, pfx, sz, delta);
19914 if (haveF2orF3(pfx)) goto decode_failure;
19922 any segment override bits in pfx. */
19923 addr = disAMode ( &alen, vbi, clearSegBits(pfx), delta, dis_buf, 0 );
19928 putIRegG( sz, pfx, modrm,
19934 nameIRegG(sz,pfx,modrm));
19942 if (haveF2orF3(pfx)) goto decode_failure;
19968 addr = disAMode ( &len, vbi, pfx, delta, dis_buf, 0 );
19979 if (!have66(pfx) && !haveF2(pfx) && haveF3(pfx)) {
19989 !haveF2orF3(pfx)
19991 && getRexB(pfx)==0 ) {
20004 if (haveF2orF3(pfx)) goto decode_failure;
20005 codegen_xchg_rAX_Reg ( pfx, sz, opc - 0x90 );
20009 if (haveF2orF3(pfx)) goto decode_failure;
20028 if (haveF2orF3(pfx)) goto decode_failure;
20050 if (haveF2orF3(pfx)) goto decode_failure;
20106 if (haveF2orF3(pfx)) goto decode_failure;
20179 if (have66orF2orF3(pfx)) goto decode_failure;
20189 assign( addr, handleAddrOverrides(vbi, pfx, mkU64(d64)) );
20192 segRegTxt(pfx), d64,
20197 if (have66orF2orF3(pfx)) goto decode_failure;
20207 assign( addr, handleAddrOverrides(vbi, pfx, mkU64(d64)) );
20210 segRegTxt(pfx), d64);
20216 if (haveF3(pfx) && !haveF2(pfx)) {
20221 guest_RIP_bbstart+delta, "rep movs", pfx );
20226 if (!haveF3(pfx) && !haveF2(pfx)) {
20229 dis_string_op( dis_MOVS, sz, "movs", pfx );
20237 if (haveF3(pfx) && !haveF2(pfx)) {
20242 guest_RIP_bbstart+delta, "repe cmps", pfx );
20251 if (haveF3(pfx) && !haveF2(pfx)) {
20256 guest_RIP_bbstart+delta, "rep stos", pfx );
20261 if (!haveF3(pfx) && !haveF2(pfx)) {
20264 dis_string_op( dis_STOS, sz, "stos", pfx );
20270 if (haveF2orF3(pfx)) goto decode_failure;
20274 if (haveF2orF3(pfx)) goto decode_failure;
20280 dis_string_op( dis_LODS, ( opc == 0xAC ? 1 : sz ), "lods", pfx );
20286 if (haveF2(pfx) && !haveF3(pfx)) {
20291 guest_RIP_bbstart+delta, "repne scas", pfx );
20296 if (!haveF2(pfx) && haveF3(pfx)) {
20301 guest_RIP_bbstart+delta, "repe scas", pfx );
20306 if (!haveF2(pfx) && !haveF3(pfx)) {
20309 dis_string_op( dis_SCAS, sz, "scas", pfx );
20323 if (haveF2orF3(pfx)) goto decode_failure;
20326 putIRegRexB(1, pfx, opc-0xB0, mkU8(d64));
20327 DIP("movb $%lld,%s\n", d64, nameIRegRexB(1,pfx,opc-0xB0));
20340 if (haveF2orF3(pfx)) goto decode_failure;
20344 putIRegRexB(8, pfx, opc-0xB8, mkU64(d64));
20346 nameIRegRexB(8,pfx,opc-0xB8));
20350 putIRegRexB(sz, pfx, opc-0xB8,
20354 nameIRegRexB(sz,pfx,opc-0xB8));
20360 if (haveF2orF3(pfx)) goto decode_failure;
20362 am_sz = lengthAMode(pfx,delta);
20366 delta = dis_Grp2 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz,
20374 if (haveF2orF3(pfx)) goto decode_failure;
20376 am_sz = lengthAMode(pfx,delta);
20379 delta = dis_Grp2 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz,
20386 if (have66orF3(pfx)) goto decode_failure;
20387 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
20395 if (have66(pfx)) goto decode_failure;
20397 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
20399 DIP(haveF3(pfx) ? "rep ; ret\n" : "ret\n");
20412 if (haveF2orF3(pfx)) goto decode_failure;
20416 putIRegE(sz, pfx, modrm,
20420 nameIRegE(sz,pfx,modrm));
20422 if (haveF2(pfx)) goto decode_failure;
20424 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf,
20436 if (opc == 0xC7 && modrm == 0xF8 && !have66orF2orF3(pfx) && sz == 4
20456 if (opc == 0xC6 && modrm == 0xF8 && !have66orF2orF3(pfx) && sz == 1
20524 if (haveF2orF3(pfx)) goto decode_failure;
20526 am_sz = lengthAMode(pfx,delta);
20530 delta = dis_Grp2 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz,
20538 if (haveF2orF3(pfx)) goto decode_failure;
20540 am_sz = lengthAMode(pfx,delta);
20543 delta = dis_Grp2 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz,
20551 if (haveF2orF3(pfx)) goto decode_failure;
20553 am_sz = lengthAMode(pfx,delta);
20556 delta = dis_Grp2 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz,
20564 if (haveF2orF3(pfx)) goto decode_failure;
20566 am_sz = lengthAMode(pfx,delta);
20568 delta = dis_Grp2 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz,
20584 if (haveF2orF3(pfx))
20613 delta = dis_FPU ( &decode_OK, vbi, pfx, delta );
20630 if (have66orF2orF3(pfx) || 1==getRexW(pfx)) goto decode_failure;
20637 if (haveASO(pfx)) {
20672 DIP("loop%s%s 0x%llx\n", xtra, haveASO(pfx) ? "l" : "", d64);
20678 if (have66orF2orF3(pfx)) goto decode_failure;
20681 if (haveASO(pfx)) {
20736 if (haveF2orF3(pfx)) goto decode_failure;
20785 if (haveF2orF3(pfx)) goto decode_failure;
20801 if (haveF3(pfx)) goto decode_failure;
20802 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
20825 if (haveF3(pfx)) goto decode_failure;
20828 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
20842 if (haveF3(pfx)) goto decode_failure;
20845 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
20893 /* RM'd: if (haveF2orF3(pfx)) goto decode_failure; */
20895 delta = dis_Grp3 ( vbi, pfx, 1, delta, &decode_OK );
20902 /* RM'd: if (haveF2orF3(pfx)) goto decode_failure; */
20904 delta = dis_Grp3 ( vbi, pfx, sz, delta, &decode_OK );
20910 if (haveF2orF3(pfx)) goto decode_failure;
20916 if (haveF2orF3(pfx)) goto decode_failure;
20923 /* RM'd: if (haveF2orF3(pfx)) goto decode_failure; */
20925 delta = dis_Grp4 ( vbi, pfx, delta, &decode_OK );
20932 /* RM'd: if (haveF2orF3(pfx)) goto decode_failure; */
20934 delta = dis_Grp5 ( vbi, pfx, sz, delta, dres, &decode_OK );
21042 Prefix pfx, Int sz, Long deltaIN
21071 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
21183 if (have66orF2orF3(pfx)) goto decode_failure;
21188 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
21198 if (haveF2orF3(pfx)) goto decode_failure;
21201 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
21216 if (have66orF2orF3(pfx)) goto decode_failure;
21241 if (haveF2orF3(pfx)) goto decode_failure;
21242 delta = dis_cmov_E_G(vbi, pfx, sz, (AMD64Condcode)(opc - 0x40), delta);
21263 if (haveF3(pfx)) goto decode_failure;
21264 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
21338 if (haveF2orF3(pfx)) goto decode_failure;
21344 putIRegE(1, pfx, modrm, mkexpr(t1));
21346 nameIRegE(1,pfx,modrm));
21348 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
21375 int bnd = gregOfRexRM(pfx,modrm);
21378 oper = nameIReg64 (eregOfRexRM(pfx,modrm));
21381 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
21386 if (haveF3no66noF2 (pfx)) {
21392 } else if (haveF2no66noF3 (pfx)) {
21398 } else if (have66noF2noF3 (pfx)) {
21404 } else if (haveNo66noF2noF3 (pfx)) {
21423 if (haveF2orF3(pfx)) goto decode_failure;
21477 delta = dis_bt_G_E ( vbi, pfx, sz, delta, BtOpNone, &ok );
21484 d64 = delta + lengthAMode(pfx, delta);
21487 vbi, pfx, delta, modrm, sz,
21495 vbi, pfx, delta, modrm, sz,
21504 delta = dis_bt_G_E ( vbi, pfx, sz, delta, BtOpSet, &ok );
21511 d64 = delta + lengthAMode(pfx, delta);
21514 vbi, pfx, delta, modrm, sz,
21522 vbi, pfx, delta, modrm, sz,
21528 if (haveF2orF3(pfx)) goto decode_failure;
21529 delta = dis_mul_E_G ( vbi, pfx, sz, delta );
21535 delta = dis_cmpxchg_G_E ( &ok, vbi, pfx, 1, delta );
21544 delta = dis_cmpxchg_G_E ( &ok, vbi, pfx, sz, delta );
21553 pfx, sz, delta, BtOpReset, &ok );
21559 if (haveF2orF3(pfx)) goto decode_failure;
21562 delta = dis_movx_E_G ( vbi, pfx, delta, 1, sz, False );
21566 if (haveF2orF3(pfx)) goto decode_failure;
21569 delta = dis_movx_E_G ( vbi, pfx, delta, 2, sz, False );
21576 am_sz = lengthAMode(pfx,delta);
21578 delta = dis_Grp8_Imm ( vbi, pfx, delta, modrm, am_sz, sz, d64,
21589 delta = dis_bt_G_E ( vbi, pfx, sz, delta, BtOpComp, &ok );
21595 if (!haveF2orF3(pfx)
21596 || (haveF3noF2(pfx)
21600 delta = dis_bs_E_G ( vbi, pfx, sz, delta, True );
21608 if (!haveF2orF3(pfx)
21609 || (haveF3noF2(pfx)
21613 delta = dis_bs_E_G ( vbi, pfx, sz, delta, False );
21621 if (haveF2orF3(pfx)) goto decode_failure;
21624 delta = dis_movx_E_G ( vbi, pfx, delta, 1, sz, True );
21628 if (haveF2orF3(pfx)) goto decode_failure;
21631 delta = dis_movx_E_G ( vbi, pfx, delta, 2, sz, True );
21636 delta = dis_xadd_G_E ( &decode_OK, vbi, pfx, 1, delta );
21644 delta = dis_xadd_G_E ( &decode_OK, vbi, pfx, sz, delta );
21675 if (have66(pfx)) goto decode_failure;
21682 if (haveF2orF3(pfx)) {
21687 if (haveF2andF3(pfx) || !haveLOCK(pfx)) goto decode_failure;
21690 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
21795 if (haveF2orF3(pfx)) goto decode_failure;
21800 assign( t1, getIRegRexB(4, pfx, opc-0xC8) );
21802 putIRegRexB(4, pfx, opc-0xC8, mkexpr(t2));
21803 DIP("bswapl %s\n", nameIRegRexB(4, pfx, opc-0xC8));
21809 assign( t1, getIRegRexB(8, pfx, opc-0xC8) );
21811 putIRegRexB(8, pfx, opc-0xC8, mkexpr(t2));
21812 DIP("bswapq %s\n", nameIRegRexB(8, pfx, opc-0xC8));
21826 if (!have66orF2orF3(pfx)) {
21903 delta = dis_MMX ( &decode_OK, vbi, pfx, sz, deltaIN );
21930 delta = dis_ESC_0F__SSE2 ( &decode_OK, vbi, pfx, sz, deltaIN, dres );
21940 delta = dis_ESC_0F__SSE3 ( &decode_OK, vbi, pfx, sz, deltaIN );
21951 archinfo, vbi, pfx, sz, deltaIN );
21976 Prefix pfx, Int sz, Long deltaIN
21986 if (!haveF2orF3(pfx) && !haveVEX(pfx)
21994 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
22001 putIRegG(sz, pfx, modrm, mkexpr(dst));
22002 DIP("movbe %s,%s\n", dis_buf, nameIRegG(sz, pfx, modrm));
22004 assign(src, getIRegG(sz, pfx, modrm));
22007 DIP("movbe %s,%s\n", nameIRegG(sz, pfx, modrm), dis_buf);
22026 delta = dis_ESC_0F38__SupSSE3 ( &decode_OK, vbi, pfx, sz, deltaIN );
22036 delta = dis_ESC_0F38__SSE4 ( &decode_OK, vbi, pfx, sz, deltaIN );
22061 Prefix pfx, Int sz, Long deltaIN
22079 delta = dis_ESC_0F3A__SupSSE3 ( &decode_OK, vbi, pfx, sz, deltaIN );
22089 delta = dis_ESC_0F3A__SSE4 ( &decode_OK, vbi, pfx, sz, deltaIN );
22108 Prefix pfx, Long delta, const HChar* name,
22117 UInt rD = gregOfRexRM(pfx, modrm);
22118 UInt rSL = getVexNvvvv(pfx);
22124 vassert(0==getVexL(pfx)/*128*/ && 0==getRexW(pfx)/*WIG?*/);
22130 UInt rSR = eregOfRexRM(pfx, modrm);
22136 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
22176 Prefix pfx, Long delta, const HChar* name,
22181 uses_vvvv, vbi, pfx, delta, name, op, NULL, False, False);
22191 Prefix pfx, Long delta, const HChar* name,
22196 uses_vvvv, vbi, pfx, delta, name,
22204 Prefix pfx, Long delta,
22212 UInt rG = gregOfRexRM(pfx,modrm);
22213 UInt rV = getVexNvvvv(pfx);;
22219 UInt rE = eregOfRexRM(pfx,modrm);
22225 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
22278 Prefix pfx, Long delta,
22286 UInt rG = gregOfRexRM(pfx,modrm);
22287 UInt rV = getVexNvvvv(pfx);;
22293 UInt rE = eregOfRexRM(pfx,modrm);
22299 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
22354 Prefix pfx, Long delta,
22361 UInt rG = gregOfRexRM(pfx,modrm);
22362 UInt rV = getVexNvvvv(pfx);;
22367 UInt rE = eregOfRexRM(pfx,modrm);
22378 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
22464 Long dis_AVX128_shiftE_to_V_imm( Prefix pfx,
22471 UInt rD = getVexNvvvv(pfx);
22480 nameXMMReg(eregOfRexRM(pfx,rm)),
22482 assign( e0, getXMMReg(eregOfRexRM(pfx,rm)) );
22521 Long dis_AVX256_shiftE_to_V_imm( Prefix pfx,
22528 UInt rD = getVexNvvvv(pfx);
22537 nameYMMReg(eregOfRexRM(pfx,rm)),
22539 assign( e0, getYMMReg(eregOfRexRM(pfx,rm)) );
22585 Prefix pfx, Long delta,
22592 UInt rG = gregOfRexRM(pfx,rm);
22593 UInt rV = getVexNvvvv(pfx);
22596 UInt rE = eregOfRexRM(pfx,rm);
22605 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
22628 Prefix pfx, Long delta,
22635 UInt rG = gregOfRexRM(pfx,rm);
22636 UInt rV = getVexNvvvv(pfx);
22641 UInt rE = eregOfRexRM(pfx,rm);
22647 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
22675 Prefix pfx, Long delta,
22682 UInt rG = gregOfRexRM(pfx,rm);
22683 UInt rV = getVexNvvvv(pfx);
22688 UInt rE = eregOfRexRM(pfx,rm);
22694 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
22722 Prefix pfx, Long delta,
22729 UInt rG = gregOfRexRM(pfx,rm);
22730 UInt rV = getVexNvvvv(pfx);
22733 UInt rE = eregOfRexRM(pfx,rm);
22742 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
22762 Prefix pfx, Long delta,
22766 uses_vvvv, vbi, pfx, delta, opname, op,
22778 Prefix pfx, Long delta,
22792 UInt rG = gregOfRexRM(pfx, rm);
22793 UInt rV = getVexNvvvv(pfx);
22802 UInt rE = eregOfRexRM(pfx,rm);
22809 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 1 );
22888 Prefix pfx, Long delta,
22902 UInt rG = gregOfRexRM(pfx, rm);
22903 UInt rV = getVexNvvvv(pfx);
22917 UInt rE = eregOfRexRM(pfx,rm);
22924 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 1 );
22958 Prefix pfx, Long delta,
22968 UInt rG = gregOfRexRM(pfx, rm);
22970 UInt rE = eregOfRexRM(pfx,rm);
22975 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
22991 Prefix pfx, Long delta,
22999 UInt rG = gregOfRexRM(pfx, rm);
23001 UInt rE = eregOfRexRM(pfx,rm);
23006 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23021 Prefix pfx, Long delta, const HChar* name,
23030 UInt rD = gregOfRexRM(pfx, modrm);
23031 UInt rSL = getVexNvvvv(pfx);
23037 vassert(1==getVexL(pfx)/*256*/ && 0==getRexW(pfx)/*WIG?*/);
23043 UInt rSR = eregOfRexRM(pfx, modrm);
23049 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
23088 Prefix pfx, Long delta,
23092 uses_vvvv, vbi, pfx, delta, opname, op,
23104 Prefix pfx, Long delta, const HChar* name,
23109 uses_vvvv, vbi, pfx, delta, name, op, NULL, False, False);
23119 Prefix pfx, Long delta, const HChar* name,
23124 uses_vvvv, vbi, pfx, delta, name,
23133 Prefix pfx, Long delta,
23143 UInt rG = gregOfRexRM(pfx, rm);
23145 UInt rE = eregOfRexRM(pfx,rm);
23150 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23166 Prefix pfx, Long delta,
23174 UInt rG = gregOfRexRM(pfx, rm);
23176 UInt rE = eregOfRexRM(pfx,rm);
23181 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23194 static Long dis_CVTDQ2PD_256 ( VexAbiInfo* vbi, Prefix pfx,
23202 UInt rG = gregOfRexRM(pfx,modrm);
23204 UInt rE = eregOfRexRM(pfx,modrm);
23209 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23230 static Long dis_CVTPD2PS_256 ( VexAbiInfo* vbi, Prefix pfx,
23237 UInt rG = gregOfRexRM(pfx,modrm);
23241 UInt rE = eregOfRexRM(pfx,modrm);
23246 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23364 Prefix pfx, Int sz, Long deltaIN
23381 if (haveF2no66noF3(pfx) && !epartIsReg(getUChar(delta))) {
23383 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23384 UInt rG = gregOfRexRM(pfx,modrm);
23397 if (haveF2no66noF3(pfx) && epartIsReg(getUChar(delta))) {
23399 UInt rG = gregOfRexRM(pfx, modrm);
23400 UInt rE = eregOfRexRM(pfx, modrm);
23401 UInt rV = getVexNvvvv(pfx);
23416 if (haveF3no66noF2(pfx) && !epartIsReg(getUChar(delta))) {
23418 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23419 UInt rG = gregOfRexRM(pfx,modrm);
23432 if (haveF3no66noF2(pfx) && epartIsReg(getUChar(delta))) {
23434 UInt rG = gregOfRexRM(pfx, modrm);
23435 UInt rE = eregOfRexRM(pfx, modrm);
23436 UInt rV = getVexNvvvv(pfx);
23451 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
23453 UInt rG = gregOfRexRM(pfx, modrm);
23455 UInt rE = eregOfRexRM(pfx,modrm);
23460 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23468 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
23470 UInt rG = gregOfRexRM(pfx, modrm);
23472 UInt rE = eregOfRexRM(pfx,modrm);
23477 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23485 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
23487 UInt rG = gregOfRexRM(pfx, modrm);
23489 UInt rE = eregOfRexRM(pfx,modrm);
23494 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23502 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
23504 UInt rG = gregOfRexRM(pfx, modrm);
23506 UInt rE = eregOfRexRM(pfx,modrm);
23511 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23523 if (haveF2no66noF3(pfx) && !epartIsReg(getUChar(delta))) {
23525 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23526 UInt rG = gregOfRexRM(pfx,modrm);
23535 if (haveF2no66noF3(pfx) && epartIsReg(getUChar(delta))) {
23537 UInt rG = gregOfRexRM(pfx, modrm);
23538 UInt rE = eregOfRexRM(pfx, modrm);
23539 UInt rV = getVexNvvvv(pfx);
23553 if (haveF3no66noF2(pfx) && !epartIsReg(getUChar(delta))) {
23555 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23556 UInt rG = gregOfRexRM(pfx,modrm);
23565 if (haveF3no66noF2(pfx) && epartIsReg(getUChar(delta))) {
23567 UInt rG = gregOfRexRM(pfx, modrm);
23568 UInt rE = eregOfRexRM(pfx, modrm);
23569 UInt rV = getVexNvvvv(pfx);
23584 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
23586 UInt rG = gregOfRexRM(pfx,modrm);
23588 UInt rE = eregOfRexRM(pfx,modrm);
23593 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23601 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
23603 UInt rG = gregOfRexRM(pfx,modrm);
23605 UInt rE = eregOfRexRM(pfx,modrm);
23610 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23618 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
23620 UInt rG = gregOfRexRM(pfx,modrm);
23622 UInt rE = eregOfRexRM(pfx,modrm);
23627 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23635 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
23637 UInt rG = gregOfRexRM(pfx,modrm);
23639 UInt rE = eregOfRexRM(pfx,modrm);
23644 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23655 if (haveF2no66noF3(pfx) && 0==getVexL(pfx)/*128*/) {
23656 delta = dis_MOVDDUP_128( vbi, pfx, delta, True/*isAvx*/ );
23660 if (haveF2no66noF3(pfx) && 1==getVexL(pfx)/*256*/) {
23661 delta = dis_MOVDDUP_256( vbi, pfx, delta );
23666 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
23669 UInt rG = gregOfRexRM(pfx, modrm);
23670 UInt rE = eregOfRexRM(pfx, modrm);
23671 UInt rV = getVexNvvvv(pfx);
23687 if ((have66noF2noF3(pfx) || haveNo66noF2noF3(pfx))
23688 && 0==getVexL(pfx)/*128*/ && !epartIsReg(getUChar(delta))) {
23690 UInt rG = gregOfRexRM(pfx, modrm);
23691 UInt rV = getVexNvvvv(pfx);
23692 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23705 if (haveF3no66noF2(pfx) && 0==getVexL(pfx)/*128*/) {
23706 delta = dis_MOVSxDUP_128( vbi, pfx, delta, True/*isAvx*/,
23711 if (haveF3no66noF2(pfx) && 1==getVexL(pfx)/*256*/) {
23712 delta = dis_MOVSxDUP_256( vbi, pfx, delta, True/*isL*/ );
23722 if ((have66noF2noF3(pfx) || haveNo66noF2noF3(pfx))
23723 && 0==getVexL(pfx)/*128*/ && !epartIsReg(getUChar(delta))) {
23725 UInt rG = gregOfRexRM(pfx, modrm);
23726 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23738 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
23741 UInt rG = gregOfRexRM(pfx,modrm);
23742 UInt rV = getVexNvvvv(pfx);
23747 UInt rE = eregOfRexRM(pfx,modrm);
23753 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23766 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
23769 UInt rG = gregOfRexRM(pfx,modrm);
23770 UInt rV = getVexNvvvv(pfx);
23775 UInt rE = eregOfRexRM(pfx,modrm);
23781 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23794 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
23797 UInt rG = gregOfRexRM(pfx,modrm);
23798 UInt rV = getVexNvvvv(pfx);
23803 UInt rE = eregOfRexRM(pfx,modrm);
23809 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23822 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
23825 UInt rG = gregOfRexRM(pfx,modrm);
23826 UInt rV = getVexNvvvv(pfx);
23831 UInt rE = eregOfRexRM(pfx,modrm);
23837 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23853 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
23856 UInt rG = gregOfRexRM(pfx, modrm);
23857 UInt rE = eregOfRexRM(pfx, modrm);
23858 UInt rV = getVexNvvvv(pfx);
23874 if ((have66noF2noF3(pfx) || haveNo66noF2noF3(pfx))
23875 && 0==getVexL(pfx)/*128*/ && !epartIsReg(getUChar(delta))) {
23877 UInt rG = gregOfRexRM(pfx, modrm);
23878 UInt rV = getVexNvvvv(pfx);
23879 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23881 DIP("vmovhp%c %s,%s,%s\n", have66(pfx) ? 'd' : 's',
23892 if (haveF3no66noF2(pfx) && 0==getVexL(pfx)/*128*/) {
23893 delta = dis_MOVSxDUP_128( vbi, pfx, delta, True/*isAvx*/,
23898 if (haveF3no66noF2(pfx) && 1==getVexL(pfx)/*256*/) {
23899 delta = dis_MOVSxDUP_256( vbi, pfx, delta, False/*!isL*/ );
23909 if ((have66noF2noF3(pfxpfx))
23910 && 0==getVexL(pfx)/*128*/ && !epartIsReg(getUChar(delta))) {
23912 UInt rG = gregOfRexRM(pfx, modrm);
23913 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23916 DIP("vmovhp%c %s,%s\n", have66(pfx) ? 'd' : 's',
23924 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
23926 UInt rG = gregOfRexRM(pfx, modrm);
23928 UInt rE = eregOfRexRM(pfx,modrm);
23933 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23942 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
23944 UInt rG = gregOfRexRM(pfx, modrm);
23946 UInt rE = eregOfRexRM(pfx,modrm);
23951 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23960 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
23962 UInt rG = gregOfRexRM(pfx, modrm);
23964 UInt rE = eregOfRexRM(pfx,modrm);
23969 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23978 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
23980 UInt rG = gregOfRexRM(pfx, modrm);
23982 UInt rE = eregOfRexRM(pfx,modrm);
23987 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
23999 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24001 UInt rG = gregOfRexRM(pfx,modrm);
24003 UInt rE = eregOfRexRM(pfx,modrm);
24008 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
24017 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24019 UInt rG = gregOfRexRM(pfx,modrm);
24021 UInt rE = eregOfRexRM(pfx,modrm);
24026 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
24035 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24037 UInt rG = gregOfRexRM(pfx,modrm);
24039 UInt rE = eregOfRexRM(pfx,modrm);
24045 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
24054 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24056 UInt rG = gregOfRexRM(pfx,modrm);
24058 UInt rE = eregOfRexRM(pfx,modrm);
24064 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
24078 if (haveF2no66noF3(pfx) && 0==getRexW(pfx)/*W0*/) {
24080 UInt rV = getVexNvvvv(pfx);
24081 UInt rD = gregOfRexRM(pfx, modrm);
24084 UInt rS = eregOfRexRM(pfx,modrm);
24090 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
24104 if (haveF2no66noF3(pfx) && 1==getRexW(pfx)/*W1*/) {
24106 UInt rV = getVexNvvvv(pfx);
24107 UInt rD = gregOfRexRM(pfx, modrm);
24110 UInt rS = eregOfRexRM(pfx,modrm);
24116 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
24132 if (haveF3no66noF2(pfx) && 1==getRexW(pfx)/*W1*/) {
24134 UInt rV = getVexNvvvv(pfx);
24135 UInt rD = gregOfRexRM(pfx, modrm);
24138 UInt rS = eregOfRexRM(pfx,modrm);
24144 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
24162 if (haveF3no66noF2(pfx) && 0==getRexW(pfx)/*W0*/) {
24164 UInt rV = getVexNvvvv(pfx);
24165 UInt rD = gregOfRexRM(pfx, modrm);
24168 UInt rS = eregOfRexRM(pfx,modrm);
24174 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
24196 if ((have66noF2noF3(pfx) || haveNo66noF2noF3(pfx))
24197 && 0==getVexL(pfx)/*128*/ && !epartIsReg(getUChar(delta))) {
24199 UInt rS = gregOfRexRM(pfx, modrm);
24202 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
24206 DIP("vmovntp%c %s,%s\n", have66(pfx) ? 'd' : 's',
24212 if ((have66noF2noF3(pfx) || haveNo66noF2noF3(pfx))
24213 && 1==getVexL(pfx)/*256*/ && !epartIsReg(getUChar(delta))) {
24215 UInt rS = gregOfRexRM(pfx, modrm);
24218 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
24222 DIP("vmovntp%c %s,%s\n", have66(pfx) ? 'd' : 's',
24230 if (haveF2no66noF3(pfx) && 0==getRexW(pfx)/*W0*/) {
24231 delta = dis_CVTxSD2SI( vbi, pfx, delta, True/*isAvx*/, opc, 4);
24235 if (haveF2no66noF3(pfx) && 1==getRexW(pfx)/*W1*/) {
24236 delta = dis_CVTxSD2SI( vbi, pfx, delta, True/*isAvx*/, opc, 8);
24240 if (haveF3no66noF2(pfx) && 0==getRexW(pfx)/*W0*/) {
24241 delta = dis_CVTxSS2SI( vbi, pfx, delta, True/*isAvx*/, opc, 4);
24245 if (haveF3no66noF2(pfx) && 1==getRexW(pfx)/*W1*/) {
24246 delta = dis_CVTxSS2SI( vbi, pfx, delta, True/*isAvx*/, opc, 8);
24253 if (haveF2no66noF3(pfx) && 0==getRexW(pfx)/*W0*/) {
24254 delta = dis_CVTxSD2SI( vbi, pfx, delta, True/*isAvx*/, opc, 4);
24258 if (haveF2no66noF3(pfx) && 1==getRexW(pfx)/*W1*/) {
24259 delta = dis_CVTxSD2SI( vbi, pfx, delta, True/*isAvx*/, opc, 8);
24263 if (haveF3no66noF2(pfx) && 0==getRexW(pfx)/*W0*/) {
24264 delta = dis_CVTxSS2SI( vbi, pfx, delta, True/*isAvx*/, opc, 4);
24268 if (haveF3no66noF2(pfx) && 1==getRexW(pfx)/*W1*/) {
24269 delta = dis_CVTxSS2SI( vbi, pfx, delta, True/*isAvx*/, opc, 8);
24278 if (have66noF2noF3(pfx)) {
24279 delta = dis_COMISD( vbi, pfx, delta, True/*isAvx*/, opc );
24284 if (haveNo66noF2noF3(pfx)) {
24285 delta = dis_COMISS( vbi, pfx, delta, True/*isAvx*/, opc );
24292 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24293 delta = dis_MOVMSKPD_128( vbi, pfx, delta, True/*isAvx*/ );
24297 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24298 delta = dis_MOVMSKPD_256( vbi, pfx, delta );
24302 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24303 delta = dis_MOVMSKPS_128( vbi, pfx, delta, True/*isAvx*/ );
24307 pfx) && 1==getVexL(pfx)/*256*/) {
24308 delta = dis_MOVMSKPS_256( vbi, pfx, delta );
24315 if (haveF3no66noF2(pfx)) {
24317 uses_vvvv, vbi, pfx, delta, "vsqrtss", Iop_Sqrt32F0x4 );
24321 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24323 uses_vvvv, vbi, pfx, delta, "vsqrtps", Iop_Sqrt32Fx4 );
24327 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24329 uses_vvvv, vbi, pfx, delta, "vsqrtps", Iop_Sqrt32Fx8 );
24333 if (haveF2no66noF3(pfx)) {
24335 uses_vvvv, vbi, pfx, delta, "vsqrtsd", Iop_Sqrt64F0x2 );
24339 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24341 uses_vvvv, vbi, pfx, delta, "vsqrtpd", Iop_Sqrt64Fx2 );
24345 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24347 uses_vvvv, vbi, pfx, delta, "vsqrtpd", Iop_Sqrt64Fx4 );
24354 if (haveF3no66noF2(pfx)) {
24356 uses_vvvv, vbi, pfx, delta, "vrsqrtss", Iop_RSqrt32F0x4 );
24360 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24362 uses_vvvv, vbi, pfx, delta, "vrsqrtps", Iop_RSqrt32Fx4 );
24366 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24368 uses_vvvv, vbi, pfx, delta, "vrsqrtps", Iop_RSqrt32Fx8 );
24375 if (haveF3no66noF2(pfx)) {
24377 uses_vvvv, vbi, pfx, delta, "vrcpss", Iop_Recip32F0x4 );
24381 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24383 uses_vvvv, vbi, pfx, delta, "vrcpps", Iop_Recip32Fx4 );
24387 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24389 uses_vvvv, vbi, pfx, delta, "vrcpps", Iop_Recip32Fx8 );
24397 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24399 uses_vvvv, vbi, pfx, delta, "vandpd", Iop_AndV128 );
24404 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24406 uses_vvvv, vbi, pfx, delta, "vandpd", Iop_AndV256 );
24410 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24412 uses_vvvv, vbi, pfx, delta, "vandps", Iop_AndV128 );
24416 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24418 uses_vvvv, vbi, pfx, delta, "vandps", Iop_AndV256 );
24426 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24428 uses_vvvv, vbi, pfx, delta, "vandpd", Iop_AndV128,
24433 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24435 uses_vvvv, vbi, pfx, delta, "vandpd", Iop_AndV256,
24440 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24442 uses_vvvv, vbi, pfx, delta, "vandps", Iop_AndV128,
24447 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24449 uses_vvvv, vbi, pfx, delta, "vandps", Iop_AndV256,
24458 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24460 uses_vvvv, vbi, pfx, delta, "vorpd", Iop_OrV128 );
24465 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24467 uses_vvvv, vbi, pfx, delta, "vorpd", Iop_OrV256 );
24472 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24474 uses_vvvv, vbi, pfx, delta, "vorps", Iop_OrV128 );
24479 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24481 uses_vvvv, vbi, pfx, delta, "vorps", Iop_OrV256 );
24489 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24491 uses_vvvv, vbi, pfx, delta, "vxorpd", Iop_XorV128 );
24496 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24498 uses_vvvv, vbi, pfx, delta, "vxorpd", Iop_XorV256 );
24503 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24505 uses_vvvv, vbi, pfx, delta, "vxorps", Iop_XorV128 );
24510 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24512 uses_vvvv, vbi, pfx, delta, "vxorps", Iop_XorV256 );
24519 if (haveF2no66noF3(pfx)) {
24521 uses_vvvv, vbi, pfx, delta, "vaddsd", Iop_Add64F0x2 );
24525 if (haveF3no66noF2(pfx)) {
24527 uses_vvvv, vbi, pfx, delta, "vaddss", Iop_Add32F0x4 );
24531 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24533 uses_vvvv, vbi, pfx, delta, "vaddps", Iop_Add32Fx4 );
24537 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24539 uses_vvvv, vbi, pfx, delta, "vaddps", Iop_Add32Fx8 );
24543 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24545 uses_vvvv, vbi, pfx, delta, "vaddpd", Iop_Add64Fx2 );
24549 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24551 uses_vvvv, vbi, pfx, delta, "vaddpd", Iop_Add64Fx4 );
24558 if (haveF2no66noF3(pfx)) {
24560 uses_vvvv, vbi, pfx, delta, "vmulsd", Iop_Mul64F0x2 );
24564 if (haveF3no66noF2(pfx)) {
24566 uses_vvvv, vbi, pfx, delta, "vmulss", Iop_Mul32F0x4 );
24570 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24572 uses_vvvv, vbi, pfx, delta, "vmulps", Iop_Mul32Fx4 );
24576 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24578 uses_vvvv, vbi, pfx, delta, "vmulps", Iop_Mul32Fx8 );
24582 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24584 uses_vvvv, vbi, pfx, delta, "vmulpd", Iop_Mul64Fx2 );
24588 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24590 uses_vvvv, vbi, pfx, delta, "vmulpd", Iop_Mul64Fx4 );
24597 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24598 delta = dis_CVTPS2PD_128( vbi, pfx, delta, True/*isAvx*/ );
24602 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24603 delta = dis_CVTPS2PD_256( vbi, pfx, delta );
24607 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24608 delta = dis_CVTPD2PS_128( vbi, pfx, delta, True/*isAvx*/ );
24612 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24613 delta = dis_CVTPD2PS_256( vbi, pfx, delta );
24617 if (haveF2no66noF3(pfx)) {
24619 UInt rV = getVexNvvvv(pfx);
24620 UInt rD = gregOfRexRM(pfx, modrm);
24625 UInt rS = eregOfRexRM(pfx,modrm);
24631 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
24647 if (haveF3no66noF2(pfx)) {
24649 UInt rV = getVexNvvvv(pfx);
24650 UInt rD = gregOfRexRM(pfx, modrm);
24653 UInt rS = eregOfRexRM(pfx,modrm);
24659 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
24676 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24677 delta = dis_CVTxPS2DQ_128( vbi, pfx, delta,
24682 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24683 delta = dis_CVTxPS2DQ_256( vbi, pfx, delta,
24688 if (haveF3no66noF2(pfx) && 0==getVexL(pfx)/*128*/) {
24689 delta = dis_CVTxPS2DQ_128( vbi, pfx, delta,
24694 if (haveF3no66noF2(pfx) && 1==getVexL(pfx)/*256*/) {
24695 delta = dis_CVTxPS2DQ_256( vbi, pfx, delta,
24700 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24701 delta = dis_CVTDQ2PS_128 ( vbi, pfx, delta, True/*isAvx*/ );
24705 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24706 delta = dis_CVTDQ2PS_256 ( vbi, pfx, delta );
24713 if (haveF2no66noF3(pfx)) {
24715 uses_vvvv, vbi, pfx, delta, "vsubsd", Iop_Sub64F0x2 );
24719 if (haveF3no66noF2(pfx)) {
24721 uses_vvvv, vbi, pfx, delta, "vsubss", Iop_Sub32F0x4 );
24725 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24727 uses_vvvv, vbi, pfx, delta, "vsubps", Iop_Sub32Fx4 );
24731 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24733 uses_vvvv, vbi, pfx, delta, "vsubps", Iop_Sub32Fx8 );
24737 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24739 uses_vvvv, vbi, pfx, delta, "vsubpd", Iop_Sub64Fx2 );
24743 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24745 uses_vvvv, vbi, pfx, delta, "vsubpd", Iop_Sub64Fx4 );
24752 if (haveF2no66noF3(pfx)) {
24754 uses_vvvv, vbi, pfx, delta, "vminsd", Iop_Min64F0x2 );
24758 if (haveF3no66noF2(pfx)) {
24760 uses_vvvv, vbi, pfx, delta, "vminss", Iop_Min32F0x4 );
24764 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24766 uses_vvvv, vbi, pfx, delta, "vminps", Iop_Min32Fx4 );
24770 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24772 uses_vvvv, vbi, pfx, delta, "vminps", Iop_Min32Fx8 );
24776 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24778 uses_vvvv, vbi, pfx, delta, "vminpd", Iop_Min64Fx2 );
24782 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24784 uses_vvvv, vbi, pfx, delta, "vminpd", Iop_Min64Fx4 );
24791 if (haveF2no66noF3(pfx)) {
24793 uses_vvvv, vbi, pfx, delta, "vdivsd", Iop_Div64F0x2 );
24797 if (haveF3no66noF2(pfx)) {
24799 uses_vvvv, vbi, pfx, delta, "vdivss", Iop_Div32F0x4 );
24803 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24805 uses_vvvv, vbi, pfx, delta, "vdivps", Iop_Div32Fx4 );
24809 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24811 uses_vvvv, vbi, pfx, delta, "vdivps", Iop_Div32Fx8 );
24815 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24817 uses_vvvv, vbi, pfx, delta, "vdivpd", Iop_Div64Fx2 );
24821 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24823 uses_vvvv, vbi, pfx, delta, "vdivpd", Iop_Div64Fx4 );
24830 if (haveF2no66noF3(pfx)) {
24832 uses_vvvv, vbi, pfx, delta, "vmaxsd", Iop_Max64F0x2 );
24836 if (haveF3no66noF2(pfx)) {
24838 uses_vvvv, vbi, pfx, delta, "vmaxss", Iop_Max32F0x4 );
24842 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24844 uses_vvvv, vbi, pfx, delta, "vmaxps", Iop_Max32Fx4 );
24848 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24850 uses_vvvv, vbi, pfx, delta, "vmaxps", Iop_Max32Fx8 );
24854 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24856 uses_vvvv, vbi, pfx, delta, "vmaxpd", Iop_Max64Fx2 );
24860 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24862 uses_vvvv, vbi, pfx, delta, "vmaxpd", Iop_Max64Fx4 );
24870 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24872 uses_vvvv, vbi, pfx, delta, "vpunpcklbw",
24879 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24881 uses_vvvv, vbi, pfx, delta, "vpunpcklbw",
24890 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24892 uses_vvvv, vbi, pfx, delta, "vpunpcklwd",
24899 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24901 uses_vvvv, vbi, pfx, delta, "vpunpcklwd",
24910 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24912 uses_vvvv, vbi, pfx, delta, "vpunpckldq",
24919 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24921 uses_vvvv, vbi, pfx, delta, "vpunpckldq",
24930 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24932 uses_vvvv, vbi, pfx, delta, "vpacksswb",
24939 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24941 uses_vvvv, vbi, pfx, delta, "vpacksswb",
24950 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24952 uses_vvvv, vbi, pfx, delta, "vpcmpgtb", Iop_CmpGT8Sx16 );
24957 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24959 uses_vvvv, vbi, pfx, delta, "vpcmpgtb", Iop_CmpGT8Sx32 );
24967 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24969 uses_vvvv, vbi, pfx, delta, "vpcmpgtw", Iop_CmpGT16Sx8 );
24974 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24976 uses_vvvv, vbi, pfx, delta, "vpcmpgtw", Iop_CmpGT16Sx16 );
24984 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
24986 uses_vvvv, vbi, pfx, delta, "vpcmpgtd", Iop_CmpGT32Sx4 );
24991 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
24993 uses_vvvv, vbi, pfx, delta, "vpcmpgtd", Iop_CmpGT32Sx8 );
25001 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
25003 uses_vvvv, vbi, pfx, delta, "vpackuswb",
25010 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
25012 uses_vvvv, vbi, pfx, delta, "vpackuswb",
25021 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
25023 uses_vvvv, vbi, pfx, delta, "vpunpckhbw",
25030 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
25032 uses_vvvv, vbi, pfx, delta, "vpunpckhbw",
25041 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
25043 uses_vvvv, vbi, pfx, delta, "vpunpckhwd",
25050 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
25052 uses_vvvv, vbi, pfx, delta, "vpunpckhwd",
25061 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
25063 uses_vvvv, vbi, pfx, delta, "vpunpckhdq",
25070 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
25072 uses_vvvv, vbi, pfx, delta, "vpunpckhdq",
25081 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
25083 uses_vvvv, vbi, pfx, delta, "vpackssdw",
25090 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
25092 uses_vvvv, vbi, pfx, delta, "vpackssdw",
25101 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
25103 uses_vvvv, vbi, pfx, delta, "vpunpcklqdq",
25110 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
25112 uses_vvvv, vbi, pfx, delta, "vpunpcklqdq",
25121 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
25123 uses_vvvv, vbi, pfx, delta, "vpunpckhqdq",
25130 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
25132 uses_vvvv, vbi, pfx, delta, "vpunpckhqdq",
25140 if (have66noF2noF3(pfx)
25141 && 0==getVexL(pfx)/*128*/ && 0==getRexW(pfx)/*W0*/) {
25147 gregOfRexRM(pfx,modrm),
25148 unop( Iop_32UtoV128, getIReg32(eregOfRexRM(pfx,modrm)) )
25150 DIP("vmovd %s, %s\n", nameIReg32(eregOfRexRM(pfx,modrm)),
25151 nameXMMReg(gregOfRexRM(pfx,modrm)));
25153 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
25156 gregOfRexRM(pfx,modrm),
25160 nameXMMReg(gregOfRexRM(pfx,modrm)));
25165 if (have66noF2noF3(pfx)
25166 && 0==getVexL(pfx)/*128*/ && 1==getRexW(pfx)/*W1*/) {
25172 gregOfRexRM(pfx,modrm),
25173 unop( Iop_64UtoV128, getIReg64(eregOfRexRM(pfx,modrm)) )
25175 DIP("vmovq %s, %s\n", nameIReg64(eregOfRexRM(pfx,modrm)),
25176 nameXMMReg(gregOfRexRM(pfx,modrm)));
25178 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
25181 gregOfRexRM(pfx,modrm),
25185 nameXMMReg(gregOfRexRM(pfx,modrm)));
25194 if ((have66noF2noF3(pfx) || haveF3no66noF2(pfx))
25195 && 1==getVexL(pfx)/*256*/) {
25197 UInt rD = gregOfRexRM(pfx, modrm);
25199 Bool isA = have66noF2noF3(pfx);
25202 UInt rS = eregOfRexRM(pfx, modrm);
25207 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
25219 if ((have66noF2noF3(pfx) || haveF3no66noF2(pfx))
25220 && 0==getVexL(pfx)/*128*/) {
25222 UInt rD = gregOfRexRM(pfx, modrm);
25224 Bool isA = have66noF2noF3(pfx);
25227 UInt rS = eregOfRexRM(pfx, modrm);
25232 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
25246 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
25247 delta = dis_PSHUFD_32x4( vbi, pfx, delta, True/*writesYmm*/);
25251 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
25252 delta = dis_PSHUFD_32x8( vbi, pfx, delta);
25256 if (haveF2no66noF3(pfx) && 0==getVexL(pfx)/*128*/) {
25257 delta = dis_PSHUFxW_128( vbi, pfx, delta,
25262 if (haveF2no66noF3(pfx) && 1==getVexL(pfx)/*256*/) {
25263 delta = dis_PSHUFxW_256( vbi, pfx, delta, False/*!xIsH*/ );
25267 if (haveF3no66noF2(pfx) && 0==getVexL(pfx)/*128*/) {
25268 delta = dis_PSHUFxW_128( vbi, pfx, delta,
25273 if (haveF3no66noF2(pfx) && 1==getVexL(pfx)/*256*/) {
25274 delta = dis_PSHUFxW_256( vbi, pfx, delta, True/*xIsH*/ );
25283 if (have66noF2noF3(pfx)
25284 && 0==getVexL(pfx)/*128*/
25287 delta = dis_AVX128_shiftE_to_V_imm( pfx, delta,
25293 delta = dis_AVX128_shiftE_to_V_imm( pfx, delta,
25299 delta = dis_AVX128_shiftE_to_V_imm( pfx, delta,
25309 if (have66noF2noF3(pfx)
25310 && 1==getVexL(pfx)/*256*/
25313 delta = dis_AVX256_shiftE_to_V_imm( pfx, delta,
25319 delta = dis_AVX256_shiftE_to_V_imm( pfx, delta,
25325 delta = dis_AVX256_shiftE_to_V_imm( pfx, delta,
25338 if (have66noF2noF3(pfx)
25339 && 0==getVexL(pfx)/*128*/
25342 delta = dis_AVX128_shiftE_to_V_imm( pfx, delta,
25348 delta = dis_AVX128_shiftE_to_V_imm( pfx, delta,
25354 delta = dis_AVX128_shiftE_to_V_imm( pfx, delta,
25364 if (have66noF2noF3(pfx)
25365 && 1==getVexL(pfx)/*256*/
25368 delta = dis_AVX256_shiftE_to_V_imm( pfx, delta,
25374 delta = dis_AVX256_shiftE_to_V_imm( pfx, delta,
25380 delta = dis_AVX256_shiftE_to_V_imm( pfx, delta,
25394 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
25396 Int rS = eregOfRexRM(pfx,getUChar(delta));
25397 Int rD = getVexNvvvv(pfx);
25418 delta = dis_AVX128_shiftE_to_V_imm( pfx, delta,
25424 delta = dis_AVX128_shiftE_to_V_imm( pfx, delta,
25435 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/
25437 Int rS = eregOfRexRM(pfx,getUChar(delta));
25438 Int rD = getVexNvvvv(pfx);
25466 delta = dis_AVX256_shiftE_to_V_imm( pfx, delta,
25472 delta = dis_AVX256_shiftE_to_V_imm( pfx, delta,
25484 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
25486 uses_vvvv, vbi, pfx, delta, "vpcmpeqb", Iop_CmpEQ8x16 );
25491 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
25493 uses_vvvv, vbi, pfx, delta, "vpcmpeqb", Iop_CmpEQ8x32 );
25501 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
25503 uses_vvvv, vbi, pfx, delta, "vpcmpeqw", Iop_CmpEQ16x8 );
25508 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
25510 uses_vvvv, vbi, pfx, delta, "vpcmpeqw", Iop_CmpEQ16x16 );
25518 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
25520 uses_vvvv, vbi, pfx, delta, "vpcmpeqd", Iop_CmpEQ32x4 );
25525 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
25527 uses_vvvv, vbi, pfx, delta, "vpcmpeqd", Iop_CmpEQ32x8 );
25534 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
25545 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
25561 if (haveF2no66noF3(pfx) && 0==getVexL(pfx)/*128*/) {
25567 UInt rG = gregOfRexRM(pfx,modrm);
25568 UInt rV = getVexNvvvv(pfx);
25570 UInt rE = eregOfRexRM(pfx,modrm);
25576 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
25589 if (haveF2no66noF3(pfx) && 1==getVexL(pfx)/*256*/) {
25596 UInt rG = gregOfRexRM(pfx,modrm);
25597 UInt rV = getVexNvvvv(pfx);
25600 UInt rE = eregOfRexRM(pfx,modrm);
25606 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
25623 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
25629 UInt rG = gregOfRexRM(pfx,modrm);
25630 UInt rV = getVexNvvvv(pfx);
25632 UInt rE = eregOfRexRM(pfx,modrm);
25638 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
25651 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
25658 UInt rG = gregOfRexRM(pfx,modrm);
25659 UInt rV = getVexNvvvv(pfx);
25662 UInt rE = eregOfRexRM(pfx,modrm);
25668 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
25691 if (haveF3no66noF2(pfx)
25692 && 0==getVexL(pfx)/*128*/ && 0==getRexW(pfx)/*W0*/) {
25695 UInt rG = gregOfRexRM(pfx,modrm);
25697 UInt rE = eregOfRexRM(pfx,modrm);
25702 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
25715 if (have66noF2noF3(pfx)
25716 && 0==getVexL(pfx)/*128*/ && 1==getRexW(pfx)/*W1*/) {
25718 UInt rG = gregOfRexRM(pfx,modrm);
25720 UInt rE = eregOfRexRM(pfx,modrm);
25725 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
25734 if (have66noF2noF3(pfx)
25735 && 0==getVexL(pfx)/*128*/ && 0==getRexW(pfx)/*W0*/) {
25737 UInt rG = gregOfRexRM(pfx,modrm);
25739 UInt rE = eregOfRexRM(pfx,modrm);
25744 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
25756 if ((have66noF2noF3(pfx) || haveF3no66noF2(pfx))
25757 && 1==getVexL(pfx)/*256*/) {
25759 UInt rS = gregOfRexRM(pfx, modrm);
25761 Bool isA = have66noF2noF3(pfx);
25765 UInt rD = eregOfRexRM(pfx, modrm);
25770 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
25781 if ((have66noF2noF3(pfx) || haveF3no66noF2(pfx))
25782 && 0==getVexL(pfx)/*128*/) {
25784 UInt rS = gregOfRexRM(pfx, modrm);
25786 Bool isA = have66noF2noF3(pfx);
25790 UInt rD = eregOfRexRM(pfx, modrm);
25795 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
25808 if (haveNo66noF2noF3(pfx)
25809 && 0==getVexL(pfx)/*LZ*/
25810 && 0==getRexW(pfx) /* be paranoid -- Intel docs don't require this */
25813 delta = dis_STMXCSR(vbi, pfx, delta, True/*isAvx*/);
25817 if (haveNo66noF2noF3(pfx)
25818 && 0==getVexL(pfx)/*LZ*/
25819 && 0==getRexW(pfx) /* be paranoid -- Intel docs don't require this */
25822 delta = dis_LDMXCSR(vbi, pfx, delta, True/*isAvx*/);
25830 if (haveF2no66noF3(pfx)) {
25832 delta = dis_AVX128_cmp_V_E_to_G( uses_vvvv, vbi, pfx, delta,
25840 if (haveF3no66noF2(pfx)) {
25842 delta = dis_AVX128_cmp_V_E_to_G( uses_vvvv, vbi, pfx, delta,
25850 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
25852 delta = dis_AVX128_cmp_V_E_to_G( uses_vvvv, vbi, pfx, delta,
25860 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
25862 delta = dis_AVX256_cmp_V_E_to_G( uses_vvvv, vbi, pfx, delta,
25869 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
25871 delta = dis_AVX128_cmp_V_E_to_G( uses_vvvv, vbi, pfx, delta,
25879 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
25881 delta = dis_AVX256_cmp_V_E_to_G( uses_vvvv, vbi, pfx, delta,
25890 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
25892 UInt rG = gregOfRexRM(pfx, modrm);
25893 UInt rV = getVexNvvvv(pfx);
25900 getIReg32(eregOfRexRM(pfx,modrm))) );
25903 nameIReg32( eregOfRexRM(pfx, modrm) ), nameXMMReg(rG) );
25905 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
25924 if (have66noF2noF3(pfx)
25925 && 0==getVexL(pfx)/*128*/ && 0==getRexW(pfx)/*W0*/) {
25927 delta = dis_PEXTRW_128_EregOnly_toG( vbi, pfx, delta,
25937 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
25942 UInt rG = gregOfRexRM(pfx,modrm);
25943 UInt rV = getVexNvvvv(pfx);
25946 UInt rE = eregOfRexRM(pfx,modrm);
25953 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 1 );
25967 if (haveNo66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
25972 UInt rG = gregOfRexRM(pfx,modrm);
25973 UInt rV = getVexNvvvv(pfx);
25976 UInt rE = eregOfRexRM(pfx,modrm);
25983 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 1 );
25997 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26002 UInt rG = gregOfRexRM(pfx,modrm);
26003 UInt rV = getVexNvvvv(pfx);
26006 UInt rE = eregOfRexRM(pfx,modrm);
26013 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 1 );
26027 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26032 UInt rG = gregOfRexRM(pfx,modrm);
26033 UInt rV = getVexNvvvv(pfx);
26036 UInt rE = eregOfRexRM(pfx,modrm);
26043 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 1 );
26059 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26061 uses_vvvv, vbi, pfx, delta,
26066 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26068 uses_vvvv, vbi, pfx, delta,
26073 if (haveF2no66noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26075 uses_vvvv, vbi, pfx, delta,
26080 if (haveF2no66noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26082 uses_vvvv, vbi, pfx, delta,
26090 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26091 delta = dis_AVX128_shiftV_byE( vbi, pfx, delta,
26098 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26099 delta = dis_AVX256_shiftV_byE( vbi, pfx, delta,
26109 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26110 delta = dis_AVX128_shiftV_byE( vbi, pfx, delta,
26116 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26117 delta = dis_AVX256_shiftV_byE( vbi, pfx, delta,
26126 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26127 delta = dis_AVX128_shiftV_byE( vbi, pfx, delta,
26133 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26134 delta = dis_AVX256_shiftV_byE( vbi, pfx, delta,
26144 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26146 uses_vvvv, vbi, pfx, delta, "vpaddq", Iop_Add64x2 );
26151 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26153 uses_vvvv, vbi, pfx, delta, "vpaddq", Iop_Add64x4 );
26160 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26162 uses_vvvv, vbi, pfx, delta, "vpmullw", Iop_Mul16x8 );
26166 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26168 uses_vvvv, vbi, pfx, delta, "vpmullw", Iop_Mul16x16 );
26178 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
26179 && 0==getRexW(pfx)/*this might be redundant, dunno*/) {
26181 UInt rG = gregOfRexRM(pfx,modrm);
26186 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
26197 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26198 delta = dis_PMOVMSKB_128( vbi, pfx, delta, True/*isAvx*/ );
26202 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26203 delta = dis_PMOVMSKB_256( vbi, pfx, delta );
26210 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26212 uses_vvvv, vbi, pfx, delta, "vpsubusb", Iop_QSub8Ux16 );
26216 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26218 uses_vvvv, vbi, pfx, delta, "vpsubusb", Iop_QSub8Ux32 );
26225 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26227 uses_vvvv, vbi, pfx, delta, "vpsubusw", Iop_QSub16Ux8 );
26231 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26233 uses_vvvv, vbi, pfx, delta, "vpsubusw", Iop_QSub16Ux16 );
26240 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26242 uses_vvvv, vbi, pfx, delta, "vpminub", Iop_Min8Ux16 );
26246 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26248 uses_vvvv, vbi, pfx, delta, "vpminub", Iop_Min8Ux32 );
26256 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26258 uses_vvvv, vbi, pfx, delta, "vpand", Iop_AndV128 );
26263 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26265 uses_vvvv, vbi, pfx, delta, "vpand", Iop_AndV256 );
26272 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26274 uses_vvvv, vbi, pfx, delta, "vpaddusb", Iop_QAdd8Ux16 );
26278 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26280 uses_vvvv, vbi, pfx, delta, "vpaddusb", Iop_QAdd8Ux32 );
26287 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26289 uses_vvvv, vbi, pfx, delta, "vpaddusw", Iop_QAdd16Ux8 );
26293 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26295 uses_vvvv, vbi, pfx, delta, "vpaddusw", Iop_QAdd16Ux16 );
26302 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26304 uses_vvvv, vbi, pfx, delta, "vpmaxub", Iop_Max8Ux16 );
26308 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26310 uses_vvvv, vbi, pfx, delta, "vpmaxub", Iop_Max8Ux32 );
26318 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26320 uses_vvvv, vbi, pfx, delta, "vpandn", Iop_AndV128,
26326 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26328 uses_vvvv, vbi, pfx, delta, "vpandn", Iop_AndV256,
26336 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26338 uses_vvvv, vbi, pfx, delta, "vpavgb", Iop_Avg8Ux16 );
26342 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26344 uses_vvvv, vbi, pfx, delta, "vpavgb", Iop_Avg8Ux32 );
26351 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26352 delta = dis_AVX128_shiftV_byE( vbi, pfx, delta,
26358 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26359 delta = dis_AVX256_shiftV_byE( vbi, pfx, delta,
26368 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26369 delta = dis_AVX128_shiftV_byE( vbi, pfx, delta,
26375 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26376 delta = dis_AVX256_shiftV_byE( vbi, pfx, delta,
26385 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26387 uses_vvvv, vbi, pfx, delta, "vpavgw", Iop_Avg16Ux8 );
26391 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26393 uses_vvvv, vbi, pfx, delta, "vpavgw", Iop_Avg16Ux16 );
26400 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26402 uses_vvvv, vbi, pfx, delta, "vpmulhuw", Iop_MulHi16Ux8 );
26406 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26408 uses_vvvv, vbi, pfx, delta, "vpmulhuw", Iop_MulHi16Ux16 );
26415 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26417 uses_vvvv, vbi, pfx, delta, "vpmulhw", Iop_MulHi16Sx8 );
26421 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26423 uses_vvvv, vbi, pfx, delta, "vpmulhw", Iop_MulHi16Sx16 );
26430 if (haveF3no66noF2(pfx) && 0==getVexL(pfx)/*128*/) {
26431 delta = dis_CVTDQ2PD_128(vbi, pfx, delta, True/*isAvx*/);
26435 if (haveF3no66noF2(pfx) && 1==getVexL(pfx)/*256*/) {
26436 delta = dis_CVTDQ2PD_256(vbi, pfx, delta);
26440 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26441 delta = dis_CVTxPD2DQ_128(vbi, pfx, delta, True/*isAvx*/,
26446 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26447 delta = dis_CVTxPD2DQ_256(vbi, pfx, delta, True/*r2zero*/);
26451 if (haveF2no66noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26452 delta = dis_CVTxPD2DQ_128(vbi, pfx, delta, True/*isAvx*/,
26457 if (haveF2no66noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26458 delta = dis_CVTxPD2DQ_256(vbi, pfx, delta, False/*!r2zero*/);
26465 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26467 UInt rG = gregOfRexRM(pfx,modrm);
26469 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
26479 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26481 UInt rG = gregOfRexRM(pfx,modrm);
26483 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
26496 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26498 uses_vvvv, vbi, pfx, delta, "vpsubsb", Iop_QSub8Sx16 );
26502 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26504 uses_vvvv, vbi, pfx, delta, "vpsubsb", Iop_QSub8Sx32 );
26511 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26513 uses_vvvv, vbi, pfx, delta, "vpsubsw", Iop_QSub16Sx8 );
26517 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26519 uses_vvvv, vbi, pfx, delta, "vpsubsw", Iop_QSub16Sx16 );
26527 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26529 uses_vvvv, vbi, pfx, delta, "vpminsw", Iop_Min16Sx8 );
26534 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26536 uses_vvvv, vbi, pfx, delta, "vpminsw", Iop_Min16Sx16 );
26544 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26546 uses_vvvv, vbi, pfx, delta, "vpor", Iop_OrV128 );
26551 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26553 uses_vvvv, vbi, pfx, delta, "vpor", Iop_OrV256 );
26560 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26562 uses_vvvv, vbi, pfx, delta, "vpaddsb", Iop_QAdd8Sx16 );
26566 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26568 uses_vvvv, vbi, pfx, delta, "vpaddsb", Iop_QAdd8Sx32 );
26575 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26577 uses_vvvv, vbi, pfx, delta, "vpaddsw", Iop_QAdd16Sx8 );
26581 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26583 uses_vvvv, vbi, pfx, delta, "vpaddsw", Iop_QAdd16Sx16 );
26591 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26593 uses_vvvv, vbi, pfx, delta, "vpmaxsw", Iop_Max16Sx8 );
26598 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26600 uses_vvvv, vbi, pfx, delta, "vpmaxsw", Iop_Max16Sx16 );
26608 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26610 uses_vvvv, vbi, pfx, delta, "vpxor", Iop_XorV128 );
26615 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26617 uses_vvvv, vbi, pfx, delta, "vpxor", Iop_XorV256 );
26624 if (haveF2no66noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26626 UInt rD = gregOfRexRM(pfx, modrm);
26629 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
26637 if (haveF2no66noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26639 UInt rD = gregOfRexRM(pfx, modrm);
26642 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
26653 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26654 delta = dis_AVX128_shiftV_byE( vbi, pfx, delta,
26661 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26662 pfx, delta,
26672 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26673 delta = dis_AVX128_shiftV_byE( vbi, pfx, delta,
26679 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26680 delta = dis_AVX256_shiftV_byE( vbi, pfx, delta,
26689 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26690 delta = dis_AVX128_shiftV_byE( vbi, pfx, delta,
26696 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26697 delta = dis_AVX256_shiftV_byE( vbi, pfx, delta,
26706 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26708 uses_vvvv, vbi, pfx, delta,
26713 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26715 uses_vvvv, vbi, pfx, delta,
26723 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26725 uses_vvvv, vbi, pfx, delta,
26730 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26732 uses_vvvv, vbi, pfx, delta,
26740 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26742 uses_vvvv, vbi, pfx, delta,
26747 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26749 uses_vvvv, vbi, pfx, delta,
26757 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
26759 delta = dis_MASKMOVDQU( vbi, pfx, delta, True/*isAvx*/ );
26767 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26769 uses_vvvv, vbi, pfx, delta, "vpsubb", Iop_Sub8x16 );
26774 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26776 uses_vvvv, vbi, pfx, delta, "vpsubb", Iop_Sub8x32 );
26784 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26786 uses_vvvv, vbi, pfx, delta, "vpsubw", Iop_Sub16x8 );
26791 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26793 uses_vvvv, vbi, pfx, delta, "vpsubw", Iop_Sub16x16 );
26801 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26803 uses_vvvv, vbi, pfx, delta, "vpsubd", Iop_Sub32x4 );
26808 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26810 uses_vvvv, vbi, pfx, delta, "vpsubd", Iop_Sub32x8 );
26818 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26820 uses_vvvv, vbi, pfx, delta, "vpsubq", Iop_Sub64x2 );
26825 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26827 uses_vvvv, vbi, pfx, delta, "vpsubq", Iop_Sub64x4 );
26835 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26837 uses_vvvv, vbi, pfx, delta, "vpaddb", Iop_Add8x16 );
26842 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26844 uses_vvvv, vbi, pfx, delta, "vpaddb", Iop_Add8x32 );
26852 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26854 uses_vvvv, vbi, pfx, delta, "vpaddw", Iop_Add16x8 );
26859 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26861 uses_vvvv, vbi, pfx, delta, "vpaddw", Iop_Add16x16 );
26869 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
26871 uses_vvvv, vbi, pfx, delta, "vpaddd", Iop_Add32x4 );
26876 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
26878 uses_vvvv, vbi, pfx, delta, "vpaddd", Iop_Add32x8 );
26977 VexAbiInfo* vbi, Prefix pfx, Long delta,
26982 Int size = getRexW(pfx) ? 8 : 4;
26988 assign( amt, getIRegV(size,pfx) );
26990 assign( src, getIRegE(size,pfx,rm) );
26991 DIP("%s %s,%s,%s\n", opname, nameIRegV(size,pfx),
26992 nameIRegE(size,pfx,rm), nameIRegG(size,pfx,rm));
26995 IRTemp addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
26997 DIP("%s %s,%s,%s\n", opname, nameIRegV(size,pfx), dis_buf,
26998 nameIRegG(size,pfx,rm));
27002 putIRegG( size, pfx, rm,
27012 static Long dis_FMA ( VexAbiInfo* vbi, Prefix pfx, Long delta, UChar opc )
27015 UInt rG = gregOfRexRM(pfx, modrm);
27016 UInt rV = getVexNvvvv(pfx);
27018 IRType ty = getRexW(pfx) ? Ity_F64 : Ity_F32;
27019 IRType vty = scalar ? ty : getVexL(pfx) ? Ity_V256 : Ity_V128;
27096 UInt rE = eregOfRexRM(pfx, modrm);
27113 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
27201 Prefix pfx, Long delta,
27208 UInt rG = gregOfRexRM(pfx,modrm);
27209 UInt rV = getVexNvvvv(pfx);
27211 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
27262 Prefix pfx, Long delta,
27270 UInt rG = gregOfRexRM(pfx,modrm);
27271 UInt rV = getVexNvvvv(pfx);
27276 addr = disAVSIBMode ( &alen, vbi, pfx, delta, dis_buf, &rI,
27328 addr_expr = handleAddrOverrides(vbi, pfx, addr_expr);
27365 Prefix pfx, Int sz, Long deltaIN
27381 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
27383 uses_vvvv, vbi, pfx, delta, "vpshufb", math_PSHUFB_XMM );
27388 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
27390 uses_vvvv, vbi, pfx, delta, "vpshufb", math_PSHUFB_YMM );
27401 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
27402 delta = dis_PHADD_128( vbi, pfx, delta, True/*isAvx*/, opc );
27409 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
27410 delta = dis_PHADD_256( vbi, pfx, delta, opc );
27418 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
27420 uses_vvvv, vbi, pfx, delta, "vpmaddubsw",
27425 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
27427 uses_vvvv, vbi, pfx, delta, "vpmaddubsw",
27439 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
27440 delta = dis_PHADD_128( vbi, pfx, delta, True/*isAvx*/, opc );
27447 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
27448 delta = dis_PHADD_256( vbi, pfx, delta, opc );
27460 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
27468 UInt rG = gregOfRexRM(pfx,modrm);
27469 UInt rV = getVexNvvvv(pfx);
27481 UInt rE = eregOfRexRM(pfx,modrm);
27487 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
27510 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
27519 UInt rG = gregOfRexRM(pfx,modrm);
27520 UInt rV = getVexNvvvv(pfx);
27532 UInt rE = eregOfRexRM(pfx,modrm);
27538 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
27568 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
27574 UInt rG = gregOfRexRM(pfx,modrm);
27575 UInt rV = getVexNvvvv(pfx);
27580 UInt rE = eregOfRexRM(pfx,modrm);
27586 pfx, delta, dis_buf, 0 );
27607 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
27613 UInt rG = gregOfRexRM(pfx,modrm);
27614 UInt rV = getVexNvvvv(pfx);
27619 UInt rE = eregOfRexRM(pfx,modrm);
27625 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
27653 if (have66noF2noF3(pfx)
27654 && 0==getVexL(pfx)/*128*/ && 0==getRexW(pfx)/*W0*/) {
27656 UInt rG = gregOfRexRM(pfx, modrm);
27657 UInt rV = getVexNvvvv(pfx);
27660 UInt rE = eregOfRexRM(pfx, modrm);
27666 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
27680 if (have66noF2noF3(pfx)
27681 && 1==getVexL(pfx)/*256*/ && 0==getRexW(pfx)/*W0*/) {
27683 UInt rG = gregOfRexRM(pfx, modrm);
27684 UInt rV = getVexNvvvv(pfx);
27687 UInt rE = eregOfRexRM(pfx, modrm);
27693 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
27710 if (have66noF2noF3(pfx)
27711 && 0==getVexL(pfx)/*128*/ && 0==getRexW(pfx)/*W0*/) {
27713 UInt rG = gregOfRexRM(pfx, modrm);
27714 UInt rV = getVexNvvvv(pfx);
27717 UInt rE = eregOfRexRM(pfx, modrm);
27723 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
27737 if (have66noF2noF3(pfx)
27738 && 1==getVexL(pfx)/*256*/ && 0==getRexW(pfx)/*W0*/) {
27740 UInt rG = gregOfRexRM(pfx, modrm);
27741 UInt rV = getVexNvvvv(pfx);
27744 UInt rE = eregOfRexRM(pfx, modrm);
27750 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
27767 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
27768 delta = dis_xTESTy_128( vbi, pfx, delta, True/*isAvx*/, 32 );
27772 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
27773 delta = dis_xTESTy_256( vbi, pfx, delta, 32 );
27780 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
27781 delta = dis_xTESTy_128( vbi, pfx, delta, True/*isAvx*/, 64 );
27785 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
27786 delta = dis_xTESTy_256( vbi, pfx, delta, 64 );
27793 if (have66noF2noF3(pfx)
27794 && 1==getVexL(pfx)/*256*/ && 0==getRexW(pfx)/*W0*/) {
27796 uses_vvvv, vbi, pfx, delta, "vpermps", math_VPERMD );
27803 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
27804 delta = dis_xTESTy_128( vbi, pfx, delta, True/*isAvx*/, 0 );
27808 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
27809 delta = dis_xTESTy_256( vbi, pfx, delta, 0 );
27816 if (have66noF2noF3(pfx)
27817 && 0==getVexL(pfx)/*128*/
27820 UInt rG = gregOfRexRM(pfx, modrm);
27821 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
27833 if (have66noF2noF3(pfx)
27834 && 1==getVexL(pfx)/*256*/
27837 UInt rG = gregOfRexRM(pfx, modrm);
27838 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
27851 if (have66noF2noF3(pfx)
27852 && 0==getVexL(pfx)/*128*/
27855 UInt rG = gregOfRexRM(pfx, modrm);
27856 UInt rE = eregOfRexRM(pfx, modrm);
27868 if (have66noF2noF3(pfx)
27869 && 1==getVexL(pfx)/*256*/
27872 UInt rG = gregOfRexRM(pfx, modrm);
27873 UInt rE = eregOfRexRM(pfx, modrm);
27889 if (have66noF2noF3(pfx)
27890 && 1==getVexL(pfx)/*256*/
27893 UInt rG = gregOfRexRM(pfx, modrm);
27894 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
27905 if (have66noF2noF3(pfx)
27906 && 1==getVexL(pfx)/*256*/
27909 UInt rG = gregOfRexRM(pfx, modrm);
27910 UInt rE = eregOfRexRM(pfx, modrm);
27924 if (have66noF2noF3(pfx)
27925 && 1==getVexL(pfx)/*256*/
27928 UInt rG = gregOfRexRM(pfx, modrm);
27929 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
27941 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
27943 uses_vvvv, vbi, pfx, delta,
27948 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
27950 uses_vvvv, vbi, pfx, delta,
27958 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
27960 uses_vvvv, vbi, pfx, delta,
27965 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
27967 uses_vvvv, vbi, pfx, delta,
27975 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
27977 uses_vvvv, vbi, pfx, delta,
27982 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
27984 uses_vvvv, vbi, pfx, delta,
27993 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
27994 delta = dis_PMOVxXBW_128( vbi, pfx, delta,
28000 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28001 pfx, delta, False/*!xIsZ*/ );
28009 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28010 delta = dis_PMOVxXBD_128( vbi, pfx, delta,
28016 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28017 delta = dis_PMOVxXBD_256( vbi, pfx, delta, False/*!xIsZ*/ );
28025 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28026 delta = dis_PMOVSXBQ_128( vbi, pfx, delta, True/*isAvx*/ );
28031 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28032 delta = dis_PMOVSXBQ_256( vbi, pfx, delta );
28039 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28040 delta = dis_PMOVxXWD_128( vbi, pfx, delta,
28045 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28046 delta = dis_PMOVxXWD_256( vbi, pfx, delta, False/*!xIsZ*/ );
28053 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28054 delta = dis_PMOVSXWQ_128( vbi, pfx, delta, True/*isAvx*/ );
28058 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28059 delta = dis_PMOVSXWQ_256( vbi, pfx, delta );
28066 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28067 delta = dis_PMOVxXDQ_128( vbi, pfx, delta,
28072 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28073 delta = dis_PMOVxXDQ_256( vbi, pfx, delta, False/*!xIsZ*/ );
28080 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28082 uses_vvvv, vbi, pfx, delta,
28087 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28089 uses_vvvv, vbi, pfx, delta,
28098 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28100 uses_vvvv, vbi, pfx, delta, "vpcmpeqq", Iop_CmpEQ64x2 );
28105 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28107 uses_vvvv, vbi, pfx, delta, "vpcmpeqq", Iop_CmpEQ64x4 );
28114 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
28117 UInt rD = gregOfRexRM(pfx, modrm);
28119 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
28128 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/
28131 UInt rD = gregOfRexRM(pfx, modrm);
28133 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
28146 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28148 uses_vvvv, vbi, pfx, delta, "vpackusdw",
28155 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28157 uses_vvvv, vbi, pfx, delta, "vpackusdw",
28165 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
28167 delta = dis_VMASKMOV_load( uses_vvvv, vbi, pfx, delta, "vmaskmovps",
28172 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/
28174 delta = dis_VMASKMOV_load( uses_vvvv, vbi, pfx, delta, "vmaskmovps",
28182 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
28184 delta = dis_VMASKMOV_load( uses_vvvv, vbi, pfx, delta, "vmaskmovpd",
28189 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/
28191 delta = dis_VMASKMOV_load( uses_vvvv, vbi, pfx, delta, "vmaskmovpd",
28200 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28201 delta = dis_PMOVxXBW_128( vbi, pfx, delta,
28207 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28208 delta = dis_PMOVxXBW_256( vbi, pfx, delta, True/*xIsZ*/ );
28216 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28217 delta = dis_PMOVxXBD_128( vbi, pfx, delta,
28223 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28224 delta = dis_PMOVxXBD_256( vbi, pfx, delta, True/*xIsZ*/ );
28232 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28233 delta = dis_PMOVZXBQ_128( vbi, pfx, delta, True/*isAvx*/ );
28238 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28239 delta = dis_PMOVZXBQ_256( vbi, pfx, delta );
28247 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28248 delta = dis_PMOVxXWD_128( vbi, pfx, delta,
28254 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28255 delta = dis_PMOVxXWD_256( vbi, pfx, delta, True/*xIsZ*/ );
28262 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28263 delta = dis_PMOVZXWQ_128( vbi, pfx, delta, True/*isAvx*/ );
28267 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28268 delta = dis_PMOVZXWQ_256( vbi, pfx, delta );
28275 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28276 delta = dis_PMOVxXDQ_128( vbi, pfx, delta,
28281 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28282 delta = dis_PMOVxXDQ_256( vbi, pfx, delta, True/*xIsZ*/ );
28289 if (have66noF2noF3(pfx)
28290 && 1==getVexL(pfx)/*256*/ && 0==getRexW(pfx)/*W0*/) {
28292 uses_vvvv, vbi, pfx, delta, "vpermd", math_VPERMD );
28300 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28302 uses_vvvv, vbi, pfx, delta, "vpcmpgtq", Iop_CmpGT64Sx2 );
28307 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28309 uses_vvvv, vbi, pfx, delta, "vpcmpgtq", Iop_CmpGT64Sx4 );
28317 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28319 uses_vvvv, vbi, pfx, delta, "vpminsb", Iop_Min8Sx16 );
28324 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28326 uses_vvvv, vbi, pfx, delta, "vpminsb", Iop_Min8Sx32 );
28334 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28336 uses_vvvv, vbi, pfx, delta, "vpminsd", Iop_Min32Sx4 );
28341 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28343 uses_vvvv, vbi, pfx, delta, "vpminsd", Iop_Min32Sx8 );
28351 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28353 uses_vvvv, vbi, pfx, delta, "vpminuw", Iop_Min16Ux8 );
28358 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28360 uses_vvvv, vbi, pfx, delta, "vpminuw", Iop_Min16Ux16 );
28368 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28370 uses_vvvv, vbi, pfx, delta, "vpminud", Iop_Min32Ux4 );
28375 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28377 uses_vvvv, vbi, pfx, delta, "vpminud", Iop_Min32Ux8 );
28385 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28387 uses_vvvv, vbi, pfx, delta, "vpmaxsb", Iop_Max8Sx16 );
28392 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28394 uses_vvvv, vbi, pfx, delta, "vpmaxsb", Iop_Max8Sx32 );
28402 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28404 uses_vvvv, vbi, pfx, delta, "vpmaxsd", Iop_Max32Sx4 );
28409 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28411 uses_vvvv, vbi, pfx, delta, "vpmaxsd", Iop_Max32Sx8 );
28419 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28421 uses_vvvv, vbi, pfx, delta, "vpmaxuw", Iop_Max16Ux8 );
28426 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28428 uses_vvvv, vbi, pfx, delta, "vpmaxuw", Iop_Max16Ux16 );
28436 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28438 uses_vvvv, vbi, pfx, delta, "vpmaxud", Iop_Max32Ux4 );
28443 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28445 uses_vvvv, vbi, pfx, delta, "vpmaxud", Iop_Max32Ux8 );
28453 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28455 uses_vvvv, vbi, pfx, delta, "vpmulld", Iop_Mul32x4 );
28460 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
28462 uses_vvvv, vbi, pfx, delta, "vpmulld", Iop_Mul32x8 );
28469 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
28470 delta = dis_PHMINPOSUW_128( vbi, pfx, delta, True/*isAvx*/ );
28478 if (have66noF2noF3(pfx) && 0==getRexW(pfx)/*W0*/) {
28479 delta = dis_AVX_var_shiftV_byE( vbi, pfx, delta, "vpsrlvd",
28480 Iop_Shr32, 1==getVexL(pfx) );
28486 if (have66noF2noF3(pfx) && 1==getRexW(pfx)/*W1*/) {
28487 delta = dis_AVX_var_shiftV_byE( vbi, pfx, delta, "vpsrlvq",
28488 Iop_Shr64, 1==getVexL(pfx) );
28497 if (have66noF2noF3(pfx) && 0==getRexW(pfx)/*W0*/) {
28498 delta = dis_AVX_var_shiftV_byE( vbi, pfx, delta, "vpsravd",
28499 Iop_Sar32, 1==getVexL(pfx) );
28508 if (have66noF2noF3(pfx) && 0==getRexW(pfx)/*W0*/) {
28509 delta = dis_AVX_var_shiftV_byE( vbi, pfx, delta, "vpsllvd",
28510 Iop_Shl32, 1==getVexL(pfx) );
28516 if (have66noF2noF3(pfx) && 1==getRexW(pfx)/*W1*/) {
28517 delta = dis_AVX_var_shiftV_byE( vbi, pfx, delta, "vpsllvq",
28518 Iop_Shl64, 1==getVexL(pfx) );
28526 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
28527 && 0==getRexW(pfx)/*W0*/) {
28529 UInt rG = gregOfRexRM(pfx, modrm);
28532 UInt rE = eregOfRexRM(pfx, modrm);
28537 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
28549 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/
28550 && 0==getRexW(pfx)/*W0*/) {
28552 UInt rG = gregOfRexRM(pfx, modrm);
28555 UInt rE = eregOfRexRM(pfx, modrm);
28560 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
28576 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
28577 && 0==getRexW(pfx)/*W0*/) {
28579 UInt rG = gregOfRexRM(pfx, modrm);
28582 UInt rE = eregOfRexRM(pfx, modrm);
28587 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
28597 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/
28598 && 0==getRexW(pfx)/*W0*/) {
28600 UInt rG = gregOfRexRM(pfx, modrm);
28603 UInt rE = eregOfRexRM(pfx, modrm);
28608 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
28622 if (have66noF2noF3(pfx)
28623 && 1==getVexL(pfx)/*256*/
28626 UInt rG = gregOfRexRM(pfx, modrm);
28627 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
28639 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
28640 && 0==getRexW(pfx)/*W0*/) {
28642 UInt rG = gregOfRexRM(pfx, modrm);
28645 UInt rE = eregOfRexRM(pfx, modrm);
28649 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
28665 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/
28666 && 0==getRexW(pfx)/*W0*/) {
28668 UInt rG = gregOfRexRM(pfx, modrm);
28671 UInt rE = eregOfRexRM(pfx, modrm);
28675 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
28695 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
28696 && 0==getRexW(pfx)/*W0*/) {
28698 UInt rG = gregOfRexRM(pfx, modrm);
28701 UInt rE = eregOfRexRM(pfx, modrm);
28705 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
28719 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/
28720 && 0==getRexW(pfx)/*W0*/) {
28722 UInt rG = gregOfRexRM(pfx, modrm);
28725 UInt rE = eregOfRexRM(pfx, modrm);
28729 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 0 );
28747 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
28748 && 0==getRexW(pfx)/*W0*/ && !epartIsReg(getUChar(delta))) {
28749 delta = dis_VMASKMOV_load( uses_vvvv, vbi, pfx, delta, "vpmaskmovd",
28754 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/
28755 && 0==getRexW(pfx)/*W0*/ && !epartIsReg(getUChar(delta))) {
28756 delta = dis_VMASKMOV_load( uses_vvvv, vbi, pfx, delta, "vpmaskmovd",
28761 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
28762 && 1==getRexW(pfx)/*W1*/ && !epartIsReg(getUChar(delta))) {
28763 delta = dis_VMASKMOV_load( uses_vvvv, vbi, pfx, delta, "vpmaskmovq",
28768 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/
28769 && 1==getRexW(pfx)/*W1*/ && !epartIsReg(getUChar(delta))) {
28770 delta = dis_VMASKMOV_load( uses_vvvv, vbi, pfx, delta, "vpmaskmovq",
28778 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
28779 && 0 == getRexW(pfx)/*W0*/ && !epartIsReg(getUChar(delta))) {
28781 delta = dis_VGATHER( uses_vvvv, vbi, pfx, delta, "vpgatherdd",
28787 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/
28788 && 0 == getRexW(pfx)/*W0*/ && !epartIsReg(getUChar(delta))) {
28790 delta = dis_VGATHER( uses_vvvv, vbi, pfx, delta, "vpgatherdd",
28796 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
28797 && 1 == getRexW(pfx)/*W1*/ && !epartIsReg(getUChar(delta))) {
28799 delta = dis_VGATHER( uses_vvvv, vbi, pfx, delta, "vpgatherdq",
28805 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/
28806 && 1 == getRexW(pfx)/*W1*/ && !epartIsReg(getUChar(delta))) {
28808 delta = dis_VGATHER( uses_vvvv, vbi, pfx, delta, "vpgatherdq",
28817 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
28818 && 0 == getRexW(pfx)/*W0*/ && !epartIsReg(getUChar(delta))) {
28820 delta = dis_VGATHER( uses_vvvv, vbi, pfx, delta, "vpgatherqd",
28826 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/
28827 && 0 == getRexW(pfx)/*W0*/ && !epartIsReg(getUChar(delta))) {
28829 delta = dis_VGATHER( uses_vvvv, vbi, pfx, delta, "vpgatherqd",
28835 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
28836 && 1 == getRexW(pfx)/*W1*/ && !epartIsReg(getUChar(delta))) {
28838 delta = dis_VGATHER( uses_vvvv, vbi, pfx, delta, "vpgatherqq",
28844 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/
28845 && 1 == getRexW(pfx)/*W1*/ && !epartIsReg(getUChar(delta))) {
28847 delta = dis_VGATHER( uses_vvvv, vbi, pfx, delta, "vpgatherqq",
28856 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
28857 && 0 == getRexW(pfx)/*W0*/ && !epartIsReg(getUChar(delta))) {
28859 delta = dis_VGATHER( uses_vvvv, vbi, pfx, delta, "vgatherdps",
28865 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/
28866 && 0 == getRexW(pfx)/*W0*/ && !epartIsReg(getUChar(delta))) {
28868 delta = dis_VGATHER( uses_vvvv, vbi, pfx, delta, "vgatherdps",
28874 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
28875 && 1 == getRexW(pfx)/*W1*/ && !epartIsReg(getUChar(delta))) {
28877 delta = dis_VGATHER( uses_vvvv, vbi, pfx, delta, "vgatherdpd",
28883 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/
28884 && 1 == getRexW(pfx)/*W1*/ && !epartIsReg(getUChar(delta))) {
28886 delta = dis_VGATHER( uses_vvvv, vbi, pfx, delta, "vgatherdpd",
28895 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
28896 && 0 == getRexW(pfx)/*W0*/ && !epartIsReg(getUChar(delta))) {
28898 delta = dis_VGATHER( uses_vvvv, vbi, pfx, delta, "vgatherqps",
28904 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/
28905 && 0 == getRexW(pfx)/*W0*/ && !epartIsReg(getUChar(delta))) {
28907 delta = dis_VGATHER( uses_vvvv, vbi, pfx, delta, "vgatherqps",
28913 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/
28914 && 1 == getRexW(pfx)/*W1*/ && !epartIsReg(getUChar(delta))) {
28916 delta = dis_VGATHER( uses_vvvv, vbi, pfx, delta, "vgatherqpd",
28922 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/
28923 && 1 == getRexW(pfx)/*W1*/ && !epartIsReg(getUChar(delta))) {
28925 delta = dis_VGATHER( uses_vvvv, vbi, pfx, delta, "vgatherqpd",
29031 if (have66noF2noF3(pfx)) {
29032 delta = dis_FMA( vbi, pfx, delta, opc );
29048 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
29049 delta = dis_AESx( vbi, pfx, delta, True/*!isAvx*/, opc );
29058 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*LZ*/ && !haveREX(pfx)) {
29059 Int size = getRexW(pfx) ? 8 : 4;
29066 assign( src1, getIRegV(size,pfx) );
29068 assign( src2, getIRegE(size,pfx,rm) );
29069 DIP("andn %s,%s,%s\n", nameIRegE(size,pfx,rm),
29070 nameIRegV(size,pfx), nameIRegG(size,pfx,rm));
29073 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
29075 DIP("andn %s,%s,%s\n", dis_buf, nameIRegV(size,pfx),
29076 nameIRegG(size,pfx,rm));
29083 putIRegG( size, pfx, rm, mkexpr(dst) );
29097 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*LZ*/
29098 && !haveREX(pfx) && gregLO3ofRM(getUChar(delta)) == 3) {
29099 Int size = getRexW(pfx) ? 8 : 4;
29106 assign( src, getIRegE(size,pfx,rm) );
29107 DIP("blsi %s,%s\n", nameIRegE(size,pfx,rm),
29108 nameIRegV(size,pfx));
29111 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
29113 DIP("blsi %s,%s\n", dis_buf, nameIRegV(size,pfx));
29120 putIRegV( size, pfx, mkexpr(dst) );
29131 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*LZ*/
29132 && !haveREX(pfx) && gregLO3ofRM(getUChar(delta)) == 2) {
29133 Int size = getRexW(pfx) ? 8 : 4;
29140 assign( src, getIRegE(size,pfx,rm) );
29141 DIP("blsmsk %s,%s\n", nameIRegE(size,pfx,rm),
29142 nameIRegV(size,pfx));
29145 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
29147 DIP("blsmsk %s,%s\n", dis_buf, nameIRegV(size,pfx));
29154 putIRegV( size, pfx, mkexpr(dst) );
29165 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*LZ*/
29166 && !haveREX(pfx) && gregLO3ofRM(getUChar(delta)) == 1) {
29167 Int size = getRexW(pfx) ? 8 : 4;
29174 assign( src, getIRegE(size,pfx,rm) );
29175 DIP("blsr %s,%s\n", nameIRegE(size,pfx,rm),
29176 nameIRegV(size,pfx));
29179 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
29181 DIP("blsr %s,%s\n", dis_buf, nameIRegV(size,pfx));
29188 putIRegV( size, pfx, mkexpr(dst) );
29202 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*LZ*/ && !haveREX(pfx)) {
29203 Int size = getRexW(pfx) ? 8 : 4;
29212 assign( src2, getIRegV(size,pfx) );
29214 assign( src1, getIRegE(size,pfx,rm) );
29215 DIP("bzhi %s,%s,%s\n", nameIRegV(size,pfx),
29216 nameIRegE(size,pfx,rm), nameIRegG(size,pfx,rm));
29219 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
29221 DIP("bzhi %s,%s,%s\n", nameIRegV(size,pfx), dis_buf,
29222 nameIRegG(size,pfx,rm));
29257 putIRegG( size, pfx, rm, mkexpr(dst) );
29268 if (haveF2no66noF3(pfx) && 0==getVexL(pfx)/*LZ*/ && !haveREX(pfx)) {
29269 Int size = getRexW(pfx) ? 8 : 4;
29275 assign( src, getIRegV(size,pfx) );
29277 assign( mask, getIRegE(size,pfx,rm) );
29278 DIP("pdep %s,%s,%s\n", nameIRegE(size,pfx,rm),
29279 nameIRegV(size,pfx), nameIRegG(size,pfx,rm));
29282 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
29284 DIP("pdep %s,%s,%s\n", dis_buf, nameIRegV(size,pfx),
29285 nameIRegG(size,pfx,rm));
29291 putIRegG( size, pfx, rm,
29301 if (haveF3no66noF2(pfx) && 0==getVexL(pfx)/*LZ*/ && !haveREX(pfx)) {
29302 Int size = getRexW(pfx) ? 8 : 4;
29308 assign( src, getIRegV(size,pfx) );
29310 assign( mask, getIRegE(size,pfx,rm) );
29311 DIP("pext %s,%s,%s\n", nameIRegE(size,pfx,rm),
29312 nameIRegV(size,pfx), nameIRegG(size,pfx,rm));
29315 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
29317 DIP("pext %s,%s,%s\n", dis_buf, nameIRegV(size,pfx),
29318 nameIRegG(size,pfx,rm));
29328 putIRegG( size, pfx, rm,
29341 if (haveF2no66noF3(pfx) && 0==getVexL(pfx)/*LZ*/ && !haveREX(pfx)) {
29342 Int size = getRexW(pfx) ? 8 : 4;
29351 assign( src2, getIRegE(size,pfx,rm) );
29352 DIP("mulx %s,%s,%s\n", nameIRegE(size,pfx,rm),
29353 nameIRegV(size,pfx), nameIRegG(size,pfx,rm));
29356 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
29358 DIP("mulx %s,%s,%s\n", dis_buf, nameIRegV(size,pfx),
29359 nameIRegG(size,pfx,rm));
29365 putIRegV( size, pfx,
29367 putIRegG( size, pfx, rm,
29379 if (haveF3no66noF2(pfx) && 0==getVexL(pfx)/*LZ*/ && !haveREX(pfx)) {
29380 delta = dis_SHIFTX( uses_vvvv, vbi, pfx, delta, "sarx", Iop_Sar8 );
29385 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*LZ*/ && !haveREX(pfx)) {
29386 delta = dis_SHIFTX( uses_vvvv, vbi, pfx, delta, "shlx", Iop_Shl8 );
29391 if (haveF2no66noF3(pfx) && 0==getVexL(pfx)/*LZ*/ && !haveREX(pfx)) {
29392 delta = dis_SHIFTX( uses_vvvv, vbi, pfx, delta, "shrx", Iop_Shr8 );
29397 if (haveNo66noF2noF3(pfx) && 0==getVexL(pfx)/*LZ*/ && !haveREX(pfx)) {
29398 Int size = getRexW(pfx) ? 8 : 4;
29408 assign( src2, getIRegV(size,pfx) );
29410 assign( src1, getIRegE(size,pfx,rm) );
29411 DIP("bextr %s,%s,%s\n", nameIRegV(size,pfx),
29412 nameIRegE(size,pfx,rm), nameIRegG(size,pfx,rm));
29415 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
29417 DIP("bextr %s,%s,%s\n", nameIRegV(size,pfx), dis_buf,
29418 nameIRegG(size,pfx,rm));
29465 putIRegG( size, pfx, rm, mkexpr(dst) );
29522 Prefix pfx, Int sz, Long deltaIN
29539 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/
29540 && 1==getRexW(pfx)/*W1*/) {
29543 UInt rG = gregOfRexRM(pfx, modrm);
29547 UInt rE = eregOfRexRM(pfx, modrm);
29554 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
29578 if (have66noF2noF3(pfx)
29579 && 0==getVexL(pfx)/*128*/ && 0==getRexW(pfx)/*W0*/) {
29582 UInt rG = gregOfRexRM(pfx, modrm);
29583 UInt rV = getVexNvvvv(pfx);
29590 UInt rE = eregOfRexRM(pfx, modrm);
29597 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
29618 if (have66noF2noF3(pfx)
29619 && 1==getVexL(pfx)/*256*/ && 0==getRexW(pfx)/*W0*/) {
29622 UInt rG = gregOfRexRM(pfx, modrm);
29623 UInt rV = getVexNvvvv(pfx);
29630 UInt rE = eregOfRexRM(pfx, modrm);
29637 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
29662 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
29665 UInt rG = gregOfRexRM(pfx, modrm);
29668 UInt rE = eregOfRexRM(pfx, modrm);
29675 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
29692 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
29695 UInt rG = gregOfRexRM(pfx, modrm);
29698 UInt rE = eregOfRexRM(pfx, modrm);
29705 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
29720 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
29723 UInt rG = gregOfRexRM(pfx, modrm);
29726 UInt rE = eregOfRexRM(pfx, modrm);
29733 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
29753 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
29756 UInt rG = gregOfRexRM(pfx, modrm);
29759 UInt rE = eregOfRexRM(pfx, modrm);
29766 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
29790 if (have66noF2noF3(pfx)
29791 && 1==getVexL(pfx)/*256*/ && 0==getRexW(pfx)/*W0*/) {
29794 UInt rG = gregOfRexRM(pfx, modrm);
29795 UInt rV = getVexNvvvv(pfx);
29803 UInt rE = eregOfRexRM(pfx, modrm);
29811 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
29837 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
29839 UInt rG = gregOfRexRM(pfx, modrm);
29851 UInt rE = eregOfRexRM(pfx, modrm);
29858 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
29885 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
29887 UInt rG = gregOfRexRM(pfx, modrm);
29903 UInt rE = eregOfRexRM(pfx, modrm);
29910 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
29942 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
29944 UInt rG = gregOfRexRM(pfx, modrm);
29954 UInt rE = eregOfRexRM(pfx, modrm);
29961 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
29986 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
29988 UInt rG = gregOfRexRM(pfx, modrm);
30000 UInt rE = eregOfRexRM(pfx, modrm);
30007 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
30038 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
30040 UInt rG = gregOfRexRM(pfx, modrm);
30041 UInt rV = getVexNvvvv(pfx);
30048 UInt rE = eregOfRexRM(pfx, modrm);
30058 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
30093 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
30096 UInt rG = gregOfRexRM(pfx, modrm);
30097 UInt rV = getVexNvvvv(pfx);
30102 UInt rE = eregOfRexRM(pfx, modrm);
30109 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
30124 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
30127 UInt rG = gregOfRexRM(pfx, modrm);
30128 UInt rV = getVexNvvvv(pfx);
30133 UInt rE = eregOfRexRM(pfx, modrm);
30140 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
30158 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
30161 UInt rG = gregOfRexRM(pfx, modrm);
30162 UInt rV = getVexNvvvv(pfx);
30167 UInt rE = eregOfRexRM(pfx, modrm);
30174 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
30189 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
30192 UInt rG = gregOfRexRM(pfx, modrm);
30193 UInt rV = getVexNvvvv(pfx);
30198 UInt rE = eregOfRexRM(pfx, modrm);
30205 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
30223 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
30226 UInt rG = gregOfRexRM(pfx, modrm);
30227 UInt rV = getVexNvvvv(pfx);
30232 UInt rE = eregOfRexRM(pfx, modrm);
30239 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
30254 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
30257 UInt rG = gregOfRexRM(pfx, modrm);
30258 UInt rV = getVexNvvvv(pfx);
30265 UInt rE = eregOfRexRM(pfx, modrm);
30272 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
30293 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
30295 UInt rG = gregOfRexRM(pfx, modrm);
30296 UInt rV = getVexNvvvv(pfx);
30304 UInt rE = eregOfRexRM(pfx, modrm);
30311 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
30326 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
30328 UInt rG = gregOfRexRM(pfx, modrm);
30329 UInt rV = getVexNvvvv(pfx);
30339 UInt rE = eregOfRexRM(pfx, modrm);
30346 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
30367 if (have66noF2noF3(pfx)
30368 && 0==getVexL(pfx)/*128*/ && 0==getRexW(pfx)/*W0*/) {
30369 delta = dis_PEXTRB_128_GtoE( vbi, pfx, delta, False/*!isAvx*/ );
30377 if (have66noF2noF3(pfx)
30378 && 0==getVexL(pfx)/*128*/ && 0==getRexW(pfx)/*W0*/) {
30379 delta = dis_PEXTRW( vbi, pfx, delta, True/*isAvx*/ );
30387 if (have66noF2noF3(pfx)
30388 && 0==getVexL(pfx)/*128*/ && 0==getRexW(pfx)/*W0*/) {
30389 delta = dis_PEXTRD( vbi, pfx, delta, True/*isAvx*/ );
30393 if (have66noF2noF3(pfx)
30394 && 0==getVexL(pfx)/*128*/ && 1==getRexW(pfx)/*W1*/) {
30395 delta = dis_PEXTRQ( vbi, pfx, delta, True/*isAvx*/ );
30402 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
30403 delta = dis_EXTRACTPS( vbi, pfx, delta, True/*isAvx*/ );
30412 if (have66noF2noF3(pfx)
30413 && 1==getVexL(pfx)/*256*/ && 0==getRexW(pfx)/*W0*/) {
30416 UInt rG = gregOfRexRM(pfx, modrm);
30417 UInt rV = getVexNvvvv(pfx);
30420 UInt rE = eregOfRexRM(pfx, modrm);
30427 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
30447 if (have66noF2noF3(pfx)
30448 && 1==getVexL(pfx)/*256*/ && 0==getRexW(pfx)/*W0*/) {
30451 UInt rS = gregOfRexRM(pfx, modrm);
30454 UInt rD = eregOfRexRM(pfx, modrm);
30462 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
30478 if (have66noF2noF3(pfx)
30479 && 0==getVexL(pfx)/*128*/ && 0==getRexW(pfx)/*W0*/) {
30481 UInt rG = gregOfRexRM(pfx, modrm);
30482 UInt rV = getVexNvvvv(pfx);
30487 UInt rE = eregOfRexRM(pfx,modrm);
30494 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
30514 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
30516 UInt rG = gregOfRexRM(pfx, modrm);
30517 UInt rV = getVexNvvvv(pfx);
30523 UInt rE = eregOfRexRM(pfx, modrm);
30534 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
30553 if (have66noF2noF3(pfx)
30554 && 0==getVexL(pfx)/*128*/ && 0==getRexW(pfx)/*W0*/) {
30556 UInt rG = gregOfRexRM(pfx, modrm);
30557 UInt rV = getVexNvvvv(pfx);
30562 UInt rE = eregOfRexRM(pfx,modrm);
30569 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
30585 if (have66noF2noF3(pfx)
30586 && 0==getVexL(pfx)/*128*/ && 1==getRexW(pfx)/*W1*/) {
30588 UInt rG = gregOfRexRM(pfx, modrm);
30589 UInt rV = getVexNvvvv(pfx);
30594 UInt rE = eregOfRexRM(pfx,modrm);
30601 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
30622 if (have66noF2noF3(pfx)
30623 && 1==getVexL(pfx)/*256*/ && 0==getRexW(pfx)/*W0*/) {
30626 UInt rG = gregOfRexRM(pfx, modrm);
30627 UInt rV = getVexNvvvv(pfx);
30630 UInt rE = eregOfRexRM(pfx, modrm);
30637 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
30657 if (have66noF2noF3(pfx)
30658 && 1==getVexL(pfx)/*256*/ && 0==getRexW(pfx)/*W0*/) {
30661 UInt rS = gregOfRexRM(pfx, modrm);
30664 UInt rD = eregOfRexRM(pfx, modrm);
30672 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
30688 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
30690 UInt rG = gregOfRexRM(pfx, modrm);
30691 UInt rV = getVexNvvvv(pfx);
30695 UInt rE = eregOfRexRM(pfx,modrm);
30702 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
30718 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
30720 UInt rG = gregOfRexRM(pfx, modrm);
30721 UInt rV = getVexNvvvv(pfx);
30725 UInt rE = eregOfRexRM(pfx,modrm);
30732 pfx, delta, dis_buf, 1 );
30756 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
30758 UInt rG = gregOfRexRM(pfx, modrm);
30759 UInt rV = getVexNvvvv(pfx);
30763 UInt rE = eregOfRexRM(pfx,modrm);
30770 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
30790 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
30795 UInt rG = gregOfRexRM(pfx, modrm);
30796 UInt rV = getVexNvvvv(pfx);
30801 UInt rE = eregOfRexRM(pfx, modrm);
30809 addr = disAMode( &alen, vbi, pfx, delta, dis_buf,
30825 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
30830 UInt rG = gregOfRexRM(pfx, modrm);
30831 UInt rV = getVexNvvvv(pfx);
30838 UInt rE = eregOfRexRM(pfx, modrm);
30846 addr = disAMode( &alen, vbi, pfx, delta, dis_buf,
30872 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
30877 UInt rG = gregOfRexRM(pfx, modrm);
30878 UInt rV = getVexNvvvv(pfx);
30883 UInt rE = eregOfRexRM(pfx, modrm);
30890 addr = disAMode( &alen, vbi, pfx, delta, dis_buf,
30907 if (have66noF2noF3(pfx)
30908 && 1==getVexL(pfx)/*256*/ && 0==getRexW(pfx)/*W0*/) {
30911 UInt rG = gregOfRexRM(pfx, modrm);
30912 UInt rV = getVexNvvvv(pfx);
30920 UInt rE = eregOfRexRM(pfx, modrm);
30928 addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
30955 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
30956 delta = dis_VBLENDV_128 ( vbi, pfx, delta,
30964 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
30965 delta = dis_VBLENDV_256 ( vbi, pfx, delta,
30976 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
30977 delta = dis_VBLENDV_128 ( vbi, pfx, delta,
30985 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
30986 delta = dis_VBLENDV_256 ( vbi, pfx, delta,
30997 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
30998 delta = dis_VBLENDV_128 ( vbi, pfx, delta,
31006 if (have66noF2noF3(pfx) && 1==getVexL(pfx)/*256*/) {
31007 delta = dis_VBLENDV_256 ( vbi, pfx, delta,
31025 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
31027 delta = dis_PCMPxSTRx( vbi, pfx, delta, True/*isAvx*/, opc );
31035 if (have66noF2noF3(pfx) && 0==getVexL(pfx)/*128*/) {
31036 delta = dis_AESKEYGENASSIST( vbi, pfx, delta, True/*!isAvx*/ );
31044 if (haveF2no66noF3(pfx) && 0==getVexL(pfx)/*LZ*/ && !haveREX(pfx)) {
31045 Int size = getRexW(pfx) ? 8 : 4;
31053 assign( src, getIRegE(size,pfx,rm) );
31054 DIP("rorx %d,%s,%s\n", imm8, nameIRegE(size,pfx,rm),
31055 nameIRegG(size,pfx,rm));
31058 addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
31061 DIP("rorx %d,%s,%s\n", imm8, dis_buf, nameIRegG(size,pfx,rm));
31067 putIRegG( size, pfx, rm,
31130 /* pfx holds the summary of prefixes. */
31131 Prefix pfx = PFX_EMPTY;
31229 /* Eat prefixes, summarising the result in pfx and sz, and rejecting
31236 case 0x66: pfx |= PFX_66; break;
31237 case 0x67: pfx |= PFX_ASO; break;
31238 case 0xF2: pfx |= PFX_F2; break;
31239 case 0xF3: pfx |= PFX_F3; break;
31240 case 0xF0: pfx |= PFX_LOCK; *expect_CAS = True; break;
31241 case 0x2E: pfx |= PFX_CS; break;
31242 case 0x3E: pfx |= PFX_DS; break;
31243 case 0x26: pfx |= PFX_ES; break;
31244 case 0x64: pfx |= PFX_FS; break;
31245 case 0x65: pfx |= PFX_GS; break;
31246 case 0x36: pfx |= PFX_SS; break;
31248 pfx |= PFX_REX;
31249 if (pre & (1<<3)) pfx |= PFX_REXW;
31250 if (pre & (1<<2)) pfx |= PFX_REXR;
31251 if (pre & (1<<1)) pfx |= PFX_REXX;
31252 if (pre & (1<<0)) pfx |= PFX_REXB;
31272 pfx |= PFX_VEX;
31274 /* R */ pfx |= (vex1 & (1<<7)) ? 0 : PFX_REXR;
31275 /* X */ pfx |= (vex1 & (1<<6)) ? 0 : PFX_REXX;
31276 /* B */ pfx |= (vex1 & (1<<5)) ? 0 : PFX_REXB;
31286 /* W */ pfx |= (vex2 & (1<<7)) ? PFX_REXW : 0;
31287 /* ~v3 */ pfx |= (vex2 & (1<<6)) ? 0 : PFX_VEXnV3;
31288 /* ~v2 */ pfx |= (vex2 & (1<<5)) ? 0 : PFX_VEXnV2;
31289 /* ~v1 */ pfx |= (vex2 & (1<<4)) ? 0 : PFX_VEXnV1;
31290 /* ~v0 */ pfx |= (vex2 & (1<<3)) ? 0 : PFX_VEXnV0;
31291 /* L */ pfx |= (vex2 & (1<<2)) ? PFX_VEXL : 0;
31295 case 1: pfx |= PFX_66; break;
31296 case 2: pfx |= PFX_F3; break;
31297 case 3: pfx |= PFX_F2; break;
31305 pfx |= PFX_VEX;
31307 /* R */ pfx |= (vex1 & (1<<7)) ? 0 : PFX_REXR;
31308 /* ~v3 */ pfx |= (vex1 & (1<<6)) ? 0 : PFX_VEXnV3;
31309 /* ~v2 */ pfx |= (vex1 & (1<<5)) ? 0 : PFX_VEXnV2;
31310 /* ~v1 */ pfx |= (vex1 & (1<<4)) ? 0 : PFX_VEXnV1;
31311 /* ~v0 */ pfx |= (vex1 & (1<<3)) ? 0 : PFX_VEXnV0;
31312 /* L */ pfx |= (vex1 & (1<<2)) ? PFX_VEXL : 0;
31316 case 1: pfx |= PFX_66; break;
31317 case 2: pfx |= PFX_F3; break;
31318 case 3: pfx |= PFX_F2; break;
31325 if ((pfx & PFX_VEX) && (pfx & PFX_REX))
31331 if (pfx & PFX_F2) n++;
31332 if (pfx & PFX_F3) n++;
31337 if (pfx & PFX_CS) n++;
31338 if (pfx & PFX_DS) n++;
31339 if (pfx & PFX_ES) n++;
31340 if (pfx & PFX_FS) n++;
31341 if (pfx & PFX_GS) n++;
31342 if (pfx & PFX_SS) n++;
31348 if ((pfx & PFX_FS) && !vbi->guest_amd64_assume_fs_is_zero)
31352 if ((pfx & PFX_GS) && !vbi->guest_amd64_assume_gs_is_0x60)
31357 if (pfx & PFX_66) sz = 2;
31358 if ((pfx & PFX_REX) && (pfx & PFX_REXW)) sz = 8;
31363 if (haveLOCK(pfx)) {
31374 if (!(pfx & PFX_VEX)) {
31392 if (!(pfx & PFX_VEX)) {
31401 archinfo, vbi, pfx, sz, delta );
31406 archinfo, vbi, pfx, sz, delta );
31411 archinfo, vbi, pfx, sz, delta );
31416 archinfo, vbi, pfx, sz, delta );
31432 archinfo, vbi, pfx, sz, delta );
31438 archinfo, vbi, pfx, sz, delta );
31444 archinfo, vbi, pfx, sz, delta );
31456 if (getVexNvvvv(pfx) != 0)
31548 if (have66orF2orF3(pfx)) goto decode_failure;
31673 haveREX(pfx) ? 1 : 0, getRexW(pfx), getRexR(pfx),
31674 getRexX(pfx), getRexB(pfx));
31676 haveVEX(pfx) ? 1 : 0, getVexL(pfx),
31677 getVexNvvvv(pfx),
31682 vex_printf("vex amd64->IR: PFX.66=%d PFX.F2=%d PFX.F3=%d\n",
31683 have66(pfx) ? 1 : 0, haveF2(pfx) ? 1 : 0,
31684 haveF3(pfx) ? 1 : 0);