Lines Matching refs:rD

7831 void mk_neon_elem_load_to_one_lane( UInt rD, UInt inc, UInt index,  in mk_neon_elem_load_to_one_lane()  argument
7837 putDRegI64(rD, triop(Iop_SetElem8x8, getDRegI64(rD), mkU8(index), in mk_neon_elem_load_to_one_lane()
7841 putDRegI64(rD, triop(Iop_SetElem16x4, getDRegI64(rD), mkU8(index), in mk_neon_elem_load_to_one_lane()
7845 putDRegI64(rD, triop(Iop_SetElem32x2, getDRegI64(rD), mkU8(index), in mk_neon_elem_load_to_one_lane()
7854 putDRegI64(rD + i * inc, in mk_neon_elem_load_to_one_lane()
7856 getDRegI64(rD + i * inc), in mk_neon_elem_load_to_one_lane()
7864 putDRegI64(rD + i * inc, in mk_neon_elem_load_to_one_lane()
7866 getDRegI64(rD + i * inc), in mk_neon_elem_load_to_one_lane()
7874 putDRegI64(rD + i * inc, in mk_neon_elem_load_to_one_lane()
7876 getDRegI64(rD + i * inc), in mk_neon_elem_load_to_one_lane()
7892 void mk_neon_elem_store_from_one_lane( UInt rD, UInt inc, UInt index, in mk_neon_elem_store_from_one_lane() argument
7899 binop(Iop_GetElem8x8, getDRegI64(rD), mkU8(index))); in mk_neon_elem_store_from_one_lane()
7903 binop(Iop_GetElem16x4, getDRegI64(rD), mkU8(index))); in mk_neon_elem_store_from_one_lane()
7907 binop(Iop_GetElem32x2, getDRegI64(rD), mkU8(index))); in mk_neon_elem_store_from_one_lane()
7916 binop(Iop_GetElem8x8, getDRegI64(rD + i * inc), in mk_neon_elem_store_from_one_lane()
7921 binop(Iop_GetElem16x4, getDRegI64(rD + i * inc), in mk_neon_elem_store_from_one_lane()
7926 binop(Iop_GetElem32x2, getDRegI64(rD + i * inc), in mk_neon_elem_store_from_one_lane()
8333 UInt rD = (INSN(22,22) << 4) | INSN(15,12); in dis_neon_load_or_store() local
8387 mk_neon_elem_load_to_one_lane(rD, inc, i, N, size, addr); in dis_neon_load_or_store()
8389 mk_neon_elem_store_from_one_lane(rD, inc, i, N, size, addr); in dis_neon_load_or_store()
8394 DIP("d%u[%u]", rD + j * inc, i); in dis_neon_load_or_store()
8437 putDRegI64(rD + r, unop(Iop_Dup8x8, in dis_neon_load_or_store()
8442 putDRegI64(rD + r, unop(Iop_Dup16x4, in dis_neon_load_or_store()
8447 putDRegI64(rD + r, unop(Iop_Dup32x2, in dis_neon_load_or_store()
8457 putDRegI64(rD + r + i * inc, in dis_neon_load_or_store()
8465 putDRegI64(rD + r + i * inc, in dis_neon_load_or_store()
8473 putDRegI64(rD + r + i * inc, in dis_neon_load_or_store()
8490 DIP("d%u[]", rD + r + i * inc); in dis_neon_load_or_store()
8533 if (rD + regs > 32) return False; in dis_neon_load_or_store()
8540 if (regs == 1 && inc == 1 && rD + 1 >= 32) return False; in dis_neon_load_or_store()
8541 if (regs == 1 && inc == 2 && rD + 2 >= 32) return False; in dis_neon_load_or_store()
8542 if (regs == 2 && inc == 2 && rD + 3 >= 32) return False; in dis_neon_load_or_store()
8545 if (inc == 1 && rD + 2 >= 32) return False; in dis_neon_load_or_store()
8546 if (inc == 2 && rD + 4 >= 32) return False; in dis_neon_load_or_store()
8549 if (inc == 1 && rD + 3 >= 32) return False; in dis_neon_load_or_store()
8550 if (inc == 2 && rD + 6 >= 32) return False; in dis_neon_load_or_store()
8587 putDRegI64(rD+r, loadLE(Ity_I64, mkexpr(addr)), IRTemp_INVALID); in dis_neon_load_or_store()
8589 storeLE(mkexpr(addr), getDRegI64(rD+r)); in dis_neon_load_or_store()
8629 putDRegI64(rD + 0 * regstep, mkexpr(du0), IRTemp_INVALID); in dis_neon_load_or_store()
8630 putDRegI64(rD + 1 * regstep, mkexpr(du1), IRTemp_INVALID); in dis_neon_load_or_store()
8632 assign(du0, getDRegI64(rD + 0 * regstep)); in dis_neon_load_or_store()
8633 assign(du1, getDRegI64(rD + 1 * regstep)); in dis_neon_load_or_store()
8664 putDRegI64(rD + 0 * regstep, mkexpr(du0), IRTemp_INVALID); in dis_neon_load_or_store()
8665 putDRegI64(rD + 1 * regstep, mkexpr(du1), IRTemp_INVALID); in dis_neon_load_or_store()
8666 putDRegI64(rD + 2 * regstep, mkexpr(du2), IRTemp_INVALID); in dis_neon_load_or_store()
8667 putDRegI64(rD + 3 * regstep, mkexpr(du3), IRTemp_INVALID); in dis_neon_load_or_store()
8669 assign(du0, getDRegI64(rD + 0 * regstep)); in dis_neon_load_or_store()
8670 assign(du1, getDRegI64(rD + 1 * regstep)); in dis_neon_load_or_store()
8671 assign(du2, getDRegI64(rD + 2 * regstep)); in dis_neon_load_or_store()
8672 assign(du3, getDRegI64(rD + 3 * regstep)); in dis_neon_load_or_store()
8706 putDRegI64(rD + 0 * inc, mkexpr(du0), IRTemp_INVALID); in dis_neon_load_or_store()
8707 putDRegI64(rD + 1 * inc, mkexpr(du1), IRTemp_INVALID); in dis_neon_load_or_store()
8708 putDRegI64(rD + 2 * inc, mkexpr(du2), IRTemp_INVALID); in dis_neon_load_or_store()
8710 assign(du0, getDRegI64(rD + 0 * inc)); in dis_neon_load_or_store()
8711 assign(du1, getDRegI64(rD + 1 * inc)); in dis_neon_load_or_store()
8712 assign(du2, getDRegI64(rD + 2 * inc)); in dis_neon_load_or_store()
8746 putDRegI64(rD + 0 * inc, mkexpr(du0), IRTemp_INVALID); in dis_neon_load_or_store()
8747 putDRegI64(rD + 1 * inc, mkexpr(du1), IRTemp_INVALID); in dis_neon_load_or_store()
8748 putDRegI64(rD + 2 * inc, mkexpr(du2), IRTemp_INVALID); in dis_neon_load_or_store()
8749 putDRegI64(rD + 3 * inc, mkexpr(du3), IRTemp_INVALID); in dis_neon_load_or_store()
8751 assign(du0, getDRegI64(rD + 0 * inc)); in dis_neon_load_or_store()
8752 assign(du1, getDRegI64(rD + 1 * inc)); in dis_neon_load_or_store()
8753 assign(du2, getDRegI64(rD + 2 * inc)); in dis_neon_load_or_store()
8754 assign(du3, getDRegI64(rD + 3 * inc)); in dis_neon_load_or_store()
8789 DIP("d%u-d%u", rD, rD + regs * (N + 1) - 1); in dis_neon_load_or_store()
8796 DIP("d%u", rD + r + i * inc); in dis_neon_load_or_store()
10921 UInt rD = 99, rN = 99, rM = 99, rA = 99; in decode_V6MEDIA_instruction() local
10928 rD = INSNT1(11,8); in decode_V6MEDIA_instruction()
10930 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM) && rA != 13) in decode_V6MEDIA_instruction()
10936 rD = INSNA(19,16); in decode_V6MEDIA_instruction()
10940 if (rD != 15 && rN != 15 && rM != 15 /* but rA can be 15 */) in decode_V6MEDIA_instruction()
10955 putIRegT( rD, res, condT ); in decode_V6MEDIA_instruction()
10957 putIRegA( rD, res, condT, Ijk_Boring ); 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
12346 rD = INSNT1(11,8); in decode_V6MEDIA_instruction()
12349 if (!isBadRegT(rD) in decode_V6MEDIA_instruction()
12358 rD = INSNA(19,16); in decode_V6MEDIA_instruction()
12362 if (rD != 15 && rM != 15 && rN != 15) in decode_V6MEDIA_instruction()
12381 putIRegT( rD, res, condT ); in decode_V6MEDIA_instruction()
12383 putIRegA(rD, res, condT, Ijk_Boring); in decode_V6MEDIA_instruction()
12385 round ? "r" : "", nCC(conq), rD, rN, rM, rA); in decode_V6MEDIA_instruction()
13106 UInt rD = INSN(15,12); in decode_CP10_CP11_instruction() local
13109 if (rD == 15) { in decode_CP10_CP11_instruction()
13123 putIRegT(rD, e, condT); in decode_CP10_CP11_instruction()
13125 putIRegA(rD, e, condT, Ijk_Boring); in decode_CP10_CP11_instruction()
13126 DIP("fmrx%s r%u, fpscr\n", nCC(conq), rD); in decode_CP10_CP11_instruction()
13136 UInt rD = INSN(15,12); in decode_CP10_CP11_instruction() local
13140 isT ? getIRegT(rD) : getIRegA(rD), condT); in decode_CP10_CP11_instruction()
13141 DIP("fmxr%s fpscr, r%u\n", nCC(conq), rD); in decode_CP10_CP11_instruction()
13151 UInt rD = INSN(15,12); /* lo32 */ in decode_CP10_CP11_instruction() local
13153 if (rD == 15 || rN == 15 || (isT && (rD == 13 || rN == 13))) { in decode_CP10_CP11_instruction()
13160 isT ? getIRegT(rD) : getIRegA(rD))), in decode_CP10_CP11_instruction()
13162 DIP("vmov%s d%u, r%u, r%u\n", nCC(conq), dM, rD, rN); in decode_CP10_CP11_instruction()
13171 UInt rD = INSN(15,12); /* lo32 */ in decode_CP10_CP11_instruction() local
13173 if (rD == 15 || rN == 15 || (isT && (rD == 13 || rN == 13)) in decode_CP10_CP11_instruction()
13174 || rD == rN) { in decode_CP10_CP11_instruction()
13183 putIRegT(rD, lo32, condT); in decode_CP10_CP11_instruction()
13186 putIRegA(rD, lo32, condT, Ijk_Boring); in decode_CP10_CP11_instruction()
13188 DIP("vmov%s r%u, r%u, d%u\n", nCC(conq), rD, rN, dM); in decode_CP10_CP11_instruction()
13241 UInt rD = (INSN(7,7) << 4) | INSN(19,16); in decode_CP10_CP11_instruction() local
13250 putDRegI64(rD, triop(Iop_SetElem8x8, in decode_CP10_CP11_instruction()
13251 getDRegI64(rD), in decode_CP10_CP11_instruction()
13256 DIP("vmov%s.8 d%u[%u], r%u\n", nCC(conq), rD, index, rT); in decode_CP10_CP11_instruction()
13261 putDRegI64(rD, triop(Iop_SetElem16x4, in decode_CP10_CP11_instruction()
13262 getDRegI64(rD), in decode_CP10_CP11_instruction()
13267 DIP("vmov%s.16 d%u[%u], r%u\n", nCC(conq), rD, index, rT); in decode_CP10_CP11_instruction()
13272 putDRegI64(rD, triop(Iop_SetElem32x2, in decode_CP10_CP11_instruction()
13273 getDRegI64(rD), in decode_CP10_CP11_instruction()
13277 DIP("vmov%s.32 d%u[%u], r%u\n", nCC(conq), rD, index, rT); in decode_CP10_CP11_instruction()
13343 UInt rD = (INSN(15,12) << 1) | INSN(22,22); in decode_CP10_CP11_instruction() local
13350 putFReg(rD, unop(Iop_ReinterpI32asF32, mkU32(imm)), condT); in decode_CP10_CP11_instruction()
13351 DIP("fconsts%s s%u #%u", nCC(conq), rD, imm8); in decode_CP10_CP11_instruction()
13359 UInt rD = INSN(15,12) | (INSN(22,22) << 4); in decode_CP10_CP11_instruction() local
13366 putDReg(rD, unop(Iop_ReinterpI64asF64, mkU64(imm)), condT); in decode_CP10_CP11_instruction()
13367 DIP("fconstd%s d%u #%u", nCC(conq), rD, imm8); in decode_CP10_CP11_instruction()
13376 UInt rD = (INSN(7,7) << 4) | INSN(19,16); in decode_CP10_CP11_instruction() local
13380 if (rT == 15 || (isT && rT == 13) || size == 3 || (Q && (rD & 1))) { in decode_CP10_CP11_instruction()
13385 rD >>= 1; in decode_CP10_CP11_instruction()
13388 putQReg(rD, unop(Iop_Dup32x4, e), condT); in decode_CP10_CP11_instruction()
13391 putQReg(rD, unop(Iop_Dup16x8, unop(Iop_32to16, e)), in decode_CP10_CP11_instruction()
13395 putQReg(rD, unop(Iop_Dup8x16, unop(Iop_32to8, e)), in decode_CP10_CP11_instruction()
13401 DIP("vdup.%d q%u, r%u\n", 32 / (1<<size), rD, rT); in decode_CP10_CP11_instruction()
13405 putDRegI64(rD, unop(Iop_Dup32x2, e), condT); in decode_CP10_CP11_instruction()
13408 putDRegI64(rD, unop(Iop_Dup16x4, unop(Iop_32to16, e)), in decode_CP10_CP11_instruction()
13412 putDRegI64(rD, unop(Iop_Dup8x8, unop(Iop_32to8, e)), in decode_CP10_CP11_instruction()
13418 DIP("vdup.%d d%u, r%u\n", 32 / (1<<size), rD, rT); in decode_CP10_CP11_instruction()
13899 UInt rD = INSN(15,12); in decode_CP10_CP11_instruction() local
13903 if (rD == 15) { in decode_CP10_CP11_instruction()
13913 putIRegT(rD, res, condT); in decode_CP10_CP11_instruction()
13915 putIRegA(rD, res, condT, Ijk_Boring); in decode_CP10_CP11_instruction()
13916 DIP("fmrs%s r%u, s%u\n", nCC(conq), rD, fN); in decode_CP10_CP11_instruction()
13919 isT ? getIRegT(rD) : getIRegA(rD)), in decode_CP10_CP11_instruction()
13921 DIP("fmsr%s s%u, r%u\n", nCC(conq), fN, rD); in decode_CP10_CP11_instruction()
14775 UInt rD = (insn >> 12) & 0xF; /* 15:12 */ in disInstr_ARM_WRK() local
14846 putIRegA( rD, mkexpr(res), condT, Ijk_Boring ); in disInstr_ARM_WRK()
14877 name, nCC(INSN_COND), bitS ? "s" : "", rD, rN, dis_buf ); in disInstr_ARM_WRK()
14910 putIRegA( rD, mkexpr(res), condT, jk ); in disInstr_ARM_WRK()
14918 nCC(INSN_COND), bitS ? "s" : "", rD, dis_buf ); in disInstr_ARM_WRK()
14926 if (rD != 0) in disInstr_ARM_WRK()
14952 if (rD != 0) in disInstr_ARM_WRK()
15025 putIRegA( rD, mkexpr(res), condT, Ijk_Boring ); in disInstr_ARM_WRK()
15051 name, nCC(INSN_COND), bitS ? "s" : "", rD, rN, dis_buf ); in disInstr_ARM_WRK()
15109 UInt rD = (insn >> 12) & 0xF; /* 15:12 */ in disInstr_ARM_WRK() local
15129 if (bL == 1 && rN == rD) goto after_load_store_ubyte_or_word; in disInstr_ARM_WRK()
15135 if (bL == 1 && rN == rD) goto after_load_store_ubyte_or_word; in disInstr_ARM_WRK()
15181 assign(rDt, getIRegA(rD)); in disInstr_ARM_WRK()
15216 mkexpr(taT), llGetIReg(rD), condT ); in disInstr_ARM_WRK()
15226 putIRegA( rD, mkexpr(tD), in disInstr_ARM_WRK()
15227 rD == 15 ? condT : IRTemp_INVALID, jk ); in disInstr_ARM_WRK()
15231 loadGuardedLE( tD, ILGop_8Uto32, mkexpr(taT), llGetIReg(rD), condT ); in disInstr_ARM_WRK()
15234 putIRegA( rD, mkexpr(tD), IRTemp_INVALID, Ijk_Boring ); in disInstr_ARM_WRK()
15242 vassert(rD != rN); /* since we just wrote rD */ in disInstr_ARM_WRK()
15251 bB == 0 ? "" : "b", nCC(INSN_COND), rD, dis_buf); in disInstr_ARM_WRK()
15255 bB == 0 ? "" : "b", nCC(INSN_COND), rD, dis_buf); in disInstr_ARM_WRK()
15259 bB == 0 ? "" : "b", nCC(INSN_COND), rD, dis_buf); in disInstr_ARM_WRK()
15337 UInt rD = (insn >> 12) & 0xF; /* 15:12 */ in disInstr_ARM_WRK() local
15368 if (bL == 1 && rN == rD) goto after_load_store_sbyte_or_hword; in disInstr_ARM_WRK()
15374 if (bL == 1 && rN == rD) goto after_load_store_sbyte_or_hword; in disInstr_ARM_WRK()
15385 if (bL == 1 && rD == 15 && condT != IRTemp_INVALID) { in disInstr_ARM_WRK()
15421 assign(llOldRd, llGetIReg(rD)); in disInstr_ARM_WRK()
15432 unop(Iop_32to16, getIRegA(rD)), condT ); in disInstr_ARM_WRK()
15439 putIRegA( rD, mkexpr(newRd), IRTemp_INVALID, Ijk_Boring ); in disInstr_ARM_WRK()
15446 putIRegA( rD, mkexpr(newRd), IRTemp_INVALID, Ijk_Boring ); in disInstr_ARM_WRK()
15453 putIRegA( rD, mkexpr(newRd), IRTemp_INVALID, Ijk_Boring ); in disInstr_ARM_WRK()
15464 vassert(rD != rN); /* since we just wrote rD */ in disInstr_ARM_WRK()
15470 case 1: DIP("%s%s r%u, %s\n", name, nCC(INSN_COND), rD, dis_buf); in disInstr_ARM_WRK()
15473 name, nCC(INSN_COND), rD, dis_buf); in disInstr_ARM_WRK()
15476 name, nCC(INSN_COND), rD, dis_buf); in disInstr_ARM_WRK()
15691 UInt rD = INSN(15,12); in disInstr_ARM_WRK() local
15701 putIRegA(rD, mkexpr(res), condT, Ijk_Boring); in disInstr_ARM_WRK()
15702 DIP("clz%s r%u, r%u\n", nCC(INSN_COND), rD, rM); in disInstr_ARM_WRK()
15712 UInt rD = INSN(19,16); in disInstr_ARM_WRK() local
15715 if (rD == 15 || rM == 15 || rS == 15) { in disInstr_ARM_WRK()
15733 putIRegA( rD, mkexpr(res), condT, Ijk_Boring ); in disInstr_ARM_WRK()
15742 bitS ? 's' : ' ', nCC(INSN_COND), rD, rM, rS); in disInstr_ARM_WRK()
15753 UInt rD = INSN(19,16); in disInstr_ARM_WRK() local
15756 if (rD == 15 || rM == 15 || rN == 15) { in disInstr_ARM_WRK()
15765 putIRegA(rD, mkexpr(res), condT, Ijk_Boring); in disInstr_ARM_WRK()
15766 DIP("sdiv r%u, r%u, r%u\n", rD, rN, rM); in disInstr_ARM_WRK()
15775 UInt rD = INSN(19,16); in disInstr_ARM_WRK() local
15778 if (rD == 15 || rM == 15 || rN == 15) { in disInstr_ARM_WRK()
15787 putIRegA(rD, mkexpr(res), condT, Ijk_Boring); in disInstr_ARM_WRK()
15788 DIP("udiv r%u, r%u, r%u\n", rD, rN, rM); in disInstr_ARM_WRK()
15798 UInt rD = INSN(19,16); in disInstr_ARM_WRK() local
15807 if (rD == 15 || rM == 15 || rS == 15 || rN == 15) { in disInstr_ARM_WRK()
15830 putIRegA( rD, mkexpr(res), condT, Ijk_Boring ); in disInstr_ARM_WRK()
15840 nCC(INSN_COND), rD, rM, rS, rN); in disInstr_ARM_WRK()
16028 UInt rD = INSN(15,12); in disInstr_ARM_WRK() local
16029 if (rD != 15) { in disInstr_ARM_WRK()
16031 putIRegA( rD, mkexpr(apsr), condT, Ijk_Boring ); in disInstr_ARM_WRK()
16032 DIP("mrs%s r%u, cpsr\n", nCC(INSN_COND), rD); in disInstr_ARM_WRK()
16063 UInt rD = INSN(15,12); in disInstr_ARM_WRK() local
16071 if (rD == 15 || rN == 15 || rM == 15 || rN == rM || rN == rD) { in disInstr_ARM_WRK()
16101 putIRegA(rD, isB ? unop(Iop_8Uto32, mkexpr(tOld)) : mkexpr(tOld), in disInstr_ARM_WRK()
16104 isB ? "b" : "", nCC(INSN_COND), rD, rM, rN); in disInstr_ARM_WRK()
16174 UInt rD = INSN(15,12); in disInstr_ARM_WRK() local
16187 if (rD == 15 || rN == 15 || rT == 15 in disInstr_ARM_WRK()
16188 || rD == rN || rD == rT) in disInstr_ARM_WRK()
16192 if (rD == 15 || (rT & 1) == 1 || rT == 14 || rN == 15 in disInstr_ARM_WRK()
16193 || rD == rN || rD == rT || rD == rT+1) in disInstr_ARM_WRK()
16222 putIRegA(rD, mkexpr(resSC32), in disInstr_ARM_WRK()
16226 nm, nCC(INSN_COND), rD, rT, rT+1, rN); in disInstr_ARM_WRK()
16229 nm, nCC(INSN_COND), rD, rT, rN); in disInstr_ARM_WRK()
16239 UInt rD = INSN(15,12); in disInstr_ARM_WRK() local
16242 if (rD == 15) { in disInstr_ARM_WRK()
16246 putIRegA(rD, in disInstr_ARM_WRK()
16248 binop(Iop_And32, getIRegA(rD), mkU32(0xFFFF)), in disInstr_ARM_WRK()
16251 DIP("movt%s r%u, #0x%04x\n", nCC(INSN_COND), rD, imm16); in disInstr_ARM_WRK()
16254 putIRegA(rD, mkU32(imm16), condT, Ijk_Boring); in disInstr_ARM_WRK()
16255 DIP("movw%s r%u, #0x%04x\n", nCC(INSN_COND), rD, imm16); in disInstr_ARM_WRK()
16273 UInt rD = INSN(15,12); in disInstr_ARM_WRK() local
16324 putIRegA(rD, mkexpr(dstT), condT, Ijk_Boring); in disInstr_ARM_WRK()
16325 DIP("%s%s r%u, r%u, ROR #%d\n", nm, nCC(INSN_COND), rD, rM, rot); in disInstr_ARM_WRK()
16334 UInt rD = INSN(15,12); in disInstr_ARM_WRK() local
16338 if (rD == 15 || msb < lsb) { in disInstr_ARM_WRK()
16350 assign(olddst, getIRegA(rD)); in disInstr_ARM_WRK()
16361 putIRegA(rD, mkexpr(newdst), condT, Ijk_Boring); in disInstr_ARM_WRK()
16365 nCC(INSN_COND), rD, lsb, msb-lsb+1); in disInstr_ARM_WRK()
16368 nCC(INSN_COND), rD, rN, lsb, msb-lsb+1); in disInstr_ARM_WRK()
16378 UInt rD = INSN(15,12); in disInstr_ARM_WRK() local
16384 if (rD == 15 || rN == 15 || msb >= 32) { in disInstr_ARM_WRK()
16402 putIRegA(rD, mkexpr(res), condT, Ijk_Boring); in disInstr_ARM_WRK()
16406 nCC(INSN_COND), rD, rN, lsb, wm1 + 1); in disInstr_ARM_WRK()
16462 UInt rD = (insn >> 12) & 0xF; /* 15:12 */ in disInstr_ARM_WRK() local
16469 if ((rD & 1) != 0) in disInstr_ARM_WRK()
16487 if (bS == 0 && (rN == rD || rN == rD+1)) in disInstr_ARM_WRK()
16494 if (bS == 0 && (rN == rD || rN == rD+1)) in disInstr_ARM_WRK()
16504 vassert((rD & 1) == 0); /* from tests above */ in disInstr_ARM_WRK()
16505 if (bS == 0 && rD+1 == 15 && condT != IRTemp_INVALID) { in disInstr_ARM_WRK()
16551 && rN == 13 && rN != rD && rN != rD+1 in disInstr_ARM_WRK()
16564 getIRegA(rD+0), condT ); in disInstr_ARM_WRK()
16566 getIRegA(rD+1), condT ); in disInstr_ARM_WRK()
16571 assign(oldRd0, llGetIReg(rD+0)); in disInstr_ARM_WRK()
16572 assign(oldRd1, llGetIReg(rD+1)); in disInstr_ARM_WRK()
16578 putIRegA( rD+0, mkexpr(newRd0), IRTemp_INVALID, Ijk_Boring ); in disInstr_ARM_WRK()
16582 putIRegA( rD+1, mkexpr(newRd1), IRTemp_INVALID, Ijk_Boring ); in disInstr_ARM_WRK()
16592 vassert(rD+0 != rN); /* since we just wrote rD+0 */ in disInstr_ARM_WRK()
16593 vassert(rD+1 != rN); /* since we just wrote rD+1 */ in disInstr_ARM_WRK()
16601 case 1: DIP("%s%s r%u, %s\n", name, nCC(INSN_COND), rD, dis_buf); in disInstr_ARM_WRK()
16604 name, nCC(INSN_COND), rD, dis_buf); in disInstr_ARM_WRK()
16607 name, nCC(INSN_COND), rD, dis_buf); in disInstr_ARM_WRK()
16622 UInt rD = INSN(15,12); in disInstr_ARM_WRK() local
16626 if (rN == 15/*it's {S,U}XTB*/ || rD == 15 || rM == 15) { in disInstr_ARM_WRK()
16639 putIRegA(rD, mkexpr(res), condT, Ijk_Boring); in disInstr_ARM_WRK()
16641 isU ? 'u' : 's', nCC(INSN_COND), rD, rN, rM, rot); in disInstr_ARM_WRK()
16652 UInt rD = INSN(15,12); in disInstr_ARM_WRK() local
16656 if (rN == 15/*it's {S,U}XTH*/ || rD == 15 || rM == 15) { in disInstr_ARM_WRK()
16669 putIRegA(rD, mkexpr(res), condT, Ijk_Boring); in disInstr_ARM_WRK()
16672 isU ? 'u' : 's', nCC(INSN_COND), rD, rN, rM, rot); in disInstr_ARM_WRK()
16683 UInt rD = INSN(15,12); in disInstr_ARM_WRK() local
16684 if (rM != 15 && rD != 15) { in disInstr_ARM_WRK()
16688 putIRegA(rD, mkexpr(res), condT, Ijk_Boring); in disInstr_ARM_WRK()
16690 nCC(INSN_COND), rD, rM); in disInstr_ARM_WRK()
16698 UInt rD = INSN(15,12); in disInstr_ARM_WRK() local
16699 if (rM != 15 && rD != 15) { in disInstr_ARM_WRK()
16720 putIRegA(rD, mkexpr(irt_res), condT, Ijk_Boring); in disInstr_ARM_WRK()
16721 DIP("revsh%s r%u, r%u\n", nCC(INSN_COND), rD, rM); in disInstr_ARM_WRK()
16728 UInt rD = INSN(15,12); in disInstr_ARM_WRK() local
16730 if (rD != 15 && rM != 15) { in disInstr_ARM_WRK()
16734 putIRegA(rD, mkexpr(res), condT, Ijk_Boring); in disInstr_ARM_WRK()
16735 DIP("rbit r%u, r%u\n", rD, rM); in disInstr_ARM_WRK()
16745 UInt rD = INSN(19,16); in disInstr_ARM_WRK() local
16748 if (rD != 15 && rM != 15 && rN != 15) { in disInstr_ARM_WRK()
16754 putIRegA(rD, res, condT, Ijk_Boring); in disInstr_ARM_WRK()
16756 nCC(INSN_COND), bitR ? "r" : "", rD, rN, rM); in disInstr_ARM_WRK()
16766 UInt rD = INSN(19,16); in disInstr_ARM_WRK() local
16770 if (rD != 15 && rM != 15 && rN != 15) { in disInstr_ARM_WRK()
16778 putIRegA(rD, res, condT, Ijk_Boring); in disInstr_ARM_WRK()
16780 nCC(INSN_COND), bitR ? "r" : "", rD, rN, rM, rA); in disInstr_ARM_WRK()
17228 UInt rD = INSN(15,12); in disInstr_ARM_WRK() local
17229 if (rD <= 14) { in disInstr_ARM_WRK()
17231 putIRegA(rD, IRExpr_Get(OFFB_TPIDRURO, Ity_I32), in disInstr_ARM_WRK()
17233 DIP("mrc%s p15,0, r%u, c13, c0, 3\n", nCC(INSN_COND), rD); in disInstr_ARM_WRK()
17248 UInt rD = INSN(15,12); in disInstr_ARM_WRK() local
17249 if (rD <= 14) { in disInstr_ARM_WRK()
17251 putIRegA(rD, mkU32(0), condT, Ijk_Boring); in disInstr_ARM_WRK()
17252 DIP("mrc%s p15,0, r%u, c9, c14, 0\n", nCC(INSN_COND), rD); in disInstr_ARM_WRK()
17966 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
17972 putIRegT(rD, binop(Iop_Sub32, mkexpr(zero), mkexpr(arg)), condT); in disInstr_THUMB_WRK()
17974 DIP("negs r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
17982 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
17990 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
17993 DIP("mvns r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
18012 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
18018 assign( res, binop(anOp, getIRegT(rD), getIRegT(rM) )); in disInstr_THUMB_WRK()
18021 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
18024 DIP("%s r%u, r%u\n", anOpNm, rD, rM); in disInstr_THUMB_WRK()
18032 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
18038 assign( res, binop(Iop_And32, getIRegT(rD), in disInstr_THUMB_WRK()
18042 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
18045 DIP("bics r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
18053 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
18058 assign(argL, getIRegT(rD)); in disInstr_THUMB_WRK()
18065 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
18068 DIP("adcs r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
18076 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
18081 assign(argL, getIRegT(rD)); in disInstr_THUMB_WRK()
18088 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
18091 DIP("sbcs r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
18099 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
18100 putIRegT(rD, binop(Iop_And32, getIRegT(rM), mkU32(0xFF)), in disInstr_THUMB_WRK()
18102 DIP("uxtb r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
18110 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
18111 putIRegT(rD, binop(Iop_Sar32, in disInstr_THUMB_WRK()
18115 DIP("sxtb r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
18123 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
18124 putIRegT(rD, binop(Iop_And32, getIRegT(rM), mkU32(0xFFFF)), in disInstr_THUMB_WRK()
18126 DIP("uxth r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
18134 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
18135 putIRegT(rD, binop(Iop_Sar32, in disInstr_THUMB_WRK()
18139 DIP("sxth r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
18153 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
18161 assign(rDt, getIRegT(rD)); in disInstr_THUMB_WRK()
18167 dis_buf, &res, &resC, rDt, rSt, rD, rS in disInstr_THUMB_WRK()
18173 dis_buf, &res, &resC, rDt, rSt, rD, rS in disInstr_THUMB_WRK()
18179 dis_buf, &res, &resC, rDt, rSt, rD, rS in disInstr_THUMB_WRK()
18185 dis_buf, &res, &resC, rDt, rSt, rD, rS in disInstr_THUMB_WRK()
18193 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
18196 DIP("%ss r%u, r%u\n", wot, rS, rD); in disInstr_THUMB_WRK()
18205 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
18210 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
18211 DIP("rev%s r%u, r%u\n", isREV ? "" : "16", rD, rM); in disInstr_THUMB_WRK()
18218 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
18239 putIRegT(rD, mkexpr(irt_res), condT); in disInstr_THUMB_WRK()
18240 DIP("revsh r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
18362 UInt rD = (h1 << 3) | INSN0(2,0); in disInstr_THUMB_WRK() local
18364 if (rD == 15 && rM == 15) { in disInstr_THUMB_WRK()
18368 assign( res, binop(Iop_Add32, getIRegT(rD), getIRegT(rM) )); in disInstr_THUMB_WRK()
18369 if (rD != 15) { in disInstr_THUMB_WRK()
18370 putIRegT( rD, mkexpr(res), condT ); in disInstr_THUMB_WRK()
18383 DIP("add(hi) r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
18413 UInt rD = (h1 << 3) | INSN0(2,0); in disInstr_THUMB_WRK() local
18419 if (rD != 15) { in disInstr_THUMB_WRK()
18420 putIRegT( rD, mkexpr(val), condT ); in disInstr_THUMB_WRK()
18433 DIP("mov r%u, r%u\n", rD, rM); in disInstr_THUMB_WRK()
18652 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
18658 putIRegT(rD, binop(isSub ? Iop_Sub32 : Iop_Add32, in disInstr_THUMB_WRK()
18663 DIP("%s r%u, r%u, #%u\n", isSub ? "subs" : "adds", rD, rN, uimm3); in disInstr_THUMB_WRK()
18673 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
18679 putIRegT( rD, binop(isSub ? Iop_Sub32 : Iop_Add32, in disInstr_THUMB_WRK()
18684 DIP("%s r%u, r%u, r%u\n", isSub ? "subs" : "adds", rD, rN, rM); in disInstr_THUMB_WRK()
18693 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
18702 loadGuardedLE( tD, ILGop_Ident32, ea, llGetIReg(rD), condT ); in disInstr_THUMB_WRK()
18703 putIRegT(rD, mkexpr(tD), IRTemp_INVALID); in disInstr_THUMB_WRK()
18705 storeGuardedLE(ea, getIRegT(rD), condT); in disInstr_THUMB_WRK()
18709 DIP("%s r%u, [r%u, r%u]\n", isLD ? "ldr" : "str", rD, rN, rM); in disInstr_THUMB_WRK()
18718 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
18727 loadGuardedLE(tD, ILGop_16Uto32, ea, llGetIReg(rD), condT); in disInstr_THUMB_WRK()
18728 putIRegT(rD, mkexpr(tD), IRTemp_INVALID); in disInstr_THUMB_WRK()
18730 storeGuardedLE( ea, unop(Iop_32to16, getIRegT(rD)), condT ); in disInstr_THUMB_WRK()
18734 DIP("%sh r%u, [r%u, r%u]\n", isLD ? "ldr" : "str", rD, rN, rM); in disInstr_THUMB_WRK()
18741 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
18748 loadGuardedLE(tD, ILGop_16Sto32, ea, llGetIReg(rD), condT); in disInstr_THUMB_WRK()
18749 putIRegT(rD, mkexpr(tD), IRTemp_INVALID); in disInstr_THUMB_WRK()
18752 DIP("ldrsh r%u, [r%u, r%u]\n", rD, rN, rM); in disInstr_THUMB_WRK()
18759 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
18766 loadGuardedLE(tD, ILGop_8Sto32, ea, llGetIReg(rD), condT); in disInstr_THUMB_WRK()
18767 putIRegT(rD, mkexpr(tD), IRTemp_INVALID); in disInstr_THUMB_WRK()
18770 DIP("ldrsb r%u, [r%u, r%u]\n", rD, rN, rM); in disInstr_THUMB_WRK()
18779 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
18788 loadGuardedLE(tD, ILGop_8Uto32, ea, llGetIReg(rD), condT); in disInstr_THUMB_WRK()
18789 putIRegT(rD, mkexpr(tD), IRTemp_INVALID); in disInstr_THUMB_WRK()
18791 storeGuardedLE( ea, unop(Iop_32to8, getIRegT(rD)), condT ); in disInstr_THUMB_WRK()
18795 DIP("%sb r%u, [r%u, r%u]\n", isLD ? "ldr" : "str", rD, rN, rM); in disInstr_THUMB_WRK()
18832 UInt rD = INSN0(10,8); in disInstr_THUMB_WRK() local
18834 putIRegT(rD, binop(Iop_Add32, in disInstr_THUMB_WRK()
18838 DIP("add r%u, pc, #%u\n", rD, imm8 * 4); in disInstr_THUMB_WRK()
18844 UInt rD = INSN0(10,8); in disInstr_THUMB_WRK() local
18846 putIRegT(rD, binop(Iop_Add32, getIRegT(13), mkU32(imm8 * 4)), in disInstr_THUMB_WRK()
18848 DIP("add r%u, r13, #%u\n", rD, imm8 * 4); in disInstr_THUMB_WRK()
18868 UInt rD = INSN0(10,8); in disInstr_THUMB_WRK() local
18876 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
18879 DIP("movs r%u, #%u\n", rD, uimm8); in disInstr_THUMB_WRK()
18886 UInt rD = INSN0(10,8); in disInstr_THUMB_WRK() local
18895 loadGuardedLE( tD, ILGop_Ident32, mkexpr(ea), llGetIReg(rD), condT ); in disInstr_THUMB_WRK()
18896 putIRegT(rD, mkexpr(tD), IRTemp_INVALID); in disInstr_THUMB_WRK()
18899 DIP("ldr r%u, [pc, #%u]\n", rD, imm8 * 4); in disInstr_THUMB_WRK()
18908 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
18917 loadGuardedLE( tD, ILGop_Ident32, ea, llGetIReg(rD), condT ); in disInstr_THUMB_WRK()
18918 putIRegT(rD, mkexpr(tD), IRTemp_INVALID); in disInstr_THUMB_WRK()
18920 storeGuardedLE( ea, getIRegT(rD), condT ); in disInstr_THUMB_WRK()
18924 DIP("%s r%u, [r%u, #%u]\n", isLD ? "ldr" : "str", rD, rN, imm5 * 4); in disInstr_THUMB_WRK()
18933 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
18942 loadGuardedLE( tD, ILGop_16Uto32, ea, llGetIReg(rD), condT ); in disInstr_THUMB_WRK()
18943 putIRegT(rD, mkexpr(tD), IRTemp_INVALID); in disInstr_THUMB_WRK()
18945 storeGuardedLE( ea, unop(Iop_32to16, getIRegT(rD)), condT ); in disInstr_THUMB_WRK()
18949 DIP("%sh r%u, [r%u, #%u]\n", isLD ? "ldr" : "str", rD, rN, imm5 * 2); in disInstr_THUMB_WRK()
18958 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
18967 loadGuardedLE( tD, ILGop_8Uto32, ea, llGetIReg(rD), condT ); in disInstr_THUMB_WRK()
18968 putIRegT(rD, mkexpr(tD), IRTemp_INVALID); in disInstr_THUMB_WRK()
18970 storeGuardedLE( ea, unop(Iop_32to8, getIRegT(rD)), condT ); in disInstr_THUMB_WRK()
18974 DIP("%sb r%u, [r%u, #%u]\n", isLD ? "ldr" : "str", rD, rN, imm5); in disInstr_THUMB_WRK()
18983 UInt rD = INSN0(10,8); in disInstr_THUMB_WRK() local
18991 loadGuardedLE( tD, ILGop_Ident32, ea, llGetIReg(rD), condT ); in disInstr_THUMB_WRK()
18992 putIRegT(rD, mkexpr(tD), IRTemp_INVALID); in disInstr_THUMB_WRK()
18994 storeGuardedLE(ea, getIRegT(rD), condT); in disInstr_THUMB_WRK()
18998 DIP("%s r%u, [sp, #%u]\n", isLD ? "ldr" : "str", rD, imm8 * 4); in disInstr_THUMB_WRK()
19100 UInt rD = INSN0(2,0); in disInstr_THUMB_WRK() local
19135 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
19139 DIP("%ss r%u, r%u, #%u\n", wot, rD, rM, imm5); in disInstr_THUMB_WRK()
19385 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
19386 Bool valid = !isBadRegT(rN) && !isBadRegT(rD); in disInstr_THUMB_WRK()
19388 if (!valid && rD <= 14 && rN == 13) in disInstr_THUMB_WRK()
19398 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
19402 bS == 1 ? "s" : "", rD, rN, imm32); in disInstr_THUMB_WRK()
19412 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
19413 Bool valid = !isBadRegT(rN) && !isBadRegT(rD); in disInstr_THUMB_WRK()
19415 if (!valid && rD <= 14 && rN == 13) in disInstr_THUMB_WRK()
19425 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
19426 DIP("addw r%u, r%u, #%u\n", rD, rN, imm12); in disInstr_THUMB_WRK()
19493 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
19494 Bool valid = !isBadRegT(rN) && !isBadRegT(rD); in disInstr_THUMB_WRK()
19497 if (!valid && !isRSB && rN == 13 && rD != 15) in disInstr_THUMB_WRK()
19509 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
19517 isRSB ? "rsb" : "sub", bS == 1 ? "s" : "", rD, rN, imm32); in disInstr_THUMB_WRK()
19527 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
19528 Bool valid = !isBadRegT(rN) && !isBadRegT(rD); in disInstr_THUMB_WRK()
19530 if (!valid && rD == 13 && rN == 13) in disInstr_THUMB_WRK()
19540 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
19541 DIP("subw r%u, r%u, #%u\n", rD, rN, imm12); in disInstr_THUMB_WRK()
19556 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
19557 if (!isBadRegT(rN) && !isBadRegT(rD)) { in disInstr_THUMB_WRK()
19574 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
19585 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
19594 nm, bS == 1 ? "s" : "", rD, rN, imm32); in disInstr_THUMB_WRK()
19612 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
19613 if (!isBadRegT(rN) && !isBadRegT(rD)) { in disInstr_THUMB_WRK()
19635 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
19647 nm, bS == 1 ? "s" : "", rD, rN, imm32); in disInstr_THUMB_WRK()
19661 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
19667 Bool valid = !isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM); in disInstr_THUMB_WRK()
19671 && rD != 15 && rN == 13 && imm5 <= 3 && how == 0) { in disInstr_THUMB_WRK()
19677 && rD != 15 && rN == 13 && imm5 <= 3 && how == 0) { in disInstr_THUMB_WRK()
19708 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
19726 nm, bS ? "s" : "", rD, rN, dis_buf); in disInstr_THUMB_WRK()
19740 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
19742 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
19770 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
19781 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
19791 nm, bS ? "s" : "", rD, rN, dis_buf); in disInstr_THUMB_WRK()
19809 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
19811 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
19851 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
19860 nm, bS ? "s" : "", rD, rN, dis_buf); in disInstr_THUMB_WRK()
19874 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
19877 Bool valid = !isBadRegT(rN) && !isBadRegT(rM) && !isBadRegT(rD); in disInstr_THUMB_WRK()
19894 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
19900 nm, bS ? "s" : "", rD, rN, rM); in disInstr_THUMB_WRK()
19909 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
19914 ? (!isBadRegT(rD) && !isBadRegT(rN)) in disInstr_THUMB_WRK()
19915 : (rD != 15 && rN != 15 && (rD != 13 || rN != 13)); in disInstr_THUMB_WRK()
19933 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
19940 isMVN ? "mvn" : "mov", bS ? "s" : "", rD, dis_buf); in disInstr_THUMB_WRK()
20026 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
20027 if (!isBadRegT(rD)) { in disInstr_THUMB_WRK()
20034 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
20046 isMVN ? "mvn" : "mov", bS ? "s" : "", rD, imm32); in disInstr_THUMB_WRK()
20055 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
20056 if (!isBadRegT(rD)) { in disInstr_THUMB_WRK()
20059 putIRegT(rD, mkU32(imm16), condT); in disInstr_THUMB_WRK()
20060 DIP("movw r%u, #%u\n", rD, imm16); in disInstr_THUMB_WRK()
20069 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
20070 if (!isBadRegT(rD)) { in disInstr_THUMB_WRK()
20076 binop(Iop_And32, getIRegT(rD), mkU32(0xFFFF)), in disInstr_THUMB_WRK()
20078 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
20079 DIP("movt r%u, #%u\n", rD, imm16); in disInstr_THUMB_WRK()
20815 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
20819 if (!isBadRegT(rD) && !isBadRegT(rN) && msb <= 31) { in disInstr_THUMB_WRK()
20836 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
20839 isU ? "ubfx" : "sbfx", rD, rN, lsb, wm1 + 1); in disInstr_THUMB_WRK()
20860 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
20863 if (!isBadRegT(rD) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
20919 putIRegT(rD, mkexpr(dstT), condT); in disInstr_THUMB_WRK()
20920 DIP("%s r%u, r%u, ror #%u\n", nm, rD, rM, 8 * rot); in disInstr_THUMB_WRK()
20929 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
20931 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
20934 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
20935 DIP("mul.w r%u, r%u, r%u\n", rD, rN, rM); in disInstr_THUMB_WRK()
20944 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
20946 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
20953 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
20954 DIP("sdiv.w r%u, r%u, r%u\n", rD, rN, rM); in disInstr_THUMB_WRK()
20963 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
20965 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
20972 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
20973 DIP("udiv.w r%u, r%u, r%u\n", rD, rN, rM); in disInstr_THUMB_WRK()
21005 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
21007 if (!isBadRegT(rD) && !isBadRegT(rN) in disInstr_THUMB_WRK()
21015 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
21017 isMLA ? "mla" : "mls", rD, rN, rM, rA); in disInstr_THUMB_WRK()
21026 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
21027 if (!isBadRegT(rD)) { in disInstr_THUMB_WRK()
21030 putIRegT(rD, binop(Iop_Add32, in disInstr_THUMB_WRK()
21034 DIP("add r%u, pc, #%u\n", rD, imm32); in disInstr_THUMB_WRK()
21114 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
21117 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
21123 putIRegT(rD, res, condT); in disInstr_THUMB_WRK()
21125 bitR ? "r" : "", rD, rN, rM); in disInstr_THUMB_WRK()
21136 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
21139 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM) && (rA != 13)) { in disInstr_THUMB_WRK()
21147 putIRegT(rD, res, condT); in disInstr_THUMB_WRK()
21149 bitR ? "r" : "", rD, rN, rM, rA); in disInstr_THUMB_WRK()
21158 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
21159 if (!isBadRegT(rD)) { in disInstr_THUMB_WRK()
21162 putIRegT(rD, binop(Iop_Sub32, in disInstr_THUMB_WRK()
21166 DIP("sub r%u, pc, #%u\n", rD, imm32); in disInstr_THUMB_WRK()
21174 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
21178 if (isBadRegT(rD) || rN == 13 || msb < lsb) { in disInstr_THUMB_WRK()
21190 assign(olddst, getIRegT(rD)); in disInstr_THUMB_WRK()
21201 putIRegT(rD, mkexpr(newdst), condT); in disInstr_THUMB_WRK()
21205 rD, lsb, msb-lsb+1); in disInstr_THUMB_WRK()
21208 rD, rN, lsb, msb-lsb+1); in disInstr_THUMB_WRK()
21222 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
21225 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
21236 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
21238 isU ? 'u' : 's', rD, rN, rM, rot); in disInstr_THUMB_WRK()
21251 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
21254 if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) { in disInstr_THUMB_WRK()
21265 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
21267 isU ? 'u' : 's', rD, rN, rM, rot); in disInstr_THUMB_WRK()
21277 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
21279 if (!isBadRegT(rD) && !isBadRegT(rM1) && rM1 == rM2) { in disInstr_THUMB_WRK()
21288 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
21289 DIP("clz r%u, r%u\n", rD, rM1); in disInstr_THUMB_WRK()
21299 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
21301 if (!isBadRegT(rD) && !isBadRegT(rM1) && rM1 == rM2) { in disInstr_THUMB_WRK()
21305 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
21306 DIP("rbit r%u, r%u\n", rD, rM1); in disInstr_THUMB_WRK()
21318 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
21321 if (!isBadRegT(rD) && !isBadRegT(rM1) && rM1 == rM2) { in disInstr_THUMB_WRK()
21325 putIRegT(rD, mkexpr(res), condT); in disInstr_THUMB_WRK()
21326 DIP("rev%s r%u, r%u\n", isREV ? "" : "16", rD, rM1); in disInstr_THUMB_WRK()
21337 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
21338 if (!isBadRegT(rD) && !isBadRegT(rM1) && rM1 == rM2) { in disInstr_THUMB_WRK()
21359 putIRegT(rD, mkexpr(irt_res), condT); in disInstr_THUMB_WRK()
21360 DIP("revsh r%u, r%u\n", rD, rM1); in disInstr_THUMB_WRK()
21384 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
21385 if (!isBadRegT(rD)) { in disInstr_THUMB_WRK()
21387 putIRegT( rD, mkexpr(apsr), condT ); in disInstr_THUMB_WRK()
21388 DIP("mrs r%u, cpsr\n", rD); in disInstr_THUMB_WRK()
21461 UInt rD = INSN1(11,8); in disInstr_THUMB_WRK() local
21463 if (!isBadRegT(rD) && !isBadRegT(rT) && rN != 15 in disInstr_THUMB_WRK()
21464 && rD != rN && rD != rT) { in disInstr_THUMB_WRK()
21480 putIRegT(rD, mkexpr(resSC32), IRTemp_INVALID); in disInstr_THUMB_WRK()
21481 DIP("strex r%u, r%u, [r%u, #+%u]\n", rD, rT, rN, imm8 * 4); in disInstr_THUMB_WRK()
21491 UInt rD = INSN1(3,0); in disInstr_THUMB_WRK() local
21493 if (!isBadRegT(rD) && !isBadRegT(rT) && rN != 15 in disInstr_THUMB_WRK()
21494 && rD != rN && rD != rT) { in disInstr_THUMB_WRK()
21509 putIRegT(rD, mkexpr(resSC32), IRTemp_INVALID); in disInstr_THUMB_WRK()
21510 DIP("strex%c r%u, r%u, [r%u]\n", isH ? 'h' : 'b', rD, rT, rN); in disInstr_THUMB_WRK()
21520 UInt rD = INSN1(3,0); in disInstr_THUMB_WRK() local
21521 if (!isBadRegT(rD) && !isBadRegT(rT) && !isBadRegT(rT2) in disInstr_THUMB_WRK()
21522 && rN != 15 && rD != rN && rD != rT && rD != rT2) { in disInstr_THUMB_WRK()
21539 putIRegT(rD, mkexpr(resSC32), IRTemp_INVALID); in disInstr_THUMB_WRK()
21540 DIP("strexd r%u, r%u, r%u, [r%u]\n", rD, rT, rT2, rN); in disInstr_THUMB_WRK()
21627 UInt rD = INSN1(15,12); in disInstr_THUMB_WRK() local
21628 if (!isBadRegT(rD)) { in disInstr_THUMB_WRK()
21629 putIRegT(rD, IRExpr_Get(OFFB_TPIDRURO, Ity_I32), condT); in disInstr_THUMB_WRK()
21630 DIP("mrc p15,0, r%u, c13, c0, 3\n", rD); in disInstr_THUMB_WRK()
21642 UInt rD = INSN1(15,12); in disInstr_THUMB_WRK() local
21643 if (!isBadRegT(rD)) { in disInstr_THUMB_WRK()
21644 putIRegT(rD, mkU32(0), condT); in disInstr_THUMB_WRK()
21645 DIP("mrc p15,0, r%u, c9, c14, 0\n", rD); in disInstr_THUMB_WRK()