Home | History | Annotate | Download | only in priv

Lines Matching defs:modrm

497 /* Figure out whether the mod and rm parts of a modRM byte refer to a
506 /* Extract the 'g' field from a modRM byte. This only produces 3
515 /* Ditto the 'e' field of a modRM byte. */
834 modrm bytes supply the low 3 bits of the register number. The
840 e register field (when the mod part of modrm indicates that modrm's
848 number extracted from the modrm e or g field is treated as an index
1224 /* Functions for getting register numbers from modrm bytes and REX
1228 /* Extract the g reg field from a modRM byte, and augment it using the
1239 /* Extract the e reg field from a modRM byte, and augment it using the
1241 associated with the e register field (when modrm indicates e is a
1257 field in a modrm byte, taking into account REX (or its absence),
1335 field in a modrm byte, taking into account REX (or its absence),
2429 /* Generate IR to calculate an address indicated by a ModRM and
2890 Is passed the a ptr to the modRM byte, the actual operation, and the
3014 Is passed the a ptr to the modRM byte, the actual operation, and the
3150 Is passed the a ptr to the modRM byte, and the data size. Returns
3196 Is passed the a ptr to the modRM byte, and the data size. Returns
3404 Long delta, UChar modrm,
3417 switch (gregLO3ofRM(modrm)) {
3427 if (epartIsReg(modrm)) {
3430 assign(dst0, getIRegE(sz,pfx,modrm));
3433 if (gregLO3ofRM(modrm) == 2 /* ADC */) {
3437 if (gregLO3ofRM(modrm) == 3 /* SBB */) {
3448 if (gregLO3ofRM(modrm) < 7)
3449 putIRegE(sz, pfx, modrm, mkexpr(dst1));
3453 nameGrp1(gregLO3ofRM(modrm)), nameISize(sz), d64,
3454 nameIRegE(sz,pfx,modrm));
3461 if (gregLO3ofRM(modrm) == 2 /* ADC */) {
3472 if (gregLO3ofRM(modrm) == 3 /* SBB */) {
3484 if (gregLO3ofRM(modrm) < 7) {
3501 nameGrp1(gregLO3ofRM(modrm)), nameISize(sz),
3514 Long delta, UChar modrm,
3518 /* delta on entry points at the modrm byte. */
3532 if (epartIsReg(modrm)) {
3533 assign(dst0, getIRegE(sz, pfx, modrm));
3542 switch (gregLO3ofRM(modrm)) { case 4: case 5: case 6: case 7: isShift = True; }
3545 switch (gregLO3ofRM(modrm)) { case 0: case 1: isRotate = True; }
3548 switch (gregLO3ofRM(modrm)) { case 2: case 3: isRotateC = True; }
3564 Bool left = toBool(gregLO3ofRM(modrm) == 2);
3621 switch (gregLO3ofRM(modrm)) {
3674 Bool left = toBool(gregLO3ofRM(modrm) == 0);
3757 if (epartIsReg(modrm)) {
3758 putIRegE(sz, pfx, modrm, mkexpr(dst1));
3761 nameGrp2(gregLO3ofRM(modrm)), nameISize(sz) );
3766 vex_printf(", %s\n", nameIRegE(sz,pfx,modrm));
3772 nameGrp2(gregLO3ofRM(modrm)), nameISize(sz) );
3788 Long delta, UChar modrm,
3793 And delta on entry points at the modrm byte. */
3806 if (epartIsReg(modrm)) {
3834 switch (gregLO3ofRM(modrm)) {
3848 if (epartIsReg(modrm)) {
3850 assign( t2, widenUto64(getIRegE(sz, pfx, modrm)) );
3852 DIP("%s%c $0x%llx, %s\n", nameGrp8(gregLO3ofRM(modrm)),
3854 src_val, nameIRegE(sz,pfx,modrm));
3860 DIP("%s%c $0x%llx, %s\n", nameGrp8(gregLO3ofRM(modrm)),
3866 switch (gregLO3ofRM(modrm)) {
3884 if (gregLO3ofRM(modrm) != 4 /* BT */) {
3885 if (epartIsReg(modrm)) {
3886 putIRegE(sz, pfx, modrm, narrowTo(ty, mkexpr(t2m)));
4000 UChar modrm;
4008 modrm = getUChar(delta);
4009 if (epartIsReg(modrm)) {
4012 switch (gregLO3ofRM(modrm)) {
4019 getIRegE(sz,pfx,modrm),
4024 nameIRegE(sz, pfx, modrm));
4032 putIRegE(sz, pfx, modrm,
4034 getIRegE(sz, pfx, modrm)));
4036 nameIRegE(sz, pfx, modrm));
4044 assign(src, getIRegE(sz, pfx, modrm));
4048 putIRegE(sz, pfx, modrm, mkexpr(dst1));
4049 DIP("neg%c %s\n", nameISize(sz), nameIRegE(sz, pfx, modrm));
4054 assign(src, getIRegE(sz,pfx,modrm));
4056 nameIRegE(sz,pfx,modrm) );
4061 assign(src, getIRegE(sz,pfx,modrm));
4063 nameIRegE(sz,pfx,modrm) );
4067 assign( t1, getIRegE(sz, pfx, modrm) );
4070 nameIRegE(sz, pfx, modrm));
4074 assign( t1, getIRegE(sz, pfx, modrm) );
4077 nameIRegE(sz, pfx, modrm));
4086 if ((gregLO3ofRM(modrm) == 3/*NEG*/ || gregLO3ofRM(modrm) == 2/*NOT*/)
4095 gregLO3ofRM(modrm)==0/*TEST*/
4102 switch (gregLO3ofRM(modrm)) {
4178 UChar modrm;
4186 modrm = getUChar(delta);
4187 if (epartIsReg(modrm)) {
4190 assign(t1, getIRegE(1, pfx, modrm));
4191 switch (gregLO3ofRM(modrm)) {
4194 putIRegE(1, pfx, modrm, mkexpr(t2));
4199 putIRegE(1, pfx, modrm, mkexpr(t2));
4207 DIP("%sb %s\n", nameGrp4(gregLO3ofRM(modrm)),
4208 nameIRegE(1, pfx, modrm));
4212 if ((gregLO3ofRM(modrm) == 0/*INC*/ || gregLO3ofRM(modrm) == 1/*DEC*/)
4220 switch (gregLO3ofRM(modrm)) {
4246 DIP("%sb %s\n", nameGrp4(gregLO3ofRM(modrm)), dis_buf);
4263 UChar modrm;
4274 modrm = getUChar(delta);
4275 if (epartIsReg(modrm)) {
4280 && (gregLO3ofRM(modrm) == 2 || gregLO3ofRM(modrm) == 4)))
4282 assign(t1, getIRegE(sz,pfx,modrm));
4283 switch (gregLO3ofRM(modrm)) {
4289 putIRegE(sz,pfx,modrm, mkexpr(t2));
4296 putIRegE(sz,pfx,modrm, mkexpr(t2));
4304 assign(t3, getIRegE(sz,pfx,modrm));
4320 assign(t3, getIRegE(sz,pfx,modrm));
4331 assign(t3, getIRegE(sz,pfx,modrm));
4346 DIP("%s%c %s\n", nameGrp5(gregLO3ofRM(modrm)),
4348 nameIRegE(sz, pfx, modrm));
4352 if ((gregLO3ofRM(modrm) == 0/*INC*/ || gregLO3ofRM(modrm) == 1/*DEC*/)
4355 } else if ((gregLO3ofRM(modrm) == 2 || gregLO3ofRM(modrm) == 4)
4362 if (gregLO3ofRM(modrm) != 2 && gregLO3ofRM(modrm) != 4
4363 && gregLO3ofRM(modrm) != 6) {
4366 switch (gregLO3ofRM(modrm)) {
4439 DIP("%s%c %s\n", nameGrp5(gregLO3ofRM(modrm)),
5397 /* On entry, delta points at the second byte of the insn (the modrm
5400 UChar modrm = getUChar(delta+0);
5405 if (modrm < 0xC0) {
5407 /* bits 5,4,3 are an opcode extension, and the modRM also
5412 switch (gregLO3ofRM(modrm)) {
5477 (UInt)gregLO3ofRM(modrm));
5483 switch (modrm) {
5486 fp_do_op_ST_ST ( "add", Iop_AddF64, modrm - 0xC0, 0, False );
5490 fp_do_op_ST_ST ( "mul", Iop_MulF64, modrm - 0xC8, 0, False );
5495 r_dst = (UInt)modrm - 0xD0;
5510 r_dst = (UInt)modrm - 0xD8;
5525 fp_do_op_ST_ST ( "sub", Iop_SubF64, modrm - 0xE0, 0, False );
5529 fp_do_oprev_ST_ST ( "subr", Iop_SubF64, modrm - 0xE8, 0, False );
5533 fp_do_op_ST_ST ( "div", Iop_DivF64, modrm - 0xF0, 0, False );
5537 fp_do_oprev_ST_ST ( "divr", Iop_DivF64, modrm - 0xF8, 0, False );
5549 if (modrm < 0xC0) {
5551 /* bits 5,4,3 are an opcode extension, and the modRM also
5556 switch (gregLO3ofRM(modrm)) {
5737 (UInt)gregLO3ofRM(modrm));
5744 switch (modrm) {
5747 r_src = (UInt)modrm - 0xC0;
5756 r_src = (UInt)modrm - 0xC8;
6047 Bool isSIN = modrm == 0xFE;
6078 if (modrm < 0xC0) {
6080 /* bits 5,4,3 are an opcode extension, and the modRM also
6085 switch (gregLO3ofRM(modrm)) {
6137 (UInt)gregLO3ofRM(modrm));
6145 switch (modrm) {
6148 r_src = (UInt)modrm - 0xC0;
6157 r_src = (UInt)modrm - 0xC8;
6166 r_src = (UInt)modrm - 0xD0;
6175 r_src = (UInt)modrm - 0xD8;
6208 if (modrm < 0xC0) {
6210 /* bits 5,4,3 are an opcode extension, and the modRM also
6215 switch (gregLO3ofRM(modrm)) {
6302 (UInt)gregLO3ofRM(modrm));
6310 switch (modrm) {
6313 r_src = (UInt)modrm - 0xC0;
6322 r_src = (UInt)modrm - 0xC8;
6335 r_src = (UInt)modrm - 0xD0;
6348 r_src = (UInt)modrm - 0xD8;
6371 fp_do_ucomi_ST0_STi( (UInt)modrm - 0xE8, False );
6375 fp_do_ucomi_ST0_STi( (UInt)modrm - 0xF0, False );
6387 if (modrm < 0xC0) {
6389 /* bits 5,4,3 are an opcode extension, and the modRM also
6394 switch (gregLO3ofRM(modrm)) {
6452 (UInt)gregLO3ofRM(modrm));
6460 switch (modrm) {
6463 fp_do_op_ST_ST ( "add", Iop_AddF64, 0, modrm - 0xC0, False );
6467 fp_do_op_ST_ST ( "mul", Iop_MulF64, 0, modrm - 0xC8, False );
6471 fp_do_oprev_ST_ST ( "subr", Iop_SubF64, 0, modrm - 0xE0, False );
6475 fp_do_op_ST_ST ( "sub", Iop_SubF64, 0, modrm - 0xE8, False );
6479 fp_do_oprev_ST_ST ( "divr", Iop_DivF64, 0, modrm - 0xF0, False );
6483 fp_do_op_ST_ST ( "div", Iop_DivF64, 0, modrm - 0xF8, False );
6497 if (modrm < 0xC0) {
6499 /* bits 5,4,3 are an opcode extension, and the modRM also
6504 switch (gregLO3ofRM(modrm)) {
6688 (UInt)gregLO3ofRM(modrm));
6694 switch (modrm) {
6697 r_dst = (UInt)modrm - 0xC0;
6703 r_dst = (UInt)modrm - 0xD0;
6712 r_dst = (UInt)modrm - 0xD8;
6722 r_dst = (UInt)modrm - 0xE0;
6736 r_dst = (UInt)modrm - 0xE8;
6760 if (modrm < 0xC0) {
6762 /* bits 5,4,3 are an opcode extension, and the modRM also
6768 switch (gregLO3ofRM(modrm)) {
6822 (UInt)gregLO3ofRM(modrm));
6830 switch (modrm) {
6833 fp_do_op_ST_ST ( "add", Iop_AddF64, 0, modrm - 0xC0, True );
6837 fp_do_op_ST_ST ( "mul", Iop_MulF64, 0, modrm - 0xC8, True );
6856 fp_do_oprev_ST_ST ( "subr", Iop_SubF64, 0, modrm - 0xE0, True );
6860 fp_do_op_ST_ST ( "sub", Iop_SubF64, 0, modrm - 0xE8, True );
6864 fp_do_oprev_ST_ST ( "divr", Iop_DivF64, 0, modrm - 0xF0, True );
6868 fp_do_op_ST_ST ( "div", Iop_DivF64, 0, modrm - 0xF8, True );
6882 if (modrm < 0xC0) {
6884 /* bits 5,4,3 are an opcode extension, and the modRM also
6889 switch (gregLO3ofRM(modrm)) {
6939 (UInt)gregLO3ofRM(modrm));
6947 switch (modrm) {
6975 fp_do_ucomi_ST0_STi( (UInt)modrm - 0xE8, True );
6980 fp_do_ucomi_ST0_STi( (UInt)modrm - 0xF0, True );
7071 UChar modrm = getUChar(delta);
7072 Bool isReg = epartIsReg(modrm);
7161 argG = getMMXReg(gregLO3ofRM(modrm));
7167 argE = getMMXReg(eregLO3ofRM(modrm));
7199 putMMXReg( gregLO3ofRM(modrm), mkexpr(res) );
7203 ( isReg ? nameMMXReg(eregLO3ofRM(modrm)) : dis_buf ),
7204 nameMMXReg(gregLO3ofRM(modrm)) );
7349 UChar modrm;
7362 modrm = getUChar(delta);
7363 if (epartIsReg(modrm)) {
7366 gregLO3ofRM(modrm),
7369 getIReg32(eregOfRexRM(pfx,modrm)) ) );
7371 nameIReg32(eregOfRexRM(pfx,modrm)),
7372 nameMMXReg(gregLO3ofRM(modrm)));
7377 gregLO3ofRM(modrm),
7381 DIP("movd %s, %s\n", dis_buf, nameMMXReg(gregLO3ofRM(modrm)));
7387 modrm = getUChar(delta);
7388 if (epartIsReg(modrm)) {
7390 putMMXReg( gregLO3ofRM(modrm),
7391 getIReg64(eregOfRexRM(pfx,modrm)) );
7393 nameIReg64(eregOfRexRM(pfx,modrm)),
7394 nameMMXReg(gregLO3ofRM(modrm)));
7398 putMMXReg( gregLO3ofRM(modrm),
7400 DIP("movd{64} %s, %s\n", dis_buf, nameMMXReg(gregLO3ofRM(modrm)));
7411 modrm = getUChar(delta);
7412 if (epartIsReg(modrm)) {
7414 putIReg32( eregOfRexRM(pfx,modrm),
7415 unop(Iop_64to32, getMMXReg(gregLO3ofRM(modrm)) ) );
7417 nameMMXReg(gregLO3ofRM(modrm)),
7418 nameIReg32(eregOfRexRM(pfx,modrm)));
7423 unop(Iop_64to32, getMMXReg(gregLO3ofRM(modrm)) ) );
7424 DIP("movd %s, %s\n", nameMMXReg(gregLO3ofRM(modrm)), dis_buf);
7430 modrm = getUChar(delta);
7431 if (epartIsReg(modrm)) {
7433 putIReg64( eregOfRexRM(pfx,modrm),
7434 getMMXReg(gregLO3ofRM(modrm)) );
7436 nameMMXReg(gregLO3ofRM(modrm)),
7437 nameIReg64(eregOfRexRM(pfx,modrm)));
7442 getMMXReg(gregLO3ofRM(modrm)) );
7443 DIP("movd{64} %s, %s\n", nameMMXReg(gregLO3ofRM(modrm)), dis_buf);
7455 modrm = getUChar(delta);
7456 if (epartIsReg(modrm)) {
7458 putMMXReg( gregLO3ofRM(modrm), getMMXReg(eregLO3ofRM(modrm)) );
7460 nameMMXReg(eregLO3ofRM(modrm)),
7461 nameMMXReg(gregLO3ofRM(modrm)));
7465 putMMXReg( gregLO3ofRM(modrm), loadLE(Ity_I64, mkexpr(addr)) );
7467 dis_buf, nameMMXReg(gregLO3ofRM(modrm)));
7476 modrm = getUChar(delta);
7477 if (epartIsReg(modrm)) {
7479 putMMXReg( eregLO3ofRM(modrm), getMMXReg(gregLO3ofRM(modrm)) );
7481 nameMMXReg(gregLO3ofRM(modrm)),
7482 nameMMXReg(eregLO3ofRM(modrm)));
7486 storeLE( mkexpr(addr), getMMXReg(gregLO3ofRM(modrm)) );
7488 nameMMXReg(gregLO3ofRM(modrm)), dis_buf);
7697 modrm = getUChar(delta);
7698 if (sz != 4 || (!epartIsReg(modrm)))
7703 assign( regM, getMMXReg( eregLO3ofRM(modrm) ));
7704 assign( regD, getMMXReg( gregLO3ofRM(modrm) ));
7716 DIP("maskmovq %s,%s\n", nameMMXReg( eregLO3ofRM(modrm) ),
7717 nameMMXReg( gregLO3ofRM(modrm) ) );
7785 Long delta, UChar modrm,
7793 for printing it. And eip on entry points at the modrm byte. */
7826 assign( gsrc, getIRegG(sz, pfx, modrm) );
7828 if (epartIsReg(modrm)) {
7830 assign( esrc, getIRegE(sz, pfx, modrm) );
7834 nameIRegG(sz, pfx, modrm), nameIRegE(sz, pfx, modrm));
7844 nameIRegG(sz, pfx, modrm), dis_buf);
7939 if (epartIsReg(modrm)) {
7940 putIRegE(sz, pfx, modrm, mkexpr(resTy));
7973 UChar modrm;
7990 modrm = getUChar(delta);
7993 if (epartIsReg(modrm)) {
8010 assign( t_bitno0, widenSto64(getIRegG(sz, pfx, modrm)) );
8012 if (epartIsReg(modrm)) {
8035 storeLE( mkexpr(t_rsp), getIRegE(sz, pfx, modrm) );
8098 if ((haveLOCK(pfx)) && !epartIsReg(modrm)) {
8124 if (epartIsReg(modrm)) {
8130 putIRegE(sz, pfx, modrm, loadLE(szToITy(sz), mkexpr(t_rsp)) );
8135 nameBtOp(op), nameISize(sz), nameIRegG(sz, pfx, modrm),
8136 ( epartIsReg(modrm) ? nameIRegE(sz, pfx, modrm) : dis_buf ) );
8149 UChar modrm;
8161 modrm = getUChar(delta);
8162 isReg = epartIsReg(modrm);
8165 assign( src, getIRegE(sz, pfx, modrm) );
8175 ( isReg ? nameIRegE(sz, pfx, modrm) : dis_buf ),
8176 nameIRegG(sz, pfx, modrm));
8242 widenUto64( getIRegG( sz, pfx, modrm ) )
8255 putIRegG( sz, pfx, modrm, mkexpr(dst) );
8649 Is passed the a ptr to the modRM byte, and the data size. Returns
10058 UChar modrm = getUChar(delta);
10060 if (epartIsReg(modrm)) {
10061 assign( argR, getXMMRegLane64F( eregOfRexRM(pfx,modrm),
10066 nameXMMReg(eregOfRexRM(pfx,modrm)),
10067 nameXMMReg(gregOfRexRM(pfx,modrm)) );
10075 nameXMMReg(gregOfRexRM(pfx,modrm)) );
10077 assign( argL, getXMMRegLane64F( gregOfRexRM(pfx,modrm),
10101 UChar modrm = getUChar(delta);
10103 if (epartIsReg(modrm)) {
10104 assign( argR, getXMMRegLane32F( eregOfRexRM(pfx,modrm),
10109 nameXMMReg(eregOfRexRM(pfx,modrm)),
10110 nameXMMReg(gregOfRexRM(pfx,modrm)) );
10118 nameXMMReg(gregOfRexRM(pfx,modrm)) );
10120 assign( argL, getXMMRegLane32F( gregOfRexRM(pfx,modrm),
10145 UChar modrm = getUChar(delta);
10148 if (epartIsReg(modrm)) {
10149 assign( sV, getXMMReg(eregOfRexRM(pfx,modrm)) );
10153 nameXMMReg(eregOfRexRM(pfx,modrm)),
10154 nameXMMReg(gregOfRexRM(pfx,modrm)));
10163 nameXMMReg(gregOfRexRM(pfx,modrm)));
10179 (gregOfRexRM(pfx,modrm), mkexpr(dV));
10190 UChar modrm = getUChar(delta);
10192 UInt rG = gregOfRexRM(pfx,modrm);
10193 if (epartIsReg(modrm)) {
10194 UInt rE = eregOfRexRM(pfx,modrm);
10325 UChar modrm = getUChar(delta);
10331 if (epartIsReg(modrm)) {
10333 assign(f64lo, getXMMRegLane64F(eregOfRexRM(pfx,modrm), 0));
10335 nameXMMReg(eregOfRexRM(pfx,modrm)),
10336 nameIReg(sz, gregOfRexRM(pfx,modrm),
10344 nameIReg(sz, gregOfRexRM(pfx,modrm),
10355 putIReg32( gregOfRexRM(pfx,modrm),
10359 putIReg64( gregOfRexRM(pfx,modrm),
10373 UChar modrm = getUChar(delta);
10379 if (epartIsReg(modrm)) {
10381 assign(f32lo, getXMMRegLane32F(eregOfRexRM(pfx,modrm), 0));
10383 nameXMMReg(eregOfRexRM(pfx,modrm)),
10384 nameIReg(sz, gregOfRexRM(pfx,modrm),
10392 nameIReg(sz, gregOfRexRM(pfx,modrm),
10403 putIReg32( gregOfRexRM(pfx,modrm),
10409 putIReg64( gregOfRexRM(pfx,modrm),
10427 UChar modrm = getUChar(delta);
10428 UInt rG = gregOfRexRM(pfx,modrm);
10429 if (epartIsReg(modrm)) {
10430 UInt rE = eregOfRexRM(pfx,modrm);
10464 UChar modrm = getUChar(delta);
10465 UInt rG = gregOfRexRM(pfx,modrm);
10466 if (epartIsReg(modrm)) {
10467 UInt rE = eregOfRexRM(pfx,modrm);
10501 UChar modrm = getUChar(delta);
10502 UInt rG = gregOfRexRM(pfx,modrm);
10505 if (epartIsReg(modrm)) {
10506 UInt rE = eregOfRexRM(pfx,modrm);
10546 UChar modrm = getUChar(delta);
10549 UInt rG = gregOfRexRM(pfx,modrm);
10552 if (epartIsReg(modrm)) {
10553 UInt rE = eregOfRexRM(pfx,modrm);
10596 UChar modrm = getUChar(delta);
10599 UInt rG = gregOfRexRM(pfx,modrm);
10602 if (epartIsReg(modrm)) {
10603 UInt rE = eregOfRexRM(pfx,modrm);
10648 UChar modrm = getUChar(delta);
10651 UInt rG = gregOfRexRM(pfx,modrm);
10654 if (epartIsReg(modrm)) {
10655 UInt rE = eregOfRexRM(pfx,modrm);
10703 UChar modrm = getUChar(delta);
10706 UInt rG = gregOfRexRM(pfx,modrm);
10709 if (epartIsReg(modrm)) {
10710 UInt rE = eregOfRexRM(pfx,modrm);
10757 UChar modrm = getUChar(delta);
10760 UInt rG = gregOfRexRM(pfx,modrm);
10763 if (epartIsReg(modrm)) {
10764 UInt rE = eregOfRexRM(pfx,modrm);
10805 UChar modrm = getUChar(delta);
10808 UInt rG = gregOfRexRM(pfx,modrm);
10811 if (epartIsReg(modrm)) {
10812 UInt rE = eregOfRexRM(pfx,modrm);
10855 UChar modrm = getUChar(delta);
10856 vassert(epartIsReg(modrm)); /* ensured by caller */
10857 UInt rE = eregOfRexRM(pfx,modrm);
10858 UInt rG = gregOfRexRM(pfx,modrm);
10874 UChar modrm = getUChar(delta);
10875 vassert(epartIsReg(modrm)); /* ensured by caller */
10876 UInt rE = eregOfRexRM(pfx,modrm);
10877 UInt rG = gregOfRexRM(pfx,modrm);
11332 UChar modrm = getUChar(delta);
11333 UInt rG = gregOfRexRM(pfx,modrm);
11342 if (epartIsReg(modrm)) {
11343 UInt rE = eregOfRexRM(pfx,modrm);
11387 UChar modrm = getUChar(delta);
11388 UInt rG = gregOfRexRM(pfx,modrm);
11396 if (epartIsReg(modrm)) {
11397 UInt rE = eregOfRexRM(pfx,modrm);
11432 UChar modrm = getUChar(delta);
11433 UInt rG = gregOfRexRM(pfx,modrm);
11438 if (epartIsReg(modrm)) {
11439 UInt rE = eregOfRexRM(pfx,modrm);
11473 UChar modrm = getUChar(delta);
11475 UInt rG = gregOfRexRM(pfx,modrm);
11477 if (epartIsReg(modrm)) {
11478 UInt rE = eregOfRexRM(pfx,modrm);
11508 UChar modrm = getUChar(delta);
11509 vassert(!epartIsReg(modrm)); /* ensured by caller */
11510 vassert(gregOfRexRM(pfx,modrm) == 3); /* ditto */
11540 UChar modrm = getUChar(delta);
11541 vassert(!epartIsReg(modrm)); /* ensured by caller */
11542 vassert(gregOfRexRM(pfx,modrm) == 2); /* ditto */
11730 UChar modrm = getUChar(delta);
11731 vassert(!epartIsReg(modrm)); /* ensured by caller */
11774 UChar modrm = getUChar(delta);
11775 vassert(!epartIsReg(modrm)); /* ensured by caller */
11985 UChar modrm = getUChar(delta);
11986 vassert(!epartIsReg(modrm)); /* ensured by caller */
12055 UChar modrm = getUChar(delta);
12056 vassert(!epartIsReg(modrm)); /* ensured by caller */
12149 UChar modrm = getUChar(delta);
12150 UInt rG = gregOfRexRM(pfx,modrm);
12151 UInt rE = eregOfRexRM(pfx,modrm);
12162 modrm), 1 ),
12165 getXMMRegLane64( eregOfRexRM(pfx,modrm), 0 ),
12187 UChar modrm = getUChar(delta);
12188 UInt rG = gregOfRexRM(pfx,modrm);
12189 UInt rE = eregOfRexRM(pfx,modrm);
12218 UChar modrm = getUChar(delta);
12219 UInt rG = gregOfRexRM(pfx,modrm);
12220 UInt rE = eregOfRexRM(pfx,modrm);
12269 UChar modrm = getUChar(delta);
12270 UInt rG = gregOfRexRM(pfx,modrm);
12271 UInt rE = eregOfRexRM(pfx,modrm);
12290 UChar modrm = getUChar(delta);
12291 UInt rG = gregOfRexRM(pfx,modrm);
12292 UInt rE = eregOfRexRM(pfx,modrm);
12335 UChar modrm = 0;
12350 modrm = getUChar(delta);
12351 if (epartIsReg(modrm)) {
12352 putXMMReg( gregOfRexRM(pfx,modrm),
12353 getXMMReg( eregOfRexRM(pfx,modrm) ));
12354 DIP("movupd %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
12355 nameXMMReg(gregOfRexRM(pfx,modrm)));
12359 putXMMReg( gregOfRexRM(pfx,modrm),
12362 nameXMMReg(gregOfRexRM(pfx,modrm)));
12372 modrm = getUChar(delta);
12373 if (epartIsReg(modrm)) {
12374 putXMMRegLane64( gregOfRexRM(pfx,modrm), 0,
12375 getXMMRegLane64( eregOfRexRM(pfx,modrm), 0 ));
12376 DIP("movsd %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
12377 nameXMMReg(gregOfRexRM(pfx,modrm)));
12381 putXMMReg( gregOfRexRM(pfx,modrm), mkV128(0) );
12382 putXMMRegLane64( gregOfRexRM(pfx,modrm), 0,
12385 nameXMMReg(gregOfRexRM(pfx,modrm)));
12394 modrm = getUChar(delta);
12395 if (epartIsReg(modrm)) {
12396 putXMMRegLane32( gregOfRexRM(pfx,modrm), 0,
12397 getXMMRegLane32( eregOfRexRM(pfx,modrm), 0 ));
12398 DIP("movss %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
12399 nameXMMReg(gregOfRexRM(pfx,modrm)));
12403 putXMMReg( gregOfRexRM(pfx,modrm), mkV128(0) );
12404 putXMMRegLane32( gregOfRexRM(pfx,modrm), 0,
12407 nameXMMReg(gregOfRexRM(pfx,modrm)));
12415 modrm = getUChar(delta);
12416 if (epartIsReg(modrm)) {
12417 putXMMReg( gregOfRexRM(pfx,modrm),
12418 getXMMReg( eregOfRexRM(pfx,modrm) ));
12419 DIP("movups %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
12420 nameXMMReg(gregOfRexRM(pfx,modrm)));
12424 putXMMReg( gregOfRexRM(pfx,modrm),
12427 nameXMMReg(gregOfRexRM(pfx,modrm)));
12439 modrm = getUChar(delta);
12440 if (epartIsReg(modrm)) {
12441 putXMMRegLane64( eregOfRexRM(pfx,modrm), 0,
12442 getXMMRegLane64( gregOfRexRM(pfx,modrm), 0 ));
12443 DIP("movsd %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12444 nameXMMReg(eregOfRexRM(pfx,modrm)));
12449 getXMMRegLane64(gregOfRexRM(pfx,modrm), 0) );
12450 DIP("movsd %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12459 modrm = getUChar(delta);
12460 if (epartIsReg(modrm)) {
12465 getXMMRegLane32(gregOfRexRM(pfx,modrm), 0) );
12466 DIP("movss %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12475 modrm = getUChar(delta);
12476 if (epartIsReg(modrm)) {
12477 putXMMReg( eregOfRexRM(pfx,modrm),
12478 getXMMReg( gregOfRexRM(pfx,modrm) ) );
12479 DIP("movupd %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12480 nameXMMReg(eregOfRexRM(pfx,modrm)));
12484 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
12485 DIP("movupd %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12494 modrm = getUChar(delta);
12495 if (epartIsReg(modrm)) {
12499 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
12500 DIP("movups %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12513 modrm = getUChar(delta);
12514 if (epartIsReg(modrm)) {
12519 putXMMRegLane64( gregOfRexRM(pfx,modrm),
12523 dis_buf, nameXMMReg( gregOfRexRM(pfx,modrm) ));
12531 modrm = getUChar(delta);
12532 if (epartIsReg(modrm)) {
12534 putXMMRegLane64( gregOfRexRM(pfx,modrm),
12536 getXMMRegLane64( eregOfRexRM(pfx,modrm), 1 ));
12537 DIP("movhlps %s, %s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
12538 nameXMMReg(gregOfRexRM(pfx,modrm)));
12542 putXMMRegLane64( gregOfRexRM(pfx,modrm), 0/*lower lane*/,
12545 dis_buf, nameXMMReg( gregOfRexRM(pfx,modrm) ));
12555 modrm = getUChar(delta);
12556 if (!epartIsReg(modrm)) {
12560 getXMMRegLane64( gregOfRexRM(pfx,modrm),
12562 DIP("movlps %s, %s\n", nameXMMReg( gregOfRexRM(pfx,modrm) ),
12572 modrm = getUChar(delta);
12573 if (!epartIsReg(modrm)) {
12577 getXMMRegLane64( gregOfRexRM(pfx,modrm),
12579 DIP("movlpd %s, %s\n", nameXMMReg( gregOfRexRM(pfx,modrm) ),
12596 modrm = getUChar(delta);
12597 UInt rG = gregOfRexRM(pfx,modrm);
12599 if (epartIsReg(modrm)) {
12600 UInt rE = eregOfRexRM(pfx,modrm);
12624 modrm = getUChar(delta);
12625 UInt rG = gregOfRexRM(pfx,modrm);
12627 if (epartIsReg(modrm)) {
12628 UInt rE = eregOfRexRM(pfx,modrm);
12652 modrm = getUChar(delta);
12653 if (epartIsReg(modrm)) {
12658 putXMMRegLane64( gregOfRexRM(pfx,modrm), 1/*upper lane*/,
12661 nameXMMReg( gregOfRexRM(pfx,modrm) ));
12669 modrm = getUChar(delta);
12670 if (epartIsReg(modrm)) {
12672 putXMMRegLane64( gregOfRexRM(pfx,modrm), 1/*upper lane*/,
12673 getXMMRegLane64( eregOfRexRM(pfx,modrm), 0 ) );
12674 DIP("movhps %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
12675 nameXMMReg(gregOfRexRM(pfx,modrm)));
12679 putXMMRegLane64( gregOfRexRM(pfx,modrm), 1/*upper lane*/,
12682 nameXMMReg( gregOfRexRM(pfx,modrm) ));
12692 modrm = getUChar(delta);
12693 if (!epartIsReg(modrm)) {
12697 getXMMRegLane64( gregOfRexRM(pfx,modrm),
12699 DIP("movhps %s,%s\n", nameXMMReg( gregOfRexRM(pfx,modrm) ),
12709 modrm = getUChar(delta);
12710 if (!epartIsReg(modrm)) {
12714 getXMMRegLane64( gregOfRexRM(pfx,modrm),
12716 DIP("movhpd %s,%s\n", nameXMMReg( gregOfRexRM(pfx,modrm) ),
12735 modrm = getUChar(delta);
12736 vassert(!epartIsReg(modrm));
12741 switch (gregLO3ofRM(modrm)) {
12758 modrm = getUChar(delta);
12759 if (epartIsReg(modrm)) {
12760 putXMMReg( gregOfRexRM(pfx,modrm),
12761 getXMMReg( eregOfRexRM(pfx,modrm) ));
12762 DIP("movapd %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
12763 nameXMMReg(gregOfRexRM(pfx,modrm)));
12768 putXMMReg( gregOfRexRM(pfx,modrm),
12771 nameXMMReg(gregOfRexRM(pfx,modrm)));
12779 modrm = getUChar(delta);
12780 if (epartIsReg(modrm)) {
12781 putXMMReg( gregOfRexRM(pfx,modrm),
12782 getXMMReg( eregOfRexRM(pfx,modrm) ));
12783 DIP("movaps %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
12784 nameXMMReg(gregOfRexRM(pfx,modrm)));
12789 putXMMReg( gregOfRexRM(pfx,modrm),
12792 nameXMMReg(gregOfRexRM(pfx,modrm)));
12803 modrm = getUChar(delta);
12804 if (epartIsReg(modrm)) {
12805 putXMMReg( eregOfRexRM(pfx,modrm),
12806 getXMMReg( gregOfRexRM(pfx,modrm) ));
12807 DIP("movaps %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12808 nameXMMReg(eregOfRexRM(pfx,modrm)));
12813 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
12814 DIP("movaps %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12823 modrm = getUChar(delta);
12824 if (epartIsReg(modrm)) {
12825 putXMMReg( eregOfRexRM(pfx,modrm),
12826 getXMMReg( gregOfRexRM(pfx,modrm) ) );
12827 DIP("movapd %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12828 nameXMMReg(eregOfRexRM(pfx,modrm)));
12833 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
12834 DIP("movapd %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12849 modrm = getUChar(delta);
12851 if (epartIsReg(modrm)) {
12852 assign( arg64, getMMXReg(eregLO3ofRM(modrm)) );
12854 DIP("cvtpi2ps %s,%s\n", nameMMXReg(eregLO3ofRM(modrm)),
12855 nameXMMReg(gregOfRexRM(pfx,modrm)));
12861 nameXMMReg(gregOfRexRM(pfx,modrm)) );
12867 gregOfRexRM(pfx,modrm), 0,
12874 gregOfRexRM(pfx,modrm), 1,
12888 modrm = getUChar(delta);
12891 if (epartIsReg(modrm)) {
12892 assign( arg32, getIReg32(eregOfRexRM(pfx,modrm)) );
12894 DIP("cvtsi2ss %s,%s\n", nameIReg32(eregOfRexRM(pfx,modrm)),
12895 nameXMMReg(gregOfRexRM(pfx,modrm)));
12901 nameXMMReg(gregOfRexRM(pfx,modrm)) );
12904 gregOfRexRM(pfx,modrm), 0,
12911 if (epartIsReg(modrm)) {
12912 assign( arg64, getIReg64(eregOfRexRM(pfx,modrm)) );
12914 DIP("cvtsi2ssq %s,%s\n", nameIReg64(eregOfRexRM(pfx,modrm)),
12915 nameXMMReg(gregOfRexRM(pfx,modrm)));
12921 nameXMMReg(gregOfRexRM(pfx,modrm)) );
12924 gregOfRexRM(pfx,modrm), 0,
12936 modrm = getUChar(delta);
12939 if (epartIsReg(modrm)) {
12940 assign( arg32, getIReg32(eregOfRexRM(pfx,modrm)) );
12942 DIP("cvtsi2sdl %s,%s\n", nameIReg32(eregOfRexRM(pfx,modrm)),
12943 nameXMMReg(gregOfRexRM(pfx,modrm)));
12949 nameXMMReg(gregOfRexRM(pfx,modrm)) );
12951 putXMMRegLane64F( gregOfRexRM(pfx,modrm), 0,
12957 if (epartIsReg(modrm)) {
12958 assign( arg64, getIReg64(eregOfRexRM(pfx,modrm)) );
12960 DIP("cvtsi2sdq %s,%s\n", nameIReg64(eregOfRexRM(pfx,modrm)),
12961 nameXMMReg(gregOfRexRM(pfx,modrm)));
12967 nameXMMReg(gregOfRexRM(pfx,modrm)) );
12970 gregOfRexRM(pfx,modrm),
12985 modrm = getUChar(delta);
12986 if (epartIsReg(modrm)) {
12994 assign( arg64, getMMXReg(eregLO3ofRM(modrm)) );
12996 DIP("cvtpi2pd %s,%s\n", nameMMXReg(eregLO3ofRM(modrm)),
12997 nameXMMReg(gregOfRexRM(pfx,modrm)));
13003 nameXMMReg(gregOfRexRM(pfx,modrm)) );
13007 gregOfRexRM(pfx,modrm), 0,
13012 gregOfRexRM(pfx,modrm), 1,
13025 modrm = getUChar(delta);
13026 if (!epartIsReg(modrm)) {
13029 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
13032 nameXMMReg(gregOfRexRM(pfx,modrm)));
13054 modrm = getUChar(delta);
13056 if (epartIsReg(modrm)) {
13058 assign(f32lo, getXMMRegLane32F(eregOfRexRM(pfx,modrm), 0));
13059 assign(f32hi, getXMMRegLane32F(eregOfRexRM(pfx,modrm), 1));
13061 nameXMMReg(eregOfRexRM(pfx,modrm)),
13062 nameMMXReg(gregLO3ofRM(modrm)));
13072 nameMMXReg(gregLO3ofRM(modrm)));
13093 putMMXReg(gregLO3ofRM(modrm), mkexpr(dst64));
13140 modrm = getUChar(delta);
13142 if (epartIsReg(modrm)) {
13144 assign(f64lo, getXMMRegLane64F(eregOfRexRM(pfx,modrm), 0));
13145 assign(f64hi, getXMMRegLane64F(eregOfRexRM(pfx,modrm), 1));
13147 nameXMMReg(eregOfRexRM(pfx,modrm)),
13148 nameMMXReg(gregLO3ofRM(modrm)));
13158 nameMMXReg(gregLO3ofRM(modrm)));
13175 putMMXReg(gregLO3ofRM(modrm), mkexpr(dst64));
13409 modrm = getUChar(delta);
13410 if (epartIsReg(modrm)) {
13412 assign(f32lo, getXMMRegLane32F(eregOfRexRM(pfx,modrm), 0));
13413 DIP("cvtss2sd %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
13414 nameXMMReg(gregOfRexRM(pfx,modrm)));
13420 nameXMMReg(gregOfRexRM(pfx,modrm)));
13423 putXMMRegLane64F( gregOfRexRM(pfx,modrm), 0,
13434 modrm = getUChar(delta);
13435 if (epartIsReg(modrm)) {
13437 assign(f64lo, getXMMRegLane64F(eregOfRexRM(pfx,modrm), 0));
13438 DIP("cvtsd2ss %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
13439 nameXMMReg(gregOfRexRM(pfx,modrm)));
13445 nameXMMReg(gregOfRexRM(pfx,modrm)));
13450 gregOfRexRM(pfx,modrm), 0,
13724 modrm = getUChar(delta);
13725 if (epartIsReg(modrm)) {
13729 gregOfRexRM(pfx,modrm),
13730 unop( Iop_32UtoV128, getIReg32(eregOfRexRM(pfx,modrm)) )
13732 DIP("movd %s, %s\n", nameIReg32(eregOfRexRM(pfx,modrm)),
13733 nameXMMReg(gregOfRexRM(pfx,modrm)));
13736 gregOfRexRM(pfx,modrm),
13737 unop( Iop_64UtoV128, getIReg64(eregOfRexRM(pfx,modrm)) )
13739 DIP("movq %s, %s\n", nameIReg64(eregOfRexRM(pfx,modrm)),
13740 nameXMMReg(gregOfRexRM(pfx,modrm)));
13746 gregOfRexRM(pfx,modrm),
13752 nameXMMReg(gregOfRexRM(pfx,modrm)));
13762 modrm = getUChar(delta);
13763 if (epartIsReg(modrm)) {
13764 putXMMReg( gregOfRexRM(pfx,modrm),
13765 getXMMReg( eregOfRexRM(pfx,modrm) ));
13766 DIP("movdqa %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
13767 nameXMMReg(gregOfRexRM(pfx,modrm)));
13772 putXMMReg( gregOfRexRM(pfx,modrm),
13775 nameXMMReg(gregOfRexRM(pfx,modrm)));
13782 modrm = getUChar(delta);
13783 if (epartIsReg(modrm)) {
13784 putXMMReg( gregOfRexRM(pfx,modrm),
13785 getXMMReg( eregOfRexRM(pfx,modrm) ));
13786 DIP("movdqu %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
13787 nameXMMReg(gregOfRexRM(pfx,modrm)));
13791 putXMMReg( gregOfRexRM(pfx,modrm),
13794 nameXMMReg(gregOfRexRM(pfx,modrm)));
13816 modrm = getUChar(delta);
13817 if (epartIsReg(modrm)) {
13818 assign( sV, getMMXReg(eregLO3ofRM(modrm)) );
13822 nameMMXReg(eregLO3ofRM(modrm)),
13823 nameMMXReg(gregLO3ofRM(modrm)));
13832 nameMMXReg(gregLO3ofRM(modrm)));
13841 putMMXReg(gregLO3ofRM(modrm), mkexpr(dV));
13987 modrm = getUChar(delta);
13988 if (epartIsReg(modrm)) {
13989 putXMMRegLane64( gregOfRexRM(pfx,modrm), 0,
13990 getXMMRegLane64( eregOfRexRM(pfx,modrm), 0 ));
13992 putXMMRegLane64( gregOfRexRM(pfx,modrm), 1, mkU64(0) );
13993 DIP("movsd %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
13994 nameXMMReg(gregOfRexRM(pfx,modrm)));
13998 putXMMReg( gregOfRexRM(pfx,modrm), mkV128(0) );
13999 putXMMRegLane64( gregOfRexRM(pfx,modrm), 0,
14002 nameXMMReg(gregOfRexRM(pfx,modrm)));
14011 modrm = getUChar(delta);
14012 if (epartIsReg(modrm)) {
14015 putIReg32( eregOfRexRM(pfx,modrm),
14016 getXMMRegLane32(gregOfRexRM(pfx,modrm), 0) );
14017 DIP("movd %s, %s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
14018 nameIReg32(eregOfRexRM(pfx,modrm)));
14020 putIReg64( eregOfRexRM(pfx,modrm),
14021 getXMMRegLane64(gregOfRexRM(pfx,modrm), 0) );
14022 DIP("movq %s, %s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
14023 nameIReg64(eregOfRexRM(pfx,modrm)));
14030 ? getXMMRegLane32(gregOfRexRM(pfx,modrm),0)
14031 : getXMMRegLane64(gregOfRexRM(pfx,modrm),0) );
14033 nameXMMReg(gregOfRexRM(pfx,modrm)), dis_buf);
14042 modrm = getUChar(delta);
14043 if (epartIsReg(modrm)) {
14046 putXMMReg( eregOfRexRM(pfx,modrm),
14047 getXMMReg(gregOfRexRM(pfx,modrm)) );
14048 DIP("movdqu %s, %s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
14049 nameXMMReg(eregOfRexRM(pfx,modrm)));
14053 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
14054 DIP("movdqu %s, %s\n", nameXMMReg(gregOfRexRM(pfx,modrm)), dis_buf);
14060 modrm = getUChar(delta);
14061 if (epartIsReg(modrm)) {
14063 putXMMReg( eregOfRexRM(pfx,modrm),
14064 getXMMReg(gregOfRexRM(pfx,modrm)) );
14065 DIP("movdqa %s, %s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
14066 nameXMMReg(eregOfRexRM(pfx,modrm)));
14071 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
14072 DIP("movdqa %s, %s\n", nameXMMReg(gregOfRexRM(pfx,modrm)), dis_buf);
14212 modrm = getUChar(delta);
14213 modrm)) {
14215 storeLE( mkexpr(addr), getIRegG(sz, pfx, modrm) );
14217 nameIRegG(sz, pfx, modrm));
14238 modrm = getUChar(delta);
14241 assign(t5, getMMXReg(gregLO3ofRM(modrm)));
14244 if (epartIsReg(modrm)) {
14245 assign(t4, getIReg16(eregOfRexRM(pfx,modrm)));
14249 nameIReg16(eregOfRexRM(pfx,modrm)),
14250 nameMMXReg(gregLO3ofRM(modrm)));
14258 nameMMXReg(gregLO3ofRM(modrm)));
14268 putMMXReg(gregLO3ofRM(modrm), mkexpr(t6));
14277 modrm = getUChar(delta);
14278 UInt rG = gregOfRexRM(pfx,modrm);
14279 if (epartIsReg(modrm)) {
14280 UInt rE = eregOfRexRM(pfx,modrm);
14308 modrm = getUChar(delta);
14309 if (epartIsReg(modrm)) {
14313 assign(sV, getMMXReg(eregLO3ofRM(modrm)));
14323 putIReg64(gregOfRexRM(pfx,modrm), unop(Iop_16Uto64, mkexpr(t5)));
14325 putIReg32(gregOfRexRM(pfx,modrm), unop(Iop_16Uto32, mkexpr(t5)));
14328 nameMMXReg(eregLO3ofRM(modrm)),
14329 sz==8 ? nameIReg64(gregOfRexRM(pfx,modrm))
14330 : nameIReg32(gregOfRexRM(pfx,modrm))
14358 modrm = getUChar(delta);
14359 UInt rG = gregOfRexRM(pfx,modrm);
14361 if (epartIsReg(modrm)) {
14362 UInt rE = eregOfRexRM(pfx,modrm);
14375 putXMMReg( gregOfRexRM(pfx,modrm), mkexpr(res) );
14384 modrm = getUChar(delta);
14385 assign( dV, getXMMReg(gregOfRexRM(pfx,modrm)) );
14387 if (epartIsReg(modrm)) {
14388 assign( sV, getXMMReg(eregOfRexRM(pfx,modrm)) );
14392 nameXMMReg(eregOfRexRM(pfx,modrm)),
14393 nameXMMReg(gregOfRexRM(pfx,modrm)));
14401 nameXMMReg(gregOfRexRM(pfx,modrm)));
14405 putXMMReg( gregOfRexRM(pfx,modrm), mkexpr(res) );
14464 modrm = getUChar(delta);
14465 if (epartIsReg(modrm)) {
14467 putXMMReg( gregOfRexRM(pfx,modrm),
14468 unop(Iop_64UtoV128, getMMXReg( eregLO3ofRM(modrm) )) );
14469 DIP("movq2dq %s,%s\n", nameMMXReg(eregLO3ofRM(modrm)),
14470 nameXMMReg(gregOfRexRM(pfx,modrm)));
14480 modrm = getUChar(delta);
14481 if (epartIsReg(modrm)) {
14487 getXMMRegLane64( gregOfRexRM(pfx,modrm), 0 ));
14488 DIP("movq %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)), dis_buf );
14495 modrm = getUChar(delta);
14496 if (epartIsReg(modrm)) {
14498 putMMXReg( gregLO3ofRM(modrm),
14499 getXMMRegLane64( eregOfRexRM(pfx,modrm), 0 ));
14500 DIP("movdq2q %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
14501 nameMMXReg(gregLO3ofRM(modrm)));
14526 modrm = getUChar(delta);
14527 if (epartIsReg(modrm)) {
14531 assign(t0, getMMXReg(eregLO3ofRM(modrm)));
14533 putIReg32(gregOfRexRM(pfx,modrm), mkexpr(t1));
14534 DIP("pmovmskb %s,%s\n", nameMMXReg(eregLO3ofRM(modrm)),
14535 nameIReg32(gregOfRexRM(pfx,modrm)));
14733 modrm = getUChar(delta);
14734 if (!epartIsReg(modrm)) {
14737 storeLE( mkexpr(addr), getMMXReg(gregLO3ofRM(modrm)) );
14739 nameMMXReg(gregLO3ofRM(modrm)));
14747 modrm = getUChar(delta);
14748 if (!epartIsReg(modrm)) {
14751 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
14753 nameXMMReg(gregOfRexRM(pfx,modrm)));
14878 modrm = getUChar(delta);
14879 UInt rG = gregOfRexRM(pfx,modrm);
14881 if (epartIsReg(modrm)) {
14882 UInt rE = eregOfRexRM(pfx,modrm);
14903 modrm = getUChar(delta);
14906 assign( dV, getMMXReg(gregLO3ofRM(modrm)) );
14908 if (epartIsReg(modrm)) {
14909 assign( sV, getMMXReg(eregLO3ofRM(modrm)) );
14911 DIP("pmuludq %s,%s\n", nameMMXReg(eregLO3ofRM(modrm)),
14912 nameMMXReg(gregLO3ofRM(modrm)));
14918 nameMMXReg(gregLO3ofRM(modrm)));
14923 putMMXReg( gregLO3ofRM(modrm),
14935 modrm = getUChar(delta);
14936 UInt rG = gregOfRexRM(pfx,modrm);
14937 if (epartIsReg(modrm)) {
14938 UInt rE = eregOfRexRM(pfx,modrm);
14968 modrm = getUChar(delta);
14969 UInt rG = gregOfRexRM(pfx,modrm);
14970 if (epartIsReg(modrm)) {
14971 UInt rE = eregOfRexRM(pfx,modrm);
15103 UChar modrm = getUChar(delta);
15104 UInt rG = gregOfRexRM(pfx,modrm);
15105 if (epartIsReg(modrm)) {
15106 UInt rE = eregOfRexRM(pfx,modrm);
15133 UChar modrm = getUChar(delta);
15134 UInt rG = gregOfRexRM(pfx,modrm);
15135 if (epartIsReg(modrm)) {
15136 UInt rE = eregOfRexRM(pfx,modrm);
15164 UChar modrm = getUChar(delta);
15165 UInt rG = gregOfRexRM(pfx,modrm);
15168 if (epartIsReg(modrm)) {
15169 UInt rE = eregOfRexRM(pfx,modrm);
15198 UChar modrm = getUChar(delta);
15199 UInt rG = gregOfRexRM(pfx,modrm);
15202 if (epartIsReg(modrm)) {
15203 UInt rE = eregOfRexRM(pfx,modrm);
15275 UChar modrm = 0;
15322 modrm = getUChar(delta);
15323 UInt rG = gregOfRexRM(pfx,modrm);
15324 if (epartIsReg(modrm)) {
15325 UInt rE = eregOfRexRM(pfx,modrm);
15347 modrm = getUChar(delta);
15348 UInt rG = gregOfRexRM(pfx,modrm);
15349 if (epartIsReg(modrm)) {
15350 UInt rE = eregOfRexRM(pfx,modrm);
15372 modrm = getUChar(delta);
15373 UInt rG = gregOfRexRM(pfx,modrm);
15374 if (epartIsReg(modrm)) {
15375 UInt rE = eregOfRexRM(pfx,modrm);
15394 modrm = getUChar(delta);
15395 UInt rG = gregOfRexRM(pfx,modrm);
15397 modrm = getUChar(delta);
15398 if (epartIsReg(modrm)) {
15399 UInt rE = eregOfRexRM(pfx,modrm);
15419 modrm = getUChar(delta);
15420 if (epartIsReg(modrm)) {
15424 putXMMReg( gregOfRexRM(pfx,modrm),
15427 nameXMMReg(gregOfRexRM(pfx,modrm)));
15577 UChar modrm = getUChar(delta);
15578 UInt rG = gregOfRexRM(pfx,modrm);
15597 if (epartIsReg(modrm)) {
15598 UInt rE = eregOfRexRM(pfx,modrm);
15649 UChar modrm = getUChar(delta);
15650 UInt rG = gregOfRexRM(pfx,modrm);
15669 if (epartIsReg(modrm)) {
15670 UInt rE = eregOfRexRM(pfx,modrm);
15756 UChar modrm = 0;
15774 modrm = getUChar(delta);
15775 assign( dV, getXMMReg(gregOfRexRM(pfx,modrm)) );
15777 if (epartIsReg(modrm)) {
15778 assign( sV, getXMMReg(eregOfRexRM(pfx,modrm)) );
15780 DIP("pshufb %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
15781 nameXMMReg(gregOfRexRM(pfx,modrm)));
15788 nameXMMReg(gregOfRexRM(pfx,modrm)));
15792 putXMMReg(gregOfRexRM(pfx,modrm), mkexpr(res));
15800 modrm = getUChar(delta);
15802 assign( dV, getMMXReg(gregLO3ofRM(modrm)) );
15804 if (epartIsReg(modrm)) {
15805 assign( sV, getMMXReg(eregLO3ofRM(modrm)) );
15807 DIP("pshufb %s,%s\n", nameMMXReg(eregLO3ofRM(modrm)),
15808 nameMMXReg(gregLO3ofRM(modrm)));
15814 nameMMXReg(gregLO3ofRM(modrm)));
15818 gregLO3ofRM(modrm),
15879 modrm = getUChar(delta);
15896 assign( dV, getMMXReg(gregLO3ofRM(modrm)) );
15898 if (epartIsReg(modrm)) {
15899 assign( sV, getMMXReg(eregLO3ofRM(modrm)) );
15901 DIP("ph%s %s,%s\n", str, nameMMXReg(eregLO3ofRM(modrm)),
15902 nameMMXReg(gregLO3ofRM(modrm)));
15908 nameMMXReg(gregLO3ofRM(modrm)));
15912 gregLO3ofRM(modrm),
15929 modrm = getUChar(delta);
15930 UInt rG = gregOfRexRM(pfx,modrm);
15934 if (epartIsReg(modrm)) {
15935 UInt rE = eregOfRexRM(pfx,modrm);
15960 modrm = getUChar(delta);
15962 assign( dV, getMMXReg(gregLO3ofRM(modrm)) );
15964 if (epartIsReg(modrm)) {
15965 assign( sV, getMMXReg(eregLO3ofRM(modrm)) );
15967 DIP("pmaddubsw %s,%s\n", nameMMXReg(eregLO3ofRM(modrm)),
15968 nameMMXReg(gregLO3ofRM(modrm)));
15974 nameMMXReg(gregLO3ofRM(modrm)));
15992 gregLO3ofRM(modrm),
16026 modrm = getUChar(delta);
16027 assign( dV, getXMMReg(gregOfRexRM(pfx,modrm)) );
16029 if (epartIsReg(modrm)) {
16030 assign( sV, getXMMReg(eregOfRexRM(pfx,modrm)) );
16032 DIP("psign%s %s,%s\n", str, nameXMMReg(eregOfRexRM(pfx,modrm)),
16033 nameXMMReg(gregOfRexRM(pfx,modrm)));
16040 nameXMMReg(gregOfRexRM(pfx,modrm)));
16049 gregOfRexRM(pfx,modrm),
16073 modrm = getUChar(delta);
16075 assign( dV, getMMXReg(gregLO3ofRM(modrm)) );
16077 if (epartIsReg(modrm)) {
16078 assign( sV, getMMXReg(eregLO3ofRM(modrm)) );
16080 DIP("psign%s %s,%s\n", str, nameMMXReg(eregLO3ofRM(modrm)),
16081 nameMMXReg(gregLO3ofRM(modrm)));
16087 nameMMXReg(gregLO3ofRM(modrm)));
16091 gregLO3ofRM(modrm),
16110 modrm = getUChar(delta);
16111 assign( dV, getXMMReg(gregOfRexRM(pfx,modrm)) );
16113 if (epartIsReg(modrm)) {
16114 assign( sV, getXMMReg(eregOfRexRM(pfx,modrm)) );
16116 DIP("pmulhrsw %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
16117 nameXMMReg(gregOfRexRM(pfx,modrm)));
16124 nameXMMReg(gregOfRexRM(pfx,modrm)));
16133 gregOfRexRM(pfx,modrm),
16147 modrm = getUChar(delta);
16149 assign( dV, getMMXReg(gregLO3ofRM(modrm)) );
16151 if (epartIsReg(modrm)) {
16152 assign( sV, getMMXReg(eregLO3ofRM(modrm)) );
16154 DIP("pmulhrsw %s,%s\n", nameMMXReg(eregLO3ofRM(modrm)),
16155 nameMMXReg(gregLO3ofRM(modrm)));
16161 nameMMXReg(gregLO3ofRM(modrm)));
16165 gregLO3ofRM(modrm),
16191 modrm = getUChar(delta);
16192 if (epartIsReg(modrm)) {
16193 assign( sV, getXMMReg(eregOfRexRM(pfx,modrm)) );
16195 DIP("pabs%s %s,%s\n", str, nameXMMReg(eregOfRexRM(pfx,modrm)),
16196 nameXMMReg(gregOfRexRM(pfx,modrm)));
16203 nameXMMReg(gregOfRexRM(pfx,modrm)));
16206 putXMMReg( gregOfRexRM(pfx,modrm),
16225 modrm = getUChar(delta);
16228 if (epartIsReg(modrm)) {
16229 assign( sV, getMMXReg(eregLO3ofRM(modrm)) );
16231 DIP("pabs%s %s,%s\n", str, nameMMXReg(eregLO3ofRM(modrm)),
16232 nameMMXReg(gregLO3ofRM(modrm)));
16238 nameMMXReg(gregLO3ofRM(modrm)));
16241 putMMXReg( gregLO3ofRM(modrm),
16276 UChar modrm = 0;
16294 modrm = getUChar(delta);
16295 assign( dV, getXMMReg(gregOfRexRM(pfx,modrm)) );
16297 if (epartIsReg(modrm)) {
16298 assign( sV, getXMMReg(eregOfRexRM(pfx,modrm)) );
16302 nameXMMReg(eregOfRexRM(pfx,modrm)),
16303 nameXMMReg(gregOfRexRM(pfx,modrm)));
16312 nameXMMReg(gregOfRexRM(pfx,modrm)));
16316 putXMMReg( gregOfRexRM(pfx,modrm), mkexpr(res) );
16325 modrm = getUChar(delta);
16327 assign( dV, getMMXReg(gregLO3ofRM(modrm)) );
16329 if (epartIsReg(modrm)) {
16330 assign( sV, getMMXReg(eregLO3ofRM(modrm)) );
16334 nameMMXReg(eregLO3ofRM(modrm)),
16335 nameMMXReg(gregLO3ofRM(modrm)));
16343 nameMMXReg(gregLO3ofRM(modrm)));
16368 putMMXReg( gregLO3ofRM(modrm), mkexpr(res) );
16403 UChar modrm = 0;
16422 modrm = getUChar(delta);
16423 if (epartIsReg(modrm)) {
16424 assign(src, getIRegE(sz, pfx, modrm));
16426 DIP("popcnt%c %s, %s\n", nameISize(sz), nameIRegE(sz, pfx, modrm),
16427 nameIRegG(sz, pfx, modrm));
16433 nameIRegG(sz, pfx, modrm));
16437 putIRegG(sz, pfx, modrm, mkexpr(result));
16467 modrm = getUChar(delta);
16468 if (epartIsReg(modrm)) {
16469 assign(src, getIRegE(sz, pfx, modrm));
16471 DIP("tzcnt%c %s, %s\n", nameISize(sz), nameIRegE(sz, pfx, modrm),
16472 nameIRegG(sz, pfx, modrm));
16478 nameIRegG(sz, pfx, modrm));
16482 putIRegG(sz, pfx, modrm, mkexpr(res));
16528 modrm = getUChar(delta);
16529 if (epartIsReg(modrm)) {
16530 assign(src, getIRegE(sz, pfx, modrm));
16532 DIP("lzcnt%c %s, %s\n", nameISize(sz), nameIRegE(sz, pfx, modrm),
16533 nameIRegG(sz, pfx, modrm));
16539 nameIRegG(sz, pfx, modrm));
16543 putIRegG(sz, pfx, modrm, mkexpr(res));
16657 UChar modrm = getUChar(delta);
16658 UInt rG = gregOfRexRM(pfx, modrm);
16664 if (epartIsReg(modrm)) {
16666 UInt rE = eregOfRexRM(pfx, modrm);
16696 UChar modrm = getUChar(delta);
16697 UInt rG = gregOfRexRM(pfx, modrm);
16703 if (epartIsReg(modrm)) {
16705 UInt rE = eregOfRexRM(pfx, modrm);
16835 UChar modrm = getUChar(delta);
16836 UInt rG = gregOfRexRM(pfx, modrm);
16840 if ( epartIsReg(modrm) ) {
16841 UInt rE = eregOfRexRM(pfx, modrm);
16888 UChar modrm = getUChar(delta);
16889 UInt rG = gregOfRexRM(pfx, modrm);
16893 if ( epartIsReg(modrm) ) {
16894 UInt rE = eregOfRexRM(pfx, modrm);
16947 UChar modrm = getUChar(delta);
16950 UInt rG = gregOfRexRM(pfx, modrm);
16951 if ( epartIsReg(modrm) ) {
16952 UInt rE = eregOfRexRM(pfx, modrm);
16990 UChar modrm = getUChar(delta);
16992 UInt rG = gregOfRexRM(pfx, modrm);
16993 if ( epartIsReg(modrm) ) {
16994 UInt rE = eregOfRexRM(pfx, modrm);
17030 UChar modrm = getUChar(delta);
17033 UInt rG = gregOfRexRM(pfx, modrm);
17035 if ( epartIsReg(modrm) ) {
17036 UInt rE = eregOfRexRM(pfx, modrm);
17056 ( gregOfRexRM(pfx, modrm), res );
17069 UChar modrm = getUChar(delta);
17071 UInt rG = gregOfRexRM(pfx, modrm);
17073 if ( epartIsReg(modrm) ) {
17074 UInt rE = eregOfRexRM(pfx, modrm);
17108 UChar modrm = getUChar(delta);
17110 UInt rG = gregOfRexRM(pfx, modrm);
17112 if ( epartIsReg( modrm ) ) {
17113 UInt rE = eregOfRexRM(pfx, modrm);
17140 UChar modrm = getUChar(delta);
17141 UInt rG = gregOfRexRM(pfx, modrm);
17145 if ( epartIsReg( modrm ) ) {
17146 UInt rE = eregOfRexRM(pfx, modrm);
17176 UChar modrm = getUChar(delta);
17178 UInt rG = gregOfRexRM(pfx, modrm);
17180 if ( epartIsReg( modrm ) ) {
17181 UInt rE = eregOfRexRM(pfx, modrm);
17212 UChar modrm = getUChar(delta);
17213 UInt rG = gregOfRexRM(pfx, modrm);
17215 if ( epartIsReg( modrm ) ) {
17216 UInt rE = eregOfRexRM(pfx, modrm);
17253 UChar modrm = getUChar(delta);
17256 UInt rG = gregOfRexRM(pfx, modrm);
17261 if ( epartIsReg(modrm) ) {
17262 UInt rE = eregOfRexRM(pfx, modrm);
17299 UChar modrm = getUChar(delta);
17301 UInt rG = gregOfRexRM(pfx, modrm);
17306 if ( epartIsReg(modrm) ) {
17307 UInt rE = eregOfRexRM(pfx, modrm);
17352 UChar modrm = getUChar(delta);
17355 UInt rG = gregOfRexRM(pfx, modrm);
17356 if ( epartIsReg(modrm) ) {
17357 UInt rE = eregOfRexRM(pfx, modrm);
17395 UChar modrm = getUChar(delta);
17397 UInt rG = gregOfRexRM(pfx, modrm);
17398 if ( epartIsReg(modrm) ) {
17399 UInt rE = eregOfRexRM(pfx, modrm);
17442 UChar modrm = getUChar(delta);
17444 UInt rG = gregOfRexRM(pfx, modrm);
17445 if ( epartIsReg(modrm) ) {
17446 UInt rE = eregOfRexRM(pfx, modrm);
17475 UChar modrm = getUChar(delta);
17476 UInt rG = gregOfRexRM(pfx, modrm);
17477 if ( epartIsReg(modrm) ) {
17478 UInt rE = eregOfRexRM(pfx, modrm);
17521 UChar modrm = getUChar(delta);
17523 UInt rG = gregOfRexRM(pfx, modrm);
17524 if ( epartIsReg(modrm) ) {
17525 UInt rE = eregOfRexRM(pfx, modrm);
17560 UChar modrm = getUChar(delta);
17561 UInt rG = gregOfRexRM(pfx, modrm);
17562 if ( epartIsReg(modrm) ) {
17563 UInt rE = eregOfRexRM(pfx, modrm);
17603 UChar modrm = getUChar(delta);
17609 UInt rG = gregOfRexRM(pfx,modrm);
17610 if (epartIsReg(modrm)) {
17611 UInt rE = eregOfRexRM(pfx,modrm);
17643 UChar modrm = getUChar(delta);
17644 UInt rG = gregOfRexRM(pfx, modrm);
17654 if (epartIsReg(modrm)) {
17655 regNoL = eregOfRexRM(pfx, modrm);
17735 UChar modrm = getUChar(delta);
17737 UInt regNoR = gregOfRexRM(pfx, modrm);
17741 modrm = getUChar(delta);
17742 if (epartIsReg(modrm)) {
17743 regNoL = eregOfRexRM(pfx, modrm);
17801 UChar modrm = 0;
17822 modrm = getUChar(delta);
17844 if ( epartIsReg(modrm) ) {
17845 assign(vecE, getXMMReg(eregOfRexRM(pfx, modrm)));
17848 nameXMMReg( eregOfRexRM(pfx, modrm) ),
17849 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
17856 dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
17859 assign(vecG, getXMMReg(gregOfRexRM(pfx, modrm)));
17863 putXMMReg(gregOfRexRM(pfx, modrm), mkexpr(res));
17946 modrm = getUChar(delta);
17947 UInt rG = gregOfRexRM(pfx,modrm);
17949 if (epartIsReg(modrm)) {
17950 UInt rE = eregOfRexRM(pfx,modrm);
17982 modrm = getUChar(delta);
17983 if (!epartIsReg(modrm)) {
17986 putXMMReg( gregOfRexRM(pfx,modrm),
17989 nameXMMReg(gregOfRexRM(pfx,modrm)));
18001 modrm = getUChar(delta);
18006 if ( epartIsReg(modrm) ) {
18007 assign( argL, getXMMReg( eregOfRexRM(pfx, modrm) ) );
18010 nameXMMReg( eregOfRexRM(pfx, modrm) ),
18011 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
18018 dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
18021 assign(argR, getXMMReg( gregOfRexRM(pfx, modrm) ));
18023 putXMMReg( gregOfRexRM(pfx, modrm),
18184 modrm = getUChar(delta);
18189 if ( epartIsReg(modrm) ) {
18190 assign( argL, getXMMReg( eregOfRexRM(pfx, modrm) ) );
18193 nameXMMReg( eregOfRexRM(pfx, modrm) ),
18194 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
18201 dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
18204 assign(argR, getXMMReg( gregOfRexRM(pfx, modrm) ));
18206 putXMMReg( gregOfRexRM(pfx, modrm),
18247 modrm = getUChar(delta);
18257 if (epartIsReg(modrm)) {
18258 assign(valE, getIRegE(sz, pfx, modrm));
18260 DIP("crc32b %s,%s\n", nameIRegE(sz, pfx, modrm),
18261 nameIRegG(1==getRexW(pfx) ? 8 : 4, pfx, modrm));
18267 nameIRegG(1==getRexW(pfx) ? 8 : 4, pfx, modrm));
18275 assign(valG0, binop(Iop_And64, getIRegG(8, pfx, modrm),
18297 putIRegG(4, pfx, modrm, unop(Iop_64to32, mkexpr(valG1)));
18331 UChar modrm = getUChar(delta);
18334 UInt rG = gregOfRexRM(pfx,modrm);
18344 if ( epartIsReg( modrm ) ) {
18363 if ( epartIsReg( modrm ) ) {
18364 UInt rE = eregOfRexRM(pfx,modrm);
18386 UChar modrm = 0;
18396 modrm = getUChar(delta);
18397 assign( xmm_vec, getXMMReg( gregOfRexRM(pfx,modrm) ) );
18400 if ( epartIsReg( modrm ) ) {
18415 if ( epartIsReg( modrm ) ) {
18416 putIReg32( eregOfRexRM(pfx,modrm), mkexpr(src_dword) );
18419 nameXMMReg( gregOfRexRM(pfx, modrm) ),
18420 nameIReg32( eregOfRexRM(pfx, modrm) ) );
18425 imm8_10, nameXMMReg( gregOfRexRM(pfx, modrm) ), dis_buf );
18435 UChar modrm = 0;
18445 modrm = getUChar(delta);
18446 assign( xmm_vec, getXMMReg( gregOfRexRM(pfx,modrm) ) );
18448 if ( epartIsReg( modrm ) ) {
18463 if ( epartIsReg( modrm ) ) {
18464 putIReg64( eregOfRexRM(pfx,modrm), mkexpr(src_qword) );
18467 nameXMMReg( gregOfRexRM(pfx, modrm) ),
18468 nameIReg64( eregOfRexRM(pfx, modrm) ) );
18473 imm8_0, nameXMMReg( gregOfRexRM(pfx, modrm) ), dis_buf );
18484 static Long dis_PCMPISTRI_3A ( UChar modrm, UInt regNoL, UInt regNoR,
18630 UChar modrm = getUChar(delta);
18631 if (epartIsReg(modrm)) {
18632 regNoL = eregOfRexRM(pfx, modrm);
18633 regNoR = gregOfRexRM(pfx, modrm);
18638 regNoR = gregOfRexRM(pfx, modrm);
18661 return dis_PCMPISTRI_3A ( modrm, regNoL, regNoR, delta,
18865 UChar modrm = getUChar(delta);
18868 assign( xmm_vec, getXMMReg( gregOfRexRM(pfx,modrm) ) );
18872 if ( epartIsReg( modrm ) ) {
18888 if ( epartIsReg( modrm ) ) {
18889 putIReg64( eregOfRexRM(pfx,modrm),
18894 nameXMMReg( gregOfRexRM(pfx, modrm) ),
18895 nameIReg64( eregOfRexRM(pfx, modrm) ) );
18900 imm8, nameXMMReg( gregOfRexRM(pfx, modrm) ), dis_buf );
19037 UChar modrm = getUChar(delta);
19041 UInt rG = gregOfRexRM(pfx,modrm);
19048 if ( epartIsReg( modrm ) ) {
19063 if ( epartIsReg( modrm ) ) {
19064 UInt rE = eregOfRexRM(pfx,modrm);
19114 UChar modrm = 0;
19140 modrm = getUChar(delta);
19142 if (epartIsReg(modrm)) {
19144 getXMMRegLane32F( eregOfRexRM(pfx, modrm), 0 ) );
19146 getXMMRegLane32F( eregOfRexRM(pfx, modrm), 1 ) );
19148 getXMMRegLane32F( eregOfRexRM(pfx, modrm), 2 ) );
19150 getXMMRegLane32F( eregOfRexRM(pfx, modrm), 3 ) );
19155 imm, nameXMMReg( eregOfRexRM(pfx, modrm) ),
19156 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19172 imm, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19186 putXMMRegLane32F( gregOfRexRM(pfx, modrm), 0, mkexpr(res0) );
19187 putXMMRegLane32F( gregOfRexRM(pfx, modrm), 1, mkexpr(res1) );
19188 putXMMRegLane32F( gregOfRexRM(pfx, modrm), 2, mkexpr(res2) );
19189 putXMMRegLane32F( gregOfRexRM(pfx, modrm), 3, mkexpr(res3) );
19206 modrm = getUChar(delta);
19208 if (epartIsReg(modrm)) {
19210 getXMMRegLane64F( eregOfRexRM(pfx, modrm), 0 ) );
19212 getXMMRegLane64F( eregOfRexRM(pfx, modrm), 1 ) );
19217 imm, nameXMMReg( eregOfRexRM(pfx, modrm) ),
19218 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19230 imm, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19242 putXMMRegLane64F( gregOfRexRM(pfx, modrm), 0, mkexpr(res0) );
19243 putXMMRegLane64F( gregOfRexRM(pfx, modrm), 1, mkexpr(res1) );
19261 modrm = getUChar(delta);
19263 if (epartIsReg(modrm)) {
19265 isD ? getXMMRegLane64F( eregOfRexRM(pfx, modrm), 0 )
19266 : getXMMRegLane32F( eregOfRexRM(pfx, modrm), 0 ) );
19272 imm, nameXMMReg( eregOfRexRM(pfx, modrm) ),
19273 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19282 imm, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19295 putXMMRegLane64F( gregOfRexRM(pfx, modrm), 0, mkexpr(res) );
19297 putXMMRegLane32F( gregOfRexRM(pfx, modrm), 0, mkexpr(res) );
19312 modrm = getUChar(delta);
19314 assign( dst_vec, getXMMReg( gregOfRexRM(pfx, modrm) ) );
19316 if ( epartIsReg( modrm ) ) {
19318 assign( src_vec, getXMMReg( eregOfRexRM(pfx, modrm) ) );
19321 nameXMMReg( eregOfRexRM(pfx, modrm) ),
19322 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19331 imm8, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19334 putXMMReg( gregOfRexRM(pfx, modrm),
19349 modrm = getUChar(delta);
19350 assign( dst_vec, getXMMReg( gregOfRexRM(pfx, modrm) ) );
19352 if ( epartIsReg( modrm ) ) {
19354 assign( src_vec, getXMMReg( eregOfRexRM(pfx, modrm) ) );
19357 nameXMMReg( eregOfRexRM(pfx, modrm) ),
19358 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19367 imm8, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19370 putXMMReg( gregOfRexRM(pfx, modrm),
19385 modrm = getUChar(delta);
19387 assign( dst_vec, getXMMReg( gregOfRexRM(pfx, modrm) ) );
19389 if ( epartIsReg( modrm ) ) {
19391 assign( src_vec, getXMMReg( eregOfRexRM(pfx, modrm) ) );
19394 nameXMMReg( eregOfRexRM(pfx, modrm) ),
19395 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19404 imm8, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19407 putXMMReg( gregOfRexRM(pfx, modrm),
19472 modrm = getUChar(delta);
19473 UInt rG = gregOfRexRM(pfx, modrm);
19474 if ( epartIsReg( modrm ) ) {
19475 UInt rE = eregOfRexRM(pfx,modrm);
19490 assign(src_vec, getXMMReg( gregOfRexRM(pfx, modrm) ));
19505 modrm = getUChar(delta);
19506 UInt rG = gregOfRexRM(pfx, modrm);
19508 if ( epartIsReg( modrm ) ) {
19509 UInt rE = eregOfRexRM(pfx, modrm);
19543 modrm = getUChar(delta);
19544 UInt rG = gregOfRexRM(pfx, modrm);
19546 if ( epartIsReg( modrm ) ) {
19547 UInt rE = eregOfRexRM(pfx,modrm);
19574 modrm = getUChar(delta);
19575 UInt rG = gregOfRexRM(pfx, modrm);
19577 if ( epartIsReg( modrm ) ) {
19578 UInt rE = eregOfRexRM(pfx,modrm);
19605 modrm = getUChar(delta);
19609 UInt rG = gregOfRexRM(pfx, modrm);
19611 if ( epartIsReg( modrm ) ) {
19612 UInt rE = eregOfRexRM(pfx, modrm);
19638 modrm = getUChar(delta);
19642 UInt rG = gregOfRexRM(pfx, modrm);
19644 if ( epartIsReg( modrm ) ) {
19645 UInt rE = eregOfRexRM(pfx, modrm);
19674 modrm = getUChar(delta);
19675 UInt rG = gregOfRexRM(pfx, modrm);
19679 if ( epartIsReg( modrm ) ) {
19680 UInt rE = eregOfRexRM(pfx, modrm);
19712 modrm = getUChar(delta);
19713 UInt rG = gregOfRexRM(pfx, modrm);
19717 if ( epartIsReg( modrm ) ) {
19718 UInt rE = eregOfRexRM(pfx, modrm);
19810 UChar modrm = 0;
19819 /* delta now points at the modrm byte. In most of the cases that
19823 prefix is also present. Do this check by looking at the modrm
20120 modrm = getUChar(delta);
20121 if (epartIsReg(modrm)) {
20123 putIRegG(8, pfx, modrm,
20125 getIRegE(4, pfx, modrm)));
20127 nameIRegE(4, pfx, modrm),
20128 nameIRegG(8, pfx, modrm));
20133 putIRegG(8, pfx, modrm,
20137 nameIRegG(8, pfx, modrm));
20258 modrm = getUChar(delta);
20263 if (epartIsReg(modrm) && haveF2orF3(pfx))
20265 if (!epartIsReg(modrm) && haveF2andF3(pfx))
20267 if (!epartIsReg(modrm) && haveF2orF3(pfx) && !haveLOCK(pfx))
20273 delta = dis_Grp1 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz, d64 );
20277 modrm = getUChar(delta);
20279 if (epartIsReg(modrm) && haveF2orF3(pfx))
20281 if (!epartIsReg(modrm) && haveF2andF3(pfx))
20283 if (!epartIsReg(modrm) && haveF2orF3(pfx) && !haveLOCK(pfx))
20288 delta = dis_Grp1 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz, d64 );
20293 modrm = getUChar(delta);
20297 delta = dis_Grp1 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz, d64 );
20317 modrm = getUChar(delta);
20323 if (epartIsReg(modrm)) {
20332 if (epartIsReg(modrm)) {
20333 assign(t1, getIRegE(sz, pfx, modrm));
20334 assign(t2, getIRegG(sz, pfx, modrm));
20335 putIRegG(sz, pfx, modrm, mkexpr(t1));
20336 putIRegE(sz, pfx, modrm, mkexpr(t2));
20339 nameISize(sz), nameIRegG(sz, pfx, modrm),
20340 nameIRegE(sz, pfx, modrm));
20345 assign( t2, getIRegG(sz, pfx, modrm) );
20348 putIRegG( sz, pfx, modrm, mkexpr(t1) );
20351 nameIRegG(sz, pfx, modrm), dis_buf);
20390 modrm = getUChar(delta);
20391 if (epartIsReg(modrm))
20401 putIRegG( sz, pfx, modrm,
20407 nameIRegG(sz,pfx,modrm));
20834 modrm = getUChar(delta);
20839 delta = dis_Grp2 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz,
20848 modrm = getUChar(delta);
20852 delta = dis_Grp2 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz,
20881 modrm = getUChar(delta);
20882 if (gregLO3ofRM(modrm) == 0) {
20883 if (epartIsReg(modrm)) {
20889 putIRegE(sz, pfx, modrm,
20893 nameIRegE(sz,pfx,modrm));
20909 if (opc == 0xC7 && modrm == 0xF8 && !have66orF2orF3(pfx) && sz == 4
20929 if (opc == 0xC6 && modrm == 0xF8 && !have66orF2orF3(pfx) && sz == 1
21010 modrm = getUChar(delta);
21015 delta = dis_Grp2 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz,
21024 modrm = getUChar(delta);
21028 delta = dis_Grp2 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz,
21037 modrm = getUChar(delta);
21041 delta = dis_Grp2 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz,
21050 modrm = getUChar(delta);
21053 delta = dis_Grp2 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz,
21534 UChar modrm = 0;
21547 modrm = getUChar(delta);
21550 if (!epartIsReg(modrm)
21551 && (gregLO3ofRM(modrm) == 0 || gregLO3ofRM(modrm) == 1)) {
21558 switch (gregLO3ofRM(modrm)) {
21568 mkU64(gregLO3ofRM(modrm)) )
21578 if (modrm == 0xD0 && (archinfo->hwcaps & VEX_HWCAPS_AMD64_AVX)) {
21597 if (modrm == 0xD5 && (archinfo->hwcaps & VEX_HWCAPS_AMD64_AVX)) {
21609 if (modrm == 0xD6 && (archinfo->hwcaps & VEX_HWCAPS_AMD64_AVX)) {
21624 if (modrm == 0xF9 && (archinfo->hwcaps & VEX_HWCAPS_AMD64_RDTSCP)) {
21681 modrm = getUChar(delta);
21682 if (epartIsReg(modrm)) goto decode_failure;
21683 if (gregLO3ofRM(modrm) != 0 && gregLO3ofRM(modrm) != 1)
21687 switch (gregLO3ofRM(modrm)) {
21696 modrm = getUChar(delta);
21697 if (epartIsReg(modrm)) goto decode_failure;
21839 modrm = getUChar(delta);
21840 if (epartIsReg(modrm)) {
21842 putIRegE(1, pfx, modrm, mkexpr(t1));
21844 nameIRegE(1,pfx,modrm));
21868 operand is either a ModRM:reg, ModRM:r/m or a SIB encoded
21872 modrm = getUChar(delta);
21873 int bnd = gregOfRexRM(pfx,modrm);
21875 if (epartIsReg(modrm)) {
21876 oper = nameIReg64 (eregOfRexRM(pfx,modrm));
21990 modrm = getUChar(delta);
21994 vbi, pfx, delta, modrm, sz,
22000 modrm = getUChar(delta);
22002 vbi, pfx, delta, modrm, sz,
22017 modrm = getUChar(delta);
22021 vbi, pfx, delta, modrm, sz,
22027 modrm = getUChar(delta);
22029 vbi, pfx, delta, modrm, sz,
22082 modrm = getUChar(delta);
22085 delta = dis_Grp8_Imm ( vbi, pfx, delta, modrm, am_sz, sz, d64,
22186 modrm = getUChar(delta);
22187 if (epartIsReg(modrm)) goto decode_failure;
22188 if (gregLO3ofRM(modrm) != 1) goto decode_failure;
22497 UChar modrm = 0;
22500 modrm = getUChar(delta);
22501 if (epartIsReg(modrm)) break;
22509 putIRegG(sz, pfx, modrm, mkexpr(dst));
22510 DIP("movbe %s,%s\n", dis_buf, nameIRegG(sz, pfx, modrm));
22512 assign(src, getIRegG(sz, pfx, modrm));
22515 DIP("movbe %s,%s\n", nameIRegG(sz, pfx, modrm), dis_buf);
22624 UChar modrm = getUChar(delta);
22625 UInt rD = gregOfRexRM(pfx, modrm);
22637 if (epartIsReg(modrm)) {
22638 UInt rSR = eregOfRexRM(pfx, modrm);
22719 UChar modrm = getUChar(delta);
22720 UInt rG = gregOfRexRM(pfx,modrm);
22726 if (epartIsReg(modrm)) {
22727 UInt rE = eregOfRexRM(pfx,modrm);
22793 UChar modrm = getUChar(delta);
22794 UInt rG = gregOfRexRM(pfx,modrm);
22800 if (epartIsReg(modrm)) {
22801 UInt rE = eregOfRexRM(pfx,modrm);
22868 UChar modrm = getUChar(delta);
22869 UInt rG = gregOfRexRM(pfx,modrm);
22874 if (epartIsReg(modrm)) {
22875 UInt rE = eregOfRexRM(pfx,modrm);
23543 UChar modrm = getUChar(delta);
23544 UInt rD = gregOfRexRM(pfx, modrm);
23556 if (epartIsReg(modrm)) {
23557 UInt rSR = eregOfRexRM(pfx, modrm);
23714 UChar modrm = getUChar(delta);
23716 UInt rG = gregOfRexRM(pfx,modrm);
23717 if (epartIsReg(modrm)) {
23718 UInt rE = eregOfRexRM(pfx,modrm);
23750 UChar modrm = getUChar(delta);
23751 UInt rG = gregOfRexRM(pfx,modrm);
23754 if (epartIsReg(modrm)) {
23755 UInt rE = eregOfRexRM(pfx,modrm);
23896 UChar modrm = getUChar(delta);
23898 UInt rG = gregOfRexRM(pfx,modrm);
23912 UChar modrm = getUChar(delta);
23913 UInt rG = gregOfRexRM(pfx, modrm);
23914 UInt rE = eregOfRexRM(pfx, modrm);
23931 UChar modrm = getUChar(delta);
23933 UInt rG = gregOfRexRM(pfx,modrm);
23947 UChar modrm = getUChar(delta);
23948 UInt rG = gregOfRexRM(pfx, modrm);
23949 UInt rE = eregOfRexRM(pfx, modrm);
23966 UChar modrm = getUChar(delta);
23967 UInt rG = gregOfRexRM(pfx, modrm);
23968 if (epartIsReg(modrm)) {
23969 UInt rE = eregOfRexRM(pfx,modrm);
23983 UChar modrm = getUChar(delta);
23984 UInt rG = gregOfRexRM(pfx, modrm);
23985 if (epartIsReg(modrm)) {
23986 UInt rE = eregOfRexRM(pfx,modrm);
24000 UChar modrm = getUChar(delta);
24001 UInt rG = gregOfRexRM(pfx, modrm);
24002 if (epartIsReg(modrm)) {
24003 UInt rE = eregOfRexRM(pfx,modrm);
24017 UChar modrm = getUChar(delta);
24018 UInt rG = gregOfRexRM(pfx, modrm);
24019 if (epartIsReg(modrm)) {
24020 UInt rE = eregOfRexRM(pfx,modrm);
24038 UChar modrm = getUChar(delta);
24040 UInt rG = gregOfRexRM(pfx,modrm);
24050 UChar modrm = getUChar(delta);
24051 UInt rG = gregOfRexRM(pfx, modrm);
24052 UInt rE = eregOfRexRM(pfx, modrm);
24068 UChar modrm = getUChar(delta);
24070 UInt rG = gregOfRexRM(pfx,modrm);
24080 UChar modrm = getUChar(delta);
24081 UInt rG = gregOfRexRM(pfx, modrm);
24082 UInt rE = eregOfRexRM(pfx, modrm);
24099 UChar modrm = getUChar(delta);
24100 UInt rG = gregOfRexRM(pfx,modrm);
24101 if (epartIsReg(modrm)) {
24102 UInt rE = eregOfRexRM(pfx,modrm);
24116 UChar modrm = getUChar(delta);
24117 UInt rG = gregOfRexRM(pfx,modrm);
24118 if (epartIsReg(modrm)) {
24119 UInt rE = eregOfRexRM(pfx,modrm);
24133 UChar modrm = getUChar(delta);
24134 UInt rG = gregOfRexRM(pfx,modrm);
24135 if (epartIsReg(modrm)) {
24136 UInt rE = eregOfRexRM(pfx,modrm);
24150 UChar modrm = getUChar(delta);
24151 UInt rG = gregOfRexRM(pfx,modrm);
24152 if (epartIsReg(modrm)) {
24153 UInt rE = eregOfRexRM(pfx,modrm);
24182 UChar modrm = getUChar(delta);
24183 UInt rG = gregOfRexRM(pfx, modrm);
24184 UInt rE = eregOfRexRM(pfx, modrm);
24203 UChar modrm = getUChar(delta);
24204 UInt rG = gregOfRexRM(pfx, modrm);
24238 UChar modrm = getUChar(delta);
24239 UInt rG = gregOfRexRM(pfx, modrm);
24254 UChar modrm = getUChar(delta);
24255 UInt rG = gregOfRexRM(pfx,modrm);
24260 if (epartIsReg(modrm)) {
24261 UInt rE = eregOfRexRM(pfx,modrm);
24282 UChar modrm = getUChar(delta);
24283 UInt rG = gregOfRexRM(pfx,modrm);
24288 if (epartIsReg(modrm)) {
24289 UInt rE = eregOfRexRM(pfx,modrm);
24310 UChar modrm = getUChar(delta);
24311 UInt rG = gregOfRexRM(pfx,modrm);
24316 if (epartIsReg(modrm)) {
24317 UInt rE = eregOfRexRM(pfx,modrm);
24338 UChar modrm = getUChar(delta);
24339 UInt rG = gregOfRexRM(pfx,modrm);
24344 if (epartIsReg(modrm)) {
24345 UInt rE = eregOfRexRM(pfx,modrm);
24369 UChar modrm = getUChar(delta);
24370 UInt rG = gregOfRexRM(pfx, modrm);
24371 UInt rE = eregOfRexRM(pfx, modrm);
24390 UChar modrm = getUChar(delta);
24391 UInt rG = gregOfRexRM(pfx, modrm);
24425 UChar modrm = getUChar(delta);
24426 UInt rG = gregOfRexRM(pfx, modrm);
24439 UChar modrm = getUChar(delta);
24440 UInt rG = gregOfRexRM(pfx, modrm);
24441 if (epartIsReg(modrm)) {
24442 UInt rE = eregOfRexRM(pfx,modrm);
24457 UChar modrm = getUChar(delta);
24458 UInt rG = gregOfRexRM(pfx, modrm);
24459 if (epartIsReg(modrm)) {
24460 UInt rE = eregOfRexRM(pfx,modrm);
24475 UChar modrm = getUChar(delta);
24476 UInt rG = gregOfRexRM(pfx, modrm);
24477 if (epartIsReg(modrm)) {
24478 UInt rE = eregOfRexRM(pfx,modrm);
24493 UChar modrm = getUChar(delta);
24494 UInt rG = gregOfRexRM(pfx, modrm);
24495 if (epartIsReg(modrm)) {
24496 UInt rE = eregOfRexRM(pfx,modrm);
24514 UChar modrm = getUChar(delta);
24515 UInt rG = gregOfRexRM(pfx,modrm);
24516 if (epartIsReg(modrm)) {
24517 UInt rE = eregOfRexRM(pfx,modrm);
24532 UChar modrm = getUChar(delta);
24533 UInt rG = gregOfRexRM(pfx,modrm);
24534 if (epartIsReg(modrm)) {
24535 UInt rE = eregOfRexRM(pfx,modrm);
24550 UChar modrm = getUChar(delta);
24551 UInt rG = gregOfRexRM(pfx,modrm);
24552 if (epartIsReg(modrm)) {
24553 UInt rE = eregOfRexRM(pfx,modrm);
24569 UChar modrm = getUChar(delta);
24570 UInt rG = gregOfRexRM(pfx,modrm);
24571 if (epartIsReg(modrm)) {
24572 UInt rE = eregOfRexRM(pfx,modrm);
24593 UChar modrm = getUChar(delta);
24595 UInt rD = gregOfRexRM(pfx, modrm);
24597 if (epartIsReg(modrm)) {
24598 UInt rS = eregOfRexRM(pfx,modrm);
24619 UChar modrm = getUChar(delta);
24621 UInt rD = gregOfRexRM(pfx, modrm);
24623 if (epartIsReg(modrm)) {
24624 UInt rS = eregOfRexRM(pfx,modrm);
24647 UChar modrm = getUChar(delta);
24649 UInt rD = gregOfRexRM(pfx, modrm);
24651 if (epartIsReg(modrm)) {
24652 UInt rS = eregOfRexRM(pfx,modrm);
24677 UChar modrm = getUChar(delta);
24679 UInt rD = gregOfRexRM(pfx, modrm);
24681 if (epartIsReg(modrm)) {
24682 UInt rS = eregOfRexRM(pfx,modrm);
24712 UChar modrm = getUChar(delta);
24713 UInt rS = gregOfRexRM(pfx, modrm);
24728 UChar modrm = getUChar(delta);
24729 UInt rS = gregOfRexRM(pfx, modrm);
25133 UChar modrm = getUChar(delta);
25135 UInt rD = gregOfRexRM(pfx, modrm);
25139 if (epartIsReg(modrm)) {
25140 UInt rS = eregOfRexRM(pfx,modrm);
25163 UChar modrm = getUChar(delta);
25165 UInt rD = gregOfRexRM(pfx, modrm);
25167 if (epartIsReg(modrm)) {
25168 UInt rS = eregOfRexRM(pfx,modrm);
25658 UChar modrm = getUChar(delta);
25659 if (epartIsReg(modrm)) {
25662 gregOfRexRM(pfx,modrm),
25663 unop( Iop_32UtoV128, getIReg32(eregOfRexRM(pfx,modrm)) )
25665 DIP("vmovd %s, %s\n", nameIReg32(eregOfRexRM(pfx,modrm)),
25666 nameXMMReg(gregOfRexRM(pfx,modrm)));
25671 gregOfRexRM(pfx,modrm),
25675 nameXMMReg(gregOfRexRM(pfx,modrm)));
25683 UChar modrm = getUChar(delta);
25684 if (epartIsReg(modrm)) {
25687 gregOfRexRM(pfx,modrm),
25688 unop( Iop_64UtoV128, getIReg64(eregOfRexRM(pfx,modrm)) )
25690 DIP("vmovq %s, %s\n", nameIReg64(eregOfRexRM(pfx,modrm)),
25691 nameXMMReg(gregOfRexRM(pfx,modrm)));
25696 gregOfRexRM(pfx,modrm),
25700 nameXMMReg(gregOfRexRM(pfx,modrm)));
25711 UChar modrm = getUChar(delta);
25712 UInt rD = gregOfRexRM(pfx, modrm);
25716 if (epartIsReg(modrm)) {
25717 UInt rS = eregOfRexRM(pfx, modrm);
25736 UChar modrm = getUChar(delta);
25737 UInt rD = gregOfRexRM(pfx, modrm);
25741 if (epartIsReg(modrm)) {
25742 UInt rS = eregOfRexRM(pfx, modrm);
26081 UChar modrm = getUChar(delta);
26082 UInt rG = gregOfRexRM(pfx,modrm);
26084 if (epartIsReg(modrm)) {
26085 UInt rE = eregOfRexRM(pfx,modrm);
26110 UChar modrm = getUChar(delta);
26111 UInt rG = gregOfRexRM(pfx,modrm);
26114 if (epartIsReg(modrm)) {
26115 UInt rE = eregOfRexRM(pfx,modrm);
26143 UChar modrm = getUChar(delta);
26144 UInt rG = gregOfRexRM(pfx,modrm);
26146 if (epartIsReg(modrm)) {
26147 UInt rE = eregOfRexRM(pfx,modrm);
26172 UChar modrm = getUChar(delta);
26173 UInt rG = gregOfRexRM(pfx,modrm);
26176 if (epartIsReg(modrm)) {
26177 UInt rE = eregOfRexRM(pfx,modrm);
26209 UChar modrm = getUChar(delta);
26210 UInt rG = gregOfRexRM(pfx,modrm);
26211 if (epartIsReg(modrm)) {
26212 UInt rE = eregOfRexRM(pfx,modrm);
26232 UChar modrm = getUChar(delta);
26233 UInt rG = gregOfRexRM(pfx,modrm);
26234 if (epartIsReg(modrm)) {
26235 UInt rE = eregOfRexRM(pfx,modrm);
26251 UChar modrm = getUChar(delta);
26252 UInt rG = gregOfRexRM(pfx,modrm);
26253 if (epartIsReg(modrm)) {
26254 UInt rE = eregOfRexRM(pfx,modrm);
26273 UChar modrm = getUChar(delta);
26274 UInt rS = gregOfRexRM(pfx, modrm);
26279 if (epartIsReg(modrm)) {
26280 UInt rD = eregOfRexRM(pfx, modrm);
26298 UChar modrm = getUChar(delta);
26299 UInt rS = gregOfRexRM(pfx, modrm);
26304 if (epartIsReg(modrm)) {
26305 UInt rD = eregOfRexRM(pfx, modrm);
26406 UChar modrm = getUChar(delta);
26407 UInt rG = gregOfRexRM(pfx, modrm);
26412 if ( epartIsReg( modrm ) ) {
26415 getIReg32(eregOfRexRM(pfx,modrm))) );
26418 nameIReg32( eregOfRexRM(pfx, modrm) ), nameXMMReg(rG) );
26456 UInt modrm = getUChar(delta);
26457 UInt rG = gregOfRexRM(pfx,modrm);
26460 if (epartIsReg(modrm)) {
26461 UInt rE = eregOfRexRM(pfx,modrm);
26486 UInt modrm = getUChar(delta);
26487 UInt rG = gregOfRexRM(pfx,modrm);
26490 if (epartIsReg(modrm)) {
26491 UInt rE = eregOfRexRM(pfx,modrm);
26516 UInt modrm = getUChar(delta);
26517 UInt rG = gregOfRexRM(pfx,modrm);
26520 if (epartIsReg(modrm)) {
26521 UInt rE = eregOfRexRM(pfx,modrm);
26546 UInt modrm = getUChar(delta);
26547 UInt rG = gregOfRexRM(pfx,modrm);
26550 if (epartIsReg(modrm)) {
26551 UInt rE = eregOfRexRM(pfx,modrm);
26695 UChar modrm = getUChar(delta);
26696 UInt rG = gregOfRexRM(pfx,modrm);
26697 if (epartIsReg(modrm)) {
26981 UChar modrm = getUChar(delta);
26982 UInt rG = gregOfRexRM(pfx,modrm);
26983 if (!epartIsReg(modrm)) {
26995 UChar modrm = getUChar(delta);
26996 UInt rG = gregOfRexRM(pfx,modrm);
26997 if (!epartIsReg(modrm)) {
27140 UChar modrm = getUChar(delta);
27141 UInt rD = gregOfRexRM(pfx, modrm);
27143 if (epartIsReg(modrm)) break;
27153 UChar modrm = getUChar(delta);
27154 UInt rD = gregOfRexRM(pfx, modrm);
27156 if (epartIsReg(modrm)) break;
27529 UChar modrm = getUChar(delta);
27530 UInt rG = gregOfRexRM(pfx, modrm);
27610 if (epartIsReg(modrm)) {
27611 UInt rE = eregOfRexRM(pfx, modrm);
27723 UChar modrm = getUChar(delta);
27724 UInt rG = gregOfRexRM(pfx,modrm);
27793 UChar modrm = getUChar(delta);
27794 UInt rG = gregOfRexRM(pfx,modrm);
27991 UChar modrm = getUChar(delta);
27992 modrm);
28004 if (epartIsReg(modrm)) {
28005 UInt rE = eregOfRexRM(pfx,modrm);
28042 UChar modrm = getUChar(delta);
28043 UInt rG = gregOfRexRM(pfx,modrm);
28055 if (epartIsReg(modrm)) {
28056 UInt rE = eregOfRexRM(pfx,modrm);
28097 UChar modrm = getUChar(delta);
28098 UInt rG = gregOfRexRM(pfx,modrm);
28103 if (epartIsReg(modrm)) {
28104 UInt rE = eregOfRexRM(pfx,modrm);
28136 UChar modrm = getUChar(delta);
28137 UInt rG = gregOfRexRM(pfx,modrm);
28142 if (epartIsReg(modrm)) {
28143 UInt rE = eregOfRexRM(pfx,modrm);
28179 UChar modrm = getUChar(delta);
28180 UInt rG = gregOfRexRM(pfx, modrm);
28183 if (epartIsReg(modrm)) {
28184 UInt rE = eregOfRexRM(pfx, modrm);
28206 UChar modrm = getUChar(delta);
28207 UInt rG = gregOfRexRM(pfx, modrm);
28210 if (epartIsReg(modrm)) {
28211 UInt rE = eregOfRexRM(pfx, modrm);
28236 UChar modrm = getUChar(delta);
28237 UInt rG = gregOfRexRM(pfx, modrm);
28240 if (epartIsReg(modrm)) {
28241 UInt rE = eregOfRexRM(pfx, modrm);
28263 UChar modrm = getUChar(delta);
28264 UInt rG = gregOfRexRM(pfx, modrm);
28267 if (epartIsReg(modrm)) {
28268 UInt rE = eregOfRexRM(pfx, modrm);
28343 UChar modrm = getUChar(delta);
28344 UInt rG = gregOfRexRM(pfx, modrm);
28360 UChar modrm = getUChar(delta);
28361 UInt rG = gregOfRexRM(pfx, modrm);
28378 UChar modrm = getUChar(delta);
28379 UInt rG = gregOfRexRM(pfx, modrm);
28380 UInt rE = eregOfRexRM(pfx, modrm);
28395 UChar modrm = getUChar(delta);
28396 UInt rG = gregOfRexRM(pfx, modrm);
28397 UInt rE = eregOfRexRM(pfx, modrm);
28416 UChar modrm
28417 UInt rG = gregOfRexRM(pfx, modrm);
28432 UChar modrm = getUChar(delta);
28433 UInt rG = gregOfRexRM(pfx, modrm);
28434 UInt rE = eregOfRexRM(pfx, modrm);
28451 UChar modrm = getUChar(delta);
28452 UInt rG = gregOfRexRM(pfx, modrm);
28640 UChar modrm = getUChar(delta);
28641 UInt rD = gregOfRexRM(pfx, modrm);
28654 UChar modrm = getUChar(delta);
28655 UInt rD = gregOfRexRM(pfx, modrm);
29094 UChar modrm = getUChar(delta);
29095 UInt rG = gregOfRexRM(pfx, modrm);
29097 if (epartIsReg(modrm)) {
29098 UInt rE = eregOfRexRM(pfx, modrm);
29117 UChar modrm = getUChar(delta);
29118 UInt rG = gregOfRexRM(pfx, modrm);
29120 if (epartIsReg(modrm)) {
29121 UInt rE = eregOfRexRM(pfx, modrm);
29144 UChar modrm = getUChar(delta);
29145 UInt rG = gregOfRexRM(pfx, modrm);
29147 if (epartIsReg(modrm)) {
29148 UInt rE = eregOfRexRM(pfx, modrm);
29165 UChar modrm = getUChar(delta);
29166 UInt rG = gregOfRexRM(pfx, modrm);
29168 if (epartIsReg(modrm)) {
29169 UInt rE = eregOfRexRM(pfx, modrm);
29191 UChar modrm = getUChar(delta);
29192 UInt rG = gregOfRexRM(pfx, modrm);
29207 UChar modrm = getUChar(delta);
29208 UInt rG = gregOfRexRM(pfx, modrm);
29210 if (epartIsReg(modrm)) {
29211 UInt rE = eregOfRexRM(pfx, modrm);
29234 UChar modrm = getUChar(delta);
29235 UInt rG = gregOfRexRM(pfx, modrm);
29237 if (epartIsReg(modrm)) {
29238 UInt rE = eregOfRexRM(pfx, modrm);
29265 UChar modrm = getUChar(delta);
29266 UInt rG = gregOfRexRM(pfx, modrm);
29268 if (epartIsReg(modrm)) {
29269 UInt rE = eregOfRexRM(pfx, modrm);
29290 UChar modrm = getUChar(delta);
29291 UInt rG = gregOfRexRM(pfx, modrm);
29293 if (epartIsReg(modrm)) {
29294 UInt rE = eregOfRexRM(pfx, modrm);
30142 UChar modrm = getUChar(delta);
30144 UInt rG = gregOfRexRM(pfx, modrm);
30147 if (epartIsReg(modrm)) {
30148 UInt rE = eregOfRexRM(pfx, modrm);
30181 UChar modrm = getUChar(delta);
30183 UInt rG = gregOfRexRM(pfx, modrm);
30190 if (epartIsReg(modrm)) {
30191 UInt rE = eregOfRexRM(pfx, modrm);
30221 UChar modrm = getUChar(delta);
30223 UInt rG = gregOfRexRM(pfx, modrm);
30230 if (epartIsReg(modrm)) {
30231 UInt rE = eregOfRexRM(pfx, modrm);
30264 UChar modrm = getUChar(delta);
30266 UInt rG = gregOfRexRM(pfx, modrm);
30268 if (epartIsReg(modrm)) {
30269 UInt rE = eregOfRexRM(pfx, modrm);
30294 UChar modrm = getUChar(delta);
30296 UInt rG = gregOfRexRM(pfx, modrm);
30298 if (epartIsReg(modrm)) {
30299 UInt rE = eregOfRexRM(pfx, modrm);
30322 UChar modrm = getUChar(delta);
30324 UInt rG = gregOfRexRM(pfx, modrm);
30326 if (epartIsReg(modrm)) {
30327 UInt rE = eregOfRexRM(pfx, modrm);
30355 UChar modrm = getUChar(delta);
30357 UInt rG = gregOfRexRM(pfx, modrm);
30359 if (epartIsReg(modrm)) {
30360 UInt rE = eregOfRexRM(pfx, modrm);
30393 UChar modrm = getUChar(delta);
30395 UInt rG = gregOfRexRM(pfx, modrm);
30403 if (epartIsReg(modrm)) {
30404 UInt rE = eregOfRexRM(pfx, modrm);
30439 UChar modrm = getUChar(delta);
30440 UInt rG = gregOfRexRM(pfx, modrm);
30449 modrm = getUChar(delta);
30451 if (epartIsReg(modrm)) {
30452 UInt rE = eregOfRexRM(pfx, modrm);
30487 UChar modrm = getUChar(delta);
30488 UInt rG = gregOfRexRM(pfx, modrm);
30501 modrm = getUChar(delta);
30503 if (epartIsReg(modrm)) {
30504 UInt rE = eregOfRexRM(pfx, modrm);
30544 UChar modrm = getUChar(delta);
30545 UInt rG = gregOfRexRM(pfx, modrm);
30552 modrm = getUChar(delta);
30554 if (epartIsReg(modrm)) {
30555 UInt rE = eregOfRexRM(pfx, modrm);
30588 UChar modrm = getUChar(delta);
30589 UInt rG = gregOfRexRM(pfx, modrm);
30598 modrm = getUChar(delta);
30600 if (epartIsReg(modrm)) {
30601 UInt rE = eregOfRexRM(pfx, modrm);
30640 UChar modrm = getUChar(delta);
30641 UInt rG = gregOfRexRM(pfx, modrm);
30648 if (epartIsReg(modrm)) {
30649 UInt rE = eregOfRexRM(pfx, modrm);
30695 UChar modrm = getUChar(delta);
30697 UInt rG = gregOfRexRM(pfx, modrm);
30702 if (epartIsReg(modrm)) {
30703 UInt rE = eregOfRexRM(pfx, modrm);
30726 UChar modrm = getUChar(delta);
30728 UInt rG = gregOfRexRM(pfx, modrm);
30733 if (epartIsReg(modrm)) {
30734 UInt rE = eregOfRexRM(pfx, modrm);
30760 UChar modrm = getUChar(delta);
30762 UInt rG = gregOfRexRM(pfx, modrm);
30767 if (epartIsReg(modrm)) {
30768 UInt rE = eregOfRexRM(pfx, modrm);
30791 UChar modrm = getUChar(delta);
30793 UInt rG = gregOfRexRM(pfx, modrm);
30798 if (epartIsReg(modrm)) {
30799 UInt rE = eregOfRexRM(pfx, modrm);
30825 UChar modrm = getUChar(delta);
30827 UInt rG = gregOfRexRM(pfx, modrm);
30832 if (epartIsReg(modrm)) {
30833 UInt rE = eregOfRexRM(pfx, modrm);
30856 UChar modrm = getUChar(delta);
30858 UInt rG = gregOfRexRM(pfx, modrm);
30865 if (epartIsReg(modrm)) {
30866 UInt rE = eregOfRexRM(pfx, modrm);
30895 UChar modrm = getUChar(delta);
30896 UInt rG = gregOfRexRM(pfx, modrm);
30904 if ( epartIsReg( modrm ) ) {
30905 UInt rE = eregOfRexRM(pfx, modrm);
30928 UChar modrm = getUChar(delta);
30929 UInt rG = gregOfRexRM(pfx, modrm);
30939 if ( epartIsReg( modrm ) ) {
30940 UInt rE = eregOfRexRM(pfx, modrm);
31015 UChar modrm = getUChar(delta);
31017 UInt rG = gregOfRexRM(pfx, modrm);
31020 if (epartIsReg(modrm)) {
31021 UInt rE = eregOfRexRM(pfx, modrm);
31050 UChar modrm = getUChar(delta);
31052 UInt rS = gregOfRexRM(pfx, modrm);
31054 if (epartIsReg(modrm)) {
31055 UInt rD = eregOfRexRM(pfx, modrm);
31081 UChar modrm = getUChar(delta);
31082 UInt rG = gregOfRexRM(pfx, modrm);
31087 if ( epartIsReg( modrm ) ) {
31088 UInt rE = eregOfRexRM(pfx,modrm);
31116 UChar modrm = getUChar(delta);
31117 UInt rG = gregOfRexRM(pfx, modrm);
31123 if ( epartIsReg( modrm ) ) {
31124 UInt rE = eregOfRexRM(pfx, modrm);
31156 UChar modrm = getUChar(delta);
31157 UInt rG = gregOfRexRM(pfx, modrm);
31162 if ( epartIsReg( modrm ) ) {
31163 UInt rE = eregOfRexRM(pfx,modrm);
31188 UChar modrm = getUChar(delta);
31189 UInt rG = gregOfRexRM(pfx, modrm);
31194 if ( epartIsReg( modrm ) ) {
31195 UInt rE = eregOfRexRM(pfx,modrm);
31225 UChar modrm = getUChar(delta);
31227 UInt rG = gregOfRexRM(pfx, modrm);
31230 if (epartIsReg(modrm)) {
31231 UInt rE = eregOfRexRM(pfx, modrm);
31260 UChar modrm = getUChar(delta);
31262 UInt rS = gregOfRexRM(pfx, modrm);
31264 if (epartIsReg(modrm)) {
31265 UInt rD = eregOfRexRM(pfx, modrm);
31290 UChar modrm = getUChar(delta);
31291 UInt rG = gregOfRexRM(pfx, modrm);
31295 if (epartIsReg( modrm )) {
31296 UInt rE = eregOfRexRM(pfx,modrm);
31320 UChar modrm = getUChar(delta);
31321 UInt rG = gregOfRexRM(pfx, modrm);
31325 if (epartIsReg( modrm )) {
31326 UInt rE = eregOfRexRM(pfx,modrm);
31358 UChar modrm = getUChar(delta);
31359 UInt rG = gregOfRexRM(pfx, modrm);
31363 if (epartIsReg( modrm )) {
31364 UInt rE = eregOfRexRM(pfx,modrm);
31392 UChar modrm = getUChar(delta);
31396 UInt rG = gregOfRexRM(pfx, modrm);
31401 if ( epartIsReg( modrm ) ) {
31402 UInt rE = eregOfRexRM(pfx, modrm);
31427 UChar modrm = getUChar(delta);
31431 UInt rG = gregOfRexRM(pfx, modrm);
31438 if ( epartIsReg( modrm ) ) {
31439 UInt rE = eregOfRexRM(pfx, modrm);
31474 UChar modrm = getUChar(delta);
31478 UInt rG = gregOfRexRM(pfx, modrm);
31483 if ( epartIsReg( modrm ) ) {
31484 UInt rE = eregOfRexRM(pfx, modrm);
31510 UChar modrm = getUChar(delta);
31512 UInt rG = gregOfRexRM(pfx, modrm);
31520 if (epartIsReg(modrm)) {
31521 UInt rE = eregOfRexRM(pfx, modrm);