Home | History | Annotate | Download | only in priv

Lines Matching refs: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),
2487 /* Generate IR to calculate an address indicated by a ModRM and
2952 Is passed the a ptr to the modRM byte, the actual operation, and the
3110 Is passed the a ptr to the modRM byte, the actual operation, and the
3260 Is passed the a ptr to the modRM byte, and the data size. Returns
3306 Is passed the a ptr to the modRM byte, and the data size. Returns
3514 Long delta, UChar modrm,
3527 switch (gregLO3ofRM(modrm)) {
3537 if (epartIsReg(modrm)) {
3540 assign(dst0, getIRegE(sz,pfx,modrm));
3543 if (gregLO3ofRM(modrm) == 2 /* ADC */) {
3547 if (gregLO3ofRM(modrm) == 3 /* SBB */) {
3558 if (gregLO3ofRM(modrm) < 7)
3559 putIRegE(sz, pfx, modrm, mkexpr(dst1));
3563 nameGrp1(gregLO3ofRM(modrm)), nameISize(sz), d64,
3564 nameIRegE(sz,pfx,modrm));
3571 if (gregLO3ofRM(modrm) == 2 /* ADC */) {
3582 if (gregLO3ofRM(modrm) == 3 /* SBB */) {
3594 if (gregLO3ofRM(modrm) < 7) {
3611 nameGrp1(gregLO3ofRM(modrm)), nameISize(sz),
3624 Long delta, UChar modrm,
3628 /* delta on entry points at the modrm byte. */
3642 if (epartIsReg(modrm)) {
3643 assign(dst0, getIRegE(sz, pfx, modrm));
3652 switch (gregLO3ofRM(modrm)) { case 4: case 5: case 6: case 7: isShift = True; }
3655 switch (gregLO3ofRM(modrm)) { case 0: case 1: isRotate = True; }
3658 switch (gregLO3ofRM(modrm)) { case 2: case 3: isRotateC = True; }
3674 Bool left = toBool(gregLO3ofRM(modrm) == 2);
3731 switch (gregLO3ofRM(modrm)) {
3784 Bool left = toBool(gregLO3ofRM(modrm) == 0);
3867 if (epartIsReg(modrm)) {
3868 putIRegE(sz, pfx, modrm, mkexpr(dst1));
3871 nameGrp2(gregLO3ofRM(modrm)), nameISize(sz) );
3876 vex_printf(", %s\n", nameIRegE(sz,pfx,modrm));
3882 nameGrp2(gregLO3ofRM(modrm)), nameISize(sz) );
3898 Long delta, UChar modrm,
3903 And delta on entry points at the modrm byte. */
3916 if (epartIsReg(modrm)) {
3944 switch (gregLO3ofRM(modrm)) {
3958 if (epartIsReg(modrm)) {
3960 assign( t2, widenUto64(getIRegE(sz, pfx, modrm)) );
3962 DIP("%s%c $0x%llx, %s\n", nameGrp8(gregLO3ofRM(modrm)),
3964 src_val, nameIRegE(sz,pfx,modrm));
3970 DIP("%s%c $0x%llx, %s\n", nameGrp8(gregLO3ofRM(modrm)),
3976 switch (gregLO3ofRM(modrm)) {
3994 if (gregLO3ofRM(modrm) != 4 /* BT */) {
3995 if (epartIsReg(modrm)) {
3996 putIRegE(sz, pfx, modrm, narrowTo(ty, mkexpr(t2m)));
4110 UChar modrm;
4118 modrm = getUChar(delta);
4119 if (epartIsReg(modrm)) {
4122 switch (gregLO3ofRM(modrm)) {
4129 getIRegE(sz,pfx,modrm),
4134 nameIRegE(sz, pfx, modrm));
4142 putIRegE(sz, pfx, modrm,
4144 getIRegE(sz, pfx, modrm)));
4146 nameIRegE(sz, pfx, modrm));
4154 assign(src, getIRegE(sz, pfx, modrm));
4158 putIRegE(sz, pfx, modrm, mkexpr(dst1));
4159 DIP("neg%c %s\n", nameISize(sz), nameIRegE(sz, pfx, modrm));
4164 assign(src, getIRegE(sz,pfx,modrm));
4166 nameIRegE(sz,pfx,modrm) );
4171 assign(src, getIRegE(sz,pfx,modrm));
4173 nameIRegE(sz,pfx,modrm) );
4177 assign( t1, getIRegE(sz, pfx, modrm) );
4180 nameIRegE(sz, pfx, modrm));
4184 assign( t1, getIRegE(sz, pfx, modrm) );
4187 nameIRegE(sz, pfx, modrm));
4196 if ((gregLO3ofRM(modrm) == 3/*NEG*/ || gregLO3ofRM(modrm) == 2/*NOT*/)
4205 gregLO3ofRM(modrm)==0/*TEST*/
4212 switch (gregLO3ofRM(modrm)) {
4288 UChar modrm;
4296 modrm = getUChar(delta);
4297 if (epartIsReg(modrm)) {
4300 assign(t1, getIRegE(1, pfx, modrm));
4301 switch (gregLO3ofRM(modrm)) {
4304 putIRegE(1, pfx, modrm, mkexpr(t2));
4309 putIRegE(1, pfx, modrm, mkexpr(t2));
4317 DIP("%sb %s\n", nameGrp4(gregLO3ofRM(modrm)),
4318 nameIRegE(1, pfx, modrm));
4322 if ((gregLO3ofRM(modrm) == 0/*INC*/ || gregLO3ofRM(modrm) == 1/*DEC*/)
4330 switch (gregLO3ofRM(modrm)) {
4356 DIP("%sb %s\n", nameGrp4(gregLO3ofRM(modrm)), dis_buf);
4373 UChar modrm;
4384 modrm = getUChar(delta);
4385 if (epartIsReg(modrm)) {
4390 && (gregLO3ofRM(modrm) == 2 || gregLO3ofRM(modrm) == 4)))
4392 assign(t1, getIRegE(sz,pfx,modrm));
4393 switch (gregLO3ofRM(modrm)) {
4399 putIRegE(sz,pfx,modrm, mkexpr(t2));
4406 putIRegE(sz,pfx,modrm, mkexpr(t2));
4414 assign(t3, getIRegE(sz,pfx,modrm));
4430 assign(t3, getIRegE(sz,pfx,modrm));
4441 assign(t3, getIRegE(sz,pfx,modrm));
4456 DIP("%s%c %s\n", nameGrp5(gregLO3ofRM(modrm)),
4458 nameIRegE(sz, pfx, modrm));
4462 if ((gregLO3ofRM(modrm) == 0/*INC*/ || gregLO3ofRM(modrm) == 1/*DEC*/)
4465 } else if ((gregLO3ofRM(modrm) == 2 || gregLO3ofRM(modrm) == 4)
4472 if (gregLO3ofRM(modrm) != 2 && gregLO3ofRM(modrm) != 4
4473 && gregLO3ofRM(modrm) != 6) {
4476 switch (gregLO3ofRM(modrm)) {
4549 DIP("%s%c %s\n", nameGrp5(gregLO3ofRM(modrm)),
5507 /* On entry, delta points at the second byte of the insn (the modrm
5510 UChar modrm = getUChar(delta+0);
5515 if (modrm < 0xC0) {
5517 /* bits 5,4,3 are an opcode extension, and the modRM also
5522 switch (gregLO3ofRM(modrm)) {
5587 (UInt)gregLO3ofRM(modrm));
5593 switch (modrm) {
5596 fp_do_op_ST_ST ( "add", Iop_AddF64, modrm - 0xC0, 0, False );
5600 fp_do_op_ST_ST ( "mul", Iop_MulF64, modrm - 0xC8, 0, False );
5605 r_dst = (UInt)modrm - 0xD0;
5620 r_dst = (UInt)modrm - 0xD8;
5635 fp_do_op_ST_ST ( "sub", Iop_SubF64, modrm - 0xE0, 0, False );
5639 fp_do_oprev_ST_ST ( "subr", Iop_SubF64, modrm - 0xE8, 0, False );
5643 fp_do_op_ST_ST ( "div", Iop_DivF64, modrm - 0xF0, 0, False );
5647 fp_do_oprev_ST_ST ( "divr", Iop_DivF64, modrm - 0xF8, 0, False );
5659 if (modrm < 0xC0) {
5661 /* bits 5,4,3 are an opcode extension, and the modRM also
5666 switch (gregLO3ofRM(modrm)) {
5847 (UInt)gregLO3ofRM(modrm));
5854 switch (modrm) {
5857 r_src = (UInt)modrm - 0xC0;
5866 r_src = (UInt)modrm - 0xC8;
6157 Bool isSIN = modrm == 0xFE;
6188 if (modrm < 0xC0) {
6190 /* bits 5,4,3 are an opcode extension, and the modRM also
6195 switch (gregLO3ofRM(modrm)) {
6247 (UInt)gregLO3ofRM(modrm));
6255 switch (modrm) {
6258 r_src = (UInt)modrm - 0xC0;
6267 r_src = (UInt)modrm - 0xC8;
6276 r_src = (UInt)modrm - 0xD0;
6285 r_src = (UInt)modrm - 0xD8;
6318 if (modrm < 0xC0) {
6320 /* bits 5,4,3 are an opcode extension, and the modRM also
6325 switch (gregLO3ofRM(modrm)) {
6412 (UInt)gregLO3ofRM(modrm));
6420 switch (modrm) {
6423 r_src = (UInt)modrm - 0xC0;
6432 r_src = (UInt)modrm - 0xC8;
6445 r_src = (UInt)modrm - 0xD0;
6458 r_src = (UInt)modrm - 0xD8;
6481 fp_do_ucomi_ST0_STi( (UInt)modrm - 0xE8, False );
6485 fp_do_ucomi_ST0_STi( (UInt)modrm - 0xF0, False );
6497 if (modrm < 0xC0) {
6499 /* bits 5,4,3 are an opcode extension, and the modRM also
6504 switch (gregLO3ofRM(modrm)) {
6563 (UInt)gregLO3ofRM(modrm));
6571 switch (modrm) {
6574 fp_do_op_ST_ST ( "add", Iop_AddF64, 0, modrm - 0xC0, False );
6578 fp_do_op_ST_ST ( "mul", Iop_MulF64, 0, modrm - 0xC8, False );
6582 fp_do_oprev_ST_ST ( "subr", Iop_SubF64, 0, modrm - 0xE0, False );
6586 fp_do_op_ST_ST ( "sub", Iop_SubF64, 0, modrm - 0xE8, False );
6590 fp_do_oprev_ST_ST ( "divr", Iop_DivF64, 0, modrm - 0xF0, False );
6594 fp_do_op_ST_ST ( "div", Iop_DivF64, 0, modrm - 0xF8, False );
6608 if (modrm < 0xC0) {
6610 /* bits 5,4,3 are an opcode extension, and the modRM also
6615 switch (gregLO3ofRM(modrm)) {
6799 (UInt)gregLO3ofRM(modrm));
6805 switch (modrm) {
6808 r_dst = (UInt)modrm - 0xC0;
6814 r_dst = (UInt)modrm - 0xD0;
6823 r_dst = (UInt)modrm - 0xD8;
6833 r_dst = (UInt)modrm - 0xE0;
6847 r_dst = (UInt)modrm - 0xE8;
6871 if (modrm < 0xC0) {
6873 /* bits 5,4,3 are an opcode extension, and the modRM also
6879 switch (gregLO3ofRM(modrm)) {
6933 (UInt)gregLO3ofRM(modrm));
6941 switch (modrm) {
6944 fp_do_op_ST_ST ( "add", Iop_AddF64, 0, modrm - 0xC0, True );
6948 fp_do_op_ST_ST ( "mul", Iop_MulF64, 0, modrm - 0xC8, True );
6967 fp_do_oprev_ST_ST ( "subr", Iop_SubF64, 0, modrm - 0xE0, True );
6971 fp_do_op_ST_ST ( "sub", Iop_SubF64, 0, modrm - 0xE8, True );
6975 fp_do_oprev_ST_ST ( "divr", Iop_DivF64, 0, modrm - 0xF0, True );
6979 fp_do_op_ST_ST ( "div", Iop_DivF64, 0, modrm - 0xF8, True );
6993 if (modrm < 0xC0) {
6995 /* bits 5,4,3 are an opcode extension, and the modRM also
7000 switch (gregLO3ofRM(modrm)) {
7050 (UInt)gregLO3ofRM(modrm));
7058 switch (modrm) {
7086 fp_do_ucomi_ST0_STi( (UInt)modrm - 0xE8, True );
7091 fp_do_ucomi_ST0_STi( (UInt)modrm - 0xF0, True );
7182 UChar modrm = getUChar(delta);
7183 Bool isReg = epartIsReg(modrm);
7272 argG = getMMXReg(gregLO3ofRM(modrm));
7278 argE = getMMXReg(eregLO3ofRM(modrm));
7310 putMMXReg( gregLO3ofRM(modrm), mkexpr(res) );
7314 ( isReg ? nameMMXReg(eregLO3ofRM(modrm)) : dis_buf ),
7315 nameMMXReg(gregLO3ofRM(modrm)) );
7460 UChar modrm;
7473 modrm = getUChar(delta);
7474 if (epartIsReg(modrm)) {
7477 gregLO3ofRM(modrm),
7480 getIReg32(eregOfRexRM(pfx,modrm)) ) );
7482 nameIReg32(eregOfRexRM(pfx,modrm)),
7483 nameMMXReg(gregLO3ofRM(modrm)));
7488 gregLO3ofRM(modrm),
7492 DIP("movd %s, %s\n", dis_buf, nameMMXReg(gregLO3ofRM(modrm)));
7498 modrm = getUChar(delta);
7499 if (epartIsReg(modrm)) {
7501 putMMXReg( gregLO3ofRM(modrm),
7502 getIReg64(eregOfRexRM(pfx,modrm)) );
7504 nameIReg64(eregOfRexRM(pfx,modrm)),
7505 nameMMXReg(gregLO3ofRM(modrm)));
7509 putMMXReg( gregLO3ofRM(modrm),
7511 DIP("movd{64} %s, %s\n", dis_buf, nameMMXReg(gregLO3ofRM(modrm)));
7522 modrm = getUChar(delta);
7523 if (epartIsReg(modrm)) {
7525 putIReg32( eregOfRexRM(pfx,modrm),
7526 unop(Iop_64to32, getMMXReg(gregLO3ofRM(modrm)) ) );
7528 nameMMXReg(gregLO3ofRM(modrm)),
7529 nameIReg32(eregOfRexRM(pfx,modrm)));
7534 unop(Iop_64to32, getMMXReg(gregLO3ofRM(modrm)) ) );
7535 DIP("movd %s, %s\n", nameMMXReg(gregLO3ofRM(modrm)), dis_buf);
7541 modrm = getUChar(delta);
7542 if (epartIsReg(modrm)) {
7544 putIReg64( eregOfRexRM(pfx,modrm),
7545 getMMXReg(gregLO3ofRM(modrm)) );
7547 nameMMXReg(gregLO3ofRM(modrm)),
7548 nameIReg64(eregOfRexRM(pfx,modrm)));
7553 getMMXReg(gregLO3ofRM(modrm)) );
7554 DIP("movd{64} %s, %s\n", nameMMXReg(gregLO3ofRM(modrm)), dis_buf);
7566 modrm = getUChar(delta);
7567 if (epartIsReg(modrm)) {
7569 putMMXReg( gregLO3ofRM(modrm), getMMXReg(eregLO3ofRM(modrm)) );
7571 nameMMXReg(eregLO3ofRM(modrm)),
7572 nameMMXReg(gregLO3ofRM(modrm)));
7576 putMMXReg( gregLO3ofRM(modrm), loadLE(Ity_I64, mkexpr(addr)) );
7578 dis_buf, nameMMXReg(gregLO3ofRM(modrm)));
7587 modrm = getUChar(delta);
7588 if (epartIsReg(modrm)) {
7590 putMMXReg( eregLO3ofRM(modrm), getMMXReg(gregLO3ofRM(modrm)) );
7592 nameMMXReg(gregLO3ofRM(modrm)),
7593 nameMMXReg(eregLO3ofRM(modrm)));
7597 storeLE( mkexpr(addr), getMMXReg(gregLO3ofRM(modrm)) );
7599 nameMMXReg(gregLO3ofRM(modrm)), dis_buf);
7808 modrm = getUChar(delta);
7809 if (sz != 4 || (!epartIsReg(modrm)))
7814 assign( regM, getMMXReg( eregLO3ofRM(modrm) ));
7815 assign( regD, getMMXReg( gregLO3ofRM(modrm) ));
7827 DIP("maskmovq %s,%s\n", nameMMXReg( eregLO3ofRM(modrm) ),
7828 nameMMXReg( gregLO3ofRM(modrm) ) );
7896 Long delta, UChar modrm,
7904 for printing it. And eip on entry points at the modrm byte. */
7937 assign( gsrc, getIRegG(sz, pfx, modrm) );
7939 if (epartIsReg(modrm)) {
7941 assign( esrc, getIRegE(sz, pfx, modrm) );
7945 nameIRegG(sz, pfx, modrm), nameIRegE(sz, pfx, modrm));
7955 nameIRegG(sz, pfx, modrm), dis_buf);
8050 if (epartIsReg(modrm)) {
8051 putIRegE(sz, pfx, modrm, mkexpr(resTy));
8084 UChar modrm;
8101 modrm = getUChar(delta);
8104 if (epartIsReg(modrm)) {
8121 assign( t_bitno0, widenSto64(getIRegG(sz, pfx, modrm)) );
8123 if (epartIsReg(modrm)) {
8146 storeLE( mkexpr(t_rsp), getIRegE(sz, pfx, modrm) );
8209 if ((haveLOCK(pfx)) && !epartIsReg(modrm)) {
8248 if (epartIsReg(modrm)) {
8254 putIRegE(sz, pfx, modrm, loadLE(szToITy(sz), mkexpr(t_rsp)) );
8259 nameBtOp(op), nameISize(sz), nameIRegG(sz, pfx, modrm),
8260 ( epartIsReg(modrm) ? nameIRegE(sz, pfx, modrm) : dis_buf ) );
8273 UChar modrm;
8285 modrm = getUChar(delta);
8286 isReg = epartIsReg(modrm);
8289 assign( src, getIRegE(sz, pfx, modrm) );
8299 ( isReg ? nameIRegE(sz, pfx, modrm) : dis_buf ),
8300 nameIRegG(sz, pfx, modrm));
8366 widenUto64( getIRegG( sz, pfx, modrm ) )
8379 putIRegG( sz, pfx, modrm, mkexpr(dst) );
8773 Is passed the a ptr to the modRM byte, and the data size. Returns
10182 UChar modrm = getUChar(delta);
10184 if (epartIsReg(modrm)) {
10185 assign( argR, getXMMRegLane64F( eregOfRexRM(pfx,modrm),
10190 nameXMMReg(eregOfRexRM(pfx,modrm)),
10191 nameXMMReg(gregOfRexRM(pfx,modrm)) );
10199 nameXMMReg(gregOfRexRM(pfx,modrm)) );
10201 assign( argL, getXMMRegLane64F( gregOfRexRM(pfx,modrm),
10225 UChar modrm = getUChar(delta);
10227 if (epartIsReg(modrm)) {
10228 assign( argR, getXMMRegLane32F( eregOfRexRM(pfx,modrm),
10233 nameXMMReg(eregOfRexRM(pfx,modrm)),
10234 nameXMMReg(gregOfRexRM(pfx,modrm)) );
10242 nameXMMReg(gregOfRexRM(pfx,modrm)) );
10244 assign( argL, getXMMRegLane32F( gregOfRexRM(pfx,modrm),
10269 UChar modrm = getUChar(delta);
10272 if (epartIsReg(modrm)) {
10273 assign( sV, getXMMReg(eregOfRexRM(pfx,modrm)) );
10277 nameXMMReg(eregOfRexRM(pfx,modrm)),
10278 nameXMMReg(gregOfRexRM(pfx,modrm)));
10287 nameXMMReg(gregOfRexRM(pfx,modrm)));
10303 (gregOfRexRM(pfx,modrm), mkexpr(dV));
10314 UChar modrm = getUChar(delta);
10316 UInt rG = gregOfRexRM(pfx,modrm);
10317 if (epartIsReg(modrm)) {
10318 UInt rE = eregOfRexRM(pfx,modrm);
10449 UChar modrm = getUChar(delta);
10455 if (epartIsReg(modrm)) {
10457 assign(f64lo, getXMMRegLane64F(eregOfRexRM(pfx,modrm), 0));
10459 nameXMMReg(eregOfRexRM(pfx,modrm)),
10460 nameIReg(sz, gregOfRexRM(pfx,modrm),
10468 nameIReg(sz, gregOfRexRM(pfx,modrm),
10479 putIReg32( gregOfRexRM(pfx,modrm),
10483 putIReg64( gregOfRexRM(pfx,modrm),
10497 UChar modrm = getUChar(delta);
10503 if (epartIsReg(modrm)) {
10505 assign(f32lo, getXMMRegLane32F(eregOfRexRM(pfx,modrm), 0));
10507 nameXMMReg(eregOfRexRM(pfx,modrm)),
10508 nameIReg(sz, gregOfRexRM(pfx,modrm),
10516 nameIReg(sz, gregOfRexRM(pfx,modrm),
10527 putIReg32( gregOfRexRM(pfx,modrm),
10533 putIReg64( gregOfRexRM(pfx,modrm),
10551 UChar modrm = getUChar(delta);
10552 UInt rG = gregOfRexRM(pfx,modrm);
10553 if (epartIsReg(modrm)) {
10554 UInt rE = eregOfRexRM(pfx,modrm);
10588 UChar modrm = getUChar(delta);
10589 UInt rG = gregOfRexRM(pfx,modrm);
10590 if (epartIsReg(modrm)) {
10591 UInt rE = eregOfRexRM(pfx,modrm);
10625 UChar modrm = getUChar(delta);
10626 UInt rG = gregOfRexRM(pfx,modrm);
10629 if (epartIsReg(modrm)) {
10630 UInt rE = eregOfRexRM(pfx,modrm);
10670 UChar modrm = getUChar(delta);
10673 UInt rG = gregOfRexRM(pfx,modrm);
10676 if (epartIsReg(modrm)) {
10677 UInt rE = eregOfRexRM(pfx,modrm);
10720 UChar modrm = getUChar(delta);
10723 UInt rG = gregOfRexRM(pfx,modrm);
10726 if (epartIsReg(modrm)) {
10727 UInt rE = eregOfRexRM(pfx,modrm);
10772 UChar modrm = getUChar(delta);
10775 UInt rG = gregOfRexRM(pfx,modrm);
10778 if (epartIsReg(modrm)) {
10779 UInt rE = eregOfRexRM(pfx,modrm);
10827 UChar modrm = getUChar(delta);
10830 UInt rG = gregOfRexRM(pfx,modrm);
10833 if (epartIsReg(modrm)) {
10834 UInt rE = eregOfRexRM(pfx,modrm);
10881 UChar modrm = getUChar(delta);
10884 UInt rG = gregOfRexRM(pfx,modrm);
10887 if (epartIsReg(modrm)) {
10888 UInt rE = eregOfRexRM(pfx,modrm);
10929 UChar modrm = getUChar(delta);
10932 UInt rG = gregOfRexRM(pfx,modrm);
10935 if (epartIsReg(modrm)) {
10936 UInt rE = eregOfRexRM(pfx,modrm);
10979 UChar modrm = getUChar(delta);
10980 vassert(epartIsReg(modrm)); /* ensured by caller */
10981 UInt rE = eregOfRexRM(pfx,modrm);
10982 UInt rG = gregOfRexRM(pfx,modrm);
10998 UChar modrm = getUChar(delta);
10999 vassert(epartIsReg(modrm)); /* ensured by caller */
11000 UInt rE = eregOfRexRM(pfx,modrm);
11001 UInt rG = gregOfRexRM(pfx,modrm);
11456 UChar modrm = getUChar(delta);
11457 UInt rG = gregOfRexRM(pfx,modrm);
11466 if (epartIsReg(modrm)) {
11467 UInt rE = eregOfRexRM(pfx,modrm);
11511 UChar modrm = getUChar(delta);
11512 UInt rG = gregOfRexRM(pfx,modrm);
11520 if (epartIsReg(modrm)) {
11521 UInt rE = eregOfRexRM(pfx,modrm);
11556 UChar modrm = getUChar(delta);
11557 UInt rG = gregOfRexRM(pfx,modrm);
11562 if (epartIsReg(modrm)) {
11563 UInt rE = eregOfRexRM(pfx,modrm);
11597 UChar modrm = getUChar(delta);
11599 UInt rG = gregOfRexRM(pfx,modrm);
11601 if (epartIsReg(modrm)) {
11602 UInt rE = eregOfRexRM(pfx,modrm);
11632 UChar modrm = getUChar(delta);
11633 vassert(!epartIsReg(modrm)); /* ensured by caller */
11634 vassert(gregOfRexRM(pfx,modrm) == 3); /* ditto */
11664 UChar modrm = getUChar(delta);
11665 vassert(!epartIsReg(modrm)); /* ensured by caller */
11666 vassert(gregOfRexRM(pfx,modrm) == 2); /* ditto */
11854 UChar modrm = getUChar(delta);
11855 vassert(!epartIsReg(modrm)); /* ensured by caller */
11898 UChar modrm = getUChar(delta);
11899 vassert(!epartIsReg(modrm)); /* ensured by caller */
12109 UChar modrm = getUChar(delta);
12110 vassert(!epartIsReg(modrm)); /* ensured by caller */
12179 UChar modrm = getUChar(delta);
12180 vassert(!epartIsReg(modrm)); /* ensured by caller */
12273 UChar modrm = getUChar(delta);
12274 UInt rG = gregOfRexRM(pfx,modrm);
12275 UInt rE = eregOfRexRM(pfx,modrm);
12286 getXMMRegLane64( eregOfRexRM(pfx,modrm), 1 ),
12289 getXMMRegLane64( eregOfRexRM(pfx,modrm), 0 ),
12311 UChar modrm = getUChar(delta);
12312 UInt rG = gregOfRexRM(pfx,modrm);
12313 UInt rE = eregOfRexRM(pfx,modrm);
12342 UChar modrm = getUChar(delta);
12343 UInt rG = gregOfRexRM(pfx,modrm);
12344 UInt rE = eregOfRexRM(pfx,modrm);
12393 UChar modrm = getUChar(delta);
12394 UInt rG = gregOfRexRM(pfx,modrm);
12395 UInt rE = eregOfRexRM(pfx,modrm);
12414 UChar modrm = getUChar(delta);
12415 UInt rG = gregOfRexRM(pfx,modrm);
12416 UInt rE = eregOfRexRM(pfx,modrm);
12459 UChar modrm = 0;
12474 modrm = getUChar(delta);
12475 if (epartIsReg(modrm)) {
12476 putXMMReg( gregOfRexRM(pfx,modrm),
12477 getXMMReg( eregOfRexRM(pfx,modrm) ));
12478 DIP("movupd %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
12479 nameXMMReg(gregOfRexRM(pfx,modrm)));
12483 putXMMReg( gregOfRexRM(pfx,modrm),
12486 nameXMMReg(gregOfRexRM(pfx,modrm)));
12496 modrm = getUChar(delta);
12497 if (epartIsReg(modrm)) {
12498 putXMMRegLane64( gregOfRexRM(pfx,modrm), 0,
12499 getXMMRegLane64( eregOfRexRM(pfx,modrm), 0 ));
12500 DIP("movsd %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
12501 nameXMMReg(gregOfRexRM(pfx,modrm)));
12505 putXMMReg( gregOfRexRM(pfx,modrm), mkV128(0) );
12506 putXMMRegLane64( gregOfRexRM(pfx,modrm), 0,
12509 nameXMMReg(gregOfRexRM(pfx,modrm)));
12518 modrm = getUChar(delta);
12519 if (epartIsReg(modrm)) {
12520 putXMMRegLane32( gregOfRexRM(pfx,modrm), 0,
12521 getXMMRegLane32( eregOfRexRM(pfx,modrm), 0 ));
12522 DIP("movss %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
12523 nameXMMReg(gregOfRexRM(pfx,modrm)));
12527 putXMMReg( gregOfRexRM(pfx,modrm), mkV128(0) );
12528 putXMMRegLane32( gregOfRexRM(pfx,modrm), 0,
12531 nameXMMReg(gregOfRexRM(pfx,modrm)));
12539 modrm = getUChar(delta);
12540 if (epartIsReg(modrm)) {
12541 putXMMReg( gregOfRexRM(pfx,modrm),
12542 getXMMReg( eregOfRexRM(pfx,modrm) ));
12543 DIP("movups %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
12544 nameXMMReg(gregOfRexRM(pfx,modrm)));
12548 putXMMReg( gregOfRexRM(pfx,modrm),
12551 nameXMMReg(gregOfRexRM(pfx,modrm)));
12563 modrm = getUChar(delta);
12564 if (epartIsReg(modrm)) {
12565 putXMMRegLane64( eregOfRexRM(pfx,modrm), 0,
12566 getXMMRegLane64( gregOfRexRM(pfx,modrm), 0 ));
12567 DIP("movsd %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12568 nameXMMReg(eregOfRexRM(pfx,modrm)));
12573 getXMMRegLane64(gregOfRexRM(pfx,modrm), 0) );
12574 DIP("movsd %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12583 modrm = getUChar(delta);
12584 if (epartIsReg(modrm)) {
12589 getXMMRegLane32(gregOfRexRM(pfx,modrm), 0) );
12590 DIP("movss %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12599 modrm = getUChar(delta);
12600 if (epartIsReg(modrm)) {
12601 putXMMReg( eregOfRexRM(pfx,modrm),
12602 getXMMReg( gregOfRexRM(pfx,modrm) ) );
12603 DIP("movupd %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12604 nameXMMReg(eregOfRexRM(pfx,modrm)));
12608 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
12609 DIP("movupd %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12618 modrm = getUChar(delta);
12619 if (epartIsReg(modrm)) {
12623 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
12624 DIP("movups %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12637 modrm = getUChar(delta);
12638 if (epartIsReg(modrm)) {
12643 putXMMRegLane64( gregOfRexRM(pfx,modrm),
12647 dis_buf, nameXMMReg( gregOfRexRM(pfx,modrm) ));
12655 modrm = getUChar(delta);
12656 if (epartIsReg(modrm)) {
12658 putXMMRegLane64( gregOfRexRM(pfx,modrm),
12660 getXMMRegLane64( eregOfRexRM(pfx,modrm), 1 ));
12661 DIP("movhlps %s, %s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
12662 nameXMMReg(gregOfRexRM(pfx,modrm)));
12666 putXMMRegLane64( gregOfRexRM(pfx,modrm), 0/*lower lane*/,
12669 dis_buf, nameXMMReg( gregOfRexRM(pfx,modrm) ));
12679 modrm = getUChar(delta);
12680 if (!epartIsReg(modrm)) {
12684 getXMMRegLane64( gregOfRexRM(pfx,modrm),
12686 DIP("movlps %s, %s\n", nameXMMReg( gregOfRexRM(pfx,modrm) ),
12696 modrm = getUChar(delta);
12697 if (!epartIsReg(modrm)) {
12701 getXMMRegLane64( gregOfRexRM(pfx,modrm),
12703 DIP("movlpd %s, %s\n", nameXMMReg( gregOfRexRM(pfx,modrm) ),
12720 modrm = getUChar(delta);
12721 UInt rG = gregOfRexRM(pfx,modrm);
12723 if (epartIsReg(modrm)) {
12724 UInt rE = eregOfRexRM(pfx,modrm);
12748 modrm = getUChar(delta);
12749 UInt rG = gregOfRexRM(pfx,modrm);
12751 if (epartIsReg(modrm)) {
12752 UInt rE = eregOfRexRM(pfx,modrm);
12776 modrm = getUChar(delta);
12777 if (epartIsReg(modrm)) {
12782 putXMMRegLane64( gregOfRexRM(pfx,modrm), 1/*upper lane*/,
12785 nameXMMReg( gregOfRexRM(pfx,modrm) ));
12793 modrm = getUChar(delta);
12794 if (epartIsReg(modrm)) {
12796 putXMMRegLane64( gregOfRexRM(pfx,modrm), 1/*upper lane*/,
12797 getXMMRegLane64( eregOfRexRM(pfx,modrm), 0 ) );
12798 DIP("movhps %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
12799 nameXMMReg(gregOfRexRM(pfx,modrm)));
12803 putXMMRegLane64( gregOfRexRM(pfx,modrm), 1/*upper lane*/,
12806 nameXMMReg( gregOfRexRM(pfx,modrm) ));
12816 modrm = getUChar(delta);
12817 if (!epartIsReg(modrm)) {
12821 getXMMRegLane64( gregOfRexRM(pfx,modrm),
12823 DIP("movhps %s,%s\n", nameXMMReg( gregOfRexRM(pfx,modrm) ),
12833 modrm = getUChar(delta);
12834 if (!epartIsReg(modrm)) {
12838 getXMMRegLane64( gregOfRexRM(pfx,modrm),
12840 DIP("movhpd %s,%s\n", nameXMMReg( gregOfRexRM(pfx,modrm) ),
12859 modrm = getUChar(delta);
12860 vassert(!epartIsReg(modrm));
12865 switch (gregLO3ofRM(modrm)) {
12882 modrm = getUChar(delta);
12883 if (epartIsReg(modrm)) {
12884 putXMMReg( gregOfRexRM(pfx,modrm),
12885 getXMMReg( eregOfRexRM(pfx,modrm) ));
12886 DIP("movapd %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
12887 nameXMMReg(gregOfRexRM(pfx,modrm)));
12892 putXMMReg( gregOfRexRM(pfx,modrm),
12895 nameXMMReg(gregOfRexRM(pfx,modrm)));
12903 modrm = getUChar(delta);
12904 if (epartIsReg(modrm)) {
12905 putXMMReg( gregOfRexRM(pfx,modrm),
12906 getXMMReg( eregOfRexRM(pfx,modrm) ));
12907 DIP("movaps %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
12908 nameXMMReg(gregOfRexRM(pfx,modrm)));
12913 putXMMReg( gregOfRexRM(pfx,modrm),
12916 nameXMMReg(gregOfRexRM(pfx,modrm)));
12927 modrm = getUChar(delta);
12928 if (epartIsReg(modrm)) {
12929 putXMMReg( eregOfRexRM(pfx,modrm),
12930 getXMMReg( gregOfRexRM(pfx,modrm) ));
12931 DIP("movaps %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12932 nameXMMReg(eregOfRexRM(pfx,modrm)));
12937 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
12938 DIP("movaps %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12947 modrm = getUChar(delta);
12948 if (epartIsReg(modrm)) {
12949 putXMMReg( eregOfRexRM(pfx,modrm),
12950 getXMMReg( gregOfRexRM(pfx,modrm) ) );
12951 DIP("movapd %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12952 nameXMMReg(eregOfRexRM(pfx,modrm)));
12957 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
12958 DIP("movapd %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
12973 modrm = getUChar(delta);
12974 if (epartIsReg(modrm)) {
12978 assign( arg64, getMMXReg(eregLO3ofRM(modrm)) );
12980 DIP("cvtpi2ps %s,%s\n", nameMMXReg(eregLO3ofRM(modrm)),
12981 modrm)));
12987 nameXMMReg(gregOfRexRM(pfx,modrm)) );
12993 gregOfRexRM(pfx,modrm), 0,
13000 gregOfRexRM(pfx,modrm), 1,
13014 modrm = getUChar(delta);
13017 if (epartIsReg(modrm)) {
13018 assign( arg32, getIReg32(eregOfRexRM(pfx,modrm)) );
13020 DIP("cvtsi2ss %s,%s\n", nameIReg32(eregOfRexRM(pfx,modrm)),
13021 nameXMMReg(gregOfRexRM(pfx,modrm)));
13027 nameXMMReg(gregOfRexRM(pfx,modrm)) );
13030 gregOfRexRM(pfx,modrm), 0,
13037 if (epartIsReg(modrm)) {
13038 assign( arg64, getIReg64(eregOfRexRM(pfx,modrm)) );
13040 DIP("cvtsi2ssq %s,%s\n", nameIReg64(eregOfRexRM(pfx,modrm)),
13041 nameXMMReg(gregOfRexRM(pfx,modrm)));
13047 nameXMMReg(gregOfRexRM(pfx,modrm)) );
13050 gregOfRexRM(pfx,modrm), 0,
13062 modrm = getUChar(delta);
13065 if (epartIsReg(modrm)) {
13066 assign( arg32, getIReg32(eregOfRexRM(pfx,modrm)) );
13068 DIP("cvtsi2sdl %s,%s\n", nameIReg32(eregOfRexRM(pfx,modrm)),
13069 nameXMMReg(gregOfRexRM(pfx,modrm)));
13075 nameXMMReg(gregOfRexRM(pfx,modrm)) );
13077 putXMMRegLane64F( gregOfRexRM(pfx,modrm), 0,
13083 if (epartIsReg(modrm)) {
13084 assign( arg64, getIReg64(eregOfRexRM(pfx,modrm)) );
13086 DIP("cvtsi2sdq %s,%s\n", nameIReg64(eregOfRexRM(pfx,modrm)),
13087 nameXMMReg(gregOfRexRM(pfx,modrm)));
13093 nameXMMReg(gregOfRexRM(pfx,modrm)) );
13096 gregOfRexRM(pfx,modrm),
13111 modrm = getUChar(delta);
13112 if (epartIsReg(modrm)) {
13120 assign( arg64, getMMXReg(eregLO3ofRM(modrm)) );
13122 DIP("cvtpi2pd %s,%s\n", nameMMXReg(eregLO3ofRM(modrm)),
13123 nameXMMReg(gregOfRexRM(pfx,modrm)));
13129 nameXMMReg(gregOfRexRM(pfx,modrm)) );
13133 gregOfRexRM(pfx,modrm), 0,
13138 gregOfRexRM(pfx,modrm), 1,
13151 modrm = getUChar(delta);
13152 if (!epartIsReg(modrm)) {
13155 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
13158 nameXMMReg(gregOfRexRM(pfx,modrm)));
13180 modrm = getUChar(delta);
13182 if (epartIsReg(modrm)) {
13184 assign(f32lo, getXMMRegLane32F(eregOfRexRM(pfx,modrm), 0));
13185 assign(f32hi, getXMMRegLane32F(eregOfRexRM(pfx,modrm), 1));
13187 nameXMMReg(eregOfRexRM(pfx,modrm)),
13188 nameMMXReg(gregLO3ofRM(modrm)));
13198 nameMMXReg(gregLO3ofRM(modrm)));
13219 putMMXReg(gregLO3ofRM(modrm), mkexpr(dst64));
13266 modrm = getUChar(delta);
13268 if (epartIsReg(modrm)) {
13270 assign(f64lo, getXMMRegLane64F(eregOfRexRM(pfx,modrm), 0));
13271 assign(f64hi, getXMMRegLane64F(eregOfRexRM(pfx,modrm), 1));
13273 nameXMMReg(eregOfRexRM(pfx,modrm)),
13274 nameMMXReg(gregLO3ofRM(modrm)));
13284 nameMMXReg(gregLO3ofRM(modrm)));
13301 putMMXReg(gregLO3ofRM(modrm), mkexpr(dst64));
13535 modrm = getUChar(delta);
13536 if (epartIsReg(modrm)) {
13538 assign(f32lo, getXMMRegLane32F(eregOfRexRM(pfx,modrm), 0));
13539 DIP("cvtss2sd %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
13540 nameXMMReg(gregOfRexRM(pfx,modrm)));
13546 nameXMMReg(gregOfRexRM(pfx,modrm)));
13549 putXMMRegLane64F( gregOfRexRM(pfx,modrm), 0,
13560 modrm = getUChar(delta);
13561 if (epartIsReg(modrm)) {
13563 assign(f64lo, getXMMRegLane64F(eregOfRexRM(pfx,modrm), 0));
13564 DIP("cvtsd2ss %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
13565 nameXMMReg(gregOfRexRM(pfx,modrm)));
13571 nameXMMReg(gregOfRexRM(pfx,modrm)));
13576 gregOfRexRM(pfx,modrm), 0,
13852 modrm = getUChar(delta);
13853 if (epartIsReg(modrm)) {
13857 gregOfRexRM(pfx,modrm),
13858 unop( Iop_32UtoV128, getIReg32(eregOfRexRM(pfx,modrm)) )
13860 DIP("movd %s, %s\n", nameIReg32(eregOfRexRM(pfx,modrm)),
13861 nameXMMReg(gregOfRexRM(pfx,modrm)));
13864 gregOfRexRM(pfx,modrm),
13865 unop( Iop_64UtoV128, getIReg64(eregOfRexRM(pfx,modrm)) )
13867 DIP("movq %s, %s\n", nameIReg64(eregOfRexRM(pfx,modrm)),
13868 nameXMMReg(gregOfRexRM(pfx,modrm)));
13874 gregOfRexRM(pfx,modrm),
13880 nameXMMReg(gregOfRexRM(pfx,modrm)));
13890 modrm = getUChar(delta);
13891 if (epartIsReg(modrm)) {
13892 putXMMReg( gregOfRexRM(pfx,modrm),
13893 getXMMReg( eregOfRexRM(pfx,modrm) ));
13894 DIP("movdqa %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
13895 nameXMMReg(gregOfRexRM(pfx,modrm)));
13900 putXMMReg( gregOfRexRM(pfx,modrm),
13903 nameXMMReg(gregOfRexRM(pfx,modrm)));
13910 modrm = getUChar(delta);
13911 if (epartIsReg(modrm)) {
13912 putXMMReg( gregOfRexRM(pfx,modrm),
13913 getXMMReg( eregOfRexRM(pfx,modrm) ));
13914 DIP("movdqu %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
13915 nameXMMReg(gregOfRexRM(pfx,modrm)));
13919 putXMMReg( gregOfRexRM(pfx,modrm),
13922 nameXMMReg(gregOfRexRM(pfx,modrm)));
13944 modrm = getUChar(delta);
13945 if (epartIsReg(modrm)) {
13946 assign( sV, getMMXReg(eregLO3ofRM(modrm)) );
13950 nameMMXReg(eregLO3ofRM(modrm)),
13951 nameMMXReg(gregLO3ofRM(modrm)));
13960 nameMMXReg(gregLO3ofRM(modrm)));
13969 putMMXReg(gregLO3ofRM(modrm), mkexpr(dV));
14115 modrm = getUChar(delta);
14116 if (epartIsReg(modrm)) {
14117 putXMMRegLane64( gregOfRexRM(pfx,modrm), 0,
14118 getXMMRegLane64( eregOfRexRM(pfx,modrm), 0 ));
14120 putXMMRegLane64( gregOfRexRM(pfx,modrm), 1, mkU64(0) );
14121 DIP("movsd %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
14122 nameXMMReg(gregOfRexRM(pfx,modrm)));
14126 putXMMReg( gregOfRexRM(pfx,modrm), mkV128(0) );
14127 putXMMRegLane64( gregOfRexRM(pfx,modrm), 0,
14130 nameXMMReg(gregOfRexRM(pfx,modrm)));
14139 modrm = getUChar(delta);
14140 if (epartIsReg(modrm)) {
14143 putIReg32( eregOfRexRM(pfx,modrm),
14144 getXMMRegLane32(gregOfRexRM(pfx,modrm), 0) );
14145 DIP("movd %s, %s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
14146 nameIReg32(eregOfRexRM(pfx,modrm)));
14148 putIReg64( eregOfRexRM(pfx,modrm),
14149 getXMMRegLane64(gregOfRexRM(pfx,modrm), 0) );
14150 DIP("movq %s, %s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
14151 nameIReg64(eregOfRexRM(pfx,modrm)));
14158 ? getXMMRegLane32(gregOfRexRM(pfx,modrm),0)
14159 : getXMMRegLane64(gregOfRexRM(pfx,modrm),0) );
14161 nameXMMReg(gregOfRexRM(pfx,modrm)), dis_buf);
14170 modrm = getUChar(delta);
14171 if (epartIsReg(modrm)) {
14174 putXMMReg( eregOfRexRM(pfx,modrm),
14175 getXMMReg(gregOfRexRM(pfx,modrm)) );
14176 DIP("movdqu %s, %s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
14177 nameXMMReg(eregOfRexRM(pfx,modrm)));
14181 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
14182 DIP("movdqu %s, %s\n", nameXMMReg(gregOfRexRM(pfx,modrm)), dis_buf);
14188 modrm = getUChar(delta);
14189 if (epartIsReg(modrm)) {
14191 putXMMReg( eregOfRexRM(pfx,modrm),
14192 getXMMReg(gregOfRexRM(pfx,modrm)) );
14193 DIP("movdqa %s, %s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
14194 nameXMMReg(eregOfRexRM(pfx,modrm)));
14199 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
14200 DIP("movdqa %s, %s\n", nameXMMReg(gregOfRexRM(pfx,modrm)), dis_buf);
14340 modrm = getUChar(delta);
14341 if (!epartIsReg(modrm)) {
14343 storeLE( mkexpr(addr), getIRegG(sz, pfx, modrm) );
14345 nameIRegG(sz, pfx, modrm));
14366 modrm = getUChar(delta);
14369 assign(t5, getMMXReg(gregLO3ofRM(modrm)));
14372 if (epartIsReg(modrm)) {
14373 assign(t4, getIReg16(eregOfRexRM(pfx,modrm)));
14377 nameIReg16(eregOfRexRM(pfx,modrm)),
14378 nameMMXReg(gregLO3ofRM(modrm)));
14386 nameMMXReg(gregLO3ofRM(modrm)));
14396 putMMXReg(gregLO3ofRM(modrm), mkexpr(t6));
14405 modrm = getUChar(delta);
14406 UInt rG = gregOfRexRM(pfx,modrm);
14407 if (epartIsReg(modrm)) {
14408 UInt rE = eregOfRexRM(pfx,modrm);
14436 modrm = getUChar(delta);
14437 if (epartIsReg(modrm)) {
14441 assign(sV, getMMXReg(eregLO3ofRM(modrm)));
14451 putIReg64(gregOfRexRM(pfx,modrm), unop(Iop_16Uto64, mkexpr(t5)));
14453 putIReg32(gregOfRexRM(pfx,modrm), unop(Iop_16Uto32, mkexpr(t5)));
14456 nameMMXReg(eregLO3ofRM(modrm)),
14457 sz==8 ? nameIReg64(gregOfRexRM(pfx,modrm))
14458 : nameIReg32(gregOfRexRM(pfx,modrm))
14486 modrm = getUChar(delta);
14487 UInt rG = gregOfRexRM(pfx,modrm);
14489 if (epartIsReg(modrm)) {
14490 UInt rE = eregOfRexRM(pfx,modrm);
14503 putXMMReg( gregOfRexRM(pfx,modrm), mkexpr(res) );
14512 modrm = getUChar(delta);
14513 assign( dV, getXMMReg(gregOfRexRM(pfx,modrm)) );
14515 if (epartIsReg(modrm)) {
14516 assign( sV, getXMMReg(eregOfRexRM(pfx,modrm)) );
14520 nameXMMReg(eregOfRexRM(pfx,modrm)),
14521 nameXMMReg(gregOfRexRM(pfx,modrm)));
14529 nameXMMReg(gregOfRexRM(pfx,modrm)));
14533 putXMMReg( gregOfRexRM(pfx,modrm), mkexpr(res) );
14592 modrm = getUChar(delta);
14593 if (epartIsReg(modrm)) {
14595 putXMMReg( gregOfRexRM(pfx,modrm),
14596 unop(Iop_64UtoV128, getMMXReg( eregLO3ofRM(modrm) )) );
14597 DIP("movq2dq %s,%s\n", nameMMXReg(eregLO3ofRM(modrm)),
14598 nameXMMReg(gregOfRexRM(pfx,modrm)));
14608 modrm = getUChar(delta);
14609 if (epartIsReg(modrm)) {
14615 getXMMRegLane64( gregOfRexRM(pfx,modrm), 0 ));
14616 DIP("movq %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)), dis_buf );
14623 modrm = getUChar(delta);
14624 if (epartIsReg(modrm)) {
14626 putMMXReg( gregLO3ofRM(modrm),
14627 getXMMRegLane64( eregOfRexRM(pfx,modrm), 0 ));
14628 DIP("movdq2q %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
14629 nameMMXReg(gregLO3ofRM(modrm)));
14654 modrm = getUChar(delta);
14655 if (epartIsReg(modrm)) {
14659 assign(t0, getMMXReg(eregLO3ofRM(modrm)));
14661 putIReg32(gregOfRexRM(pfx,modrm), mkexpr(t1));
14662 DIP("pmovmskb %s,%s\n", nameMMXReg(eregLO3ofRM(modrm)),
14663 nameIReg32(gregOfRexRM(pfx,modrm)));
14861 modrm = getUChar(delta);
14862 if (!epartIsReg(modrm)) {
14865 storeLE( mkexpr(addr), getMMXReg(gregLO3ofRM(modrm)) );
14867 nameMMXReg(gregLO3ofRM(modrm)));
14875 modrm = getUChar(delta);
14876 if (!epartIsReg(modrm)) {
14879 storeLE( mkexpr(addr), getXMMReg(gregOfRexRM(pfx,modrm)) );
14881 nameXMMReg(gregOfRexRM(pfx,modrm)));
15006 modrm = getUChar(delta);
15007 UInt rG = gregOfRexRM(pfx,modrm);
15009 if (epartIsReg(modrm)) {
15010 UInt rE = eregOfRexRM(pfx,modrm);
15031 modrm = getUChar(delta);
15034 assign( dV, getMMXReg(gregLO3ofRM(modrm)) );
15036 if (epartIsReg(modrm)) {
15037 assign( sV, getMMXReg(eregLO3ofRM(modrm)) );
15039 DIP("pmuludq %s,%s\n", nameMMXReg(eregLO3ofRM(modrm)),
15040 nameMMXReg(gregLO3ofRM(modrm)));
15046 nameMMXReg(gregLO3ofRM(modrm)));
15051 putMMXReg( gregLO3ofRM(modrm),
15063 modrm = getUChar(delta);
15064 UInt rG = gregOfRexRM(pfx,modrm);
15065 if (epartIsReg(modrm)) {
15066 UInt rE = eregOfRexRM(pfx,modrm);
15096 modrm = getUChar(delta);
15097 UInt rG = gregOfRexRM(pfx,modrm);
15098 if (epartIsReg(modrm)) {
15099 modrm);
15231 UChar modrm = getUChar(delta);
15232 UInt rG = gregOfRexRM(pfx,modrm);
15233 if (epartIsReg(modrm)) {
15234 UInt rE = eregOfRexRM(pfx,modrm);
15261 UChar modrm = getUChar(delta);
15262 UInt rG = gregOfRexRM(pfx,modrm);
15263 if (epartIsReg(modrm)) {
15264 UInt rE = eregOfRexRM(pfx,modrm);
15292 UChar modrm = getUChar(delta);
15293 UInt rG = gregOfRexRM(pfx,modrm);
15296 if (epartIsReg(modrm)) {
15297 UInt rE = eregOfRexRM(pfx,modrm);
15326 UChar modrm = getUChar(delta);
15327 UInt rG = gregOfRexRM(pfx,modrm);
15330 if (epartIsReg(modrm)) {
15331 UInt rE = eregOfRexRM(pfx,modrm);
15403 UChar modrm = 0;
15450 modrm = getUChar(delta);
15451 UInt rG = gregOfRexRM(pfx,modrm);
15452 if (epartIsReg(modrm)) {
15453 UInt rE = eregOfRexRM(pfx,modrm);
15475 modrm = getUChar(delta);
15476 UInt rG = gregOfRexRM(pfx,modrm);
15477 if (epartIsReg(modrm)) {
15478 UInt rE = eregOfRexRM(pfx,modrm);
15500 modrm = getUChar(delta);
15501 UInt rG = gregOfRexRM(pfx,modrm);
15502 if (epartIsReg(modrm)) {
15503 UInt rE = eregOfRexRM(pfx,modrm);
15522 modrm = getUChar(delta);
15523 UInt rG = gregOfRexRM(pfx,modrm);
15525 modrm = getUChar(delta);
15526 if (epartIsReg(modrm)) {
15527 UInt rE = eregOfRexRM(pfx,modrm);
15547 modrm = getUChar(delta);
15548 if (epartIsReg(modrm)) {
15552 putXMMReg( gregOfRexRM(pfx,modrm),
15555 nameXMMReg(gregOfRexRM(pfx,modrm)));
15705 UChar modrm = getUChar(delta);
15706 UInt rG = gregOfRexRM(pfx,modrm);
15725 if (epartIsReg(modrm)) {
15726 UInt rE = eregOfRexRM(pfx,modrm);
15777 UChar modrm = getUChar(delta);
15778 UInt rG = gregOfRexRM(pfx,modrm);
15797 if (epartIsReg(modrm)) {
15798 UInt rE = eregOfRexRM(pfx,modrm);
15884 UChar modrm = 0;
15902 modrm = getUChar(delta);
15903 assign( dV, getXMMReg(gregOfRexRM(pfx,modrm)) );
15905 if (epartIsReg(modrm)) {
15906 assign( sV, getXMMReg(eregOfRexRM(pfx,modrm)) );
15908 DIP("pshufb %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
15909 nameXMMReg(gregOfRexRM(pfx,modrm)));
15916 nameXMMReg(gregOfRexRM(pfx,modrm)));
15920 putXMMReg(gregOfRexRM(pfx,modrm), mkexpr(res));
15928 modrm = getUChar(delta);
15930 assign( dV, getMMXReg(gregLO3ofRM(modrm)) );
15932 if (epartIsReg(modrm)) {
15933 assign( sV, getMMXReg(eregLO3ofRM(modrm)) );
15935 DIP("pshufb %s,%s\n", nameMMXReg(eregLO3ofRM(modrm)),
15936 nameMMXReg(gregLO3ofRM(modrm)));
15942 nameMMXReg(gregLO3ofRM(modrm)));
15946 gregLO3ofRM(modrm),
16007 modrm = getUChar(delta);
16024 assign( dV, getMMXReg(gregLO3ofRM(modrm)) );
16026 if (epartIsReg(modrm)) {
16027 assign( sV, getMMXReg(eregLO3ofRM(modrm)) );
16029 DIP("ph%s %s,%s\n", str, nameMMXReg(eregLO3ofRM(modrm)),
16030 nameMMXReg(gregLO3ofRM(modrm)));
16036 nameMMXReg(gregLO3ofRM(modrm)));
16040 gregLO3ofRM(modrm),
16057 modrm = getUChar(delta);
16058 UInt rG = gregOfRexRM(pfx,modrm);
16062 if (epartIsReg(modrm)) {
16063 UInt rE = eregOfRexRM(pfx,modrm);
16088 modrm = getUChar(delta);
16090 assign( dV, getMMXReg(gregLO3ofRM(modrm)) );
16092 if (epartIsReg(modrm)) {
16093 assign( sV, getMMXReg(eregLO3ofRM(modrm)) );
16095 DIP("pmaddubsw %s,%s\n", nameMMXReg(eregLO3ofRM(modrm)),
16096 nameMMXReg(gregLO3ofRM(modrm)));
16102 nameMMXReg(gregLO3ofRM(modrm)));
16120 gregLO3ofRM(modrm),
16154 modrm = getUChar(delta);
16155 assign( dV, getXMMReg(gregOfRexRM(pfx,modrm)) );
16157 if (epartIsReg(modrm)) {
16158 assign( sV, getXMMReg(eregOfRexRM(pfx,modrm)) );
16160 DIP("psign%s %s,%s\n", str, nameXMMReg(eregOfRexRM(pfx,modrm)),
16161 nameXMMReg(gregOfRexRM(pfx,modrm)));
16168 nameXMMReg(gregOfRexRM(pfx,modrm)));
16177 gregOfRexRM(pfx,modrm),
16201 modrm = getUChar(delta);
16203 assign( dV, getMMXReg(gregLO3ofRM(modrm)) );
16205 if (epartIsReg(modrm)) {
16206 assign( sV, getMMXReg(eregLO3ofRM(modrm)) );
16208 DIP("psign%s %s,%s\n", str, nameMMXReg(eregLO3ofRM(modrm)),
16209 nameMMXReg(gregLO3ofRM(modrm)));
16215 nameMMXReg(gregLO3ofRM(modrm)));
16219 gregLO3ofRM(modrm),
16238 modrm = getUChar(delta);
16239 assign( dV, getXMMReg(gregOfRexRM(pfx,modrm)) );
16241 if (epartIsReg(modrm)) {
16242 assign( sV, getXMMReg(eregOfRexRM(pfx,modrm)) );
16244 DIP("pmulhrsw %s,%s\n", nameXMMReg(eregOfRexRM(pfx,modrm)),
16245 nameXMMReg(gregOfRexRM(pfx,modrm)));
16252 nameXMMReg(gregOfRexRM(pfx,modrm)));
16261 gregOfRexRM(pfx,modrm),
16275 modrm = getUChar(delta);
16277 assign( dV, getMMXReg(gregLO3ofRM(modrm)) );
16279 if (epartIsReg(modrm)) {
16280 assign( sV, getMMXReg(eregLO3ofRM(modrm)) );
16282 DIP("pmulhrsw %s,%s\n", nameMMXReg(eregLO3ofRM(modrm)),
16283 nameMMXReg(gregLO3ofRM(modrm)));
16289 nameMMXReg(gregLO3ofRM(modrm)));
16293 gregLO3ofRM(modrm),
16319 modrm = getUChar(delta);
16320 if (epartIsReg(modrm)) {
16321 assign( sV, getXMMReg(eregOfRexRM(pfx,modrm)) );
16323 DIP("pabs%s %s,%s\n", str, nameXMMReg(eregOfRexRM(pfx,modrm)),
16324 nameXMMReg(gregOfRexRM(pfx,modrm)));
16331 nameXMMReg(gregOfRexRM(pfx,modrm)));
16334 putXMMReg( gregOfRexRM(pfx,modrm),
16353 modrm = getUChar(delta);
16356 if (epartIsReg(modrm)) {
16357 assign( sV, getMMXReg(eregLO3ofRM(modrm)) );
16359 DIP("pabs%s %s,%s\n", str, nameMMXReg(eregLO3ofRM(modrm)),
16360 nameMMXReg(gregLO3ofRM(modrm)));
16366 nameMMXReg(gregLO3ofRM(modrm)));
16369 putMMXReg( gregLO3ofRM(modrm),
16404 UChar modrm = 0;
16422 modrm = getUChar(delta);
16423 assign( dV, getXMMReg(gregOfRexRM(pfx,modrm)) );
16425 if (epartIsReg(modrm)) {
16426 assign( sV, getXMMReg(eregOfRexRM(pfx,modrm)) );
16430 nameXMMReg(eregOfRexRM(pfx,modrm)),
16431 nameXMMReg(gregOfRexRM(pfx,modrm)));
16440 nameXMMReg(gregOfRexRM(pfx,modrm)));
16444 putXMMReg( gregOfRexRM(pfx,modrm), mkexpr(res) );
16453 modrm = getUChar(delta);
16455 assign( dV, getMMXReg(gregLO3ofRM(modrm)) );
16457 if (epartIsReg(modrm)) {
16458 assign( sV, getMMXReg(eregLO3ofRM(modrm)) );
16462 nameMMXReg(eregLO3ofRM(modrm)),
16463 nameMMXReg(gregLO3ofRM(modrm)));
16471 nameMMXReg(gregLO3ofRM(modrm)));
16496 putMMXReg( gregLO3ofRM(modrm), mkexpr(res) );
16531 UChar modrm = 0;
16550 modrm = getUChar(delta);
16551 if (epartIsReg(modrm)) {
16552 assign(src, getIRegE(sz, pfx, modrm));
16554 DIP("popcnt%c %s, %s\n", nameISize(sz), nameIRegE(sz, pfx, modrm),
16555 nameIRegG(sz, pfx, modrm));
16561 nameIRegG(sz, pfx, modrm));
16565 putIRegG(sz, pfx, modrm, mkexpr(result));
16595 modrm = getUChar(delta);
16596 if (epartIsReg(modrm)) {
16597 assign(src, getIRegE(sz, pfx, modrm));
16599 DIP("tzcnt%c %s, %s\n", nameISize(sz), nameIRegE(sz, pfx, modrm),
16600 nameIRegG(sz, pfx, modrm));
16606 nameIRegG(sz, pfx, modrm));
16610 putIRegG(sz, pfx, modrm, mkexpr(res));
16656 modrm = getUChar(delta);
16657 if (epartIsReg(modrm)) {
16658 assign(src, getIRegE(sz, pfx, modrm));
16660 DIP("lzcnt%c %s, %s\n", nameISize(sz), nameIRegE(sz, pfx, modrm),
16661 nameIRegG(sz, pfx, modrm));
16667 nameIRegG(sz, pfx, modrm));
16671 putIRegG(sz, pfx, modrm, mkexpr(res));
16785 UChar modrm = getUChar(delta);
16786 UInt rG = gregOfRexRM(pfx, modrm);
16792 if (epartIsReg(modrm)) {
16794 UInt rE = eregOfRexRM(pfx, modrm);
16824 UChar modrm = getUChar(delta);
16825 UInt rG = gregOfRexRM(pfx, modrm);
16831 if (epartIsReg(modrm)) {
16833 UInt rE = eregOfRexRM(pfx, modrm);
16963 UChar modrm = getUChar(delta);
16964 UInt rG = gregOfRexRM(pfx, modrm);
16968 if ( epartIsReg(modrm) ) {
16969 UInt rE = eregOfRexRM(pfx, modrm);
17016 UChar modrm = getUChar(delta);
17017 UInt rG = gregOfRexRM(pfx, modrm);
17021 if ( epartIsReg(modrm) ) {
17022 UInt rE = eregOfRexRM(pfx, modrm);
17075 UChar modrm = getUChar(delta);
17078 UInt rG = gregOfRexRM(pfx, modrm);
17079 if ( epartIsReg(modrm) ) {
17080 UInt rE = eregOfRexRM(pfx, modrm);
17118 UChar modrm = getUChar(delta);
17120 UInt rG = gregOfRexRM(pfx, modrm);
17121 if ( epartIsReg(modrm) ) {
17122 UInt rE = eregOfRexRM(pfx, modrm);
17158 UChar modrm = getUChar(delta);
17161 UInt rG = gregOfRexRM(pfx, modrm);
17163 if ( epartIsReg(modrm) ) {
17164 UInt rE = eregOfRexRM(pfx, modrm);
17184 ( gregOfRexRM(pfx, modrm), res );
17197 UChar modrm = getUChar(delta);
17199 UInt rG = gregOfRexRM(pfx, modrm);
17201 if ( epartIsReg(modrm) ) {
17202 UInt rE = eregOfRexRM(pfx, modrm);
17236 UChar modrm = getUChar(delta);
17238 UInt rG = gregOfRexRM(pfx, modrm);
17240 if ( epartIsReg( modrm ) ) {
17241 UInt rE = eregOfRexRM(pfx, modrm);
17268 UChar modrm = getUChar(delta);
17269 UInt rG = gregOfRexRM(pfx, modrm);
17273 if ( epartIsReg( modrm ) ) {
17274 UInt rE = eregOfRexRM(pfx, modrm);
17304 UChar modrm = getUChar(delta);
17306 UInt rG = gregOfRexRM(pfx, modrm);
17308 if ( epartIsReg( modrm ) ) {
17309 UInt rE = eregOfRexRM(pfx, modrm);
17340 UChar modrm = getUChar(delta);
17341 UInt rG = gregOfRexRM(pfx, modrm);
17343 if ( epartIsReg( modrm ) ) {
17344 UInt rE = eregOfRexRM(pfx, modrm);
17381 UChar modrm = getUChar(delta);
17384 UInt rG = gregOfRexRM(pfx, modrm);
17389 if ( epartIsReg(modrm) ) {
17390 UInt rE = eregOfRexRM(pfx, modrm);
17427 UChar modrm = getUChar(delta);
17429 UInt rG = gregOfRexRM(pfx, modrm);
17434 if ( epartIsReg(modrm) ) {
17435 UInt rE = eregOfRexRM(pfx, modrm);
17480 UChar modrm = getUChar(delta);
17483 UInt rG = gregOfRexRM(pfx, modrm);
17484 if ( epartIsReg(modrm) ) {
17485 UInt rE = eregOfRexRM(pfx, modrm);
17523 UChar modrm = getUChar(delta);
17525 UInt rG = gregOfRexRM(pfx, modrm);
17526 if ( epartIsReg(modrm) ) {
17527 UInt rE = eregOfRexRM(pfx, modrm);
17570 UChar modrm = getUChar(delta);
17572 UInt rG = gregOfRexRM(pfx, modrm);
17573 if ( epartIsReg(modrm) ) {
17574 UInt rE = eregOfRexRM(pfx, modrm);
17603 UChar modrm = getUChar(delta);
17604 UInt rG = gregOfRexRM(pfx, modrm);
17605 if ( epartIsReg(modrm) ) {
17606 UInt rE = eregOfRexRM(pfx, modrm);
17649 UChar modrm = getUChar(delta);
17651 UInt rG = gregOfRexRM(pfx, modrm);
17652 if ( epartIsReg(modrm) ) {
17653 UInt rE = eregOfRexRM(pfx, modrm);
17688 UChar modrm = getUChar(delta);
17689 UInt rG = gregOfRexRM(pfx, modrm);
17690 if ( epartIsReg(modrm) ) {
17691 UInt rE = eregOfRexRM(pfx, modrm);
17731 UChar modrm = getUChar(delta);
17737 UInt rG = gregOfRexRM(pfx,modrm);
17738 if (epartIsReg(modrm)) {
17739 UInt rE = eregOfRexRM(pfx,modrm);
17771 UChar modrm = getUChar(delta);
17772 UInt rG = gregOfRexRM(pfx, modrm);
17782 if (epartIsReg(modrm)) {
17783 regNoL = eregOfRexRM(pfx, modrm);
17863 UChar modrm = getUChar(delta);
17865 UInt regNoR = gregOfRexRM(pfx, modrm);
17869 modrm = getUChar(delta);
17870 if (epartIsReg(modrm)) {
17871 regNoL = eregOfRexRM(pfx, modrm);
17929 UChar modrm = 0;
17950 modrm = getUChar(delta);
17972 if ( epartIsReg(modrm) ) {
17973 assign(vecE, getXMMReg(eregOfRexRM(pfx, modrm)));
17976 nameXMMReg( eregOfRexRM(pfx, modrm) ),
17977 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
17984 dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
17987 assign(vecG, getXMMReg(gregOfRexRM(pfx, modrm)));
17991 putXMMReg(gregOfRexRM(pfx, modrm), mkexpr(res));
18074 modrm = getUChar(delta);
18075 UInt rG = gregOfRexRM(pfx,modrm);
18077 if (epartIsReg(modrm)) {
18078 UInt rE = eregOfRexRM(pfx,modrm);
18110 modrm = getUChar(delta);
18111 if (!epartIsReg(modrm)) {
18114 putXMMReg( gregOfRexRM(pfx,modrm),
18117 nameXMMReg(gregOfRexRM(pfx,modrm)));
18129 modrm = getUChar(delta);
18134 if ( epartIsReg(modrm) ) {
18135 assign( argL, getXMMReg( eregOfRexRM(pfx, modrm) ) );
18138 nameXMMReg( eregOfRexRM(pfx, modrm) ),
18139 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
18146 dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
18149 assign(argR, getXMMReg( gregOfRexRM(pfx, modrm) ));
18151 putXMMReg( gregOfRexRM(pfx, modrm),
18312 modrm = getUChar(delta);
18317 if ( epartIsReg(modrm) ) {
18318 assign( argL, getXMMReg( eregOfRexRM(pfx, modrm) ) );
18321 nameXMMReg( eregOfRexRM(pfx, modrm) ),
18322 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
18329 dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
18332 assign(argR, getXMMReg( gregOfRexRM(pfx, modrm) ));
18334 putXMMReg( gregOfRexRM(pfx, modrm),
18375 modrm = getUChar(delta);
18385 if (epartIsReg(modrm)) {
18386 assign(valE, getIRegE(sz, pfx, modrm));
18388 DIP("crc32b %s,%s\n", nameIRegE(sz, pfx, modrm),
18389 nameIRegG(1==getRexW(pfx) ? 8 : 4, pfx, modrm
18395 nameIRegG(1==getRexW(pfx) ? 8 : 4, pfx, modrm));
18403 assign(valG0, binop(Iop_And64, getIRegG(8, pfx, modrm),
18425 putIRegG(4, pfx, modrm, unop(Iop_64to32, mkexpr(valG1)));
18459 UChar modrm = getUChar(delta);
18462 UInt rG = gregOfRexRM(pfx,modrm);
18472 if ( epartIsReg( modrm ) ) {
18491 if ( epartIsReg( modrm ) ) {
18492 UInt rE = eregOfRexRM(pfx,modrm);
18514 UChar modrm = 0;
18524 modrm = getUChar(delta);
18525 assign( xmm_vec, getXMMReg( gregOfRexRM(pfx,modrm) ) );
18528 if ( epartIsReg( modrm ) ) {
18543 if ( epartIsReg( modrm ) ) {
18544 putIReg32( eregOfRexRM(pfx,modrm), mkexpr(src_dword) );
18547 nameXMMReg( gregOfRexRM(pfx, modrm) ),
18548 nameIReg32( eregOfRexRM(pfx, modrm) ) );
18553 imm8_10, nameXMMReg( gregOfRexRM(pfx, modrm) ), dis_buf );
18563 UChar modrm = 0;
18573 modrm = getUChar(delta);
18574 assign( xmm_vec, getXMMReg( gregOfRexRM(pfx,modrm) ) );
18576 if ( epartIsReg( modrm ) ) {
18591 if ( epartIsReg( modrm ) ) {
18592 putIReg64( eregOfRexRM(pfx,modrm), mkexpr(src_qword) );
18595 nameXMMReg( gregOfRexRM(pfx, modrm) ),
18596 nameIReg64( eregOfRexRM(pfx, modrm) ) );
18601 imm8_0, nameXMMReg( gregOfRexRM(pfx, modrm) ), dis_buf );
18612 static Long dis_PCMPISTRI_3A ( UChar modrm, UInt regNoL, UInt regNoR,
18758 UChar modrm = getUChar(delta);
18759 if (epartIsReg(modrm)) {
18760 regNoL = eregOfRexRM(pfx, modrm);
18761 regNoR = gregOfRexRM(pfx, modrm);
18766 regNoR = gregOfRexRM(pfx, modrm);
18789 return dis_PCMPISTRI_3A ( modrm, regNoL, regNoR, delta,
19002 UChar modrm = getUChar(delta);
19005 assign( xmm_vec, getXMMReg( gregOfRexRM(pfx,modrm) ) );
19009 if ( epartIsReg( modrm ) ) {
19025 if ( epartIsReg( modrm ) ) {
19026 putIReg64( eregOfRexRM(pfx,modrm),
19031 nameXMMReg( gregOfRexRM(pfx, modrm) ),
19032 nameIReg64( eregOfRexRM(pfx, modrm) ) );
19037 imm8, nameXMMReg( gregOfRexRM(pfx, modrm) ), dis_buf );
19174 UChar modrm = getUChar(delta);
19178 UInt rG = gregOfRexRM(pfx,modrm);
19185 if ( epartIsReg( modrm ) ) {
19200 if ( epartIsReg( modrm ) ) {
19201 UInt rE = eregOfRexRM(pfx,modrm);
19251 UChar modrm = 0;
19277 modrm = getUChar(delta);
19279 if (epartIsReg(modrm)) {
19281 getXMMRegLane32F( eregOfRexRM(pfx, modrm), 0 ) );
19283 getXMMRegLane32F( eregOfRexRM(pfx, modrm), 1 ) );
19285 getXMMRegLane32F( eregOfRexRM(pfx, modrm), 2 ) );
19287 getXMMRegLane32F( eregOfRexRM(pfx, modrm), 3 ) );
19292 imm, nameXMMReg( eregOfRexRM(pfx, modrm) ),
19293 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19309 imm, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19323 putXMMRegLane32F( gregOfRexRM(pfx, modrm), 0, mkexpr(res0) );
19324 putXMMRegLane32F( gregOfRexRM(pfx, modrm), 1, mkexpr(res1) );
19325 putXMMRegLane32F( gregOfRexRM(pfx, modrm), 2, mkexpr(res2) );
19326 putXMMRegLane32F( gregOfRexRM(pfx, modrm), 3, mkexpr(res3) );
19343 modrm = getUChar(delta);
19345 if (epartIsReg(modrm)) {
19347 getXMMRegLane64F( eregOfRexRM(pfx, modrm), 0 ) );
19349 getXMMRegLane64F( eregOfRexRM(pfx, modrm), 1 ) );
19354 imm, nameXMMReg( eregOfRexRM(pfx, modrm) ),
19355 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19367 imm, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19379 putXMMRegLane64F( gregOfRexRM(pfx, modrm), 0, mkexpr(res0) );
19380 putXMMRegLane64F( gregOfRexRM(pfx, modrm), 1, mkexpr(res1) );
19398 modrm = getUChar(delta);
19400 if (epartIsReg(modrm)) {
19402 isD ? getXMMRegLane64F( eregOfRexRM(pfx, modrm), 0 )
19403 : getXMMRegLane32F( eregOfRexRM(pfx, modrm), 0 ) );
19409 imm, nameXMMReg( eregOfRexRM(pfx, modrm) ),
19410 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19419 imm, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19432 putXMMRegLane64F( gregOfRexRM(pfx, modrm), 0, mkexpr(res) );
19434 putXMMRegLane32F( gregOfRexRM(pfx, modrm), 0, mkexpr(res) );
19449 modrm = getUChar(delta);
19451 assign( dst_vec, getXMMReg( gregOfRexRM(pfx, modrm) ) );
19453 if ( epartIsReg( modrm ) ) {
19455 assign( src_vec, getXMMReg( eregOfRexRM(pfx, modrm) ) );
19458 nameXMMReg( eregOfRexRM(pfx, modrm) ),
19459 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19468 imm8, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19471 putXMMReg( gregOfRexRM(pfx, modrm),
19486 modrm = getUChar(delta);
19487 assign( dst_vec, getXMMReg( gregOfRexRM(pfx, modrm) ) );
19489 if ( epartIsReg( modrm ) ) {
19491 assign( src_vec, getXMMReg( eregOfRexRM(pfx, modrm) ) );
19494 nameXMMReg( eregOfRexRM(pfx, modrm) ),
19495 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19504 imm8, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19507 putXMMReg( gregOfRexRM(pfx, modrm),
19522 modrm = getUChar(delta);
19524 assign( dst_vec, getXMMReg( gregOfRexRM(pfx, modrm) ) );
19526 if ( epartIsReg( modrm ) ) {
19528 assign( src_vec, getXMMReg( eregOfRexRM(pfx, modrm) ) );
19531 nameXMMReg( eregOfRexRM(pfx, modrm) ),
19532 nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19541 imm8, dis_buf, nameXMMReg( gregOfRexRM(pfx, modrm) ) );
19544 putXMMReg( gregOfRexRM(pfx, modrm),
19609 modrm = getUChar(delta);
19610 UInt rG = gregOfRexRM(pfx, modrm);
19611 if ( epartIsReg( modrm ) ) {
19612 UInt rE = eregOfRexRM(pfx,modrm);
19627 assign(src_vec, getXMMReg( gregOfRexRM(pfx, modrm) ));
19642 modrm = getUChar(delta);
19643 UInt rG = gregOfRexRM(pfx, modrm);
19645 if ( epartIsReg( modrm ) ) {
19646 UInt rE = eregOfRexRM(pfx, modrm);
19680 modrm = getUChar(delta);
19681 UInt rG = gregOfRexRM(pfx, modrm);
19683 if ( epartIsReg( modrm ) ) {
19684 UInt rE = eregOfRexRM(pfx,modrm);
19711 modrm = getUChar(delta);
19712 UInt rG = gregOfRexRM(pfx, modrm);
19714 if ( epartIsReg( modrm ) ) {
19715 UInt rE = eregOfRexRM(pfx,modrm);
19742 modrm = getUChar(delta);
19746 UInt rG = gregOfRexRM(pfx, modrm);
19748 if ( epartIsReg( modrm ) ) {
19749 UInt rE = eregOfRexRM(pfx, modrm);
19775 modrm = getUChar(delta);
19779 UInt rG = gregOfRexRM(pfx, modrm);
19781 if ( epartIsReg( modrm ) ) {
19782 UInt rE = eregOfRexRM(pfx, modrm);
19811 modrm = getUChar(delta);
19812 UInt rG = gregOfRexRM(pfx, modrm);
19816 if ( epartIsReg( modrm ) ) {
19817 UInt rE = eregOfRexRM(pfx, modrm);
19849 modrm = getUChar(delta);
19850 UInt rG = gregOfRexRM(pfx, modrm);
19854 if ( epartIsReg( modrm ) ) {
19855 UInt rE = eregOfRexRM(pfx, modrm);
19947 UChar modrm = 0;
19956 /* delta now points at the modrm byte. In most of the cases that
19960 prefix is also present. Do this check by looking at the modrm
20257 modrm = getUChar(delta);
20258 if (epartIsReg(modrm)) {
20260 putIRegG(8, pfx, modrm,
20262 getIRegE(4, pfx, modrm)));
20264 nameIRegE(4, pfx, modrm),
20265 nameIRegG(8, pfx, modrm));
20270 putIRegG(8, pfx, modrm,
20274 nameIRegG(8, pfx, modrm));
20395 modrm = getUChar(delta);
20400 if (epartIsReg(modrm) && haveF2orF3(pfx))
20402 if (!epartIsReg(modrm) && haveF2andF3(pfx))
20404 if (!epartIsReg(modrm) && haveF2orF3(pfx) && !haveLOCK(pfx))
20410 delta = dis_Grp1 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz, d64 );
20414 modrm = getUChar(delta);
20416 if (epartIsReg(modrm) && haveF2orF3(pfx))
20418 if (!epartIsReg(modrm) && haveF2andF3(pfx))
20420 if (!epartIsReg(modrm) && haveF2orF3(pfx) && !haveLOCK(pfx))
20425 delta = dis_Grp1 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz, d64 );
20430 modrm = getUChar(delta);
20434 delta = dis_Grp1 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz, d64 );
20456 modrm = getUChar(delta);
20462 if (epartIsReg(modrm)) {
20471 if (epartIsReg(modrm)) {
20472 assign(t1, getIRegE(sz, pfx, modrm));
20473 assign(t2, getIRegG(sz, pfx, modrm));
20474 putIRegG(sz, pfx, modrm, mkexpr(t1));
20475 putIRegE(sz, pfx, modrm, mkexpr(t2));
20478 nameISize(sz), nameIRegG(sz, pfx, modrm),
20479 nameIRegE(sz, pfx, modrm));
20484 assign( t2, getIRegG(sz, pfx, modrm) );
20487 putIRegG( sz, pfx, modrm, mkexpr(t1) );
20490 nameIRegG(sz, pfx, modrm), dis_buf);
20529 modrm = getUChar(delta);
20530 if (epartIsReg(modrm))
20540 putIRegG( sz, pfx, modrm,
20546 nameIRegG(sz,pfx,modrm));
20973 modrm = getUChar(delta);
20978 delta = dis_Grp2 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz,
20987 modrm = getUChar(delta);
20991 delta = dis_Grp2 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz,
21020 modrm = getUChar(delta);
21021 if (gregLO3ofRM(modrm) == 0) {
21022 if (epartIsReg(modrm)) {
21028 putIRegE(sz, pfx, modrm,
21032 nameIRegE(sz,pfx,modrm));
21048 if (opc == 0xC7 && modrm == 0xF8 && !have66orF2orF3(pfx) && sz == 4
21068 if (opc == 0xC6 && modrm == 0xF8 && !have66orF2orF3(pfx) && sz == 1
21149 modrm = getUChar(delta);
21154 delta = dis_Grp2 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz,
21163 modrm = getUChar(delta);
21167 delta = dis_Grp2 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz,
21176 modrm = getUChar(delta);
21180 delta = dis_Grp2 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz,
21189 modrm = getUChar(delta);
21192 delta = dis_Grp2 ( vbi, pfx, delta, modrm, am_sz, d_sz, sz,
21673 UChar modrm = 0;
21686 modrm = getUChar(delta);
21689 if (!epartIsReg(modrm)
21690 && (gregLO3ofRM(modrm) == 0 || gregLO3ofRM(modrm) == 1)) {
21697 switch (gregLO3ofRM(modrm)) {
21707 mkU64(gregLO3ofRM(modrm)) )
21717 if (modrm == 0xD0 && (archinfo->hwcaps & VEX_HWCAPS_AMD64_AVX)) {
21736 if (modrm == 0xD5 && (archinfo->hwcaps & VEX_HWCAPS_AMD64_AVX)) {
21748 if (modrm == 0xD6 && (archinfo->hwcaps & VEX_HWCAPS_AMD64_AVX)) {
21763 if (modrm == 0xF9 && (archinfo->hwcaps & VEX_HWCAPS_AMD64_RDTSCP)) {
21820 modrm = getUChar(delta);
21821 if (epartIsReg(modrm)) goto decode_failure;
21822 if (gregLO3ofRM(modrm) != 0 && gregLO3ofRM(modrm) != 1)
21826 switch (gregLO3ofRM(modrm)) {
21839 // and can use any ModRM, SIB and disp
21840 modrm = getUChar(delta);
21841 if (epartIsReg(modrm)) {
21987 modrm = getUChar(delta);
21988 if (epartIsReg(modrm)) {
21990 putIRegE(1, pfx, modrm, mkexpr(t1));
21992 nameIRegE(1,pfx,modrm));
22016 operand is either a ModRM:reg, ModRM:r/m or a SIB encoded
22020 modrm = getUChar(delta);
22021 int bnd = gregOfRexRM(pfx,modrm);
22023 if (epartIsReg(modrm)) {
22024 oper = nameIReg64 (eregOfRexRM(pfx,modrm));
22138 modrm = getUChar(delta);
22142 vbi, pfx, delta, modrm, sz,
22148 modrm = getUChar(delta);
22150 vbi, pfx, delta, modrm, sz,
22165 modrm = getUChar(delta);
22169 vbi, pfx, delta, modrm, sz,
22175 modrm = getUChar(delta);
22177 vbi, pfx, delta, modrm, sz,
22230 modrm = getUChar(delta);
22233 delta = dis_Grp8_Imm ( vbi, pfx, delta, modrm, am_sz, sz, d64,
22334 modrm = getUChar(delta);
22335 if (epartIsReg(modrm)) goto decode_failure;
22336 if (gregLO3ofRM(modrm) != 1) goto decode_failure;
22645 UChar modrm = 0;
22648 modrm = getUChar(delta);
22649 if (epartIsReg(modrm)) break;
22657 putIRegG(sz, pfx, modrm, mkexpr(dst));
22658 DIP("movbe %s,%s\n", dis_buf, nameIRegG(sz, pfx, modrm));
22660 assign(src, getIRegG(sz, pfx, modrm));
22663 DIP("movbe %s,%s\n", nameIRegG(sz, pfx, modrm), dis_buf);
22805 UChar modrm = getUChar(delta);
22806 UInt rD = gregOfRexRM(pfx, modrm);
22818 if (epartIsReg(modrm)) {
22819 UInt rSR = eregOfRexRM(pfx, modrm);
22900 UChar modrm = getUChar(delta);
22901 UInt rG = gregOfRexRM(pfx,modrm);
22907 if (epartIsReg(modrm)) {
22908 UInt rE = eregOfRexRM(pfx,modrm);
22974 UChar modrm = getUChar(delta);
22975 UInt rG = gregOfRexRM(pfx,modrm);
22981 if (epartIsReg(modrm)) {
22982 UInt rE = eregOfRexRM(pfx,modrm);
23049 UChar modrm = getUChar(delta);
23050 UInt rG = gregOfRexRM(pfx,modrm);
23055 if (epartIsReg(modrm)) {
23056 UInt rE = eregOfRexRM(pfx,modrm);
23724 UChar modrm = getUChar(delta);
23725 UInt rD = gregOfRexRM(pfx, modrm);
23737 if (epartIsReg(modrm)) {
23738 UInt rSR = eregOfRexRM(pfx, modrm);
23895 UChar modrm = getUChar(delta);
23897 UInt rG = gregOfRexRM(pfx,modrm);
23898 if (epartIsReg(modrm)) {
23899 UInt rE = eregOfRexRM(pfx,modrm);
23931 UChar modrm = getUChar(delta);
23932 UInt rG = gregOfRexRM(pfx,modrm);
23935 if (epartIsReg(modrm)) {
23936 UInt rE = eregOfRexRM(pfx,modrm);
24077 UChar modrm = getUChar(delta);
24079 UInt rG = gregOfRexRM(pfx,modrm);
24093 UChar modrm = getUChar(delta);
24094 UInt rG = gregOfRexRM(pfx, modrm);
24095 UInt rE = eregOfRexRM(pfx, modrm);
24112 UChar modrm = getUChar(delta);
24114 UInt rG = gregOfRexRM(pfx,modrm);
24128 UChar modrm = getUChar(delta);
24129 UInt rG = gregOfRexRM(pfx, modrm);
24130 UInt rE = eregOfRexRM(pfx, modrm);
24147 UChar modrm = getUChar(delta);
24148 UInt rG = gregOfRexRM(pfx, modrm);
24149 if (epartIsReg(modrm)) {
24150 UInt rE = eregOfRexRM(pfx,modrm);
24164 UChar modrm = getUChar(delta);
24165 UInt rG = gregOfRexRM(pfx, modrm);
24166 if (epartIsReg(modrm)) {
24167 UInt rE = eregOfRexRM(pfx,modrm);
24181 UChar modrm = getUChar(delta);
24182 UInt rG = gregOfRexRM(pfx, modrm);
24183 if (epartIsReg(modrm)) {
24184 UInt rE = eregOfRexRM(pfx,modrm);
24198 UChar modrm = getUChar(delta);
24199 UInt rG = gregOfRexRM(pfx, modrm);
24200 if (epartIsReg(modrm)) {
24201 UInt rE = eregOfRexRM(pfx,modrm);
24219 UChar modrm = getUChar(delta);
24221 UInt rG = gregOfRexRM(pfx,modrm);
24231 UChar modrm = getUChar(delta);
24232 UInt rG = gregOfRexRM(pfx, modrm);
24233 UInt rE = eregOfRexRM(pfx, modrm);
24249 UChar modrm = getUChar(delta);
24251 UInt rG = gregOfRexRM(pfx,modrm);
24261 UChar modrm = getUChar(delta);
24262 UInt rG = gregOfRexRM(pfx, modrm);
24263 UInt rE = eregOfRexRM(pfx, modrm);
24280 UChar modrm = getUChar(delta);
24281 UInt rG = gregOfRexRM(pfx,modrm);
24282 if (epartIsReg(modrm)) {
24283 UInt rE = eregOfRexRM(pfx,modrm);
24297 UChar modrm = getUChar(delta);
24298 UInt rG = gregOfRexRM(pfx,modrm);
24299 if (epartIsReg(modrm)) {
24300 UInt rE = eregOfRexRM(pfx,modrm);
24314 UChar modrm = getUChar(delta);
24315 UInt rG = gregOfRexRM(pfx,modrm);
24316 if (epartIsReg(modrm)) {
24317 UInt rE = eregOfRexRM(pfx,modrm);
24331 UChar modrm = getUChar(delta);
24332 UInt rG = gregOfRexRM(pfx,modrm);
24333 if (epartIsReg(modrm)) {
24334 UInt rE = eregOfRexRM(pfx,modrm);
24363 UChar modrm = getUChar(delta);
24364 UInt rG = gregOfRexRM(pfx, modrm);
24365 UInt rE = eregOfRexRM(pfx, modrm);
24384 UChar modrm = getUChar(delta);
24385 UInt rG = gregOfRexRM(pfx, modrm);
24419 UChar modrm = getUChar(delta);
24420 UInt rG = gregOfRexRM(pfx, modrm);
24435 UChar modrm = getUChar(delta);
24436 UInt rG = gregOfRexRM(pfx,modrm);
24441 if (epartIsReg(modrm)) {
24442 UInt rE = eregOfRexRM(pfx,modrm);
24463 UChar modrm = getUChar(delta);
24464 UInt rG = gregOfRexRM(pfx,modrm);
24469 if (epartIsReg(modrm)) {
24470 UInt rE = eregOfRexRM(pfx,modrm);
24491 UChar modrm = getUChar(delta);
24492 UInt rG = gregOfRexRM(pfx,modrm);
24497 if (epartIsReg(modrm)) {
24498 UInt rE = eregOfRexRM(pfx,modrm);
24519 UChar modrm = getUChar(delta);
24520 UInt rG = gregOfRexRM(pfx,modrm);
24525 if (epartIsReg(modrm)) {
24526 UInt rE = eregOfRexRM(pfx,modrm);
24550 UChar modrm = getUChar(delta);
24551 UInt rG = gregOfRexRM(pfx, modrm);
24552 UInt rE = eregOfRexRM(pfx, modrm);
24571 UChar modrm = getUChar(delta);
24572 UInt rG = gregOfRexRM(pfx, modrm);
24606 UChar modrm = getUChar(delta);
24607 UInt rG = gregOfRexRM(pfx, modrm);
24620 UChar modrm = getUChar(delta);
24621 UInt rG = gregOfRexRM(pfx, modrm);
24622 if (epartIsReg(modrm)) {
24623 UInt rE = eregOfRexRM(pfx,modrm);
24638 UChar modrm = getUChar(delta);
24639 UInt rG = gregOfRexRM(pfx, modrm);
24640 if (epartIsReg(modrm)) {
24641 UInt rE = eregOfRexRM(pfx,modrm);
24656 UChar modrm = getUChar(delta);
24657 UInt rG = gregOfRexRM(pfx, modrm);
24658 if (epartIsReg(modrm)) {
24659 UInt rE = eregOfRexRM(pfx,modrm);
24674 UChar modrm = getUChar(delta);
24675 UInt rG = gregOfRexRM(pfx, modrm);
24676 if (epartIsReg(modrm)) {
24677 UInt rE = eregOfRexRM(pfx,modrm);
24695 UChar modrm = getUChar(delta);
24696 UInt rG = gregOfRexRM(pfx,modrm);
24697 if (epartIsReg(modrm)) {
24698 UInt rE = eregOfRexRM(pfx,modrm);
24713 UChar modrm = getUChar(delta);
24714 UInt rG = gregOfRexRM(pfx,modrm);
24715 if (epartIsReg(modrm)) {
24716 UInt rE = eregOfRexRM(pfx,modrm);
24731 UChar modrm = getUChar(delta);
24732 UInt rG = gregOfRexRM(pfx,modrm);
24733 if (epartIsReg(modrm)) {
24734 UInt rE = eregOfRexRM(pfx,modrm);
24750 modrm = getUChar(delta);
24751 UInt rG = gregOfRexRM(pfx,modrm);
24752 if (epartIsReg(modrm)) {
24753 UInt rE = eregOfRexRM(pfx,modrm);
24774 UChar modrm = getUChar(delta);
24776 UInt rD = gregOfRexRM(pfx, modrm);
24778 if (epartIsReg(modrm)) {
24779 UInt rS = eregOfRexRM(pfx,modrm);
24800 UChar modrm = getUChar(delta);
24802 UInt rD = gregOfRexRM(pfx, modrm);
24804 if (epartIsReg(modrm)) {
24805 UInt rS = eregOfRexRM(pfx,modrm);
24828 UChar modrm = getUChar(delta);
24830 UInt rD = gregOfRexRM(pfx, modrm);
24832 if (epartIsReg(modrm)) {
24833 UInt rS = eregOfRexRM(pfx,modrm);
24858 UChar modrm = getUChar(delta);
24860 UInt rD = gregOfRexRM(pfx, modrm);
24862 if (epartIsReg(modrm)) {
24863 UInt rS = eregOfRexRM(pfx,modrm);
24893 UChar modrm = getUChar(delta);
24894 UInt rS = gregOfRexRM(pfx, modrm);
24909 UChar modrm = getUChar(delta);
24910 UInt rS = gregOfRexRM(pfx, modrm);
25314 UChar modrm = getUChar(delta);
25316 UInt rD = gregOfRexRM(pfx, modrm);
25320 if (epartIsReg(modrm)) {
25321 UInt rS = eregOfRexRM(pfx,modrm);
25344 UChar modrm = getUChar(delta);
25346 UInt rD = gregOfRexRM(pfx, modrm);
25348 if (epartIsReg(modrm)) {
25349 UInt rS = eregOfRexRM(pfx,modrm);
25839 UChar modrm = getUChar(delta);
25840 if (epartIsReg(modrm)) {
25843 gregOfRexRM(pfx,modrm),
25844 unop( Iop_32UtoV128, getIReg32(eregOfRexRM(pfx,modrm)) )
25846 DIP("vmovd %s, %s\n", nameIReg32(eregOfRexRM(pfx,modrm)),
25847 nameXMMReg(gregOfRexRM(pfx,modrm)));
25852 gregOfRexRM(pfx,modrm),
25856 nameXMMReg(gregOfRexRM(pfx,modrm)));
25864 UChar modrm = getUChar(delta);
25865 if (epartIsReg(modrm)) {
25868 gregOfRexRM(pfx,modrm),
25869 unop( Iop_64UtoV128, getIReg64(eregOfRexRM(pfx,modrm)) )
25871 DIP("vmovq %s, %s\n", nameIReg64(eregOfRexRM(pfx,modrm)),
25872 nameXMMReg(gregOfRexRM(pfx,modrm)));
25877 gregOfRexRM(pfx,modrm),
25881 nameXMMReg(gregOfRexRM(pfx,modrm)));
25892 UChar modrm = getUChar(delta);
25893 UInt rD = gregOfRexRM(pfx, modrm);
25897 if (epartIsReg(modrm)) {
25898 UInt rS = eregOfRexRM(pfx, modrm);
25917 UChar modrm = getUChar(delta);
25918 UInt rD = gregOfRexRM(pfx, modrm);
25922 if (epartIsReg(modrm)) {
25923 UInt rS = eregOfRexRM(pfx, modrm);
26262 UChar modrm = getUChar(delta);
26263 UInt rG = gregOfRexRM(pfx,modrm);
26265 if (epartIsReg(modrm)) {
26266 UInt rE = eregOfRexRM(pfx,modrm);
26291 UChar modrm = getUChar(delta);
26292 UInt rG = gregOfRexRM(pfx,modrm);
26295 if (epartIsReg(modrm)) {
26296 UInt rE = eregOfRexRM(pfx,modrm);
26324 UChar modrm = getUChar(delta);
26325 UInt rG = gregOfRexRM(pfx,modrm);
26327 if (epartIsReg(modrm)) {
26328 UInt rE = eregOfRexRM(pfx,modrm);
26353 UChar modrm = getUChar(delta);
26354 UInt rG = gregOfRexRM(pfx,modrm);
26357 if (epartIsReg(modrm)) {
26358 UInt rE = eregOfRexRM(pfx,modrm);
26390 UChar modrm = getUChar(delta);
26391 UInt rG = gregOfRexRM(pfx,modrm);
26392 if (epartIsReg(modrm)) {
26393 UInt rE = eregOfRexRM(pfx,modrm);
26413 UChar modrm = getUChar(delta);
26414 UInt rG = gregOfRexRM(pfx,modrm);
26415 if (epartIsReg(modrm)) {
26416 UInt rE = eregOfRexRM(pfx,modrm);
26432 UChar modrm = getUChar(delta);
26433 UInt rG = gregOfRexRM(pfx,modrm);
26434 if (epartIsReg(modrm)) {
26435 UInt rE = eregOfRexRM(pfx,modrm);
26454 UChar modrm = getUChar(delta);
26455 UInt rS = gregOfRexRM(pfx, modrm);
26460 if (epartIsReg(modrm)) {
26461 UInt rD = eregOfRexRM(pfx, modrm);
26479 UChar modrm = getUChar(delta);
26480 UInt rS = gregOfRexRM(pfx, modrm);
26485 if (epartIsReg(modrm)) {
26486 UInt rD = eregOfRexRM(pfx, modrm);
26587 UChar modrm = getUChar(delta);
26588 UInt rG = gregOfRexRM(pfx, modrm);
26593 if ( epartIsReg( modrm ) ) {
26596 getIReg32(eregOfRexRM(pfx,modrm))) );
26599 nameIReg32( eregOfRexRM(pfx, modrm) ), nameXMMReg(rG) );
26637 UInt modrm = getUChar(delta);
26638 UInt rG = gregOfRexRM(pfx,modrm);
26641 if (epartIsReg(modrm)) {
26642 UInt rE = eregOfRexRM(pfx,modrm);
26667 UInt modrm = getUChar(delta);
26668 UInt rG = gregOfRexRM(pfx,modrm);
26671 if (epartIsReg(modrm)) {
26672 UInt rE = eregOfRexRM(pfx,modrm);
26697 UInt modrm = getUChar(delta);
26698 UInt rG = gregOfRexRM(pfx,modrm);
26701 if (epartIsReg(modrm)) {
26702 UInt rE = eregOfRexRM(pfx,modrm);
26727 UInt modrm = getUChar(delta);
26728 UInt rG = gregOfRexRM(pfx,modrm);
26731 if (epartIsReg(modrm)) {
26732 UInt rE = eregOfRexRM(pfx,modrm);
26876 UChar modrm = getUChar(delta);
26877 UInt rG = gregOfRexRM(pfx,modrm);
26878 if (epartIsReg(modrm)) {
27162 UChar modrm = getUChar(delta);
27163 UInt rG = gregOfRexRM(pfx,modrm);
27164 if (!epartIsReg(modrm)) {
27176 UChar modrm = getUChar(delta);
27177 UInt rG = gregOfRexRM(pfx,modrm);
27178 if (!epartIsReg(modrm)) {
27321 UChar modrm = getUChar(delta);
27322 UInt rD = gregOfRexRM(pfx, modrm);
27324 if (epartIsReg(modrm)) break;
27334 UChar modrm = getUChar(delta);
27335 UInt rD = gregOfRexRM(pfx, modrm);
27337 if (epartIsReg(modrm)) break;
27710 UChar modrm = getUChar(delta);
27711 UInt rG = gregOfRexRM(pfx, modrm);
27773 if (epartIsReg(modrm)) {
27774 UInt rE = eregOfRexRM(pfx, modrm);
27864 UChar modrm = getUChar(delta);
27865 UInt rG = gregOfRexRM(pfx,modrm);
27934 UChar modrm = getUChar(delta);
27935 UInt rG = gregOfRexRM(pfx,modrm);
28132 UChar modrm = getUChar(delta);
28133 UInt rG = gregOfRexRM(pfx,modrm);
28145 if (epartIsReg(modrm)) {
28146 UInt rE = eregOfRexRM(pfx,modrm);
28183 UChar modrm = getUChar(delta);
28184 UInt rG = gregOfRexRM(pfx,modrm);
28196 if (epartIsReg(modrm)) {
28197 UInt rE = eregOfRexRM(pfx,modrm);
28238 UChar modrm = getUChar(delta);
28239 UInt rG = gregOfRexRM(pfx,modrm);
28244 if (epartIsReg(modrm)) {
28245 UInt rE = eregOfRexRM(pfx,modrm);
28277 UChar modrm = getUChar(delta);
28278 UInt rG = gregOfRexRM(pfx,modrm);
28283 if (epartIsReg(modrm)) {
28284 UInt rE = eregOfRexRM(pfx,modrm);
28321 UChar modrm = getUChar(delta);
28322 UInt rG = gregOfRexRM(pfx, modrm);
28325 if (epartIsReg(modrm)) {
28326 UInt rE = eregOfRexRM(pfx, modrm);
28348 UChar modrm = getUChar(delta);
28349 UInt rG = gregOfRexRM(pfx, modrm);
28352 if (epartIsReg(modrm)) {
28353 UInt rE = eregOfRexRM(pfx, modrm);
28378 UChar modrm = getUChar(delta);
28379 UInt rG = gregOfRexRM(pfx, modrm);
28382 if (epartIsReg(modrm)) {
28383 UInt rE = eregOfRexRM(pfx, modrm);
28405 UChar modrm = getUChar(delta);
28406 UInt rG = gregOfRexRM(pfx, modrm);
28409 if (epartIsReg(modrm)) {
28410 UInt rE = eregOfRexRM(pfx, modrm);
28485 UChar modrm = getUChar(delta);
28486 UInt rG = gregOfRexRM(pfx, modrm);
28502 UChar modrm = getUChar(delta);
28503 UInt rG = gregOfRexRM(pfx, modrm);
28520 UChar modrm = getUChar(delta);
28521 UInt rG = gregOfRexRM(pfx, modrm);
28522 UInt rE = eregOfRexRM(pfx, modrm);
28537 UChar modrm = getUChar(delta);
28538 UInt rG = gregOfRexRM(pfx, modrm);
28539 UInt rE = eregOfRexRM(pfx, modrm);
28558 UChar modrm = getUChar(delta);
28559 UInt rG = gregOfRexRM(pfx, modrm);
28574 UChar modrm = getUChar(delta);
28575 UInt rG = gregOfRexRM(pfx, modrm);
28576 UInt rE = eregOfRexRM(pfx, modrm);
28593 UChar modrm = getUChar(delta);
28594 UInt rG = gregOfRexRM(pfx, modrm);
28782 UChar modrm = getUChar(delta);
28783 UInt rD = gregOfRexRM(pfx, modrm);
28796 UChar modrm = getUChar(delta);
28797 UInt rD = gregOfRexRM(pfx, modrm);
29236 UChar modrm = getUChar(delta);
29237 UInt rG = gregOfRexRM(pfx, modrm);
29239 if (epartIsReg(modrm)) {
29240 UInt rE = eregOfRexRM(pfx, modrm);
29259 UChar modrm = getUChar(delta);
29260 UInt rG = gregOfRexRM(pfx, modrm);
29262 if (epartIsReg(modrm)) {
29263 UInt rE = eregOfRexRM(pfx, modrm);
29286 UChar modrm = getUChar(delta);
29287 UInt rG = gregOfRexRM(pfx, modrm);
29289 if (epartIsReg(modrm)) {
29290 UInt rE = eregOfRexRM(pfx, modrm);
29307 UChar modrm = getUChar(delta);
29308 UInt rG = gregOfRexRM(pfx, modrm);
29310 if (epartIsReg(modrm)) {
29311 UInt rE = eregOfRexRM(pfx, modrm);
29333 UChar modrm = getUChar(delta);
29334 UInt rG = gregOfRexRM(pfx, modrm);
29349 UChar modrm = getUChar(delta);
29350 UInt rG = gregOfRexRM(pfx, modrm);
29352 if (epartIsReg(modrm)) {
29353 UInt rE = eregOfRexRM(pfx, modrm);
29376 UChar modrm = getUChar(delta);
29377 UInt rG = gregOfRexRM(pfx, modrm);
29379 if (epartIsReg(modrm)) {
29380 UInt rE = eregOfRexRM(pfx, modrm);
29407 UChar modrm = getUChar(delta);
29408 UInt rG = gregOfRexRM(pfx, modrm);
29410 if (epartIsReg(modrm)) {
29411 UInt rE = eregOfRexRM(pfx, modrm);
29432 UChar modrm = getUChar(delta);
29433 UInt rG = gregOfRexRM(pfx, modrm);
29435 if (epartIsReg(modrm)) {
29436 UInt rE = eregOfRexRM(pfx, modrm);
30236 static Long decode_vregW(Int count, Long delta, UChar modrm, Prefix pfx,
30247 *dst = gregOfRexRM(pfx, modrm);
30250 if ( epartIsReg( modrm ) ) {
30251 UInt ereg = eregOfRexRM(pfx, modrm);
30289 UChar modrm = getUChar(delta);
30311 delta = decode_vregW(4, delta, modrm, pfx, vbi, operand, &dst, getRexW(pfx));
30415 UChar modrm = getUChar(delta);
30417 UInt rG = gregOfRexRM(pfx, modrm);
30420 if (epartIsReg(modrm)) {
30421 UInt rE = eregOfRexRM(pfx, modrm);
30454 UChar modrm = getUChar(delta);
30456 UInt rG = gregOfRexRM(pfx, modrm);
30463 if (epartIsReg(modrm)) {
30464 UInt rE = eregOfRexRM(pfx, modrm);
30494 UChar modrm = getUChar(delta);
30496 UInt rG = gregOfRexRM(pfx, modrm);
30503 if (epartIsReg(modrm)) {
30504 UInt rE = eregOfRexRM(pfx, modrm);
30537 UChar modrm = getUChar(delta);
30539 UInt rG = gregOfRexRM(pfx, modrm);
30541 if (epartIsReg(modrm)) {
30542 UInt rE = eregOfRexRM(pfx, modrm);
30567 UChar modrm = getUChar(delta);
30569 UInt rG = gregOfRexRM(pfx, modrm);
30571 if (epartIsReg(modrm)) {
30572 UInt rE = eregOfRexRM(pfx, modrm);
30595 UChar modrm = getUChar(delta);
30597 UInt rG = gregOfRexRM(pfx, modrm);
30599 if (epartIsReg(modrm)) {
30600 UInt rE = eregOfRexRM(pfx, modrm);
30628 UChar modrm = getUChar(delta);
30630 UInt rG = gregOfRexRM(pfx, modrm);
30632 if (epartIsReg(modrm)) {
30633 UInt rE = eregOfRexRM(pfx, modrm);
30666 UChar modrm = getUChar(delta);
30668 UInt rG = gregOfRexRM(pfx, modrm);
30676 if (epartIsReg(modrm)) {
30677 UInt rE = eregOfRexRM(pfx, modrm);
30712 UChar modrm = getUChar(delta);
30713 UInt rG = gregOfRexRM(pfx, modrm);
30722 modrm = getUChar(delta);
30724 if (epartIsReg(modrm)) {
30725 UInt rE = eregOfRexRM(pfx, modrm);
30760 UChar modrm = getUChar(delta);
30761 UInt rG = gregOfRexRM(pfx, modrm);
30774 modrm = getUChar(delta);
30776 if (epartIsReg(modrm)) {
30777 UInt rE = eregOfRexRM(pfx, modrm);
30817 UChar modrm = getUChar(delta);
30818 UInt rG = gregOfRexRM(pfx, modrm);
30825 modrm = getUChar(delta);
30827 if (epartIsReg(modrm)) {
30828 UInt rE = eregOfRexRM(pfx, modrm);
30861 UChar modrm = getUChar(delta);
30862 UInt rG = gregOfRexRM(pfx, modrm);
30871 modrm = getUChar(delta);
30873 if (epartIsReg(modrm)) {
30874 UInt rE = eregOfRexRM(pfx, modrm);
30913 UChar modrm = getUChar(delta);
30914 UInt rG = gregOfRexRM(pfx, modrm);
30921 if (epartIsReg(modrm)) {
30922 UInt rE = eregOfRexRM(pfx, modrm);
30968 UChar modrm = getUChar(delta);
30970 UInt rG = gregOfRexRM(pfx, modrm);
30975 if (epartIsReg(modrm)) {
30976 UInt rE = eregOfRexRM(pfx, modrm);
30999 UChar modrm = getUChar(delta);
31001 UInt rG = gregOfRexRM(pfx, modrm);
31006 if (epartIsReg(modrm)) {
31007 UInt rE = eregOfRexRM(pfx, modrm);
31033 UChar modrm = getUChar(delta);
31035 UInt rG = gregOfRexRM(pfx, modrm);
31040 if (epartIsReg(modrm)) {
31041 UInt rE = eregOfRexRM(pfx, modrm);
31064 UChar modrm = getUChar(delta);
31066 UInt rG = gregOfRexRM(pfx, modrm);
31071 if (epartIsReg(modrm)) {
31072 UInt rE = eregOfRexRM(pfx, modrm);
31098 UChar modrm = getUChar(delta);
31100 UInt rG = gregOfRexRM(pfx, modrm);
31105 if (epartIsReg(modrm)) {
31106 UInt rE = eregOfRexRM(pfx, modrm);
31129 UChar modrm = getUChar(delta);
31131 UInt rG = gregOfRexRM(pfx, modrm);
31138 if (epartIsReg(modrm)) {
31139 UInt rE = eregOfRexRM(pfx, modrm);
31168 UChar modrm = getUChar(delta);
31169 UInt rG = gregOfRexRM(pfx, modrm);
31177 if ( epartIsReg( modrm ) ) {
31178 UInt rE = eregOfRexRM(pfx, modrm);
31201 UChar modrm = getUChar(delta);
31202 UInt rG = gregOfRexRM(pfx, modrm);
31212 if ( epartIsReg( modrm ) ) {
31213 UInt rE = eregOfRexRM(pfx, modrm);
31288 UChar modrm = getUChar(delta);
31290 UInt rG = gregOfRexRM(pfx, modrm);
31293 if (epartIsReg(modrm)) {
31294 UInt rE = eregOfRexRM(pfx, modrm);
31323 UChar modrm = getUChar(delta);
31325 UInt rS = gregOfRexRM(pfx, modrm);
31327 if (epartIsReg(modrm)) {
31328 UInt rD = eregOfRexRM(pfx, modrm);
31354 UChar modrm = getUChar(delta);
31355 UInt rG = gregOfRexRM(pfx, modrm);
31360 if ( epartIsReg( modrm ) ) {
31361 UInt rE = eregOfRexRM(pfx,modrm);
31389 UChar modrm = getUChar(delta);
31390 UInt rG = gregOfRexRM(pfx, modrm);
31396 if ( epartIsReg( modrm ) ) {
31397 UInt rE = eregOfRexRM(pfx, modrm);
31429 UChar modrm = getUChar(delta);
31430 UInt rG = gregOfRexRM(pfx, modrm);
31435 if ( epartIsReg( modrm ) ) {
31436 UInt rE = eregOfRexRM(pfx,modrm);
31461 UChar modrm = getUChar(delta);
31462 UInt rG = gregOfRexRM(pfx, modrm);
31467 if ( epartIsReg( modrm ) ) {
31468 UInt rE = eregOfRexRM(pfx,modrm);
31498 UChar modrm = getUChar(delta);
31500 UInt rG = gregOfRexRM(pfx, modrm);
31503 if (epartIsReg(modrm)) {
31504 UInt rE = eregOfRexRM(pfx, modrm);
31533 UChar modrm = getUChar(delta);
31535 UInt rS = gregOfRexRM(pfx, modrm);
31537 if (epartIsReg(modrm)) {
31538 UInt rD = eregOfRexRM(pfx, modrm);
31563 UChar modrm = getUChar(delta);
31564 UInt rG = gregOfRexRM(pfx, modrm);
31568 if (epartIsReg( modrm )) {
31569 UInt rE = eregOfRexRM(pfx,modrm);
31593 UChar modrm = getUChar(delta);
31594 UInt rG = gregOfRexRM(pfx, modrm);
31598 if (epartIsReg( modrm )) {
31599 UInt rE = eregOfRexRM(pfx,modrm);
31631 UChar modrm = getUChar(delta);
31632 UInt rG = gregOfRexRM(pfx, modrm);
31636 if (epartIsReg( modrm )) {
31637 UInt rE = eregOfRexRM(pfx,modrm);
31665 UChar modrm = getUChar(delta);
31669 UInt rG = gregOfRexRM(pfx, modrm);
31674 if ( epartIsReg( modrm ) ) {
31675 UInt rE = eregOfRexRM(pfx, modrm);
31700 UChar modrm = getUChar(delta);
31704 UInt rG = gregOfRexRM(pfx, modrm);
31711 if ( epartIsReg( modrm ) ) {
31712 UInt rE = eregOfRexRM(pfx, modrm);
31747 UChar modrm = getUChar(delta);
31751 UInt rG = gregOfRexRM(pfx, modrm);
31756 if ( epartIsReg( modrm ) ) {
31757 UInt rE = eregOfRexRM(pfx, modrm);
31783 UChar modrm = getUChar(delta);
31785 UInt rG = gregOfRexRM(pfx, modrm);
31793 if (epartIsReg(modrm)) {
31794 UInt rE = eregOfRexRM(pfx, modrm);