Lines Matching refs:rM
1734 UInt rM /* only for debug printing */ in compute_result_and_C_after_LSL_by_imm5() argument
1742 DIS(buf, "r%u", rM); in compute_result_and_C_after_LSL_by_imm5()
1754 DIS(buf, "r%u, LSL #%u", rM, shift_amt); in compute_result_and_C_after_LSL_by_imm5()
1764 UInt rM, UInt rS /* only for debug printing */ in compute_result_and_C_after_LSL_by_reg() argument
1828 DIS(buf, "r%u, LSL r%u", rM, rS); in compute_result_and_C_after_LSL_by_reg()
1837 UInt rM /* only for debug printing */ in compute_result_and_C_after_LSR_by_imm5() argument
1851 DIS(buf, "r%u, LSR #0(a.k.a. 32)", rM); in compute_result_and_C_after_LSR_by_imm5()
1866 DIS(buf, "r%u, LSR #%u", rM, shift_amt); in compute_result_and_C_after_LSR_by_imm5()
1876 UInt rM, UInt rS /* only for debug printing */ in compute_result_and_C_after_LSR_by_reg() argument
1938 DIS(buf, "r%u, LSR r%u", rM, rS); in compute_result_and_C_after_LSR_by_reg()
1947 UInt rM /* only for debug printing */ in compute_result_and_C_after_ASR_by_imm5() argument
1961 DIS(buf, "r%u, ASR #0(a.k.a. 32)", rM); in compute_result_and_C_after_ASR_by_imm5()
1976 DIS(buf, "r%u, ASR #%u", rM, shift_amt); in compute_result_and_C_after_ASR_by_imm5()
1986 UInt rM, UInt rS /* only for debug printing */ in compute_result_and_C_after_ASR_by_reg() argument
2049 DIS(buf, "r%u, ASR r%u", rM, rS); in compute_result_and_C_after_ASR_by_reg()
2058 UInt rM, UInt rS /* only for debug printing */ in compute_result_and_C_after_ROR_by_reg() argument
2114 DIS(buf, "r%u, ROR r#%u", rM, rS); in compute_result_and_C_after_ROR_by_reg()
2140 UInt rM /* only for debug printing */ in compute_result_and_C_after_shift_by_imm5() argument
2150 buf, res, newC, rMt, shift_amt, rM in compute_result_and_C_after_shift_by_imm5()
2156 buf, res, newC, rMt, shift_amt, rM in compute_result_and_C_after_shift_by_imm5()
2162 buf, res, newC, rMt, shift_amt, rM in compute_result_and_C_after_shift_by_imm5()
2182 DIS(buf, "r%u, RRX", rM); in compute_result_and_C_after_shift_by_imm5()
2200 DIS(buf, "r%u, ROR #%u", rM, shift_amt); in compute_result_and_C_after_shift_by_imm5()
2233 UInt rM, /* only for debug printing */ in compute_result_and_C_after_shift_by_reg() argument
2241 buf, res, newC, rMt, rSt, rM, rS in compute_result_and_C_after_shift_by_reg()
2247 buf, res, newC, rMt, rSt, rM, rS in compute_result_and_C_after_shift_by_reg()
2253 buf, res, newC, rMt, rSt, rM, rS in compute_result_and_C_after_shift_by_reg()
2259 buf, res, newC, rMt, rSt, rM, rS in compute_result_and_C_after_shift_by_reg()
2326 UInt rM = (insn_11_0 >> 0) & 0xF; in mk_shifter_operand() local
2330 assign(rMt, getIRegA(rM)); in mk_shifter_operand()
2335 buf, shop, shco, rMt, how, shift_amt, rM in mk_shifter_operand()
2343 UInt rM = (insn_11_0 >> 0) & 0xF; in mk_shifter_operand() local
2353 assign(rMt, getIRegA(rM)); in mk_shifter_operand()
2357 buf, shop, shco, rMt, how, rSt, rM, rS in mk_shifter_operand()
2388 IRExpr* mk_EA_reg_plusminus_shifted_reg ( UInt rN, UInt bU, UInt rM, in mk_EA_reg_plusminus_shifted_reg() argument
2394 vassert(rM < 16); in mk_EA_reg_plusminus_shifted_reg()
2402 index = binop(Iop_Shl32, getIRegA(rM), mkU8(imm5)); in mk_EA_reg_plusminus_shifted_reg()
2403 DIS(buf, "[r%u, %c r%u LSL #%u]", rN, opChar, rM, imm5); in mk_EA_reg_plusminus_shifted_reg()
2410 index = binop(Iop_Shr32, getIRegA(rM), mkU8(imm5)); in mk_EA_reg_plusminus_shifted_reg()
2413 rN, opChar, rM, imm5 == 0 ? 32 : imm5); in mk_EA_reg_plusminus_shifted_reg()
2419 index = binop(Iop_Sar32, getIRegA(rM), mkU8(31)); in mk_EA_reg_plusminus_shifted_reg()
2422 index = binop(Iop_Sar32, getIRegA(rM), mkU8(imm5)); in mk_EA_reg_plusminus_shifted_reg()
2425 rN, opChar, rM, imm5 == 0 ? 32 : imm5); in mk_EA_reg_plusminus_shifted_reg()
2431 assign(rmT, getIRegA(rM)); in mk_EA_reg_plusminus_shifted_reg()
2436 DIS(buf, "[r%u, %cr%u, RRX]", rN, opChar, rM); in mk_EA_reg_plusminus_shifted_reg()
2439 assign(rmT, getIRegA(rM)); in mk_EA_reg_plusminus_shifted_reg()
2444 DIS(buf, "[r%u, %cr%u, ROR #%u]", rN, opChar, rM, imm5); in mk_EA_reg_plusminus_shifted_reg()
2475 IRExpr* mk_EA_reg_plusminus_reg ( UInt rN, UInt bU, UInt rM, in mk_EA_reg_plusminus_reg() argument
2480 vassert(rM < 16); in mk_EA_reg_plusminus_reg()
2482 IRExpr* index = getIRegA(rM); in mk_EA_reg_plusminus_reg()
2483 DIS(buf, "[r%u, %c r%u]", rN, opChar, rM); in mk_EA_reg_plusminus_reg()
8335 UInt rM = INSN(3,0); in dis_neon_load_or_store() local
8355 assign(initialRm, isT ? getIRegT(rM) : getIRegA(rM)); in dis_neon_load_or_store()
8397 if (rM != 13 && rM != 15) { in dis_neon_load_or_store()
8398 DIP(", r%u\n", rM); in dis_neon_load_or_store()
8400 DIP("%s\n", (rM != 15) ? "!" : ""); in dis_neon_load_or_store()
8494 if (rM != 13 && rM != 15) { in dis_neon_load_or_store()
8495 DIP(", r%u\n", rM); in dis_neon_load_or_store()
8497 DIP("%s\n", (rM != 15) ? "!" : ""); in dis_neon_load_or_store()
8501 if (rM != 15) { in dis_neon_load_or_store()
8502 if (rM == 13) { in dis_neon_load_or_store()
8771 if (rM != 15) { in dis_neon_load_or_store()
8773 if (rM == 13) { in dis_neon_load_or_store()
8801 if (rM != 13 && rM != 15) { in dis_neon_load_or_store()
8802 DIP(", r%u\n", rM); in dis_neon_load_or_store()
8804 DIP("%s\n", (rM != 15) ? "!" : ""); in dis_neon_load_or_store()
10921 UInt rD = 99, rN = 99, rM = 99, rA = 99; in decode_V6MEDIA_instruction() local
10929 rM = INSNT1(3,0); in decode_V6MEDIA_instruction()
10930 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM) && rA != 13) in decode_V6MEDIA_instruction()
10938 rM = INSNA(11,8); in decode_V6MEDIA_instruction()
10940 if (rD != 15 && rN != 15 && rM != 15 /* but rA can be 15 */) in decode_V6MEDIA_instruction()
10948 IRExpr* rMe = isT ? getIRegT(rM) : getIRegA(rM); in decode_V6MEDIA_instruction()
10961 nCC(conq), rD, rN, rM ); in decode_V6MEDIA_instruction()
10964 nCC(conq), rD, rN, rM, rA ); in decode_V6MEDIA_instruction()
12336 UInt rD = 99, rN = 99, rM = 99, rA = 99; in decode_V6MEDIA_instruction() local
12347 rM = INSNT1(3,0); in decode_V6MEDIA_instruction()
12350 && !isBadRegT(rN) && !isBadRegT(rM) && !isBadRegT(rA)) in decode_V6MEDIA_instruction()
12360 rM = INSNA(11,8); in decode_V6MEDIA_instruction()
12362 if (rD != 15 && rM != 15 && rN != 15) in decode_V6MEDIA_instruction()
12372 assign( irt_rM, isT ? getIRegT(rM) : getIRegA(rM) ); in decode_V6MEDIA_instruction()
12385 round ? "r" : "", nCC(conq), rD, rN, rM, rA); in decode_V6MEDIA_instruction()
12393 UInt rN = 99, rDlo = 99, rDhi = 99, rM = 99; in decode_V6MEDIA_instruction() local
12403 rM = INSNT1(3,0); in decode_V6MEDIA_instruction()
12406 && !isBadRegT(rM) && rDhi != rDlo) in decode_V6MEDIA_instruction()
12415 rM = INSNA(11,8); in decode_V6MEDIA_instruction()
12418 && rN != 15 && rM != 15 && rDlo != rDhi) in decode_V6MEDIA_instruction()
12434 assign( irt_rM, isT ? getIRegT(rM) : getIRegA(rM)); in decode_V6MEDIA_instruction()
12474 m_swap ? 'x' : ' ', nCC(conq), rDlo, rDhi, rN, rM); in decode_V6MEDIA_instruction()
12482 UInt rN = 99, rDlo = 99, rDhi = 99, rM = 99; in decode_V6MEDIA_instruction() local
12492 rM = INSNT1(3,0); in decode_V6MEDIA_instruction()
12495 !isBadRegT(rM) && rDhi != rDlo) in decode_V6MEDIA_instruction()
12504 rM = INSNA(11,8); in decode_V6MEDIA_instruction()
12507 rN != 15 && rM != 15 && rDlo != rDhi) in decode_V6MEDIA_instruction()
12522 assign( irt_rM, isT ? getIRegT(rM) : getIRegA(rM) ); in decode_V6MEDIA_instruction()
12562 m_swap ? 'x' : ' ', nCC(conq), rDlo, rDhi, rN, rM); in decode_V6MEDIA_instruction()
13198 UInt rM = INSN(19,16); in decode_CP10_CP11_instruction() local
13199 if (rM == 15 || rN == 15 || (isT && (rM == 13 || rN == 13)) in decode_CP10_CP11_instruction()
13207 unop(Iop_ReinterpI32asF32, isT ? getIRegT(rM) : getIRegA(rM)), in decode_CP10_CP11_instruction()
13210 nCC(conq), sD, sD + 1, rN, rM); in decode_CP10_CP11_instruction()
13219 UInt rM = INSN(19,16); in decode_CP10_CP11_instruction() local
13220 if (rM == 15 || rN == 15 || (isT && (rM == 13 || rN == 13)) in decode_CP10_CP11_instruction()
13221 || sD == 31 || rN == rM) { in decode_CP10_CP11_instruction()
13228 putIRegT(rM, res1, condT); in decode_CP10_CP11_instruction()
13231 putIRegA(rM, res1, condT, Ijk_Boring); in decode_CP10_CP11_instruction()
13234 nCC(conq), rN, rM, sD, sD + 1); in decode_CP10_CP11_instruction()
14464 UInt rM = INSN(3,0); in decode_NV_instruction() local
14469 if (rM != 15 && (rN != 15 || bR)) { in decode_NV_instruction()
14470 IRExpr* eaE = mk_EA_reg_plusminus_shifted_reg(rN, bU, rM, in decode_NV_instruction()
15091 UInt rM = (insn >> 0) & 0xF; /* 3:0 */ in disInstr_ARM_WRK() local
15106 if (rM == 15) goto after_load_store_ubyte_or_word; in disInstr_ARM_WRK()
15113 if (rM == 15) goto after_load_store_ubyte_or_word; in disInstr_ARM_WRK()
15115 if (rN == rM) goto after_load_store_ubyte_or_word; in disInstr_ARM_WRK()
15130 eaE = mk_EA_reg_plusminus_shifted_reg( rN, bU, rM, sh2, imm5, in disInstr_ARM_WRK()
15319 UInt rM = (insn >> 0) & 0xF; /* 3:0 */ in disInstr_ARM_WRK() local
15345 if (rM == 15) goto after_load_store_sbyte_or_hword; in disInstr_ARM_WRK()
15352 if (rM == 15) goto after_load_store_sbyte_or_hword; in disInstr_ARM_WRK()
15354 if (rN == rM) goto after_load_store_sbyte_or_hword; in disInstr_ARM_WRK()
15381 eaE = mk_EA_reg_plusminus_reg( rN, bU, rM, dis_buf ); in disInstr_ARM_WRK()
15633 UInt rM = INSN(3,0); in disInstr_ARM_WRK() local
15636 if (!(link && rM == 15)) { in disInstr_ARM_WRK()
15643 assign( dst, getIRegA(rM) ); in disInstr_ARM_WRK()
15650 : (rM == 14 ? Ijk_Ret : Ijk_Boring); in disInstr_ARM_WRK()
15653 DIP("b%sx r%u\n", link ? "l" : "", rM); in disInstr_ARM_WRK()
15655 DIP("b%sx%s r%u\n", link ? "l" : "", nCC(INSN_COND), rM); in disInstr_ARM_WRK()
15673 UInt rM = INSN(3,0); in disInstr_ARM_WRK() local
15676 assign(arg, getIRegA(rM)); in disInstr_ARM_WRK()
15683 DIP("clz%s r%u, r%u\n", nCC(INSN_COND), rD, rM); in disInstr_ARM_WRK()
15695 UInt rM = INSN(3,0); in disInstr_ARM_WRK() local
15696 if (rD == 15 || rM == 15 || rS == 15) { in disInstr_ARM_WRK()
15704 assign( argL, getIRegA(rM)); in disInstr_ARM_WRK()
15723 bitS ? 's' : ' ', nCC(INSN_COND), rD, rM, rS); in disInstr_ARM_WRK()
15735 UInt rM = INSN(11,8); in disInstr_ARM_WRK() local
15737 if (rD == 15 || rM == 15 || rN == 15) { in disInstr_ARM_WRK()
15744 assign(argR, getIRegA(rM)); in disInstr_ARM_WRK()
15747 DIP("sdiv r%u, r%u, r%u\n", rD, rN, rM); in disInstr_ARM_WRK()
15757 UInt rM = INSN(11,8); in disInstr_ARM_WRK() local
15759 if (rD == 15 || rM == 15 || rN == 15) { in disInstr_ARM_WRK()
15766 assign(argR, getIRegA(rM)); in disInstr_ARM_WRK()
15769 DIP("udiv r%u, r%u, r%u\n", rD, rN, rM); in disInstr_ARM_WRK()
15782 UInt rM = INSN(3,0); in disInstr_ARM_WRK() local
15788 if (rD == 15 || rM == 15 || rS == 15 || rN == 15) { in disInstr_ARM_WRK()
15797 assign( argL, getIRegA(rM)); in disInstr_ARM_WRK()
15821 nCC(INSN_COND), rD, rM, rS, rN); in disInstr_ARM_WRK()
15834 UInt rM = INSN(3,0); in disInstr_ARM_WRK() local
15836 if (rDhi == 15 || rDlo == 15 || rM == 15 || rS == 15 || rDhi == rDlo) { in disInstr_ARM_WRK()
15847 assign( argL, getIRegA(rM)); in disInstr_ARM_WRK()
15870 nCC(INSN_COND), rDlo, rDhi, rM, rS); in disInstr_ARM_WRK()
15883 UInt rM = INSN(3,0); in disInstr_ARM_WRK() local
15885 if (rDhi == 15 || rDlo == 15 || rM == 15 || rS == 15 || rDhi == rDlo) { in disInstr_ARM_WRK()
15897 assign( argL, getIRegA(rM)); in disInstr_ARM_WRK()
15923 rDlo, rDhi, rM, rS); in disInstr_ARM_WRK()
15933 UInt rM = INSN(11,8); in disInstr_ARM_WRK() local
15935 if (rDlo == 15 || rDhi == 15 || rN == 15 || rM == 15 || rDhi == rDlo) { in disInstr_ARM_WRK()
15946 assign( argM, getIRegA(rM) ); in disInstr_ARM_WRK()
15961 nCC(INSN_COND), rDlo, rDhi, rN, rM); in disInstr_ARM_WRK()
16045 UInt rM = INSN(3,0); in disInstr_ARM_WRK() local
16052 if (rD == 15 || rN == 15 || rM == 15 || rN == rM || rN == rD) { in disInstr_ARM_WRK()
16062 assign(tNew, getIRegA(rM)); in disInstr_ARM_WRK()
16085 isB ? "b" : "", nCC(INSN_COND), rD, rM, rN); in disInstr_ARM_WRK()
16253 UInt rM = INSN(3,0); in disInstr_ARM_WRK() local
16259 assign(srcT, getIRegA(rM)); in disInstr_ARM_WRK()
16306 DIP("%s%s r%u, r%u, ROR #%u\n", nm, nCC(INSN_COND), rD, rM, rot); in disInstr_ARM_WRK()
16444 UInt rM = (insn >> 0) & 0xF; /* 3:0 */ in disInstr_ARM_WRK() local
16464 if (rM == 15) goto after_load_store_doubleword; in disInstr_ARM_WRK()
16472 if (rM == 15) goto after_load_store_doubleword; in disInstr_ARM_WRK()
16474 if (rN == rM) goto after_load_store_doubleword; in disInstr_ARM_WRK()
16501 eaE = mk_EA_reg_plusminus_reg( rN, bU, rM, dis_buf ); in disInstr_ARM_WRK()
16604 UInt rM = INSN(3,0); in disInstr_ARM_WRK() local
16607 if (rN == 15/*it's {S,U}XTB*/ || rD == 15 || rM == 15) { in disInstr_ARM_WRK()
16613 assign(srcR, getIRegA(rM)); in disInstr_ARM_WRK()
16622 isU ? 'u' : 's', nCC(INSN_COND), rD, rN, rM, rot); in disInstr_ARM_WRK()
16634 UInt rM = INSN(3,0); in disInstr_ARM_WRK() local
16637 if (rN == 15/*it's {S,U}XTH*/ || rD == 15 || rM == 15) { in disInstr_ARM_WRK()
16643 assign(srcR, getIRegA(rM)); in disInstr_ARM_WRK()
16653 isU ? 'u' : 's', nCC(INSN_COND), rD, rN, rM, rot); in disInstr_ARM_WRK()
16663 UInt rM = INSN(3,0); in disInstr_ARM_WRK() local
16665 if (rM != 15 && rD != 15) { in disInstr_ARM_WRK()
16667 assign(rMt, getIRegA(rM)); in disInstr_ARM_WRK()
16671 nCC(INSN_COND), rD, rM); in disInstr_ARM_WRK()
16678 UInt rM = INSN(3,0); in disInstr_ARM_WRK() local
16680 if (rM != 15 && rD != 15) { in disInstr_ARM_WRK()
16685 assign(irt_rM, getIRegA(rM)); in disInstr_ARM_WRK()
16702 DIP("revsh%s r%u, r%u\n", nCC(INSN_COND), rD, rM); in disInstr_ARM_WRK()
16710 UInt rM = INSN(3,0); in disInstr_ARM_WRK() local
16711 if (rD != 15 && rM != 15) { in disInstr_ARM_WRK()
16713 assign(arg, getIRegA(rM)); in disInstr_ARM_WRK()
16716 DIP("rbit r%u, r%u\n", rD, rM); in disInstr_ARM_WRK()
16727 UInt rM = INSN(11,8); in disInstr_ARM_WRK() local
16729 if (rD != 15 && rM != 15 && rN != 15) { in disInstr_ARM_WRK()
16733 binop(Iop_MullS32, getIRegA(rN), getIRegA(rM)), in disInstr_ARM_WRK()
16737 nCC(INSN_COND), bitR ? "r" : "", rD, rN, rM); in disInstr_ARM_WRK()
16749 UInt rM = INSN(11,8); in disInstr_ARM_WRK() local
16751 if (rD != 15 && rM != 15 && rN != 15) { in disInstr_ARM_WRK()
16757 binop(Iop_MullS32, getIRegA(rN), getIRegA(rM))), in disInstr_ARM_WRK()
16761 nCC(INSN_COND), bitR ? "r" : "", rD, rN, rM, rA); in disInstr_ARM_WRK()
16805 UInt rM = INSN(3,0); in disInstr_ARM_WRK() local
16810 if (rT == 15 || rN == 15 || rN == rT || rM == 15 in disInstr_ARM_WRK()
16819 IRExpr* erN = mk_EA_reg_plusminus_shifted_reg(rN, bU, rM, in disInstr_ARM_WRK()
16860 UInt rM = INSN(3,0); in disInstr_ARM_WRK() local
16865 if (rT == 15 || rN == 15 || rN == rT || rM == 15 in disInstr_ARM_WRK()
16874 IRExpr* erN = mk_EA_reg_plusminus_shifted_reg(rN, bU, rM, in disInstr_ARM_WRK()
16919 UInt rM = INSN(3,0); in disInstr_ARM_WRK() local
16922 if (rT == 15 || rN == 15 || rN == rT || rM == 15) in disInstr_ARM_WRK()
16930 getIRegA(rN), getIRegA(rM)); in disInstr_ARM_WRK()
16933 nCC(INSN_COND), rT, rN, bU ? '+' : '-', rM); in disInstr_ARM_WRK()
16975 UInt rM = INSN(3,0); in disInstr_ARM_WRK() local
16978 if (rN == 15 || rT == 15 || rN == rT || rM == 15) in disInstr_ARM_WRK()
16986 getIRegA(rN), getIRegA(rM)); in disInstr_ARM_WRK()
16989 nCC(INSN_COND), rT, rN, bU ? '+' : '-', rM); in disInstr_ARM_WRK()
17032 UInt rM = INSN(3,0); in disInstr_ARM_WRK() local
17034 if (rT == 15 || rN == 15 || rN == rT || rM == 15) in disInstr_ARM_WRK()
17042 getIRegA(rN), getIRegA(rM)); in disInstr_ARM_WRK()
17045 nCC(INSN_COND), rT, rN, bU ? '+' : '-', rM); in disInstr_ARM_WRK()
17084 UInt rM = INSN(3,0); in disInstr_ARM_WRK() local
17087 if (rT == 15 || rN == 15 || rN == rT || rM == 15) valid = False; in disInstr_ARM_WRK()
17093 IRExpr* erN = mk_EA_reg_plusminus_shifted_reg(rN, bU, rM, in disInstr_ARM_WRK()
17136 UInt rM = INSN(3,0); in disInstr_ARM_WRK() local
17139 if (rT == 15 || rN == 15 || rN == rT || rM == 15) valid = False; in disInstr_ARM_WRK()
17145 getIRegA(rN), getIRegA(rM)); in disInstr_ARM_WRK()
17148 nCC(INSN_COND), rT, rN, bU ? '+' : '-', rM); in disInstr_ARM_WRK()
17184 UInt rM = INSN(3,0); in disInstr_ARM_WRK() local
17189 if (rN == 15 || rN == rT || rM == 15) valid = False; in disInstr_ARM_WRK()
17195 IRExpr* erN = mk_EA_reg_plusminus_shifted_reg(rN, bU, rM, in disInstr_ARM_WRK()
17878 UInt rM = INSN0(5,3); in disInstr_THUMB_WRK() local
17882 assign( argR, getIRegT(rM) ); in disInstr_THUMB_WRK()
17886 DIP("%s r%u, r%u\n", isCMN ? "cmn" : "cmp", rN, rM); in disInstr_THUMB_WRK()
17893 UInt rM = INSN0(5,3); in disInstr_THUMB_WRK() local
17899 assign( res, binop(Iop_And32, getIRegT(rN), getIRegT(rM)) ); in disInstr_THUMB_WRK()
17902 DIP("tst r%u, r%u\n", rN, rM); in disInstr_THUMB_WRK()
17909 UInt rM = INSN0(5,3); in disInstr_THUMB_WRK() local
17913 assign(arg, getIRegT(rM)); in disInstr_THUMB_WRK()
17918 DIP("negs r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
17925 UInt rM = INSN0(5,3); in disInstr_THUMB_WRK() local
17932 assign(res, unop(Iop_Not32, getIRegT(rM))); in disInstr_THUMB_WRK()
17937 DIP("mvns r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
17955 UInt rM = INSN0(5,3); in disInstr_THUMB_WRK() local
17962 assign( res, binop(anOp, getIRegT(rD), getIRegT(rM) )); in disInstr_THUMB_WRK()
17968 DIP("%s r%u, r%u\n", anOpNm, rD, rM); in disInstr_THUMB_WRK()
17975 UInt rM = INSN0(5,3); in disInstr_THUMB_WRK() local
17983 unop(Iop_Not32, getIRegT(rM) ))); in disInstr_THUMB_WRK()
17989 DIP("bics r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
17996 UInt rM = INSN0(5,3); in disInstr_THUMB_WRK() local
18003 assign(argR, getIRegT(rM)); in disInstr_THUMB_WRK()
18012 DIP("adcs r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
18019 UInt rM = INSN0(5,3); in disInstr_THUMB_WRK() local
18026 assign(argR, getIRegT(rM)); in disInstr_THUMB_WRK()
18035 DIP("sbcs r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
18042 UInt rM = INSN0(5,3); in disInstr_THUMB_WRK() local
18044 putIRegT(rD, binop(Iop_And32, getIRegT(rM), mkU32(0xFF)), in disInstr_THUMB_WRK()
18046 DIP("uxtb r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
18053 UInt rM = INSN0(5,3); in disInstr_THUMB_WRK() local
18056 binop(Iop_Shl32, getIRegT(rM), mkU8(24)), in disInstr_THUMB_WRK()
18059 DIP("sxtb r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
18066 UInt rM = INSN0(5,3); in disInstr_THUMB_WRK() local
18068 putIRegT(rD, binop(Iop_And32, getIRegT(rM), mkU32(0xFFFF)), in disInstr_THUMB_WRK()
18070 DIP("uxth r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
18077 UInt rM = INSN0(5,3); in disInstr_THUMB_WRK() local
18080 binop(Iop_Shl32, getIRegT(rM), mkU8(16)), in disInstr_THUMB_WRK()
18083 DIP("sxth r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
18148 UInt rM = INSN0(5,3); in disInstr_THUMB_WRK() local
18152 assign(arg, getIRegT(rM)); in disInstr_THUMB_WRK()
18155 DIP("rev%s r%u, r%u\n", isREV ? "" : "16", rD, rM); in disInstr_THUMB_WRK()
18161 UInt rM = INSN0(5,3); in disInstr_THUMB_WRK() local
18167 assign(irt_rM, getIRegT(rM)); in disInstr_THUMB_WRK()
18184 DIP("revsh r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
18221 UInt rM = (INSN0(6,6) << 3) | INSN0(5,3); in disInstr_THUMB_WRK() local
18228 if (rM <= 14) { in disInstr_THUMB_WRK()
18229 assign( dst, getIRegT(rM) ); in disInstr_THUMB_WRK()
18231 vassert(rM == 15); in disInstr_THUMB_WRK()
18235 dres.jk_StopHere = rM == 14 ? Ijk_Ret : Ijk_Boring; in disInstr_THUMB_WRK()
18237 DIP("bx r%u (possibly switch to ARM mode)\n", rM); in disInstr_THUMB_WRK()
18247 UInt rM = (INSN0(6,6) << 3) | INSN0(5,3); in disInstr_THUMB_WRK() local
18249 if (rM <= 14) { in disInstr_THUMB_WRK()
18255 assign( dst, getIRegT(rM) ); in disInstr_THUMB_WRK()
18261 DIP("blx r%u (possibly switch to ARM mode)\n", rM); in disInstr_THUMB_WRK()
18305 UInt rM = (h2 << 3) | INSN0(5,3); in disInstr_THUMB_WRK() local
18308 if (rD == 15 && rM == 15) { in disInstr_THUMB_WRK()
18312 assign( res, binop(Iop_Add32, getIRegT(rD), getIRegT(rM) )); in disInstr_THUMB_WRK()
18327 DIP("add(hi) r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
18337 UInt rM = (h2 << 3) | INSN0(5,3); in disInstr_THUMB_WRK() local
18343 assign( argR, getIRegT(rM) ); in disInstr_THUMB_WRK()
18346 DIP("cmphi r%u, r%u\n", rN, rM); in disInstr_THUMB_WRK()
18356 UInt rM = (h2 << 3) | INSN0(5,3); in disInstr_THUMB_WRK() local
18362 assign( val, getIRegT(rM) ); in disInstr_THUMB_WRK()
18374 dres.jk_StopHere = rM == 14 ? Ijk_Ret : Ijk_Boring; in disInstr_THUMB_WRK()
18377 DIP("mov r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
18615 UInt rM = INSN0(8,6); in disInstr_THUMB_WRK() local
18622 assign( argR, getIRegT(rM) ); in disInstr_THUMB_WRK()
18628 DIP("%s r%u, r%u, r%u\n", isSub ? "subs" : "adds", rD, rN, rM); in disInstr_THUMB_WRK()
18639 UInt rM = INSN0(8,6); in disInstr_THUMB_WRK() local
18642 IRExpr* ea = binop(Iop_Add32, getIRegT(rN), getIRegT(rM)); in disInstr_THUMB_WRK()
18653 DIP("%s r%u, [r%u, r%u]\n", isLD ? "ldr" : "str", rD, rN, rM); in disInstr_THUMB_WRK()
18664 UInt rM = INSN0(8,6); in disInstr_THUMB_WRK() local
18667 IRExpr* ea = binop(Iop_Add32, getIRegT(rN), getIRegT(rM)); in disInstr_THUMB_WRK()
18678 DIP("%sh r%u, [r%u, r%u]\n", isLD ? "ldr" : "str", rD, rN, rM); in disInstr_THUMB_WRK()
18687 UInt rM = INSN0(8,6); in disInstr_THUMB_WRK() local
18689 IRExpr* ea = binop(Iop_Add32, getIRegT(rN), getIRegT(rM)); in disInstr_THUMB_WRK()
18696 DIP("ldrsh r%u, [r%u, r%u]\n", rD, rN, rM); in disInstr_THUMB_WRK()
18705 UInt rM = INSN0(8,6); in disInstr_THUMB_WRK() local
18707 IRExpr* ea = binop(Iop_Add32, getIRegT(rN), getIRegT(rM)); in disInstr_THUMB_WRK()
18714 DIP("ldrsb r%u, [r%u, r%u]\n", rD, rN, rM); in disInstr_THUMB_WRK()
18725 UInt rM = INSN0(8,6); in disInstr_THUMB_WRK() local
18728 IRExpr* ea = binop(Iop_Add32, getIRegT(rN), getIRegT(rM)); in disInstr_THUMB_WRK()
18739 DIP("%sb r%u, [r%u, r%u]\n", isLD ? "ldr" : "str", rD, rN, rM); in disInstr_THUMB_WRK()
19045 UInt rM = INSN0(5,3); in disInstr_THUMB_WRK() local
19052 assign(rMt, getIRegT(rM)); in disInstr_THUMB_WRK()
19059 dis_buf, &res, &resC, rMt, imm5, rM in disInstr_THUMB_WRK()
19065 dis_buf, &res, &resC, rMt, imm5, rM in disInstr_THUMB_WRK()
19071 dis_buf, &res, &resC, rMt, imm5, rM in disInstr_THUMB_WRK()
19083 DIP("%ss r%u, r%u, #%u\n", wot, rD, rM, imm5); in disInstr_THUMB_WRK()
19604 UInt rM = INSN1(3,0); in disInstr_THUMB_WRK() local
19609 Bool valid = !isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM); in disInstr_THUMB_WRK()
19638 assign(rMt, getIRegT(rM)); in disInstr_THUMB_WRK()
19642 dis_buf, &argR, NULL, rMt, how, imm5, rM in disInstr_THUMB_WRK()
19683 UInt rM = INSN1(3,0); in disInstr_THUMB_WRK() local
19684 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
19693 assign(rMt, getIRegT(rM)); in disInstr_THUMB_WRK()
19700 dis_buf, &argR, NULL, rMt, how, imm5, rM in disInstr_THUMB_WRK()
19752 UInt rM = INSN1(3,0); in disInstr_THUMB_WRK() local
19753 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
19775 assign(rMt, getIRegT(rM)); in disInstr_THUMB_WRK()
19781 dis_buf, &argR, bS ? &oldC : NULL, rMt, how, imm5, rM in disInstr_THUMB_WRK()
19817 UInt rM = INSN1(3,0); in disInstr_THUMB_WRK() local
19819 Bool valid = !isBadRegT(rN) && !isBadRegT(rM) && !isBadRegT(rD); in disInstr_THUMB_WRK()
19829 assign(rMt, getIRegT(rM)); in disInstr_THUMB_WRK()
19832 rNt, how, rMt, rN, rM in disInstr_THUMB_WRK()
19842 nm, bS ? "s" : "", rD, rN, rM); in disInstr_THUMB_WRK()
19892 UInt rM = INSN1(3,0); in disInstr_THUMB_WRK() local
19893 if (!isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
19903 assign(rMt, getIRegT(rM)); in disInstr_THUMB_WRK()
19908 dis_buf, &argR, &oldC, rMt, how, imm5, rM in disInstr_THUMB_WRK()
19933 UInt rM = INSN1(3,0); in disInstr_THUMB_WRK() local
19934 if (!isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
19943 assign(rMt, getIRegT(rM)); in disInstr_THUMB_WRK()
19947 dis_buf, &argR, NULL, rMt, how, imm5, rM in disInstr_THUMB_WRK()
20253 UInt rM = INSN1(3,0); in disInstr_THUMB_WRK() local
20261 if (rN == 15 || isBadRegT(rT) || isBadRegT(rM)) in disInstr_THUMB_WRK()
20265 if (rN == 15 || isBadRegT(rM)) in disInstr_THUMB_WRK()
20292 binop(Iop_Shl32, getIRegT(rM), mkU8(imm2)) )); in disInstr_THUMB_WRK()
20362 nm, rT, rN, rM, imm2); in disInstr_THUMB_WRK()
20706 UInt rM = INSN1(3,0); in disInstr_THUMB_WRK() local
20708 if (bH/*ATC*/ || (rN != 13 && !isBadRegT(rM))) { in disInstr_THUMB_WRK()
20718 bH ? binop(Iop_Shl32, getIRegT(rM), mkU8(1)) in disInstr_THUMB_WRK()
20719 : getIRegT(rM)); in disInstr_THUMB_WRK()
20740 bH ? 'h' : 'b', rN, rM, bH ? ", LSL #1" : ""); in disInstr_THUMB_WRK()
20800 UInt rM = INSN1(3,0); in disInstr_THUMB_WRK() local
20802 if (!isBadRegT(rD) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
20807 assign(srcT, getIRegT(rM)); in disInstr_THUMB_WRK()
20859 DIP("%s r%u, r%u, ror #%u\n", nm, rD, rM, 8 * rot); in disInstr_THUMB_WRK()
20869 UInt rM = INSN1(3,0); in disInstr_THUMB_WRK() local
20870 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
20872 assign(res, binop(Iop_Mul32, getIRegT(rN), getIRegT(rM))); in disInstr_THUMB_WRK()
20874 DIP("mul.w r%u, r%u, r%u\n", rD, rN, rM); in disInstr_THUMB_WRK()
20884 UInt rM = INSN1(3,0); in disInstr_THUMB_WRK() local
20885 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
20890 assign(argR, getIRegT(rM)); in disInstr_THUMB_WRK()
20893 DIP("sdiv.w r%u, r%u, r%u\n", rD, rN, rM); in disInstr_THUMB_WRK()
20903 UInt rM = INSN1(3,0); in disInstr_THUMB_WRK() local
20904 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
20909 assign(argR, getIRegT(rM)); in disInstr_THUMB_WRK()
20912 DIP("udiv.w r%u, r%u, r%u\n", rD, rN, rM); in disInstr_THUMB_WRK()
20924 UInt rM = INSN1(3,0); in disInstr_THUMB_WRK() local
20926 && !isBadRegT(rN) && !isBadRegT(rM) && rDlo != rDhi) { in disInstr_THUMB_WRK()
20929 getIRegT(rN), getIRegT(rM))); in disInstr_THUMB_WRK()
20933 isU ? 'u' : 's', rDlo, rDhi, rN, rM); in disInstr_THUMB_WRK()
20945 UInt rM = INSN1(3,0); in disInstr_THUMB_WRK() local
20947 && !isBadRegT(rM) && !isBadRegT(rA)) { in disInstr_THUMB_WRK()
20953 binop(Iop_Mul32, getIRegT(rN), getIRegT(rM)))); in disInstr_THUMB_WRK()
20956 isMLA ? "mla" : "mls", rD, rN, rM, rA); in disInstr_THUMB_WRK()
20986 UInt rM = INSN1(3,0); in disInstr_THUMB_WRK() local
20988 && !isBadRegT(rM) && rDhi != rDlo) { in disInstr_THUMB_WRK()
20997 assign( argL, getIRegT(rM)); in disInstr_THUMB_WRK()
21008 isS ? 's' : 'u', rDlo, rDhi, rN, rM); in disInstr_THUMB_WRK()
21018 UInt rM = INSN1(3,0); in disInstr_THUMB_WRK() local
21020 && !isBadRegT(rM) && rDhi != rDlo) { in disInstr_THUMB_WRK()
21029 assign( argM, getIRegT(rM) ); in disInstr_THUMB_WRK()
21042 DIP("umaal r%u, r%u, r%u, r%u\n", rDlo, rDhi, rN, rM); in disInstr_THUMB_WRK()
21054 UInt rM = INSN1(3,0); in disInstr_THUMB_WRK() local
21056 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
21060 binop(Iop_MullS32, getIRegT(rN), getIRegT(rM)), in disInstr_THUMB_WRK()
21064 bitR ? "r" : "", rD, rN, rM); in disInstr_THUMB_WRK()
21076 UInt rM = INSN1(3,0); in disInstr_THUMB_WRK() local
21078 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM) && (rA != 13)) { in disInstr_THUMB_WRK()
21084 binop(Iop_MullS32, getIRegT(rN), getIRegT(rM))), in disInstr_THUMB_WRK()
21088 bitR ? "r" : "", rD, rN, rM, rA); in disInstr_THUMB_WRK()
21162 UInt rM = INSN1(3,0); in disInstr_THUMB_WRK() local
21164 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
21168 assign(srcR, getIRegT(rM)); in disInstr_THUMB_WRK()
21177 isU ? 'u' : 's', rD, rN, rM, rot); in disInstr_THUMB_WRK()
21191 UInt rM = INSN1(3,0); in disInstr_THUMB_WRK() local
21193 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
21197 assign(srcR, getIRegT(rM)); in disInstr_THUMB_WRK()
21206 isU ? 'u' : 's', rD, rN, rM, rot); in disInstr_THUMB_WRK()
21548 UInt rM = INSN1(3,0); in disInstr_THUMB_WRK() local
21551 if (!isBadRegT(rM)) { in disInstr_THUMB_WRK()
21552 DIP("pld%s [r%u, r%u, lsl %d]\n", bW ? "w" : "", rN, rM, imm2); in disInstr_THUMB_WRK()