Lines Matching refs:rN
2376 IRExpr* mk_EA_reg_plusminus_imm12 ( UInt rN, UInt bU, UInt imm12, in mk_EA_reg_plusminus_imm12() argument
2379 vassert(rN < 16); in mk_EA_reg_plusminus_imm12()
2383 DIS(buf, "[r%u, #%c%u]", rN, opChar, imm12); in mk_EA_reg_plusminus_imm12()
2386 getIRegA(rN), in mk_EA_reg_plusminus_imm12()
2395 IRExpr* mk_EA_reg_plusminus_shifted_reg ( UInt rN, UInt bU, UInt rM, in mk_EA_reg_plusminus_shifted_reg() argument
2399 vassert(rN < 16); in mk_EA_reg_plusminus_shifted_reg()
2410 DIS(buf, "[r%u, %c r%u LSL #%u]", rN, opChar, rM, imm5); in mk_EA_reg_plusminus_shifted_reg()
2420 rN, opChar, rM, imm5 == 0 ? 32 : imm5); in mk_EA_reg_plusminus_shifted_reg()
2432 rN, opChar, rM, imm5 == 0 ? 32 : imm5); in mk_EA_reg_plusminus_shifted_reg()
2443 DIS(buf, "[r%u, %cr%u, RRX]", rN, opChar, rM); in mk_EA_reg_plusminus_shifted_reg()
2451 DIS(buf, "[r%u, %cr%u, ROR #%u]", rN, opChar, rM, imm5); in mk_EA_reg_plusminus_shifted_reg()
2459 getIRegA(rN), index); in mk_EA_reg_plusminus_shifted_reg()
2465 IRExpr* mk_EA_reg_plusminus_imm8 ( UInt rN, UInt bU, UInt imm8, in mk_EA_reg_plusminus_imm8() argument
2468 vassert(rN < 16); in mk_EA_reg_plusminus_imm8()
2472 DIS(buf, "[r%u, #%c%u]", rN, opChar, imm8); in mk_EA_reg_plusminus_imm8()
2475 getIRegA(rN), in mk_EA_reg_plusminus_imm8()
2482 IRExpr* mk_EA_reg_plusminus_reg ( UInt rN, UInt bU, UInt rM, in mk_EA_reg_plusminus_reg() argument
2485 vassert(rN < 16); in mk_EA_reg_plusminus_reg()
2490 DIS(buf, "[r%u, %c r%u]", rN, opChar, rM); in mk_EA_reg_plusminus_reg()
2492 getIRegA(rN), index); in mk_EA_reg_plusminus_reg()
7956 UInt rN = INSN(19,16); in dis_neon_load_or_store() local
7974 assign(initialRn, isT ? getIRegT(rN) : getIRegA(rN)); in dis_neon_load_or_store()
8018 DIP("}, [r%u]", rN); in dis_neon_load_or_store()
8115 DIP("}, [r%u]", rN); in dis_neon_load_or_store()
8129 putIRegT(rN, e, IRTemp_INVALID); in dis_neon_load_or_store()
8131 putIRegA(rN, e, IRTemp_INVALID, Ijk_Boring); in dis_neon_load_or_store()
8137 putIRegT(rN, e, IRTemp_INVALID); in dis_neon_load_or_store()
8139 putIRegA(rN, e, IRTemp_INVALID, Ijk_Boring); in dis_neon_load_or_store()
8209 putIRegT(rN, e, IRTemp_INVALID); in dis_neon_load_or_store()
8211 putIRegA(rN, e, IRTemp_INVALID, Ijk_Boring); in dis_neon_load_or_store()
8217 putIRegT(rN, e, IRTemp_INVALID); in dis_neon_load_or_store()
8219 putIRegA(rN, e, IRTemp_INVALID, Ijk_Boring); in dis_neon_load_or_store()
8235 DIP("}, [r%u]", rN); in dis_neon_load_or_store()
10223 UInt rD = 99, rN = 99, rM = 99, rA = 99; in decode_V6MEDIA_instruction() local
10228 rN = INSNT0(3,0); in decode_V6MEDIA_instruction()
10232 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM) && rA != 13) in decode_V6MEDIA_instruction()
10241 rN = INSNA(3,0); in decode_V6MEDIA_instruction()
10242 if (rD != 15 && rN != 15 && rM != 15 /* but rA can be 15 */) in decode_V6MEDIA_instruction()
10249 IRExpr* rNe = isT ? getIRegT(rN) : getIRegA(rN); in decode_V6MEDIA_instruction()
10263 nCC(conq), rD, rN, rM ); in decode_V6MEDIA_instruction()
10266 nCC(conq), rD, rN, rM, rA ); in decode_V6MEDIA_instruction()
10693 UInt rN, /* base reg */ in mk_ldm_stm() argument
10713 assign(oldRnT, arm ? getIRegA(rN) : getIRegT(rN)); in mk_ldm_stm()
10743 putIRegA( rN, e, IRTemp_INVALID, Ijk_Boring ); in mk_ldm_stm()
10745 putIRegT( rN, e, IRTemp_INVALID ); in mk_ldm_stm()
10764 vassert(r != rN); in mk_ldm_stm()
10777 if (bW == 0 && (regList & (1<<rN)) != 0) { in mk_ldm_stm()
10782 vex_printf("\nREG_LIST_PRE: (rN=%d)\n", rN); in mk_ldm_stm()
10790 if (xReg[i] == rN) in mk_ldm_stm()
10833 if (rN == 13 && bL == 1 && bINC && !bBEFORE && bW == 1) { in mk_ldm_stm()
10857 r == rN ? mkexpr(oldRnT) in mk_ldm_stm()
10867 putIRegA( rN, e, IRTemp_INVALID, Ijk_Boring ); in mk_ldm_stm()
10869 putIRegT( rN, e, IRTemp_INVALID ); in mk_ldm_stm()
10961 UInt rN = INSN(19,16); in decode_CP10_CP11_instruction() local
10979 if (rN == 15 && (summary == 2 || summary == 3 || isT)) in decode_CP10_CP11_instruction()
11004 assign(rnT, align4if(isT ? getIRegT(rN) : getIRegA(rN), in decode_CP10_CP11_instruction()
11005 rN == 15)); in decode_CP10_CP11_instruction()
11025 putIRegT(rN, mkexpr(rnTnew), IRTemp_INVALID); in decode_CP10_CP11_instruction()
11027 putIRegA(rN, mkexpr(rnTnew), IRTemp_INVALID, Ijk_Boring); in decode_CP10_CP11_instruction()
11045 putIRegT(rN, mkexpr(rnTnew), IRTemp_INVALID); in decode_CP10_CP11_instruction()
11047 putIRegA(rN, mkexpr(rnTnew), IRTemp_INVALID, Ijk_Boring); in decode_CP10_CP11_instruction()
11053 nm, nCC(conq), rN, dD, dD + nRegs - 1); in decode_CP10_CP11_instruction()
11056 nm, nCC(conq), rN, dD, dD + nRegs - 1); in decode_CP10_CP11_instruction()
11059 nm, nCC(conq), rN, dD, dD + nRegs - 1); in decode_CP10_CP11_instruction()
11098 UInt rN = INSN(19,16); in decode_CP10_CP11_instruction() local
11116 if (rN == 15 && (summary == 2 || summary == 3 || isT)) in decode_CP10_CP11_instruction()
11141 assign(rnT, align4if(isT ? getIRegT(rN) : getIRegA(rN), in decode_CP10_CP11_instruction()
11142 rN == 15)); in decode_CP10_CP11_instruction()
11162 putIRegT(rN, mkexpr(rnTnew), IRTemp_INVALID); in decode_CP10_CP11_instruction()
11164 putIRegA(rN, mkexpr(rnTnew), IRTemp_INVALID, Ijk_Boring); in decode_CP10_CP11_instruction()
11182 putIRegT(rN, mkexpr(rnTnew), IRTemp_INVALID); in decode_CP10_CP11_instruction()
11184 putIRegA(rN, mkexpr(rnTnew), IRTemp_INVALID, Ijk_Boring); in decode_CP10_CP11_instruction()
11190 nm, nCC(conq), rN, dD, dD + nRegs - 1); in decode_CP10_CP11_instruction()
11193 nm, nCC(conq), rN, dD, dD + nRegs - 1); in decode_CP10_CP11_instruction()
11196 nm, nCC(conq), rN, dD, dD + nRegs - 1); in decode_CP10_CP11_instruction()
11257 UInt rN = INSN(19,16); /* hi32 */ in decode_CP10_CP11_instruction() local
11258 if (rD == 15 || rN == 15 || (isT && (rD == 13 || rN == 13))) { in decode_CP10_CP11_instruction()
11264 isT ? getIRegT(rN) : getIRegA(rN), in decode_CP10_CP11_instruction()
11267 DIP("vmov%s d%u, r%u, r%u\n", nCC(conq), dM, rD, rN); in decode_CP10_CP11_instruction()
11277 UInt rN = INSN(19,16); /* hi32 */ in decode_CP10_CP11_instruction() local
11278 if (rD == 15 || rN == 15 || (isT && (rD == 13 || rN == 13)) in decode_CP10_CP11_instruction()
11279 || rD == rN) { in decode_CP10_CP11_instruction()
11287 putIRegT(rN, hi32, condT); in decode_CP10_CP11_instruction()
11290 putIRegA(rN, hi32, condT, Ijk_Boring); in decode_CP10_CP11_instruction()
11293 DIP("vmov%s r%u, r%u, d%u\n", nCC(conq), rD, rN, dM); in decode_CP10_CP11_instruction()
11302 UInt rN = INSN(15,12); in decode_CP10_CP11_instruction() local
11304 if (rM == 15 || rN == 15 || (isT && (rM == 13 || rN == 13)) in decode_CP10_CP11_instruction()
11309 unop(Iop_ReinterpI32asF32, isT ? getIRegT(rN) : getIRegA(rN)), in decode_CP10_CP11_instruction()
11315 nCC(conq), sD, sD + 1, rN, rM); in decode_CP10_CP11_instruction()
11323 UInt rN = INSN(15,12); in decode_CP10_CP11_instruction() local
11325 if (rM == 15 || rN == 15 || (isT && (rM == 13 || rN == 13)) in decode_CP10_CP11_instruction()
11326 || sD == 31 || rN == rM) { in decode_CP10_CP11_instruction()
11332 putIRegT(rN, res0, condT); in decode_CP10_CP11_instruction()
11335 putIRegA(rN, res0, condT, Ijk_Boring); in decode_CP10_CP11_instruction()
11339 nCC(conq), rN, rM, sD, sD + 1); in decode_CP10_CP11_instruction()
11393 UInt rN = (INSN(7,7) << 4) | INSN(19,16); in decode_CP10_CP11_instruction() local
11405 getDRegI64(rN), in decode_CP10_CP11_instruction()
11412 rT, rN, index); in decode_CP10_CP11_instruction()
11419 getDRegI64(rN), in decode_CP10_CP11_instruction()
11426 rT, rN, index); in decode_CP10_CP11_instruction()
11431 IRExpr* e = binop(Iop_GetElem32x2, getDRegI64(rN), mkU8(index)); in decode_CP10_CP11_instruction()
11436 DIP("vmov%s.32 r%u, d%u[%u]\n", nCC(conq), rT, rN, index); in decode_CP10_CP11_instruction()
11534 UInt rN = INSN(19,16); in decode_CP10_CP11_instruction() local
11548 align4if(isT ? getIRegT(rN) : getIRegA(rN), in decode_CP10_CP11_instruction()
11549 rN == 15), in decode_CP10_CP11_instruction()
11557 bL ? "ld" : "st", nCC(conq), dD, rN, in decode_CP10_CP11_instruction()
11847 UInt rN = INSN(19,16); in decode_CP10_CP11_instruction() local
11865 if (rN == 15 && (summary == 2 || summary == 3 || isT)) in decode_CP10_CP11_instruction()
11890 assign(rnT, align4if(isT ? getIRegT(rN) : getIRegA(rN), in decode_CP10_CP11_instruction()
11891 rN == 15)); in decode_CP10_CP11_instruction()
11911 putIRegT(rN, mkexpr(rnTnew), IRTemp_INVALID); in decode_CP10_CP11_instruction()
11913 putIRegA(rN, mkexpr(rnTnew), IRTemp_INVALID, Ijk_Boring); in decode_CP10_CP11_instruction()
11931 putIRegT(rN, mkexpr(rnTnew), IRTemp_INVALID); in decode_CP10_CP11_instruction()
11933 putIRegA(rN, mkexpr(rnTnew), IRTemp_INVALID, Ijk_Boring); in decode_CP10_CP11_instruction()
11939 nm, nCC(conq), rN, fD, fD + nRegs - 1); in decode_CP10_CP11_instruction()
11942 nm, nCC(conq), rN, fD, fD + nRegs - 1); in decode_CP10_CP11_instruction()
11945 nm, nCC(conq), rN, fD, fD + nRegs - 1); in decode_CP10_CP11_instruction()
11996 UInt rN = INSN(19,16); in decode_CP10_CP11_instruction() local
12010 align4if(isT ? getIRegT(rN) : getIRegA(rN), in decode_CP10_CP11_instruction()
12011 rN == 15), in decode_CP10_CP11_instruction()
12019 bL ? "ld" : "st", nCC(conq), fD, rN, in decode_CP10_CP11_instruction()
12448 UInt rN = INSN(19,16); in decode_NV_instruction() local
12451 DIP("pld [r%u, #%c%u]\n", rN, bU ? '+' : '-', imm12); in decode_NV_instruction()
12458 UInt rN = INSN(19,16); in decode_NV_instruction() local
12464 IRExpr* eaE = mk_EA_reg_plusminus_shifted_reg(rN, bU, rM, in decode_NV_instruction()
12481 UInt rN = INSN(19,16); in decode_NV_instruction() local
12484 DIP("pli [r%u, #%c%u]\n", rN, bU ? '+' : '-', imm12); in decode_NV_instruction()
12733 UInt rN = (insn >> 16) & 0xF; /* 19:16 */ in disInstr_ARM_WRK() local
12772 assign(rNt, getIRegA(rN)); in disInstr_ARM_WRK()
12834 name, nCC(INSN_COND), bitS ? "s" : "", rD, rN, dis_buf ); in disInstr_ARM_WRK()
12843 if (rN != 0) in disInstr_ARM_WRK()
12888 assign(rNt, getIRegA(rN)); in disInstr_ARM_WRK()
12901 nCC(INSN_COND), rN, dis_buf ); in disInstr_ARM_WRK()
12914 assign(rNt, getIRegA(rN)); in disInstr_ARM_WRK()
12932 nCC(INSN_COND), rN, dis_buf ); in disInstr_ARM_WRK()
12946 assign(rNt, getIRegA(rN)); in disInstr_ARM_WRK()
13008 name, nCC(INSN_COND), bitS ? "s" : "", rD, rN, dis_buf ); in disInstr_ARM_WRK()
13066 { UInt rN = (insn >> 16) & 0xF; /* 19:16 */ in disInstr_ARM_WRK() local
13086 if (rN == 15) goto after_load_store_ubyte_or_word; in disInstr_ARM_WRK()
13087 if (bL == 1 && rN == rD) goto after_load_store_ubyte_or_word; in disInstr_ARM_WRK()
13091 if (rN == 15) goto after_load_store_ubyte_or_word; in disInstr_ARM_WRK()
13092 if (rN == rM) goto after_load_store_ubyte_or_word; in disInstr_ARM_WRK()
13093 if (bL == 1 && rN == rD) goto after_load_store_ubyte_or_word; in disInstr_ARM_WRK()
13113 eaE = mk_EA_reg_plusminus_imm12( rN, bU, imm12, dis_buf ); in disInstr_ARM_WRK()
13116 eaE = mk_EA_reg_plusminus_shifted_reg( rN, bU, rM, sh2, imm5, in disInstr_ARM_WRK()
13126 assign(rnT, getIRegA(rN)); in disInstr_ARM_WRK()
13153 putIRegA( rN, mkexpr(eaT), IRTemp_INVALID, Ijk_Boring ); in disInstr_ARM_WRK()
13178 if (rN == 13 && summary == (3 | 16) && bB == 0) { in disInstr_ARM_WRK()
13194 vassert(rD != rN); /* since we just wrote rD */ in disInstr_ARM_WRK()
13195 putIRegA( rN, mkexpr(eaT), IRTemp_INVALID, Ijk_Boring ); in disInstr_ARM_WRK()
13288 { UInt rN = (insn >> 16) & 0xF; /* 19:16 */ in disInstr_ARM_WRK() local
13319 if (rN == 15) goto after_load_store_sbyte_or_hword; in disInstr_ARM_WRK()
13320 if (bL == 1 && rN == rD) goto after_load_store_sbyte_or_hword; in disInstr_ARM_WRK()
13324 if (rN == 15) goto after_load_store_sbyte_or_hword; in disInstr_ARM_WRK()
13325 if (rN == rM) goto after_load_store_sbyte_or_hword; in disInstr_ARM_WRK()
13326 if (bL == 1 && rN == rD) goto after_load_store_sbyte_or_hword; in disInstr_ARM_WRK()
13346 eaE = mk_EA_reg_plusminus_imm8( rN, bU, imm8, dis_buf ); in disInstr_ARM_WRK()
13349 eaE = mk_EA_reg_plusminus_reg( rN, bU, rM, dis_buf ); in disInstr_ARM_WRK()
13358 assign(rnT, getIRegA(rN)); in disInstr_ARM_WRK()
13402 vassert(rD != rN); /* since we just wrote rD */ in disInstr_ARM_WRK()
13403 putIRegA( rN, mkexpr(eaT), IRTemp_INVALID, Ijk_Boring ); in disInstr_ARM_WRK()
13455 UInt rN = (insn >> 16) & 0xF; in disInstr_ARM_WRK() local
13463 if (rN == 15) goto after_load_store_multiple; in disInstr_ARM_WRK()
13470 if (bW == 1 && bL == 1 && ((1 << rN) & regList) > 0) in disInstr_ARM_WRK()
13482 mk_ldm_stm( True/*arm*/, rN, bINC, bBEFORE, bW, bL, regList ); in disInstr_ARM_WRK()
13487 rN, bW ? "!" : "", regList); in disInstr_ARM_WRK()
13696 UInt rN = INSN(3,0); in disInstr_ARM_WRK() local
13697 if (rD == 15 || rM == 15 || rN == 15) { in disInstr_ARM_WRK()
13703 assign(argL, getIRegA(rN)); in disInstr_ARM_WRK()
13707 DIP("sdiv r%u, r%u, r%u\n", rD, rN, rM); in disInstr_ARM_WRK()
13718 UInt rN = INSN(3,0); in disInstr_ARM_WRK() local
13719 if (rD == 15 || rM == 15 || rN == 15) { in disInstr_ARM_WRK()
13725 assign(argL, getIRegA(rN)); in disInstr_ARM_WRK()
13729 DIP("udiv r%u, r%u, r%u\n", rD, rN, rM); in disInstr_ARM_WRK()
13740 UInt rN = INSN(15,12); in disInstr_ARM_WRK() local
13748 if (rD == 15 || rM == 15 || rS == 15 || rN == 15) { in disInstr_ARM_WRK()
13759 assign( argP, getIRegA(rN)); in disInstr_ARM_WRK()
13781 nCC(INSN_COND), rD, rM, rS, rN); in disInstr_ARM_WRK()
13915 UInt rN = INSN(3,0); in disInstr_ARM_WRK() local
13918 if (rN != 15 && (write_nzcvq || write_ge)) { in disInstr_ARM_WRK()
13920 assign(rNt, getIRegA(rN)); in disInstr_ARM_WRK()
13923 write_nzcvq ? "f" : "", write_ge ? "g" : "", rN); in disInstr_ARM_WRK()
13965 UInt rN = INSN(19,16); in disInstr_ARM_WRK() local
13974 if (rD == 15 || rN == 15 || rM == 15 || rN == rM || rN == rD) { in disInstr_ARM_WRK()
13983 assign(tRn, getIRegA(rN)); in disInstr_ARM_WRK()
14007 isB ? "b" : "", nCC(INSN_COND), rD, rM, rN); in disInstr_ARM_WRK()
14022 UInt rN = INSN(19,16); in disInstr_ARM_WRK() local
14035 if (rT == 15 || rN == 15) in disInstr_ARM_WRK()
14039 if ((rT & 1) == 1 || rT == 14 || rN == 15) in disInstr_ARM_WRK()
14052 stmt( IRStmt_LLSC(Iend_LE, res, getIRegA(rN), in disInstr_ARM_WRK()
14061 nm, nCC(INSN_COND), rT+0, rT+1, rN); in disInstr_ARM_WRK()
14066 DIP("ldrex%s%s r%u, [r%u]\n", nm, nCC(INSN_COND), rT, rN); in disInstr_ARM_WRK()
14076 UInt rN = INSN(19,16); in disInstr_ARM_WRK() local
14090 if (rD == 15 || rN == 15 || rT == 15 in disInstr_ARM_WRK()
14091 || rD == rN || rD == rT) in disInstr_ARM_WRK()
14095 if (rD == 15 || (rT & 1) == 1 || rT == 14 || rN == 15 in disInstr_ARM_WRK()
14096 || rD == rN || rD == rT || rD == rT+1) in disInstr_ARM_WRK()
14117 stmt( IRStmt_LLSC(Iend_LE, resSC1, getIRegA(rN), mkexpr(data)) ); in disInstr_ARM_WRK()
14129 nm, nCC(INSN_COND), rD, rT, rT+1, rN); in disInstr_ARM_WRK()
14132 nm, nCC(INSN_COND), rD, rT, rN); in disInstr_ARM_WRK()
14238 UInt rN = INSN(3,0); in disInstr_ARM_WRK() local
14252 assign(src, rN == 15 ? mkU32(0) : getIRegA(rN)); in disInstr_ARM_WRK()
14266 if (rN == 15) { in disInstr_ARM_WRK()
14271 nCC(INSN_COND), rD, rN, lsb, msb-lsb+1); in disInstr_ARM_WRK()
14282 UInt rN = INSN(3,0); in disInstr_ARM_WRK() local
14287 if (rD == 15 || rN == 15 || msb >= 32) { in disInstr_ARM_WRK()
14297 assign(src, getIRegA(rN)); in disInstr_ARM_WRK()
14309 nCC(INSN_COND), rD, rN, lsb, wm1 + 1); in disInstr_ARM_WRK()
14364 { UInt rN = (insn >> 16) & 0xF; /* 19:16 */ in disInstr_ARM_WRK() local
14389 if (rN == 15) goto after_load_store_doubleword; in disInstr_ARM_WRK()
14390 if (bS == 0 && (rN == rD || rN == rD+1)) in disInstr_ARM_WRK()
14395 if (rN == 15) goto after_load_store_doubleword; in disInstr_ARM_WRK()
14396 if (rN == rM) goto after_load_store_doubleword; in disInstr_ARM_WRK()
14397 if (bS == 0 && (rN == rD || rN == rD+1)) in disInstr_ARM_WRK()
14418 eaE = mk_EA_reg_plusminus_imm8( rN, bU, imm8, dis_buf ); in disInstr_ARM_WRK()
14421 eaE = mk_EA_reg_plusminus_reg( rN, bU, rM, dis_buf ); in disInstr_ARM_WRK()
14430 assign(rnT, getIRegA(rN)); in disInstr_ARM_WRK()
14468 vassert(rD+0 != rN); /* since we just wrote rD+0 */ in disInstr_ARM_WRK()
14469 vassert(rD+1 != rN); /* since we just wrote rD+1 */ in disInstr_ARM_WRK()
14471 putIRegA( rN, mkexpr(eaT), IRTemp_INVALID, Ijk_Boring ); in disInstr_ARM_WRK()
14496 UInt rN = INSN(19,16); in disInstr_ARM_WRK() local
14501 if (rN == 15/*it's {S,U}XTB*/ || rD == 15 || rM == 15) { in disInstr_ARM_WRK()
14508 assign(srcL, getIRegA(rN)); in disInstr_ARM_WRK()
14516 isU ? 'u' : 's', nCC(INSN_COND), rD, rN, rM, rot); in disInstr_ARM_WRK()
14526 UInt rN = INSN(19,16); in disInstr_ARM_WRK() local
14531 if (rN == 15/*it's {S,U}XTH*/ || rD == 15 || rM == 15) { in disInstr_ARM_WRK()
14538 assign(srcL, getIRegA(rN)); in disInstr_ARM_WRK()
14547 isU ? 'u' : 's', nCC(INSN_COND), rD, rN, rM, rot); in disInstr_ARM_WRK()
14591 UInt rN = INSN(3,0); in disInstr_ARM_WRK() local
14592 if (rD != 15 && rM != 15 && rN != 15) { in disInstr_ARM_WRK()
14596 binop(Iop_MullS32, getIRegA(rN), getIRegA(rM)), in disInstr_ARM_WRK()
14600 nCC(INSN_COND), bitR ? "r" : "", rD, rN, rM); in disInstr_ARM_WRK()
14613 UInt rN = INSN(3,0); in disInstr_ARM_WRK() local
14614 if (rD != 15 && rM != 15 && rN != 15) { in disInstr_ARM_WRK()
14620 binop(Iop_MullS32, getIRegA(rN), getIRegA(rM))), in disInstr_ARM_WRK()
14624 nCC(INSN_COND), bitR ? "r" : "", rD, rN, rM, rA); in disInstr_ARM_WRK()
15286 UInt rN = INSN0(2,0); in disInstr_THUMB_WRK() local
15290 assign( argL, getIRegT(rN) ); in disInstr_THUMB_WRK()
15295 DIP("%s r%u, r%u\n", isCMN ? "cmn" : "cmp", rN, rM); in disInstr_THUMB_WRK()
15301 UInt rN = INSN0(2,0); in disInstr_THUMB_WRK() local
15308 assign( res, binop(Iop_And32, getIRegT(rN), getIRegT(rM)) ); in disInstr_THUMB_WRK()
15311 DIP("tst r%u, r%u\n", rN, rM); in disInstr_THUMB_WRK()
15718 UInt rN = (h1 << 3) | INSN0(2,0); in disInstr_THUMB_WRK() local
15722 assign( argL, getIRegT(rN) ); in disInstr_THUMB_WRK()
15726 DIP("cmphi r%u, r%u\n", rN, rM); in disInstr_THUMB_WRK()
15794 UInt rN = INSN0(2,0); in disInstr_THUMB_WRK() local
15801 getIRegT(rN), mkU32(0)) ); in disInstr_THUMB_WRK()
15812 DIP("cb%s r%u, 0x%x\n", bOP ? "nz" : "z", rN, dst - 1); in disInstr_THUMB_WRK()
15975 UInt rN = INSN0(5,3); in disInstr_THUMB_WRK() local
15980 assign( argL, getIRegT(rN) ); in disInstr_THUMB_WRK()
15987 DIP("%s r%u, r%u, #%u\n", isSub ? "subs" : "adds", rD, rN, uimm3); in disInstr_THUMB_WRK()
15996 UInt rN = INSN0(5,3); in disInstr_THUMB_WRK() local
16001 assign( argL, getIRegT(rN) ); in disInstr_THUMB_WRK()
16008 DIP("%s r%u, r%u, r%u\n", isSub ? "subs" : "adds", rD, rN, rM); in disInstr_THUMB_WRK()
16018 UInt rN = INSN0(5,3); in disInstr_THUMB_WRK() local
16026 IRExpr* ea = binop(Iop_Add32, getIRegT(rN), getIRegT(rM)); in disInstr_THUMB_WRK()
16035 DIP("%s r%u, [r%u, r%u]\n", isLD ? "ldr" : "str", rD, rN, rM); in disInstr_THUMB_WRK()
16045 UInt rN = INSN0(5,3); in disInstr_THUMB_WRK() local
16053 IRExpr* ea = binop(Iop_Add32, getIRegT(rN), getIRegT(rM)); in disInstr_THUMB_WRK()
16063 DIP("%sh r%u, [r%u, r%u]\n", isLD ? "ldr" : "str", rD, rN, rM); in disInstr_THUMB_WRK()
16071 UInt rN = INSN0(5,3); in disInstr_THUMB_WRK() local
16078 IRExpr* ea = binop(Iop_Add32, getIRegT(rN), getIRegT(rM)); in disInstr_THUMB_WRK()
16084 DIP("ldrsh r%u, [r%u, r%u]\n", rD, rN, rM); in disInstr_THUMB_WRK()
16092 UInt rN = INSN0(5,3); in disInstr_THUMB_WRK() local
16099 IRExpr* ea = binop(Iop_Add32, getIRegT(rN), getIRegT(rM)); in disInstr_THUMB_WRK()
16105 DIP("ldrsb r%u, [r%u, r%u]\n", rD, rN, rM); in disInstr_THUMB_WRK()
16115 UInt rN = INSN0(5,3); in disInstr_THUMB_WRK() local
16123 IRExpr* ea = binop(Iop_Add32, getIRegT(rN), getIRegT(rM)); in disInstr_THUMB_WRK()
16133 DIP("%sb r%u, [r%u, r%u]\n", isLD ? "ldr" : "str", rD, rN, rM); in disInstr_THUMB_WRK()
16152 UInt rN = INSN0(10,8); in disInstr_THUMB_WRK() local
16156 assign( argL, getIRegT(rN) ); in disInstr_THUMB_WRK()
16158 putIRegT( rN, binop(isSub ? Iop_Sub32 : Iop_Add32, in disInstr_THUMB_WRK()
16162 DIP("%s r%u, #%u\n", isSub ? "subs" : "adds", rN, uimm8); in disInstr_THUMB_WRK()
16192 UInt rN = INSN0(10,8); in disInstr_THUMB_WRK() local
16196 assign( argL, getIRegT(rN) ); in disInstr_THUMB_WRK()
16200 DIP("cmp r%u, #%u\n", rN, uimm8); in disInstr_THUMB_WRK()
16250 UInt rN = INSN0(5,3); in disInstr_THUMB_WRK() local
16258 IRExpr* ea = binop(Iop_Add32, getIRegT(rN), mkU32(imm5 * 4)); in disInstr_THUMB_WRK()
16267 DIP("%s r%u, [r%u, #%u]\n", isLD ? "ldr" : "str", rD, rN, imm5 * 4); in disInstr_THUMB_WRK()
16277 UInt rN = INSN0(5,3); in disInstr_THUMB_WRK() local
16285 IRExpr* ea = binop(Iop_Add32, getIRegT(rN), mkU32(imm5 * 2)); in disInstr_THUMB_WRK()
16295 DIP("%sh r%u, [r%u, #%u]\n", isLD ? "ldr" : "str", rD, rN, imm5 * 2); in disInstr_THUMB_WRK()
16305 UInt rN = INSN0(5,3); in disInstr_THUMB_WRK() local
16313 IRExpr* ea = binop(Iop_Add32, getIRegT(rN), mkU32(imm5)); in disInstr_THUMB_WRK()
16323 DIP("%sb r%u, [r%u, #%u]\n", isLD ? "ldr" : "str", rD, rN, imm5); in disInstr_THUMB_WRK()
16356 UInt rN = INSN0(10,8); in disInstr_THUMB_WRK() local
16367 assign(oldRn, getIRegT(rN)); in disInstr_THUMB_WRK()
16382 if (0 == (list & (1 << rN))) { in disInstr_THUMB_WRK()
16383 putIRegT(rN, in disInstr_THUMB_WRK()
16393 DIP("ldmia r%u!, {0x%04x}\n", rN, list); in disInstr_THUMB_WRK()
16402 UInt rN = INSN0(10,8); in disInstr_THUMB_WRK() local
16407 if (valid && 0 != (list & (1 << rN))) { in disInstr_THUMB_WRK()
16408 for (i = 0; i < rN; i++) { in disInstr_THUMB_WRK()
16421 assign(oldRn, getIRegT(rN)); in disInstr_THUMB_WRK()
16431 putIRegT(rN, in disInstr_THUMB_WRK()
16439 DIP("stmia r%u!, {0x%04x}\n", rN, list); in disInstr_THUMB_WRK()
16641 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
16663 if (rN == 15) valid = False; in disInstr_THUMB_WRK()
16666 if (bW == 1 && (regList & (1<<rN))) valid = False; in disInstr_THUMB_WRK()
16670 if (rN == 15) valid = False; in disInstr_THUMB_WRK()
16672 if (bW == 1 && (regList & (1<<rN))) valid = False; in disInstr_THUMB_WRK()
16688 mk_ldm_stm(False/*!arm*/, rN, bINC, bBEFORE, bW, bL, regList); in disInstr_THUMB_WRK()
16700 rN, bW ? "!" : "", regList); in disInstr_THUMB_WRK()
16711 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
16713 Bool valid = !isBadRegT(rN) && !isBadRegT(rD); in disInstr_THUMB_WRK()
16715 if (!valid && rD <= 14 && rN == 13) in disInstr_THUMB_WRK()
16722 assign(argL, getIRegT(rN)); in disInstr_THUMB_WRK()
16729 bS == 1 ? "s" : "", rD, rN, imm32); in disInstr_THUMB_WRK()
16738 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
16740 Bool valid = !isBadRegT(rN) && !isBadRegT(rD); in disInstr_THUMB_WRK()
16742 if (!valid && rD <= 14 && rN == 13) in disInstr_THUMB_WRK()
16749 assign(argL, getIRegT(rN)); in disInstr_THUMB_WRK()
16753 DIP("addw r%u, r%u, #%u\n", rD, rN, imm12); in disInstr_THUMB_WRK()
16765 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
16766 if (rN != 15) { in disInstr_THUMB_WRK()
16771 assign(argL, getIRegT(rN)); in disInstr_THUMB_WRK()
16775 DIP("%s.w r%u, #%u\n", isCMN ? "cmn" : "cmp", rN, imm32); in disInstr_THUMB_WRK()
16787 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
16788 if (!isBadRegT(rN)) { // yes, really, it's inconsistent with CMP.W in disInstr_THUMB_WRK()
16797 assign(argL, getIRegT(rN)); in disInstr_THUMB_WRK()
16806 DIP("%s.w r%u, #%u\n", isTST ? "tst" : "teq", rN, imm32); in disInstr_THUMB_WRK()
16819 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
16821 Bool valid = !isBadRegT(rN) && !isBadRegT(rD); in disInstr_THUMB_WRK()
16824 if (!valid && !isRSB && rN == 13 && rD != 15) in disInstr_THUMB_WRK()
16831 assign(argL, getIRegT(rN)); in disInstr_THUMB_WRK()
16844 isRSB ? "rsb" : "sub", bS == 1 ? "s" : "", rD, rN, imm32); in disInstr_THUMB_WRK()
16853 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
16855 Bool valid = !isBadRegT(rN) && !isBadRegT(rD); in disInstr_THUMB_WRK()
16857 if (!valid && rD == 13 && rN == 13) in disInstr_THUMB_WRK()
16864 assign(argL, getIRegT(rN)); in disInstr_THUMB_WRK()
16868 DIP("subw r%u, r%u, #%u\n", rD, rN, imm12); in disInstr_THUMB_WRK()
16882 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
16884 if (!isBadRegT(rN) && !isBadRegT(rD)) { in disInstr_THUMB_WRK()
16890 assign(argL, getIRegT(rN)); in disInstr_THUMB_WRK()
16921 nm, bS == 1 ? "s" : "", rD, rN, imm32); in disInstr_THUMB_WRK()
16938 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
16940 if (!isBadRegT(rN) && !isBadRegT(rD)) { in disInstr_THUMB_WRK()
16959 assign(argL, getIRegT(rN)); in disInstr_THUMB_WRK()
16974 nm, bS == 1 ? "s" : "", rD, rN, imm32); in disInstr_THUMB_WRK()
16987 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
16994 Bool valid = !isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM); in disInstr_THUMB_WRK()
16998 && rD != 15 && rN == 13 && imm5 <= 3 && how == 0) { in disInstr_THUMB_WRK()
17004 && rD != 15 && rN == 13 && imm5 == 0 && how == 0) { in disInstr_THUMB_WRK()
17020 assign(argL, getIRegT(rN)); in disInstr_THUMB_WRK()
17053 nm, bS ? "s" : "", rD, rN, dis_buf); in disInstr_THUMB_WRK()
17066 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
17069 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
17075 assign(argL, getIRegT(rN)); in disInstr_THUMB_WRK()
17118 nm, bS ? "s" : "", rD, rN, dis_buf); in disInstr_THUMB_WRK()
17135 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
17138 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
17157 assign(rNt, getIRegT(rN)); in disInstr_THUMB_WRK()
17187 nm, bS ? "s" : "", rD, rN, dis_buf); in disInstr_THUMB_WRK()
17200 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
17204 Bool valid = !isBadRegT(rN) && !isBadRegT(rM) && !isBadRegT(rD); in disInstr_THUMB_WRK()
17213 assign(rNt, getIRegT(rN)); in disInstr_THUMB_WRK()
17217 rNt, how, rMt, rN, rM in disInstr_THUMB_WRK()
17227 nm, bS ? "s" : "", rD, rN, rM); in disInstr_THUMB_WRK()
17237 UInt rN = INSN1(3,0); in disInstr_THUMB_WRK() local
17238 if (!isBadRegT(rD) && !isBadRegT(rN)) { in disInstr_THUMB_WRK()
17245 assign(rNt, getIRegT(rN)); in disInstr_THUMB_WRK()
17250 dis_buf, &oldRn, bS ? &oldC : NULL, rNt, how, imm5, rN in disInstr_THUMB_WRK()
17276 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
17278 if (!isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
17285 assign(argL, getIRegT(rN)); in disInstr_THUMB_WRK()
17305 DIP("%s.w r%u, %s\n", isTST ? "tst" : "teq", rN, dis_buf); in disInstr_THUMB_WRK()
17317 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
17319 if (!isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
17325 assign(argL, getIRegT(rN)); in disInstr_THUMB_WRK()
17338 DIP("%s.w r%u, %s\n", isCMN ? "cmn" : "cmp", rN, dis_buf); in disInstr_THUMB_WRK()
17445 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
17458 if (rN == 15) in disInstr_THUMB_WRK()
17460 if (bW == 1 && rN == rT) in disInstr_THUMB_WRK()
17484 assign(preAddr, getIRegT(rN)); in disInstr_THUMB_WRK()
17510 vassert(rN != rT); // assured by validity check above in disInstr_THUMB_WRK()
17511 putIRegT(rN, mkexpr(postAddr), IRTemp_INVALID); in disInstr_THUMB_WRK()
17562 vassert(rN != rT); // assured by validity check above in disInstr_THUMB_WRK()
17563 putIRegT(rN, mkexpr(postAddr), IRTemp_INVALID); in disInstr_THUMB_WRK()
17568 vassert(rN != 15); // assured by validity check above in disInstr_THUMB_WRK()
17577 nm, rT, rN, bU ? '+' : '-', imm8); in disInstr_THUMB_WRK()
17581 nm, rT, rN, bU ? '+' : '-', imm8); in disInstr_THUMB_WRK()
17586 nm, rT, rN, bU ? '+' : '-', imm8); in disInstr_THUMB_WRK()
17629 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
17638 if (rN == 15 || isBadRegT(rT) || isBadRegT(rM)) in disInstr_THUMB_WRK()
17642 if (rN == 15 || isBadRegT(rM)) in disInstr_THUMB_WRK()
17665 getIRegT(rN), in disInstr_THUMB_WRK()
17725 nm, rT, rN, rM, imm2); in disInstr_THUMB_WRK()
17766 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
17774 if (rN == 15 || isBadRegT(rT)) in disInstr_THUMB_WRK()
17779 if (rN == 15 || rT == 15) in disInstr_THUMB_WRK()
17803 if (rN == 15) { in disInstr_THUMB_WRK()
17805 assign(rNt, binop(Iop_And32, getIRegT(rN), mkU32(~3))); in disInstr_THUMB_WRK()
17807 assign(rNt, getIRegT(rN)); in disInstr_THUMB_WRK()
17860 DIP("%s.w r%u, [r%u, +#%u]\n", nm, rT, rN, imm12); in disInstr_THUMB_WRK()
17877 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
17884 if (bW == 1 && (rN == rT || rN == rT2)) valid = False; in disInstr_THUMB_WRK()
17886 if (rN == 15) valid = False; in disInstr_THUMB_WRK()
17896 assign(preAddr, getIRegT(rN)); in disInstr_THUMB_WRK()
17927 putIRegT(rN, mkexpr(postAddr), IRTemp_INVALID); in disInstr_THUMB_WRK()
17934 nm, rT, rT2, rN, bU ? '+' : '-', imm8 << 2); in disInstr_THUMB_WRK()
17938 nm, rT, rT2, rN, bU ? '+' : '-', imm8 << 2); in disInstr_THUMB_WRK()
17943 nm, rT, rT2, rN, bU ? '+' : '-', imm8 << 2); in disInstr_THUMB_WRK()
18032 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18035 if (bH/*ATC*/ || (rN != 13 && !isBadRegT(rM))) { in disInstr_THUMB_WRK()
18044 getIRegT(rN), in disInstr_THUMB_WRK()
18067 bH ? 'h' : 'b', rN, rM, bH ? ", LSL #1" : ""); in disInstr_THUMB_WRK()
18080 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18085 if (!isBadRegT(rD) && !isBadRegT(rN) && msb <= 31) { in disInstr_THUMB_WRK()
18094 assign(src, getIRegT(rN)); in disInstr_THUMB_WRK()
18105 isU ? "ubfx" : "sbfx", rD, rN, lsb, wm1 + 1); in disInstr_THUMB_WRK()
18194 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18197 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
18199 assign(res, binop(Iop_Mul32, getIRegT(rN), getIRegT(rM))); in disInstr_THUMB_WRK()
18201 DIP("mul.w r%u, r%u, r%u\n", rD, rN, rM); in disInstr_THUMB_WRK()
18209 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18212 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
18216 assign(argL, getIRegT(rN)); in disInstr_THUMB_WRK()
18220 DIP("sdiv.w r%u, r%u, r%u\n", rD, rN, rM); in disInstr_THUMB_WRK()
18228 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18231 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
18235 assign(argL, getIRegT(rN)); in disInstr_THUMB_WRK()
18239 DIP("udiv.w r%u, r%u, r%u\n", rD, rN, rM); in disInstr_THUMB_WRK()
18248 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18253 && !isBadRegT(rN) && !isBadRegT(rM) && rDlo != rDhi) { in disInstr_THUMB_WRK()
18256 getIRegT(rN), getIRegT(rM))); in disInstr_THUMB_WRK()
18260 isU ? 'u' : 's', rDlo, rDhi, rN, rM); in disInstr_THUMB_WRK()
18269 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18273 if (!isBadRegT(rD) && !isBadRegT(rN) in disInstr_THUMB_WRK()
18280 binop(Iop_Mul32, getIRegT(rN), getIRegT(rM)))); in disInstr_THUMB_WRK()
18283 isMLA ? "mla" : "mls", rD, rN, rM, rA); in disInstr_THUMB_WRK()
18310 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18314 if (!isBadRegT(rDlo) && !isBadRegT(rDhi) && !isBadRegT(rN) in disInstr_THUMB_WRK()
18325 assign( argR, getIRegT(rN)); in disInstr_THUMB_WRK()
18335 isS ? 's' : 'u', rDlo, rDhi, rN, rM); in disInstr_THUMB_WRK()
18361 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18364 if (isBadRegT(rD) || rN == 13 || msb < lsb) { in disInstr_THUMB_WRK()
18375 assign(src, rN == 15 ? mkU32(0) : getIRegT(rN)); in disInstr_THUMB_WRK()
18389 if (rN == 15) { in disInstr_THUMB_WRK()
18394 rD, rN, lsb, msb-lsb+1); in disInstr_THUMB_WRK()
18407 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18411 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
18416 assign(srcL, getIRegT(rN)); in disInstr_THUMB_WRK()
18424 isU ? 'u' : 's', rD, rN, rM, rot); in disInstr_THUMB_WRK()
18436 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18440 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
18445 assign(srcL, getIRegT(rN)); in disInstr_THUMB_WRK()
18453 isU ? 'u' : 's', rD, rN, rM, rot); in disInstr_THUMB_WRK()
18522 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18525 if (!isBadRegT(rN) && (write_nzcvq || write_ge)) { in disInstr_THUMB_WRK()
18527 assign(rNt, getIRegT(rN)); in disInstr_THUMB_WRK()
18530 write_nzcvq ? "f" : "", write_ge ? "g" : "", rN); in disInstr_THUMB_WRK()
18549 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18552 if (!isBadRegT(rT) && rN != 15) { in disInstr_THUMB_WRK()
18560 binop(Iop_Add32, getIRegT(rN), mkU32(imm8 * 4)), in disInstr_THUMB_WRK()
18563 DIP("ldrex r%u, [r%u, #+%u]\n", rT, rN, imm8 * 4); in disInstr_THUMB_WRK()
18571 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18574 if (!isBadRegT(rT) && rN != 15) { in disInstr_THUMB_WRK()
18580 stmt( IRStmt_LLSC(Iend_LE, res, getIRegT(rN), in disInstr_THUMB_WRK()
18584 DIP("ldrex%c r%u, [r%u]\n", isH ? 'h' : 'b', rT, rN); in disInstr_THUMB_WRK()
18591 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18594 if (!isBadRegT(rT) && !isBadRegT(rT2) && rT != rT2 && rN != 15) { in disInstr_THUMB_WRK()
18601 stmt( IRStmt_LLSC(Iend_LE, res, getIRegT(rN), in disInstr_THUMB_WRK()
18606 DIP("ldrexd r%u, r%u, [r%u]\n", rT, rT2, rN); in disInstr_THUMB_WRK()
18613 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18617 if (!isBadRegT(rD) && !isBadRegT(rT) && rN != 15 in disInstr_THUMB_WRK()
18618 && rD != rN && rD != rT) { in disInstr_THUMB_WRK()
18627 binop(Iop_Add32, getIRegT(rN), mkU32(imm8 * 4)), in disInstr_THUMB_WRK()
18635 DIP("strex r%u, r%u, [r%u, #+%u]\n", rD, rT, rN, imm8 * 4); in disInstr_THUMB_WRK()
18643 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18647 if (!isBadRegT(rD) && !isBadRegT(rT) && rN != 15 in disInstr_THUMB_WRK()
18648 && rD != rN && rD != rT) { in disInstr_THUMB_WRK()
18655 stmt( IRStmt_LLSC(Iend_LE, resSC1, getIRegT(rN), in disInstr_THUMB_WRK()
18664 DIP("strex%c r%u, r%u, [r%u]\n", isH ? 'h' : 'b', rD, rT, rN); in disInstr_THUMB_WRK()
18671 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18676 && rN != 15 && rD != rN && rD != rT && rD != rT) { in disInstr_THUMB_WRK()
18687 stmt( IRStmt_LLSC(Iend_LE, resSC1, getIRegT(rN), mkexpr(data))); in disInstr_THUMB_WRK()
18694 DIP("strexd r%u, r%u, r%u, [r%u]\n", rD, rT, rT2, rN); in disInstr_THUMB_WRK()
18741 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18744 DIP("pld%s [r%u, #%u]\n", bW ? "w" : "", rN, imm12); in disInstr_THUMB_WRK()
18751 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18754 DIP("pld%s [r%u, #-%u]\n", bW ? "w" : "", rN, imm8); in disInstr_THUMB_WRK()
18761 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18766 DIP("pld%s [r%u, r%u, lsl %d]\n", bW ? "w" : "", rN, rM, imm2); in disInstr_THUMB_WRK()
18815 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18816 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
18820 binop(Iop_MullS32, getIRegT(rN), getIRegT(rM)), in disInstr_THUMB_WRK()
18824 bitR ? "r" : "", rD, rN, rM); in disInstr_THUMB_WRK()
18837 UInt rN = INSN0(3,0); in disInstr_THUMB_WRK() local
18838 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM) && (rA != 13)) { in disInstr_THUMB_WRK()
18844 binop(Iop_MullS32, getIRegT(rN), getIRegT(rM))), in disInstr_THUMB_WRK()
18848 bitR ? "r" : "", rD, rN, rM, rA); in disInstr_THUMB_WRK()