Lines Matching refs:modrm
2283 Int delta, UChar modrm, in dis_Grp1() argument
2296 switch (gregOfRM(modrm)) { in dis_Grp1()
2306 if (epartIsReg(modrm)) { in dis_Grp1()
2309 assign(dst0, getIReg(sz,eregOfRM(modrm))); in dis_Grp1()
2312 if (gregOfRM(modrm) == 2 /* ADC */) { in dis_Grp1()
2316 if (gregOfRM(modrm) == 3 /* SBB */) { in dis_Grp1()
2327 if (gregOfRM(modrm) < 7) in dis_Grp1()
2328 putIReg(sz, eregOfRM(modrm), mkexpr(dst1)); in dis_Grp1()
2331 DIP("%s%c $0x%x, %s\n", nameGrp1(gregOfRM(modrm)), nameISize(sz), d32, in dis_Grp1()
2332 nameIReg(sz,eregOfRM(modrm))); in dis_Grp1()
2339 if (gregOfRM(modrm) == 2 /* ADC */) { in dis_Grp1()
2350 if (gregOfRM(modrm) == 3 /* SBB */) { in dis_Grp1()
2362 if (gregOfRM(modrm) < 7) { in dis_Grp1()
2378 DIP("%s%c $0x%x, %s\n", nameGrp1(gregOfRM(modrm)), nameISize(sz), in dis_Grp1()
2390 Int delta, UChar modrm, in dis_Grp2() argument
2408 if (epartIsReg(modrm)) { in dis_Grp2()
2409 assign(dst0, getIReg(sz, eregOfRM(modrm))); in dis_Grp2()
2418 switch (gregOfRM(modrm)) { case 4: case 5: case 6: case 7: isShift = True; } in dis_Grp2()
2421 switch (gregOfRM(modrm)) { case 0: case 1: isRotate = True; } in dis_Grp2()
2424 switch (gregOfRM(modrm)) { case 2: case 3: isRotateC = True; } in dis_Grp2()
2434 Bool left = toBool(gregOfRM(modrm) == 2); in dis_Grp2()
2467 switch (gregOfRM(modrm)) { in dis_Grp2()
2516 Bool left = toBool(gregOfRM(modrm) == 0); in dis_Grp2()
2598 if (epartIsReg(modrm)) { in dis_Grp2()
2599 putIReg(sz, eregOfRM(modrm), mkexpr(dst1)); in dis_Grp2()
2602 nameGrp2(gregOfRM(modrm)), nameISize(sz) ); in dis_Grp2()
2607 vex_printf(", %s\n", nameIReg(sz,eregOfRM(modrm))); in dis_Grp2()
2613 nameGrp2(gregOfRM(modrm)), nameISize(sz) ); in dis_Grp2()
2629 Int delta, UChar modrm, in dis_Grp8_Imm() argument
2656 switch (gregOfRM(modrm)) { in dis_Grp8_Imm()
2670 if (epartIsReg(modrm)) { in dis_Grp8_Imm()
2672 assign( t2, widenUto32(getIReg(sz, eregOfRM(modrm))) ); in dis_Grp8_Imm()
2674 DIP("%s%c $0x%x, %s\n", nameGrp8(gregOfRM(modrm)), nameISize(sz), in dis_Grp8_Imm()
2675 src_val, nameIReg(sz,eregOfRM(modrm))); in dis_Grp8_Imm()
2681 DIP("%s%c $0x%x, %s\n", nameGrp8(gregOfRM(modrm)), nameISize(sz), in dis_Grp8_Imm()
2686 switch (gregOfRM(modrm)) { in dis_Grp8_Imm()
2706 if (gregOfRM(modrm) != 4 /* BT */) { in dis_Grp8_Imm()
2707 if (epartIsReg(modrm)) { in dis_Grp8_Imm()
2708 putIReg(sz, eregOfRM(modrm), narrowTo(ty, mkexpr(t2m))); in dis_Grp8_Imm()
2805 UChar modrm; in dis_Grp3() local
2815 modrm = getIByte(delta); in dis_Grp3()
2817 if (locked && (gregOfRM(modrm) != 2 && gregOfRM(modrm) != 3)) { in dis_Grp3()
2823 if (epartIsReg(modrm)) { in dis_Grp3()
2824 switch (gregOfRM(modrm)) { in dis_Grp3()
2829 getIReg(sz,eregOfRM(modrm)), in dis_Grp3()
2833 nameIReg(sz, eregOfRM(modrm))); in dis_Grp3()
2845 putIReg(sz, eregOfRM(modrm), in dis_Grp3()
2847 getIReg(sz, eregOfRM(modrm)))); in dis_Grp3()
2848 DIP("not%c %s\n", nameISize(sz), nameIReg(sz, eregOfRM(modrm))); in dis_Grp3()
2856 assign(src, getIReg(sz,eregOfRM(modrm))); in dis_Grp3()
2859 putIReg(sz, eregOfRM(modrm), mkexpr(dst1)); in dis_Grp3()
2860 DIP("neg%c %s\n", nameISize(sz), nameIReg(sz, eregOfRM(modrm))); in dis_Grp3()
2865 assign(src, getIReg(sz,eregOfRM(modrm))); in dis_Grp3()
2866 codegen_mulL_A_D ( sz, False, src, nameIReg(sz,eregOfRM(modrm)) ); in dis_Grp3()
2871 assign(src, getIReg(sz,eregOfRM(modrm))); in dis_Grp3()
2872 codegen_mulL_A_D ( sz, True, src, nameIReg(sz,eregOfRM(modrm)) ); in dis_Grp3()
2876 assign( t1, getIReg(sz, eregOfRM(modrm)) ); in dis_Grp3()
2878 DIP("div%c %s\n", nameISize(sz), nameIReg(sz, eregOfRM(modrm))); in dis_Grp3()
2882 assign( t1, getIReg(sz, eregOfRM(modrm)) ); in dis_Grp3()
2884 DIP("idiv%c %s\n", nameISize(sz), nameIReg(sz, eregOfRM(modrm))); in dis_Grp3()
2895 switch (gregOfRM(modrm)) { in dis_Grp3()
2965 UChar modrm; in dis_Grp4() local
2973 modrm = getIByte(delta); in dis_Grp4()
2975 if (locked && (gregOfRM(modrm) != 0 && gregOfRM(modrm) != 1)) { in dis_Grp4()
2981 if (epartIsReg(modrm)) { in dis_Grp4()
2982 assign(t1, getIReg(1, eregOfRM(modrm))); in dis_Grp4()
2983 switch (gregOfRM(modrm)) { in dis_Grp4()
2986 putIReg(1, eregOfRM(modrm), mkexpr(t2)); in dis_Grp4()
2991 putIReg(1, eregOfRM(modrm), mkexpr(t2)); in dis_Grp4()
2999 DIP("%sb %s\n", nameGrp4(gregOfRM(modrm)), in dis_Grp4()
3000 nameIReg(1, eregOfRM(modrm))); in dis_Grp4()
3004 switch (gregOfRM(modrm)) { in dis_Grp4()
3030 DIP("%sb %s\n", nameGrp4(gregOfRM(modrm)), dis_buf); in dis_Grp4()
3042 UChar modrm; in dis_Grp5() local
3051 modrm = getIByte(delta); in dis_Grp5()
3053 if (locked && (gregOfRM(modrm) != 0 && gregOfRM(modrm) != 1)) { in dis_Grp5()
3059 if (epartIsReg(modrm)) { in dis_Grp5()
3060 assign(t1, getIReg(sz,eregOfRM(modrm))); in dis_Grp5()
3061 switch (gregOfRM(modrm)) { in dis_Grp5()
3068 putIReg(sz,eregOfRM(modrm),mkexpr(t2)); in dis_Grp5()
3076 putIReg(sz,eregOfRM(modrm),mkexpr(t2)); in dis_Grp5()
3104 DIP("%s%c %s\n", nameGrp5(gregOfRM(modrm)), in dis_Grp5()
3105 nameISize(sz), nameIReg(sz, eregOfRM(modrm))); in dis_Grp5()
3109 switch (gregOfRM(modrm)) { in dis_Grp5()
3160 DIP("%s%c %s\n", nameGrp5(gregOfRM(modrm)), in dis_Grp5()
3856 UChar modrm = getIByte(delta+0); in dis_FPU() local
3861 if (modrm < 0xC0) { in dis_FPU()
3868 switch (gregOfRM(modrm)) { in dis_FPU()
3926 vex_printf("unhandled opc_aux = 0x%2x\n", gregOfRM(modrm)); in dis_FPU()
3932 switch (modrm) { in dis_FPU()
3935 fp_do_op_ST_ST ( "add", Iop_AddF64, modrm - 0xC0, 0, False ); in dis_FPU()
3939 fp_do_op_ST_ST ( "mul", Iop_MulF64, modrm - 0xC8, 0, False ); in dis_FPU()
3944 r_dst = (UInt)modrm - 0xD0; in dis_FPU()
3958 r_dst = (UInt)modrm - 0xD8; in dis_FPU()
3972 fp_do_op_ST_ST ( "sub", Iop_SubF64, modrm - 0xE0, 0, False ); in dis_FPU()
3976 fp_do_oprev_ST_ST ( "subr", Iop_SubF64, modrm - 0xE8, 0, False ); in dis_FPU()
3980 fp_do_op_ST_ST ( "div", Iop_DivF64, modrm - 0xF0, 0, False ); in dis_FPU()
3984 fp_do_oprev_ST_ST ( "divr", Iop_DivF64, modrm - 0xF8, 0, False ); in dis_FPU()
3996 if (modrm < 0xC0) { in dis_FPU()
4003 switch (gregOfRM(modrm)) { in dis_FPU()
4181 vex_printf("unhandled opc_aux = 0x%2x\n", gregOfRM(modrm)); in dis_FPU()
4188 switch (modrm) { in dis_FPU()
4191 r_src = (UInt)modrm - 0xC0; in dis_FPU()
4200 r_src = (UInt)modrm - 0xC8; in dis_FPU()
4507 Bool isSIN = modrm == 0xFE; in dis_FPU()
4538 if (modrm < 0xC0) { in dis_FPU()
4545 switch (gregOfRM(modrm)) { in dis_FPU()
4627 vex_printf("unhandled opc_aux = 0x%2x\n", gregOfRM(modrm)); in dis_FPU()
4635 switch (modrm) { in dis_FPU()
4638 r_src = (UInt)modrm - 0xC0; in dis_FPU()
4647 r_src = (UInt)modrm - 0xC8; in dis_FPU()
4656 r_src = (UInt)modrm - 0xD0; in dis_FPU()
4665 r_src = (UInt)modrm - 0xD8; in dis_FPU()
4697 if (modrm < 0xC0) { in dis_FPU()
4704 switch (gregOfRM(modrm)) { in dis_FPU()
4788 vex_printf("unhandled opc_aux = 0x%2x\n", gregOfRM(modrm)); in dis_FPU()
4796 switch (modrm) { in dis_FPU()
4799 r_src = (UInt)modrm - 0xC0; in dis_FPU()
4808 r_src = (UInt)modrm - 0xC8; in dis_FPU()
4817 r_src = (UInt)modrm - 0xD0; in dis_FPU()
4826 r_src = (UInt)modrm - 0xD8; in dis_FPU()
4879 fp_do_ucomi_ST0_STi( (UInt)modrm - 0xE8, False ); in dis_FPU()
4883 fp_do_ucomi_ST0_STi( (UInt)modrm - 0xF0, False ); in dis_FPU()
4895 if (modrm < 0xC0) { in dis_FPU()
4902 switch (gregOfRM(modrm)) { in dis_FPU()
4958 vex_printf("unhandled opc_aux = 0x%2x\n", gregOfRM(modrm)); in dis_FPU()
4966 switch (modrm) { in dis_FPU()
4969 fp_do_op_ST_ST ( "add", Iop_AddF64, 0, modrm - 0xC0, False ); in dis_FPU()
4973 fp_do_op_ST_ST ( "mul", Iop_MulF64, 0, modrm - 0xC8, False ); in dis_FPU()
4977 fp_do_oprev_ST_ST ( "subr", Iop_SubF64, 0, modrm - 0xE0, False ); in dis_FPU()
4981 fp_do_op_ST_ST ( "sub", Iop_SubF64, 0, modrm - 0xE8, False ); in dis_FPU()
4985 fp_do_oprev_ST_ST ( "divr", Iop_DivF64, 0, modrm - 0xF0, False ); in dis_FPU()
4989 fp_do_op_ST_ST ( "div", Iop_DivF64, 0, modrm - 0xF8, False ); in dis_FPU()
5003 if (modrm < 0xC0) { in dis_FPU()
5010 switch (gregOfRM(modrm)) { in dis_FPU()
5149 vex_printf("unhandled opc_aux = 0x%2x\n", gregOfRM(modrm)); in dis_FPU()
5155 switch (modrm) { in dis_FPU()
5158 r_dst = (UInt)modrm - 0xC0; in dis_FPU()
5164 r_dst = (UInt)modrm - 0xD0; in dis_FPU()
5173 r_dst = (UInt)modrm - 0xD8; in dis_FPU()
5183 r_dst = (UInt)modrm - 0xE0; in dis_FPU()
5196 r_dst = (UInt)modrm - 0xE8; in dis_FPU()
5219 if (modrm < 0xC0) { in dis_FPU()
5227 switch (gregOfRM(modrm)) { in dis_FPU()
5313 vex_printf("unhandled opc_aux = 0x%2x\n", gregOfRM(modrm)); in dis_FPU()
5321 switch (modrm) { in dis_FPU()
5324 fp_do_op_ST_ST ( "add", Iop_AddF64, 0, modrm - 0xC0, True ); in dis_FPU()
5328 fp_do_op_ST_ST ( "mul", Iop_MulF64, 0, modrm - 0xC8, True ); in dis_FPU()
5346 fp_do_oprev_ST_ST ( "subr", Iop_SubF64, 0, modrm - 0xE0, True ); in dis_FPU()
5350 fp_do_op_ST_ST ( "sub", Iop_SubF64, 0, modrm - 0xE8, True ); in dis_FPU()
5354 fp_do_oprev_ST_ST ( "divr", Iop_DivF64, 0, modrm - 0xF0, True ); in dis_FPU()
5358 fp_do_op_ST_ST ( "div", Iop_DivF64, 0, modrm - 0xF8, True ); in dis_FPU()
5372 if (modrm < 0xC0) { in dis_FPU()
5379 switch (gregOfRM(modrm)) { in dis_FPU()
5425 vex_printf("unhandled opc_aux = 0x%2x\n", gregOfRM(modrm)); in dis_FPU()
5433 switch (modrm) { in dis_FPU()
5466 fp_do_ucomi_ST0_STi( (UInt)modrm - 0xE8, True ); in dis_FPU()
5471 fp_do_ucomi_ST0_STi( (UInt)modrm - 0xF0, True ); in dis_FPU()
5561 UChar modrm = getIByte(delta); in dis_MMXop_regmem_to_reg() local
5562 Bool isReg = epartIsReg(modrm); in dis_MMXop_regmem_to_reg()
5651 argG = getMMXReg(gregOfRM(modrm)); in dis_MMXop_regmem_to_reg()
5657 argE = getMMXReg(eregOfRM(modrm)); in dis_MMXop_regmem_to_reg()
5689 putMMXReg( gregOfRM(modrm), mkexpr(res) ); in dis_MMXop_regmem_to_reg()
5693 ( isReg ? nameMMXReg(eregOfRM(modrm)) : dis_buf ), in dis_MMXop_regmem_to_reg()
5694 nameMMXReg(gregOfRM(modrm)) ); in dis_MMXop_regmem_to_reg()
5839 UChar modrm; in dis_MMX() local
5853 modrm = getIByte(delta); in dis_MMX()
5854 if (epartIsReg(modrm)) { in dis_MMX()
5857 gregOfRM(modrm), in dis_MMX()
5860 getIReg(4, eregOfRM(modrm)) ) ); in dis_MMX()
5862 nameIReg(4,eregOfRM(modrm)), nameMMXReg(gregOfRM(modrm))); in dis_MMX()
5867 gregOfRM(modrm), in dis_MMX()
5871 DIP("movd %s, %s\n", dis_buf, nameMMXReg(gregOfRM(modrm))); in dis_MMX()
5878 modrm = getIByte(delta); in dis_MMX()
5879 if (epartIsReg(modrm)) { in dis_MMX()
5881 putIReg( 4, eregOfRM(modrm), in dis_MMX()
5882 unop(Iop_64to32, getMMXReg(gregOfRM(modrm)) ) ); in dis_MMX()
5884 nameMMXReg(gregOfRM(modrm)), nameIReg(4,eregOfRM(modrm))); in dis_MMX()
5889 unop(Iop_64to32, getMMXReg(gregOfRM(modrm)) ) ); in dis_MMX()
5890 DIP("movd %s, %s\n", nameMMXReg(gregOfRM(modrm)), dis_buf); in dis_MMX()
5898 modrm = getIByte(delta); in dis_MMX()
5899 if (epartIsReg(modrm)) { in dis_MMX()
5901 putMMXReg( gregOfRM(modrm), getMMXReg(eregOfRM(modrm)) ); in dis_MMX()
5903 nameMMXReg(eregOfRM(modrm)), nameMMXReg(gregOfRM(modrm))); in dis_MMX()
5907 putMMXReg( gregOfRM(modrm), loadLE(Ity_I64, mkexpr(addr)) ); in dis_MMX()
5909 dis_buf, nameMMXReg(gregOfRM(modrm))); in dis_MMX()
5917 modrm = getIByte(delta); in dis_MMX()
5918 if (epartIsReg(modrm)) { in dis_MMX()
5920 putMMXReg( eregOfRM(modrm), getMMXReg(gregOfRM(modrm)) ); in dis_MMX()
5922 nameMMXReg(gregOfRM(modrm)), nameMMXReg(eregOfRM(modrm))); in dis_MMX()
5926 storeLE( mkexpr(addr), getMMXReg(gregOfRM(modrm)) ); in dis_MMX()
5928 nameMMXReg(gregOfRM(modrm)), dis_buf); in dis_MMX()
6134 modrm = getIByte(delta); in dis_MMX()
6135 if (sz != 4 || (!epartIsReg(modrm))) in dis_MMX()
6140 assign( regM, getMMXReg( eregOfRM(modrm) )); in dis_MMX()
6141 assign( regD, getMMXReg( gregOfRM(modrm) )); in dis_MMX()
6153 DIP("maskmovq %s,%s\n", nameMMXReg( eregOfRM(modrm) ), in dis_MMX()
6154 nameMMXReg( gregOfRM(modrm) ) ); in dis_MMX()
6179 Int delta, UChar modrm, in dis_SHLRD_Gv_Ev() argument
6220 assign( gsrc, getIReg(sz, gregOfRM(modrm)) ); in dis_SHLRD_Gv_Ev()
6222 if (epartIsReg(modrm)) { in dis_SHLRD_Gv_Ev()
6224 assign( esrc, getIReg(sz, eregOfRM(modrm)) ); in dis_SHLRD_Gv_Ev()
6228 nameIReg(sz, gregOfRM(modrm)), nameIReg(sz, eregOfRM(modrm))); in dis_SHLRD_Gv_Ev()
6236 nameIReg(sz, gregOfRM(modrm)), dis_buf); in dis_SHLRD_Gv_Ev()
6284 if (epartIsReg(modrm)) { in dis_SHLRD_Gv_Ev()
6285 putIReg(sz, eregOfRM(modrm), mkexpr(tmpRes)); in dis_SHLRD_Gv_Ev()
6317 UChar modrm; in dis_bt_G_E() local
6334 modrm = getIByte(delta); in dis_bt_G_E()
6336 assign( t_bitno0, widenSto32(getIReg(sz, gregOfRM(modrm))) ); in dis_bt_G_E()
6338 if (epartIsReg(modrm)) { in dis_bt_G_E()
6352 storeLE( mkexpr(t_esp), getIReg(sz, eregOfRM(modrm)) ); in dis_bt_G_E()
6415 if (locked && !epartIsReg(modrm)) { in dis_bt_G_E()
6441 if (epartIsReg(modrm)) { in dis_bt_G_E()
6443 putIReg(sz, eregOfRM(modrm), loadLE(szToITy(sz), mkexpr(t_esp)) ); in dis_bt_G_E()
6448 nameBtOp(op), nameISize(sz), nameIReg(sz, gregOfRM(modrm)), in dis_bt_G_E()
6449 ( epartIsReg(modrm) ? nameIReg(sz, eregOfRM(modrm)) : dis_buf ) ); in dis_bt_G_E()
6461 UChar modrm; in dis_bs_E_G() local
6474 modrm = getIByte(delta); in dis_bs_E_G()
6476 isReg = epartIsReg(modrm); in dis_bs_E_G()
6479 assign( src, getIReg(sz, eregOfRM(modrm)) ); in dis_bs_E_G()
6489 ( isReg ? nameIReg(sz, eregOfRM(modrm)) : dis_buf ), in dis_bs_E_G()
6490 nameIReg(sz, gregOfRM(modrm))); in dis_bs_E_G()
6551 widenUto32( getIReg( sz, gregOfRM(modrm) ) ) in dis_bs_E_G()
6561 putIReg( sz, gregOfRM(modrm), mkexpr(dst) ); in dis_bs_E_G()
8085 UChar opc, modrm, abyte, pre; in disInstr_X86_WRK() local
8324 modrm = getIByte(delta+2); in disInstr_X86_WRK()
8326 vassert(!epartIsReg(modrm)); in disInstr_X86_WRK()
8395 modrm = getIByte(delta+2); in disInstr_X86_WRK()
8397 vassert(!epartIsReg(modrm)); in disInstr_X86_WRK()
8529 modrm = getIByte(delta+2); in disInstr_X86_WRK()
8530 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
8531 assign( argR, getXMMRegLane32F( eregOfRM(modrm), 0/*lowest lane*/ ) ); in disInstr_X86_WRK()
8533 DIP("[u]comiss %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
8534 nameXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
8540 nameXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
8542 assign( argL, getXMMRegLane32F( gregOfRM(modrm), 0/*lowest lane*/ ) ); in disInstr_X86_WRK()
8567 modrm = getIByte(delta+2); in disInstr_X86_WRK()
8569 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
8570 assign( arg64, getMMXReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
8572 DIP("cvtpi2ps %s,%s\n", nameMMXReg(eregOfRM(modrm)), in disInstr_X86_WRK()
8573 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
8579 nameXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
8585 gregOfRM(modrm), 0, in disInstr_X86_WRK()
8592 gregOfRM(modrm), 1, in disInstr_X86_WRK()
8608 modrm = getIByte(delta+3); in disInstr_X86_WRK()
8609 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
8610 assign( arg32, getIReg(4, eregOfRM(modrm)) ); in disInstr_X86_WRK()
8612 DIP("cvtsi2ss %s,%s\n", nameIReg(4, eregOfRM(modrm)), in disInstr_X86_WRK()
8613 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
8619 nameXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
8625 gregOfRM(modrm), 0, in disInstr_X86_WRK()
8645 modrm = getIByte(delta+2); in disInstr_X86_WRK()
8647 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
8649 assign(f32lo, getXMMRegLane32F(eregOfRM(modrm), 0)); in disInstr_X86_WRK()
8650 assign(f32hi, getXMMRegLane32F(eregOfRM(modrm), 1)); in disInstr_X86_WRK()
8652 nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
8653 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
8663 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
8684 putMMXReg(gregOfRM(modrm), mkexpr(dst64)); in disInstr_X86_WRK()
8699 modrm = getIByte(delta+3); in disInstr_X86_WRK()
8700 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
8702 assign(f32lo, getXMMRegLane32F(eregOfRM(modrm), 0)); in disInstr_X86_WRK()
8704 nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
8705 nameIReg(4, gregOfRM(modrm))); in disInstr_X86_WRK()
8712 nameIReg(4, gregOfRM(modrm))); in disInstr_X86_WRK()
8721 putIReg(4, gregOfRM(modrm), in disInstr_X86_WRK()
8750 modrm = getIByte(delta+2); in disInstr_X86_WRK()
8751 vassert(!epartIsReg(modrm)); in disInstr_X86_WRK()
8813 modrm = getIByte(delta+2); in disInstr_X86_WRK()
8814 if (sz == 4 && !epartIsReg(modrm)) { in disInstr_X86_WRK()
8817 storeLE( mkexpr(addr), getMMXReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
8819 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
8848 modrm = insn[2]; in disInstr_X86_WRK()
8849 if (sz == 4 && epartIsReg(modrm)) { in disInstr_X86_WRK()
8853 assign(sV, getMMXReg(eregOfRM(modrm))); in disInstr_X86_WRK()
8862 putIReg(4, gregOfRM(modrm), unop(Iop_16Uto32, mkexpr(t5))); in disInstr_X86_WRK()
8864 (Int)insn[3], nameMMXReg(eregOfRM(modrm)), in disInstr_X86_WRK()
8865 nameIReg(4,gregOfRM(modrm))); in disInstr_X86_WRK()
8883 modrm = insn[2]; in disInstr_X86_WRK()
8886 assign(t5, getMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
8889 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
8890 assign(t4, getIReg(2, eregOfRM(modrm))); in disInstr_X86_WRK()
8894 nameIReg(2,eregOfRM(modrm)), in disInstr_X86_WRK()
8895 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
8903 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
8913 putMMXReg(gregOfRM(modrm), mkexpr(t6)); in disInstr_X86_WRK()
8958 modrm = insn[2]; in disInstr_X86_WRK()
8959 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
8963 assign(t0, getMMXReg(eregOfRM(modrm))); in disInstr_X86_WRK()
8965 putIReg(4, gregOfRM(modrm), mkexpr(t1)); in disInstr_X86_WRK()
8966 DIP("pmovmskb %s,%s\n", nameMMXReg(eregOfRM(modrm)), in disInstr_X86_WRK()
8967 nameIReg(4,gregOfRM(modrm))); in disInstr_X86_WRK()
8992 modrm = getIByte(delta+2); in disInstr_X86_WRK()
8993 vassert(!epartIsReg(modrm)); in disInstr_X86_WRK()
8998 switch (gregOfRM(modrm)) { in disInstr_X86_WRK()
9017 modrm = getIByte(delta+2); in disInstr_X86_WRK()
9018 vassert(!epartIsReg(modrm)); in disInstr_X86_WRK()
9023 switch (gregOfRM(modrm)) { in disInstr_X86_WRK()
9051 modrm = insn[2]; in disInstr_X86_WRK()
9052 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
9053 assign( sV, getMMXReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
9057 nameMMXReg(eregOfRM(modrm)), in disInstr_X86_WRK()
9058 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9066 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9076 putMMXReg(gregOfRM(modrm), mkexpr(dV)); in disInstr_X86_WRK()
9127 modrm = getIByte(delta+2); in disInstr_X86_WRK()
9128 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
9129 putXMMReg( gregOfRM(modrm), in disInstr_X86_WRK()
9130 getXMMReg( eregOfRM(modrm) )); in disInstr_X86_WRK()
9131 DIP("mov[ua]ps %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
9132 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9138 putXMMReg( gregOfRM(modrm), in disInstr_X86_WRK()
9141 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9151 modrm = getIByte(delta+2); in disInstr_X86_WRK()
9152 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
9158 storeLE( mkexpr(addr), getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
9159 DIP("mov[ua]ps %s,%s\n", nameXMMReg(gregOfRM(modrm)), in disInstr_X86_WRK()
9169 modrm = getIByte(delta+2); in disInstr_X86_WRK()
9170 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
9172 putXMMRegLane64( gregOfRM(modrm), 1/*upper lane*/, in disInstr_X86_WRK()
9173 getXMMRegLane64( eregOfRM(modrm), 0 ) ); in disInstr_X86_WRK()
9174 DIP("movhps %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
9175 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9179 putXMMRegLane64( gregOfRM(modrm), 1/*upper lane*/, in disInstr_X86_WRK()
9182 nameXMMReg( gregOfRM(modrm) )); in disInstr_X86_WRK()
9206 modrm = getIByte(delta+2); in disInstr_X86_WRK()
9207 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
9209 putXMMRegLane64( gregOfRM(modrm), in disInstr_X86_WRK()
9211 getXMMRegLane64( eregOfRM(modrm), 1 )); in disInstr_X86_WRK()
9212 DIP("movhlps %s, %s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
9213 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9217 putXMMRegLane64( gregOfRM(modrm), 0/*lower lane*/, in disInstr_X86_WRK()
9220 dis_buf, nameXMMReg( gregOfRM(modrm) )); in disInstr_X86_WRK()
9244 modrm = getIByte(delta+2); in disInstr_X86_WRK()
9245 if (sz == 4 && epartIsReg(modrm)) { in disInstr_X86_WRK()
9252 src = eregOfRM(modrm); in disInstr_X86_WRK()
9265 putIReg(4, gregOfRM(modrm), in disInstr_X86_WRK()
9272 nameIReg(4, gregOfRM(modrm))); in disInstr_X86_WRK()
9281 modrm = getIByte(delta+2); in disInstr_X86_WRK()
9282 if (!epartIsReg(modrm)) { in disInstr_X86_WRK()
9285 storeLE( mkexpr(addr), getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
9288 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9299 modrm = getIByte(delta+3); in disInstr_X86_WRK()
9300 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
9301 putXMMRegLane32( gregOfRM(modrm), 0, in disInstr_X86_WRK()
9302 getXMMRegLane32( eregOfRM(modrm), 0 )); in disInstr_X86_WRK()
9303 DIP("movss %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
9304 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9309 putXMMRegLane64( gregOfRM(modrm), 1, mkU64(0) ); in disInstr_X86_WRK()
9311 putXMMRegLane32( gregOfRM(modrm), 1, mkU32(0) ); in disInstr_X86_WRK()
9313 putXMMRegLane32( gregOfRM(modrm), 0, in disInstr_X86_WRK()
9316 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9326 modrm = getIByte(delta+3); in disInstr_X86_WRK()
9327 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
9332 getXMMRegLane32(gregOfRM(modrm), 0) ); in disInstr_X86_WRK()
9333 DIP("movss %s,%s\n", nameXMMReg(gregOfRM(modrm)), in disInstr_X86_WRK()
9399 modrm = insn[2]; in disInstr_X86_WRK()
9400 assign( dV, getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
9402 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
9403 assign( sV, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
9407 nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
9408 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9416 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9426 gregOfRM(modrm), in disInstr_X86_WRK()
9455 modrm = getIByte(delta+2); in disInstr_X86_WRK()
9457 vassert(!epartIsReg(modrm)); in disInstr_X86_WRK()
9500 modrm = insn[2]; in disInstr_X86_WRK()
9501 assign( dV, getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
9503 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
9504 assign( sV, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
9507 nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
9508 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9515 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9522 putXMMReg( gregOfRM(modrm), mk128from32s( s3, d3, s2, d2 ) ); in disInstr_X86_WRK()
9524 putXMMReg( gregOfRM(modrm), mk128from32s( s1, d1, s0, d0 ) ); in disInstr_X86_WRK()
9594 modrm = getIByte(delta+2); in disInstr_X86_WRK()
9595 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
9596 assign( argR, getXMMRegLane64F( eregOfRM(modrm), 0/*lowest lane*/ ) ); in disInstr_X86_WRK()
9598 DIP("[u]comisd %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
9599 nameXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
9605 nameXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
9607 assign( argL, getXMMRegLane64F( gregOfRM(modrm), 0/*lowest lane*/ ) ); in disInstr_X86_WRK()
9629 modrm = getIByte(delta+3); in disInstr_X86_WRK()
9630 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
9631 assign( arg64, getXMMRegLane64(eregOfRM(modrm), 0) ); in disInstr_X86_WRK()
9633 DIP("cvtdq2pd %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
9634 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9640 nameXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
9644 gregOfRM(modrm), 0, in disInstr_X86_WRK()
9649 gregOfRM(modrm), 1, in disInstr_X86_WRK()
9662 modrm = getIByte(delta+2); in disInstr_X86_WRK()
9663 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
9664 assign( argV, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
9666 DIP("cvtdq2ps %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
9667 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9673 nameXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
9683 putXMMRegLane32F( gregOfRM(modrm), 3, CVT(t3) ); in disInstr_X86_WRK()
9684 putXMMRegLane32F( gregOfRM(modrm), 2, CVT(t2) ); in disInstr_X86_WRK()
9685 putXMMRegLane32F( gregOfRM(modrm), 1, CVT(t1) ); in disInstr_X86_WRK()
9686 putXMMRegLane32F( gregOfRM(modrm), 0, CVT(t0) ); in disInstr_X86_WRK()
9700 modrm = getIByte(delta+3); in disInstr_X86_WRK()
9701 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
9702 assign( argV, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
9704 DIP("cvtpd2dq %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
9705 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9711 nameXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
9726 putXMMRegLane32( gregOfRM(modrm), 3, mkU32(0) ); in disInstr_X86_WRK()
9727 putXMMRegLane32( gregOfRM(modrm), 2, mkU32(0) ); in disInstr_X86_WRK()
9728 putXMMRegLane32( gregOfRM(modrm), 1, CVT(t1) ); in disInstr_X86_WRK()
9729 putXMMRegLane32( gregOfRM(modrm), 0, CVT(t0) ); in disInstr_X86_WRK()
9748 modrm = getIByte(delta+2); in disInstr_X86_WRK()
9750 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
9752 assign(f64lo, getXMMRegLane64F(eregOfRM(modrm), 0)); in disInstr_X86_WRK()
9753 assign(f64hi, getXMMRegLane64F(eregOfRM(modrm), 1)); in disInstr_X86_WRK()
9755 nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
9756 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9766 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9783 putMMXReg(gregOfRM(modrm), mkexpr(dst64)); in disInstr_X86_WRK()
9796 modrm = getIByte(delta+2); in disInstr_X86_WRK()
9797 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
9798 assign( argV, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
9800 DIP("cvtpd2ps %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
9801 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9807 nameXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
9822 putXMMRegLane32( gregOfRM(modrm), 3, mkU32(0) ); in disInstr_X86_WRK()
9823 putXMMRegLane32( gregOfRM(modrm), 2, mkU32(0) ); in disInstr_X86_WRK()
9824 putXMMRegLane32F( gregOfRM(modrm), 1, CVT(t1) ); in disInstr_X86_WRK()
9825 putXMMRegLane32F( gregOfRM(modrm), 0, CVT(t0) ); in disInstr_X86_WRK()
9837 modrm = getIByte(delta+2); in disInstr_X86_WRK()
9838 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
9846 assign( arg64, getMMXReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
9848 DIP("cvtpi2pd %s,%s\n", nameMMXReg(eregOfRM(modrm)), in disInstr_X86_WRK()
9849 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9855 nameXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
9859 gregOfRM(modrm), 0, in disInstr_X86_WRK()
9864 gregOfRM(modrm), 1, in disInstr_X86_WRK()
9877 modrm = getIByte(delta+2); in disInstr_X86_WRK()
9878 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
9879 assign( argV, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
9881 DIP("cvtps2dq %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
9882 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9888 nameXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
9902 putXMMRegLane32( gregOfRM(modrm), 3, CVT(t3) ); in disInstr_X86_WRK()
9903 putXMMRegLane32( gregOfRM(modrm), 2, CVT(t2) ); in disInstr_X86_WRK()
9904 putXMMRegLane32( gregOfRM(modrm), 1, CVT(t1) ); in disInstr_X86_WRK()
9905 putXMMRegLane32( gregOfRM(modrm), 0, CVT(t0) ); in disInstr_X86_WRK()
9918 modrm = getIByte(delta+2); in disInstr_X86_WRK()
9919 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
9920 assign( f32lo, getXMMRegLane32F(eregOfRM(modrm), 0) ); in disInstr_X86_WRK()
9921 assign( f32hi, getXMMRegLane32F(eregOfRM(modrm), 1) ); in disInstr_X86_WRK()
9923 DIP("cvtps2pd %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
9924 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
9932 nameXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
9935 putXMMRegLane64F( gregOfRM(modrm), 1, in disInstr_X86_WRK()
9937 putXMMRegLane64F( gregOfRM(modrm), 0, in disInstr_X86_WRK()
9954 modrm = getIByte(delta+3); in disInstr_X86_WRK()
9955 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
9957 assign(f64lo, getXMMRegLane64F(eregOfRM(modrm), 0)); in disInstr_X86_WRK()
9959 nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
9960 nameIReg(4, gregOfRM(modrm))); in disInstr_X86_WRK()
9967 nameIReg(4, gregOfRM(modrm))); in disInstr_X86_WRK()
9976 putIReg(4, gregOfRM(modrm), in disInstr_X86_WRK()
9989 modrm = getIByte(delta+3); in disInstr_X86_WRK()
9990 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
9992 assign(f64lo, getXMMRegLane64F(eregOfRM(modrm), 0)); in disInstr_X86_WRK()
9993 DIP("cvtsd2ss %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
9994 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10000 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10005 gregOfRM(modrm), 0, in disInstr_X86_WRK()
10018 modrm = getIByte(delta+3); in disInstr_X86_WRK()
10019 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
10020 assign( arg32, getIReg(4, eregOfRM(modrm)) ); in disInstr_X86_WRK()
10022 DIP("cvtsi2sd %s,%s\n", nameIReg(4, eregOfRM(modrm)), in disInstr_X86_WRK()
10023 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10029 nameXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
10033 gregOfRM(modrm), 0, in disInstr_X86_WRK()
10045 modrm = getIByte(delta+3); in disInstr_X86_WRK()
10046 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
10048 assign(f32lo, getXMMRegLane32F(eregOfRM(modrm), 0)); in disInstr_X86_WRK()
10049 DIP("cvtss2sd %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
10050 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10056 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10059 putXMMRegLane64F( gregOfRM(modrm), 0, in disInstr_X86_WRK()
10071 modrm = getIByte(delta+2); in disInstr_X86_WRK()
10072 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
10073 assign( argV, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
10075 DIP("cvttpd2dq %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
10076 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10082 nameXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
10098 putXMMRegLane32( gregOfRM(modrm), 3, mkU32(0) ); in disInstr_X86_WRK()
10099 putXMMRegLane32( gregOfRM(modrm), 2, mkU32(0) ); in disInstr_X86_WRK()
10100 putXMMRegLane32( gregOfRM(modrm), 1, CVT(t1) ); in disInstr_X86_WRK()
10101 putXMMRegLane32( gregOfRM(modrm), 0, CVT(t0) ); in disInstr_X86_WRK()
10115 modrm = getIByte(delta+3); in disInstr_X86_WRK()
10116 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
10117 assign( argV, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
10119 DIP("cvttps2dq %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
10120 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10126 nameXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
10140 putXMMRegLane32( gregOfRM(modrm), 3, CVT(t3) ); in disInstr_X86_WRK()
10141 putXMMRegLane32( gregOfRM(modrm), 2, CVT(t2) ); in disInstr_X86_WRK()
10142 putXMMRegLane32( gregOfRM(modrm), 1, CVT(t1) ); in disInstr_X86_WRK()
10143 putXMMRegLane32( gregOfRM(modrm), 0, CVT(t0) ); in disInstr_X86_WRK()
10210 modrm = getIByte(delta+2); in disInstr_X86_WRK()
10211 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
10212 putXMMReg( gregOfRM(modrm), in disInstr_X86_WRK()
10213 getXMMReg( eregOfRM(modrm) )); in disInstr_X86_WRK()
10214 DIP("mov%s %s,%s\n", wot, nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
10215 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10221 putXMMReg( gregOfRM(modrm), in disInstr_X86_WRK()
10224 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10235 modrm = getIByte(delta+2); in disInstr_X86_WRK()
10236 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
10242 storeLE( mkexpr(addr), getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
10243 DIP("mov%s %s,%s\n", wot, nameXMMReg(gregOfRM(modrm)), in disInstr_X86_WRK()
10252 modrm = getIByte(delta+2); in disInstr_X86_WRK()
10253 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
10256 gregOfRM(modrm), in disInstr_X86_WRK()
10257 unop( Iop_32UtoV128, getIReg(4, eregOfRM(modrm)) ) in disInstr_X86_WRK()
10260 nameIReg(4,eregOfRM(modrm)), nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10265 gregOfRM(modrm), in disInstr_X86_WRK()
10268 DIP("movd %s, %s\n", dis_buf, nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10275 modrm = getIByte(delta+2); in disInstr_X86_WRK()
10276 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
10278 putIReg( 4, eregOfRM(modrm), in disInstr_X86_WRK()
10279 getXMMRegLane32(gregOfRM(modrm), 0) ); in disInstr_X86_WRK()
10281 nameXMMReg(gregOfRM(modrm)), nameIReg(4,eregOfRM(modrm))); in disInstr_X86_WRK()
10286 getXMMRegLane32(gregOfRM(modrm), 0) ); in disInstr_X86_WRK()
10287 DIP("movd %s, %s\n", nameXMMReg(gregOfRM(modrm)), dis_buf); in disInstr_X86_WRK()
10294 modrm = getIByte(delta+2); in disInstr_X86_WRK()
10295 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
10297 putXMMReg( eregOfRM(modrm), in disInstr_X86_WRK()
10298 getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
10299 DIP("movdqa %s, %s\n", nameXMMReg(gregOfRM(modrm)), in disInstr_X86_WRK()
10300 nameXMMReg(eregOfRM(modrm))); in disInstr_X86_WRK()
10305 storeLE( mkexpr(addr), getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
10306 DIP("movdqa %s, %s\n", nameXMMReg(gregOfRM(modrm)), dis_buf); in disInstr_X86_WRK()
10316 modrm = getIByte(delta+3); in disInstr_X86_WRK()
10317 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
10318 putXMMReg( gregOfRM(modrm), in disInstr_X86_WRK()
10319 getXMMReg( eregOfRM(modrm) )); in disInstr_X86_WRK()
10320 DIP("movdqu %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
10321 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10325 putXMMReg( gregOfRM(modrm), in disInstr_X86_WRK()
10328 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10339 modrm = getIByte(delta+3); in disInstr_X86_WRK()
10340 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
10342 putXMMReg( eregOfRM(modrm), in disInstr_X86_WRK()
10343 getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
10344 DIP("movdqu %s, %s\n", nameXMMReg(gregOfRM(modrm)), in disInstr_X86_WRK()
10345 nameXMMReg(eregOfRM(modrm))); in disInstr_X86_WRK()
10349 storeLE( mkexpr(addr), getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
10350 DIP("movdqu %s, %s\n", nameXMMReg(gregOfRM(modrm)), dis_buf); in disInstr_X86_WRK()
10358 modrm = getIByte(delta+3); in disInstr_X86_WRK()
10359 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
10361 putMMXReg( gregOfRM(modrm), in disInstr_X86_WRK()
10362 getXMMRegLane64( eregOfRM(modrm), 0 )); in disInstr_X86_WRK()
10363 DIP("movdq2q %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
10364 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10376 modrm = getIByte(delta+2); in disInstr_X86_WRK()
10377 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
10382 putXMMRegLane64( gregOfRM(modrm), 1/*upper lane*/, in disInstr_X86_WRK()
10385 nameXMMReg( gregOfRM(modrm) )); in disInstr_X86_WRK()
10410 modrm = getIByte(delta+2); in disInstr_X86_WRK()
10411 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
10416 putXMMRegLane64( gregOfRM(modrm), 0/*lower lane*/, in disInstr_X86_WRK()
10419 dis_buf, nameXMMReg( gregOfRM(modrm) )); in disInstr_X86_WRK()
10444 modrm = getIByte(delta+2); in disInstr_X86_WRK()
10445 if (sz == 2 && epartIsReg(modrm)) { in disInstr_X86_WRK()
10450 src = eregOfRM(modrm); in disInstr_X86_WRK()
10457 putIReg(4, gregOfRM(modrm), in disInstr_X86_WRK()
10461 nameIReg(4, gregOfRM(modrm))); in disInstr_X86_WRK()
10469 modrm = getIByte(delta+2); in disInstr_X86_WRK()
10470 if (sz == 2 && epartIsReg(modrm)) { in disInstr_X86_WRK()
10478 assign( regD, getXMMReg( gregOfRM(modrm) )); in disInstr_X86_WRK()
10487 getXMMRegLane64( eregOfRM(modrm), 1 ), in disInstr_X86_WRK()
10490 getXMMRegLane64( eregOfRM(modrm), 0 ), in disInstr_X86_WRK()
10504 DIP("maskmovdqu %s,%s\n", nameXMMReg( eregOfRM(modrm) ), in disInstr_X86_WRK()
10505 nameXMMReg( gregOfRM(modrm) ) ); in disInstr_X86_WRK()
10513 modrm = getIByte(delta+2); in disInstr_X86_WRK()
10514 if (sz == 2 && !epartIsReg(modrm)) { in disInstr_X86_WRK()
10517 storeLE( mkexpr(addr), getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
10519 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10529 modrm = getIByte(delta+2); in disInstr_X86_WRK()
10530 if (!epartIsReg(modrm)) { in disInstr_X86_WRK()
10532 storeLE( mkexpr(addr), getIReg(4, gregOfRM(modrm)) ); in disInstr_X86_WRK()
10534 nameIReg(4, gregOfRM(modrm))); in disInstr_X86_WRK()
10544 modrm = getIByte(delta+2); in disInstr_X86_WRK()
10545 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
10551 getXMMRegLane64( gregOfRM(modrm), 0 )); in disInstr_X86_WRK()
10552 DIP("movq %s,%s\n", nameXMMReg(gregOfRM(modrm)), dis_buf ); in disInstr_X86_WRK()
10562 modrm = getIByte(delta+3); in disInstr_X86_WRK()
10563 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
10565 putXMMReg( gregOfRM(modrm), in disInstr_X86_WRK()
10566 unop(Iop_64UtoV128, getMMXReg( eregOfRM(modrm) )) ); in disInstr_X86_WRK()
10567 DIP("movq2dq %s,%s\n", nameMMXReg(eregOfRM(modrm)), in disInstr_X86_WRK()
10568 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10584 modrm = getIByte(delta+3); in disInstr_X86_WRK()
10585 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
10586 putXMMRegLane64( gregOfRM(modrm), 0, in disInstr_X86_WRK()
10587 getXMMRegLane64( eregOfRM(modrm), 0 )); in disInstr_X86_WRK()
10590 putXMMRegLane64( gregOfRM(modrm), 1, mkU64(0) ); in disInstr_X86_WRK()
10592 DIP("movsd %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
10593 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10598 putXMMRegLane64( gregOfRM(modrm), 1, mkU64(0) ); in disInstr_X86_WRK()
10600 putXMMRegLane64( gregOfRM(modrm), 0, in disInstr_X86_WRK()
10603 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10613 modrm = getIByte(delta+3); in disInstr_X86_WRK()
10614 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
10615 putXMMRegLane64( eregOfRM(modrm), 0, in disInstr_X86_WRK()
10616 getXMMRegLane64( gregOfRM(modrm), 0 )); in disInstr_X86_WRK()
10617 DIP("movsd %s,%s\n", nameXMMReg(gregOfRM(modrm)), in disInstr_X86_WRK()
10618 nameXMMReg(eregOfRM(modrm))); in disInstr_X86_WRK()
10623 getXMMRegLane64(gregOfRM(modrm), 0) ); in disInstr_X86_WRK()
10624 DIP("movsd %s,%s\n", nameXMMReg(gregOfRM(modrm)), in disInstr_X86_WRK()
10660 modrm = insn[2]; in disInstr_X86_WRK()
10661 assign( dV, getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
10663 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
10664 assign( sV, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
10668 nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
10669 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10677 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10689 gregOfRM(modrm), in disInstr_X86_WRK()
10739 modrm = insn[2]; in disInstr_X86_WRK()
10740 assign( dV, getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
10742 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
10743 assign( sV, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
10746 nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
10747 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10754 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10763 putXMMReg( gregOfRM(modrm), in disInstr_X86_WRK()
10766 putXMMReg( gregOfRM(modrm), in disInstr_X86_WRK()
10939 modrm = insn[2]; in disInstr_X86_WRK()
10940 if (sz == 2 && epartIsReg(modrm)) { in disInstr_X86_WRK()
10943 assign(t5, getXMMReg(eregOfRM(modrm))); in disInstr_X86_WRK()
10956 putIReg(4, gregOfRM(modrm), unop(Iop_16Uto32, mkexpr(t4))); in disInstr_X86_WRK()
10958 (Int)insn[3], nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
10959 nameIReg(4,gregOfRM(modrm))); in disInstr_X86_WRK()
10971 modrm = insn[2]; in disInstr_X86_WRK()
10973 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
10974 assign(t4, getIReg(2, eregOfRM(modrm))); in disInstr_X86_WRK()
10978 nameIReg(2,eregOfRM(modrm)), in disInstr_X86_WRK()
10979 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10987 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
10990 putXMMRegLane16( gregOfRM(modrm), lane & 7, mkexpr(t4) ); in disInstr_X86_WRK()
11006 modrm = insn[2]; in disInstr_X86_WRK()
11007 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
11008 assign( s1V, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
11010 DIP("pmaddwd %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
11011 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11017 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11019 assign( s2V, getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
11037 putXMMReg(gregOfRM(modrm), mkexpr(dV)); in disInstr_X86_WRK()
11073 modrm = insn[2]; in disInstr_X86_WRK()
11074 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
11077 assign(t0, getXMMRegLane64(eregOfRM(modrm), 0)); in disInstr_X86_WRK()
11078 assign(t1, getXMMRegLane64(eregOfRM(modrm), 1)); in disInstr_X86_WRK()
11085 putIReg(4, gregOfRM(modrm), mkexpr(t5)); in disInstr_X86_WRK()
11086 DIP("pmovmskb %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
11087 nameIReg(4,gregOfRM(modrm))); in disInstr_X86_WRK()
11123 modrm = insn[2]; in disInstr_X86_WRK()
11126 assign( dV, getMMXReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
11128 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
11129 assign( sV, getMMXReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
11131 DIP("pmuludq %s,%s\n", nameMMXReg(eregOfRM(modrm)), in disInstr_X86_WRK()
11132 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11138 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11143 putMMXReg( gregOfRM(modrm), in disInstr_X86_WRK()
11161 modrm = insn[2]; in disInstr_X86_WRK()
11162 assign( dV, getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
11164 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
11165 assign( sV, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
11167 DIP("pmuludq %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
11168 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11174 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11181 putXMMRegLane64( gregOfRM(modrm), 0, mkexpr(t0) ); in disInstr_X86_WRK()
11183 putXMMRegLane64( gregOfRM(modrm), 1, mkexpr(t1) ); in disInstr_X86_WRK()
11205 modrm = insn[2]; in disInstr_X86_WRK()
11206 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
11207 assign( s1V, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
11209 DIP("psadbw %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
11210 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11216 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11218 assign( s2V, getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
11236 putXMMReg(gregOfRM(modrm), mkexpr(dV)); in disInstr_X86_WRK()
11247 modrm = insn[2]; in disInstr_X86_WRK()
11248 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
11249 assign( sV, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
11253 nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
11254 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11262 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11272 putXMMReg(gregOfRM(modrm), mkexpr(dV)); in disInstr_X86_WRK()
11287 modrm = insn[3]; in disInstr_X86_WRK()
11288 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
11289 assign( sV, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
11293 nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
11294 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11302 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11316 putXMMReg(gregOfRM(modrm), mkexpr(dV)); in disInstr_X86_WRK()
11331 modrm = insn[3]; in disInstr_X86_WRK()
11332 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
11333 assign( sV, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
11337 nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
11338 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11346 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11360 putXMMReg(gregOfRM(modrm), mkexpr(dV)); in disInstr_X86_WRK()
11805 modrm = insn[3]; in disInstr_X86_WRK()
11806 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
11807 assign( sV, getXMMReg( eregOfRM(modrm)) ); in disInstr_X86_WRK()
11809 nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
11810 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11818 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11823 putXMMReg( gregOfRM(modrm), in disInstr_X86_WRK()
11835 modrm = insn[3]; in disInstr_X86_WRK()
11836 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
11837 assign( sV, getXMMReg( eregOfRM(modrm)) ); in disInstr_X86_WRK()
11838 DIP("movddup %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
11839 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11846 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11850 putXMMReg( gregOfRM(modrm), binop(Iop_64HLtoV128,mkexpr(d0),mkexpr(d0)) ); in disInstr_X86_WRK()
11864 modrm = insn[3]; in disInstr_X86_WRK()
11865 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
11866 assign( eV, getXMMReg( eregOfRM(modrm)) ); in disInstr_X86_WRK()
11867 DIP("addsubps %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
11868 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11874 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11878 assign( gV, getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
11887 putXMMReg( gregOfRM(modrm), mk128from32s( a3, s2, a1, s0 )); in disInstr_X86_WRK()
11901 modrm = insn[2]; in disInstr_X86_WRK()
11902 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
11903 assign( eV, getXMMReg( eregOfRM(modrm)) ); in disInstr_X86_WRK()
11904 DIP("addsubpd %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
11905 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11911 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11915 assign( gV, getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
11924 putXMMReg( gregOfRM(modrm), in disInstr_X86_WRK()
11943 modrm = insn[3]; in disInstr_X86_WRK()
11944 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
11945 assign( eV, getXMMReg( eregOfRM(modrm)) ); in disInstr_X86_WRK()
11946 DIP("h%sps %s,%s\n", str, nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
11947 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11953 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11957 assign( gV, getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
11966 putXMMReg( gregOfRM(modrm), in disInstr_X86_WRK()
11987 modrm = insn[2]; in disInstr_X86_WRK()
11988 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
11989 assign( eV, getXMMReg( eregOfRM(modrm)) ); in disInstr_X86_WRK()
11990 DIP("h%spd %s,%s\n", str, nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
11991 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
11997 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12001 assign( gV, getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
12012 putXMMReg( gregOfRM(modrm), in disInstr_X86_WRK()
12020 modrm = getIByte(delta+3); in disInstr_X86_WRK()
12021 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
12025 putXMMReg( gregOfRM(modrm), in disInstr_X86_WRK()
12028 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12053 modrm = insn[3]; in disInstr_X86_WRK()
12055 assign( dV, getMMXReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
12057 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
12058 assign( sV, getMMXReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
12060 DIP("pmaddubsw %s,%s\n", nameMMXReg(eregOfRM(modrm)), in disInstr_X86_WRK()
12061 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12067 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12085 gregOfRM(modrm), in disInstr_X86_WRK()
12105 modrm = insn[3]; in disInstr_X86_WRK()
12106 assign( dV, getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
12108 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
12109 assign( sV, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
12111 DIP("pmaddubsw %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
12112 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12119 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12137 gregOfRM(modrm), in disInstr_X86_WRK()
12171 modrm = insn[3]; in disInstr_X86_WRK()
12188 assign( dV, getMMXReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
12190 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
12191 assign( sV, getMMXReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
12193 DIP("ph%s %s,%s\n", str, nameMMXReg(eregOfRM(modrm)), in disInstr_X86_WRK()
12194 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12200 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12204 gregOfRM(modrm), in disInstr_X86_WRK()
12241 modrm = insn[3]; in disInstr_X86_WRK()
12257 assign( dV, getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
12259 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
12260 assign( sV, getXMMReg( eregOfRM(modrm)) ); in disInstr_X86_WRK()
12261 DIP("ph%s %s,%s\n", str, nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
12262 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12269 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12282 gregOfRM(modrm), in disInstr_X86_WRK()
12304 modrm = insn[3]; in disInstr_X86_WRK()
12306 assign( dV, getMMXReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
12308 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
12309 assign( sV, getMMXReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
12311 DIP("pmulhrsw %s,%s\n", nameMMXReg(eregOfRM(modrm)), in disInstr_X86_WRK()
12312 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12318 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12322 gregOfRM(modrm), in disInstr_X86_WRK()
12339 modrm = insn[3]; in disInstr_X86_WRK()
12340 assign( dV, getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
12342 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
12343 assign( sV, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
12345 DIP("pmulhrsw %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
12346 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12353 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12362 gregOfRM(modrm), in disInstr_X86_WRK()
12389 modrm = insn[3]; in disInstr_X86_WRK()
12391 assign( dV, getMMXReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
12393 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
12394 assign( sV, getMMXReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
12396 DIP("psign%s %s,%s\n", str, nameMMXReg(eregOfRM(modrm)), in disInstr_X86_WRK()
12397 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12403 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12407 gregOfRM(modrm), in disInstr_X86_WRK()
12435 modrm = insn[3]; in disInstr_X86_WRK()
12436 assign( dV, getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
12438 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
12439 assign( sV, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
12441 DIP("psign%s %s,%s\n", str, nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
12442 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12449 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12458 gregOfRM(modrm), in disInstr_X86_WRK()
12484 modrm = insn[3]; in disInstr_X86_WRK()
12487 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
12488 assign( sV, getMMXReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
12490 DIP("pabs%s %s,%s\n", str, nameMMXReg(eregOfRM(modrm)), in disInstr_X86_WRK()
12491 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12497 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12501 gregOfRM(modrm), in disInstr_X86_WRK()
12526 modrm = insn[3]; in disInstr_X86_WRK()
12528 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
12529 assign( sV, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
12531 DIP("pabs%s %s,%s\n", str, nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
12532 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12539 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12546 gregOfRM(modrm), in disInstr_X86_WRK()
12562 modrm = insn[3]; in disInstr_X86_WRK()
12564 assign( dV, getMMXReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
12566 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
12567 assign( sV, getMMXReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
12571 nameMMXReg(eregOfRM(modrm)), in disInstr_X86_WRK()
12572 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12580 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12605 putMMXReg( gregOfRM(modrm), mkexpr(res) ); in disInstr_X86_WRK()
12621 modrm = insn[3]; in disInstr_X86_WRK()
12622 assign( dV, getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
12624 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
12625 assign( sV, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
12629 nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
12630 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12639 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12687 gregOfRM(modrm), in disInstr_X86_WRK()
12699 modrm = insn[3]; in disInstr_X86_WRK()
12701 assign( dV, getMMXReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
12703 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
12704 assign( sV, getMMXReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
12706 DIP("pshufb %s,%s\n", nameMMXReg(eregOfRM(modrm)), in disInstr_X86_WRK()
12707 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12713 nameMMXReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12717 gregOfRM(modrm), in disInstr_X86_WRK()
12754 modrm = insn[3]; in disInstr_X86_WRK()
12755 assign( dV, getXMMReg(gregOfRM(modrm)) ); in disInstr_X86_WRK()
12757 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
12758 assign( sV, getXMMReg(eregOfRM(modrm)) ); in disInstr_X86_WRK()
12760 DIP("pshufb %s,%s\n", nameXMMReg(eregOfRM(modrm)), in disInstr_X86_WRK()
12761 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12768 nameXMMReg(gregOfRM(modrm))); in disInstr_X86_WRK()
12839 gregOfRM(modrm), in disInstr_X86_WRK()
12852 modrm = insn[3]; in disInstr_X86_WRK()
12861 putIReg(sz, gregOfRM(modrm), mkexpr(dst)); in disInstr_X86_WRK()
12862 DIP("movbe %s,%s\n", dis_buf, nameIReg(sz, gregOfRM(modrm))); in disInstr_X86_WRK()
12864 assign(src, getIReg(sz, gregOfRM(modrm))); in disInstr_X86_WRK()
12867 DIP("movbe %s,%s\n", nameIReg(sz, gregOfRM(modrm)), dis_buf); in disInstr_X86_WRK()
12895 modrm = insn[3]; in disInstr_X86_WRK()
12897 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
12899 isD ? getXMMRegLane64F( eregOfRM(modrm), 0 ) in disInstr_X86_WRK()
12900 : getXMMRegLane32F( eregOfRM(modrm), 0 ) ); in disInstr_X86_WRK()
12906 imm, nameXMMReg( eregOfRM(modrm) ), in disInstr_X86_WRK()
12907 nameXMMReg( gregOfRM(modrm) ) ); in disInstr_X86_WRK()
12915 imm, dis_buf, nameXMMReg( gregOfRM(modrm) ) ); in disInstr_X86_WRK()
12926 putXMMRegLane64F( gregOfRM(modrm), 0, mkexpr(res) ); in disInstr_X86_WRK()
12928 putXMMRegLane32F( gregOfRM(modrm), 0, mkexpr(res) ); in disInstr_X86_WRK()
12942 modrm = insn[3]; in disInstr_X86_WRK()
12943 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
12944 assign(src, getIReg(sz, eregOfRM(modrm))); in disInstr_X86_WRK()
12947 nameIReg(sz, eregOfRM(modrm)), in disInstr_X86_WRK()
12948 nameIReg(sz, gregOfRM(modrm))); in disInstr_X86_WRK()
12954 nameIReg(sz, gregOfRM(modrm))); in disInstr_X86_WRK()
12958 putIReg(sz, gregOfRM(modrm), mkexpr(res)); in disInstr_X86_WRK()
13587 modrm = getIByte(delta); in disInstr_X86_WRK()
13588 if (epartIsReg(modrm)) in disInstr_X86_WRK()
13595 putIReg(sz, gregOfRM(modrm), mkexpr(addr)); in disInstr_X86_WRK()
13597 nameIReg(sz,gregOfRM(modrm))); in disInstr_X86_WRK()
13667 modrm = getIByte(delta); in disInstr_X86_WRK()
13668 if (gregOfRM(modrm) == 0) { in disInstr_X86_WRK()
13669 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
13672 putIReg(sz, eregOfRM(modrm), mkU(szToITy(sz), d32)); in disInstr_X86_WRK()
13674 nameIReg(sz,eregOfRM(modrm))); in disInstr_X86_WRK()
14353 modrm = getIByte(delta); in disInstr_X86_WRK()
14356 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
14357 assign(t1, getIReg(sz, eregOfRM(modrm))); in disInstr_X86_WRK()
14358 assign(t2, getIReg(sz, gregOfRM(modrm))); in disInstr_X86_WRK()
14359 putIReg(sz, gregOfRM(modrm), mkexpr(t1)); in disInstr_X86_WRK()
14360 putIReg(sz, eregOfRM(modrm), mkexpr(t2)); in disInstr_X86_WRK()
14363 nameISize(sz), nameIReg(sz,gregOfRM(modrm)), in disInstr_X86_WRK()
14364 nameIReg(sz,eregOfRM(modrm))); in disInstr_X86_WRK()
14369 assign( t2, getIReg(sz,gregOfRM(modrm)) ); in disInstr_X86_WRK()
14372 putIReg( sz, gregOfRM(modrm), mkexpr(t1) ); in disInstr_X86_WRK()
14375 nameIReg(sz,gregOfRM(modrm)), dis_buf); in disInstr_X86_WRK()
14511 modrm = getIByte(delta); in disInstr_X86_WRK()
14516 delta = dis_Grp1 ( sorb, pfx_lock, delta, modrm, am_sz, d_sz, sz, d32 ); in disInstr_X86_WRK()
14520 modrm = getIByte(delta); in disInstr_X86_WRK()
14524 delta = dis_Grp1 ( sorb, pfx_lock, delta, modrm, am_sz, d_sz, sz, d32 ); in disInstr_X86_WRK()
14528 modrm = getIByte(delta); in disInstr_X86_WRK()
14532 delta = dis_Grp1 ( sorb, pfx_lock, delta, modrm, am_sz, d_sz, sz, d32 ); in disInstr_X86_WRK()
14539 modrm = getIByte(delta); in disInstr_X86_WRK()
14544 delta = dis_Grp2 ( sorb, delta, modrm, am_sz, d_sz, sz, in disInstr_X86_WRK()
14552 modrm = getIByte(delta); in disInstr_X86_WRK()
14556 delta = dis_Grp2 ( sorb, delta, modrm, am_sz, d_sz, sz, in disInstr_X86_WRK()
14564 modrm = getIByte(delta); in disInstr_X86_WRK()
14569 delta = dis_Grp2 ( sorb, delta, modrm, am_sz, d_sz, sz, in disInstr_X86_WRK()
14577 modrm = getUChar(delta); in disInstr_X86_WRK()
14581 delta = dis_Grp2 ( sorb, delta, modrm, am_sz, d_sz, sz, in disInstr_X86_WRK()
14589 modrm = getUChar(delta); in disInstr_X86_WRK()
14593 delta = dis_Grp2 ( sorb, delta, modrm, am_sz, d_sz, sz, in disInstr_X86_WRK()
14601 modrm = getIByte(delta); in disInstr_X86_WRK()
14604 delta = dis_Grp2 ( sorb, delta, modrm, am_sz, d_sz, sz, in disInstr_X86_WRK()
14658 modrm = getUChar(delta); in disInstr_X86_WRK()
14661 delta = dis_Grp8_Imm ( sorb, pfx_lock, delta, modrm, in disInstr_X86_WRK()
14762 modrm = getIByte(delta); in disInstr_X86_WRK()
14763 if (epartIsReg(modrm)) goto decode_failure; in disInstr_X86_WRK()
14764 if (gregOfRM(modrm) != 1) goto decode_failure; in disInstr_X86_WRK()
14986 modrm = getUChar(delta); in disInstr_X86_WRK()
14987 if (epartIsReg(modrm)) goto decode_failure; in disInstr_X86_WRK()
15117 modrm = getIByte(delta); in disInstr_X86_WRK()
15118 if (epartIsReg(modrm)) { in disInstr_X86_WRK()
15120 putIReg(1, eregOfRM(modrm), mkexpr(t1)); in disInstr_X86_WRK()
15122 nameIReg(1,eregOfRM(modrm))); in disInstr_X86_WRK()
15134 modrm = getIByte(delta); in disInstr_X86_WRK()
15138 sorb, delta, modrm, sz, in disInstr_X86_WRK()
15143 modrm = getIByte(delta); in disInstr_X86_WRK()
15145 sorb, delta, modrm, sz, in disInstr_X86_WRK()
15151 modrm = getIByte(delta); in disInstr_X86_WRK()
15155 sorb, delta, modrm, sz, in disInstr_X86_WRK()
15160 modrm = getIByte(delta); in disInstr_X86_WRK()
15162 sorb, delta, modrm, sz, in disInstr_X86_WRK()
15311 modrm = getUChar(delta); in disInstr_X86_WRK()
15314 if (epartIsReg(modrm)) goto decode_failure; in disInstr_X86_WRK()
15315 if (gregOfRM(modrm) != 0 && gregOfRM(modrm) != 1) in disInstr_X86_WRK()
15317 switch (gregOfRM(modrm)) { in disInstr_X86_WRK()
15328 mkU32(gregOfRM(modrm)) ) in disInstr_X86_WRK()