• Home
  • Raw
  • Download

Lines Matching refs:rd

28 bool Thumb2Assembler::ShifterOperandCanHold(Register rd ATTRIBUTE_UNUSED,  in ShifterOperandCanHold()
54 void Thumb2Assembler::and_(Register rd, Register rn, const ShifterOperand& so, in and_() argument
56 EmitDataProcessing(cond, AND, 0, rn, rd, so); in and_()
60 void Thumb2Assembler::eor(Register rd, Register rn, const ShifterOperand& so, in eor() argument
62 EmitDataProcessing(cond, EOR, 0, rn, rd, so); in eor()
66 void Thumb2Assembler::sub(Register rd, Register rn, const ShifterOperand& so, in sub() argument
68 EmitDataProcessing(cond, SUB, 0, rn, rd, so); in sub()
72 void Thumb2Assembler::rsb(Register rd, Register rn, const ShifterOperand& so, in rsb() argument
74 EmitDataProcessing(cond, RSB, 0, rn, rd, so); in rsb()
78 void Thumb2Assembler::rsbs(Register rd, Register rn, const ShifterOperand& so, in rsbs() argument
80 EmitDataProcessing(cond, RSB, 1, rn, rd, so); in rsbs()
84 void Thumb2Assembler::add(Register rd, Register rn, const ShifterOperand& so, in add() argument
86 EmitDataProcessing(cond, ADD, 0, rn, rd, so); in add()
90 void Thumb2Assembler::adds(Register rd, Register rn, const ShifterOperand& so, in adds() argument
92 EmitDataProcessing(cond, ADD, 1, rn, rd, so); in adds()
96 void Thumb2Assembler::subs(Register rd, Register rn, const ShifterOperand& so, in subs() argument
98 EmitDataProcessing(cond, SUB, 1, rn, rd, so); in subs()
102 void Thumb2Assembler::adc(Register rd, Register rn, const ShifterOperand& so, in adc() argument
104 EmitDataProcessing(cond, ADC, 0, rn, rd, so); in adc()
108 void Thumb2Assembler::sbc(Register rd, Register rn, const ShifterOperand& so, in sbc() argument
110 EmitDataProcessing(cond, SBC, 0, rn, rd, so); in sbc()
114 void Thumb2Assembler::rsc(Register rd, Register rn, const ShifterOperand& so, in rsc() argument
116 EmitDataProcessing(cond, RSC, 0, rn, rd, so); in rsc()
142 void Thumb2Assembler::orr(Register rd, Register rn, in orr() argument
144 EmitDataProcessing(cond, ORR, 0, rn, rd, so); in orr()
148 void Thumb2Assembler::orrs(Register rd, Register rn, in orrs() argument
150 EmitDataProcessing(cond, ORR, 1, rn, rd, so); in orrs()
154 void Thumb2Assembler::mov(Register rd, const ShifterOperand& so, Condition cond) { in mov() argument
155 EmitDataProcessing(cond, MOV, 0, R0, rd, so); in mov()
159 void Thumb2Assembler::movs(Register rd, const ShifterOperand& so, Condition cond) { in movs() argument
160 EmitDataProcessing(cond, MOV, 1, R0, rd, so); in movs()
164 void Thumb2Assembler::bic(Register rd, Register rn, const ShifterOperand& so, in bic() argument
166 EmitDataProcessing(cond, BIC, 0, rn, rd, so); in bic()
170 void Thumb2Assembler::mvn(Register rd, const ShifterOperand& so, Condition cond) { in mvn() argument
171 EmitDataProcessing(cond, MVN, 0, R0, rd, so); in mvn()
175 void Thumb2Assembler::mvns(Register rd, const ShifterOperand& so, Condition cond) { in mvns() argument
176 EmitDataProcessing(cond, MVN, 1, R0, rd, so); in mvns()
180 void Thumb2Assembler::mul(Register rd, Register rn, Register rm, Condition cond) { in mul() argument
183 if (rd == rm && !IsHighRegister(rd) && !IsHighRegister(rn) && !force_32bit_) { in mul()
186 rn << 3 | rd; in mul()
196 static_cast<uint32_t>(rd) << 8 | in mul()
205 void Thumb2Assembler::mla(Register rd, Register rn, Register rm, Register ra, in mla() argument
214 static_cast<uint32_t>(rd) << 8 | in mla()
223 void Thumb2Assembler::mls(Register rd, Register rn, Register rm, Register ra, in mls() argument
232 static_cast<uint32_t>(rd) << 8 | in mls()
259 void Thumb2Assembler::sdiv(Register rd, Register rn, Register rm, Condition cond) { in sdiv() argument
268 static_cast<uint32_t>(rd) << 8 | in sdiv()
276 void Thumb2Assembler::udiv(Register rd, Register rn, Register rm, Condition cond) { in udiv() argument
285 static_cast<uint32_t>(rd) << 8 | in udiv()
293 void Thumb2Assembler::sbfx(Register rd, Register rn, uint32_t lsb, uint32_t width, Condition cond) { in sbfx() argument
306 static_cast<uint32_t>(rd) << 8 | in sbfx()
314 void Thumb2Assembler::ubfx(Register rd, Register rn, uint32_t lsb, uint32_t width, Condition cond) { in ubfx() argument
327 static_cast<uint32_t>(rd) << 8 | in ubfx()
335 void Thumb2Assembler::ldr(Register rd, const Address& ad, Condition cond) { in ldr() argument
336 EmitLoadStore(cond, true, false, false, false, rd, ad); in ldr()
340 void Thumb2Assembler::str(Register rd, const Address& ad, Condition cond) { in str() argument
341 EmitLoadStore(cond, false, false, false, false, rd, ad); in str()
345 void Thumb2Assembler::ldrb(Register rd, const Address& ad, Condition cond) { in ldrb() argument
346 EmitLoadStore(cond, true, true, false, false, rd, ad); in ldrb()
350 void Thumb2Assembler::strb(Register rd, const Address& ad, Condition cond) { in strb() argument
351 EmitLoadStore(cond, false, true, false, false, rd, ad); in strb()
355 void Thumb2Assembler::ldrh(Register rd, const Address& ad, Condition cond) { in ldrh() argument
356 EmitLoadStore(cond, true, false, true, false, rd, ad); in ldrh()
360 void Thumb2Assembler::strh(Register rd, const Address& ad, Condition cond) { in strh() argument
361 EmitLoadStore(cond, false, false, true, false, rd, ad); in strh()
365 void Thumb2Assembler::ldrsb(Register rd, const Address& ad, Condition cond) { in ldrsb() argument
366 EmitLoadStore(cond, true, true, false, true, rd, ad); in ldrsb()
370 void Thumb2Assembler::ldrsh(Register rd, const Address& ad, Condition cond) { in ldrsh() argument
371 EmitLoadStore(cond, true, false, true, true, rd, ad); in ldrsh()
375 void Thumb2Assembler::ldrd(Register rd, const Address& ad, Condition cond) { in ldrd() argument
376 ldrd(rd, Register(rd + 1), ad, cond); in ldrd()
380 void Thumb2Assembler::ldrd(Register rd, Register rd2, const Address& ad, Condition cond) { in ldrd() argument
385 static_cast<int32_t>(rd) << 12 | in ldrd()
392 void Thumb2Assembler::strd(Register rd, const Address& ad, Condition cond) { in strd() argument
393 strd(rd, Register(rd + 1), ad, cond); in strd()
397 void Thumb2Assembler::strd(Register rd, Register rd2, const Address& ad, Condition cond) { in strd() argument
402 static_cast<int32_t>(rd) << 12 | in strd()
698 Register rd, in Is32BitDataProcessing() argument
707 if (rd == SP) { in Is32BitDataProcessing()
711 } else if (!IsHighRegister(rd) && opcode == ADD) { in Is32BitDataProcessing()
719 || ((opcode == ADD) && (rn == rd) && !set_cc); in Is32BitDataProcessing()
721 if (IsHighRegister(rd) || IsHighRegister(rn)) { in Is32BitDataProcessing()
766 if (so.IsRegister() && rd != rn) { in Is32BitDataProcessing()
772 if (rn_is_valid && rn != rd) { in Is32BitDataProcessing()
804 Register rd, in Emit32BitDataProcessing() argument
816 case TST: thumb_opcode = 0U /* 0b0000 */; set_cc = true; rd = PC; break; in Emit32BitDataProcessing()
817 case TEQ: thumb_opcode = 4U /* 0b0100 */; set_cc = true; rd = PC; break; in Emit32BitDataProcessing()
818 case CMP: thumb_opcode = 13U /* 0b1101 */; set_cc = true; rd = PC; break; in Emit32BitDataProcessing()
819 case CMN: thumb_opcode = 8U /* 0b1000 */; set_cc = true; rd = PC; break; in Emit32BitDataProcessing()
854 rd << 8 | in Emit32BitDataProcessing()
869 rd << 8 | in Emit32BitDataProcessing()
878 rd << 8 | in Emit32BitDataProcessing()
889 Register rd, in Emit16BitDataProcessing() argument
892 Emit16BitAddSub(cond, opcode, set_cc, rn, rd, so); in Emit16BitDataProcessing()
947 if (rn == rd) { in Emit16BitDataProcessing()
950 CHECK_EQ(rd, so.GetRegister()); in Emit16BitDataProcessing()
956 CHECK_EQ(rd, 0); in Emit16BitDataProcessing()
957 rd = rn; in Emit16BitDataProcessing()
1012 if (IsHighRegister(rn) || IsHighRegister(rd)) { in Emit16BitDataProcessing()
1017 thumb_opcode = 12U /* 0b0001100 */ | static_cast<uint32_t>(rd) >> 3; in Emit16BitDataProcessing()
1018 rd = static_cast<Register>(static_cast<uint32_t>(rd) & 7U /* 0b111 */); in Emit16BitDataProcessing()
1040 rd << rd_shift | in Emit16BitDataProcessing()
1053 Register rd, in Emit16BitAddSub() argument
1073 if (rn == rd && !set_cc) { in Emit16BitAddSub()
1080 (static_cast<uint32_t>(rd) & 8U /* 0b1000 */) << 1); in Emit16BitAddSub()
1081 rd = static_cast<Register>(static_cast<uint32_t>(rd) & 7U /* 0b111 */); in Emit16BitAddSub()
1092 if (rd == SP && rn == SP) { in Emit16BitAddSub()
1102 rd = R0; in Emit16BitAddSub()
1106 } else if (rd != SP && rn == SP) { in Emit16BitAddSub()
1119 } else if (rn != rd) { in Emit16BitAddSub()
1143 if (rd == SP && rn == SP) { in Emit16BitAddSub()
1153 rd = R0; in Emit16BitAddSub()
1157 } else if (rn != rd) { in Emit16BitAddSub()
1178 rd << rd_shift | in Emit16BitAddSub()
1190 Register rd, in EmitDataProcessing() argument
1192 CHECK_NE(rd, kNoRegister); in EmitDataProcessing()
1195 if (Is32BitDataProcessing(cond, opcode, set_cc, rn, rd, so)) { in EmitDataProcessing()
1196 Emit32BitDataProcessing(cond, opcode, set_cc, rn, rd, so); in EmitDataProcessing()
1198 Emit16BitDataProcessing(cond, opcode, set_cc, rn, rd, so); in EmitDataProcessing()
1202 void Thumb2Assembler::EmitShift(Register rd, Register rm, Shift shift, uint8_t amount, bool setcc) { in EmitShift() argument
1204 if (IsHighRegister(rd) || IsHighRegister(rm) || shift == ROR || shift == RRX) { in EmitShift()
1222 static_cast<int16_t>(rd) << 8 | opcode << 4; in EmitShift()
1236 static_cast<int16_t>(rd); in EmitShift()
1241 void Thumb2Assembler::EmitShift(Register rd, Register rn, Shift shift, Register rm, bool setcc) { in EmitShift() argument
1244 if (IsHighRegister(rd) || IsHighRegister(rm) || IsHighRegister(rn) || rd != rn) { in EmitShift()
1263 static_cast<int16_t>(rd) << 8 | opcode << 21; in EmitShift()
1276 static_cast<int16_t>(rd); in EmitShift()
1364 Register rd, in EmitLoadStore() argument
1366 CHECK_NE(rd, kNoRegister); in EmitLoadStore()
1369 if (IsHighRegister(rd)) { in EmitLoadStore()
1412 static_cast<uint32_t>(rd) << 12 | in EmitLoadStore()
1441 encoding |= rd << 8 | offset >> 2; in EmitLoadStore()
1445 encoding |= static_cast<uint32_t>(rd); in EmitLoadStore()
1480 static_cast<uint32_t>(rd) << 12; in EmitLoadStore()
1486 int32_t encoding = B14 | (load ? B11 : 0) | static_cast<uint32_t>(rd) << 8 | offset >> 2; in EmitLoadStore()
1498 int32_t encoding = 0x1f << 27 | (load ? B20 : 0) | static_cast<uint32_t>(rd) << 12 | in EmitLoadStore()
1508 int32_t encoding = B14 | B12 | (load ? B11 : 0) | static_cast<uint32_t>(rd) | in EmitLoadStore()
1636 void Thumb2Assembler::clz(Register rd, Register rm, Condition cond) { in clz() argument
1637 CHECK_NE(rd, kNoRegister); in clz()
1640 CHECK_NE(rd, PC); in clz()
1646 static_cast<uint32_t>(rd) << 8 | in clz()
1653 void Thumb2Assembler::movw(Register rd, uint16_t imm16, Condition cond) { in movw() argument
1656 if (IsHighRegister(rd)|| imm16 >= 256u) { in movw()
1668 static_cast<uint32_t>(rd) << 8 | in movw()
1675 int16_t encoding = B13 | static_cast<uint16_t>(rd) << 8 | in movw()
1682 void Thumb2Assembler::movt(Register rd, uint16_t imm16, Condition cond) { in movt() argument
1691 static_cast<uint32_t>(rd) << 8 | in movt()
1720 void Thumb2Assembler::strex(Register rd, in strex() argument
1726 CHECK_NE(rd, kNoRegister); in strex()
1734 static_cast<uint32_t>(rd) << 8 | in strex()
1756 void Thumb2Assembler::strex(Register rd, in strex() argument
1760 strex(rd, rt, rn, 0, cond); in strex()
1764 void Thumb2Assembler::strexd(Register rd, Register rt, Register rt2, Register rn, Condition cond) { in strexd() argument
1765 CHECK_NE(rd, kNoRegister); in strexd()
1770 CHECK_NE(rd, rt); in strexd()
1771 CHECK_NE(rd, rt2); in strexd()
1779 static_cast<uint32_t>(rd); in strexd()
2214 void Thumb2Assembler::Push(Register rd, Condition cond) { in Push() argument
2215 str(rd, Address(SP, -kRegisterSize, Address::PreIndex), cond); in Push()
2219 void Thumb2Assembler::Pop(Register rd, Condition cond) { in Pop() argument
2220 ldr(rd, Address(SP, kRegisterSize, Address::PostIndex), cond); in Pop()
2234 void Thumb2Assembler::Mov(Register rd, Register rm, Condition cond) { in Mov() argument
2235 if (cond != AL || rd != rm) { in Mov()
2236 mov(rd, ShifterOperand(rm), cond); in Mov()
2320 void Thumb2Assembler::Lsl(Register rd, Register rm, uint32_t shift_imm, in Lsl() argument
2324 EmitShift(rd, rm, LSL, shift_imm, setcc); in Lsl()
2328 void Thumb2Assembler::Lsr(Register rd, Register rm, uint32_t shift_imm, in Lsr() argument
2333 EmitShift(rd, rm, LSR, shift_imm, setcc); in Lsr()
2337 void Thumb2Assembler::Asr(Register rd, Register rm, uint32_t shift_imm, in Asr() argument
2342 EmitShift(rd, rm, ASR, shift_imm, setcc); in Asr()
2346 void Thumb2Assembler::Ror(Register rd, Register rm, uint32_t shift_imm, in Ror() argument
2350 EmitShift(rd, rm, ROR, shift_imm, setcc); in Ror()
2354 void Thumb2Assembler::Rrx(Register rd, Register rm, bool setcc, Condition cond) { in Rrx() argument
2356 EmitShift(rd, rm, RRX, rm, setcc); in Rrx()
2360 void Thumb2Assembler::Lsl(Register rd, Register rm, Register rn, in Lsl() argument
2363 EmitShift(rd, rm, LSL, rn, setcc); in Lsl()
2367 void Thumb2Assembler::Lsr(Register rd, Register rm, Register rn, in Lsr() argument
2370 EmitShift(rd, rm, LSR, rn, setcc); in Lsr()
2374 void Thumb2Assembler::Asr(Register rd, Register rm, Register rn, in Asr() argument
2377 EmitShift(rd, rm, ASR, rn, setcc); in Asr()
2381 void Thumb2Assembler::Ror(Register rd, Register rm, Register rn, in Ror() argument
2384 EmitShift(rd, rm, ROR, rn, setcc); in Ror()
2455 void Thumb2Assembler::AddConstant(Register rd, int32_t value, Condition cond) { in AddConstant() argument
2456 AddConstant(rd, rd, value, cond); in AddConstant()
2460 void Thumb2Assembler::AddConstant(Register rd, Register rn, int32_t value, in AddConstant() argument
2463 if (rd != rn) { in AddConstant()
2464 mov(rd, ShifterOperand(rn), cond); in AddConstant()
2472 if (ShifterOperandCanHold(rd, rn, ADD, value, &shifter_op)) { in AddConstant()
2473 add(rd, rn, shifter_op, cond); in AddConstant()
2474 } else if (ShifterOperandCanHold(rd, rn, SUB, -value, &shifter_op)) { in AddConstant()
2475 sub(rd, rn, shifter_op, cond); in AddConstant()
2478 if (ShifterOperandCanHold(rd, rn, MVN, ~value, &shifter_op)) { in AddConstant()
2480 add(rd, rn, ShifterOperand(IP), cond); in AddConstant()
2481 } else if (ShifterOperandCanHold(rd, rn, MVN, ~(-value), &shifter_op)) { in AddConstant()
2483 sub(rd, rn, ShifterOperand(IP), cond); in AddConstant()
2490 add(rd, rn, ShifterOperand(IP), cond); in AddConstant()
2496 void Thumb2Assembler::AddConstantSetFlags(Register rd, Register rn, int32_t value, in AddConstantSetFlags() argument
2499 if (ShifterOperandCanHold(rd, rn, ADD, value, &shifter_op)) { in AddConstantSetFlags()
2500 adds(rd, rn, shifter_op, cond); in AddConstantSetFlags()
2501 } else if (ShifterOperandCanHold(rd, rn, ADD, -value, &shifter_op)) { in AddConstantSetFlags()
2502 subs(rd, rn, shifter_op, cond); in AddConstantSetFlags()
2505 if (ShifterOperandCanHold(rd, rn, MVN, ~value, &shifter_op)) { in AddConstantSetFlags()
2507 adds(rd, rn, ShifterOperand(IP), cond); in AddConstantSetFlags()
2508 } else if (ShifterOperandCanHold(rd, rn, MVN, ~(-value), &shifter_op)) { in AddConstantSetFlags()
2510 subs(rd, rn, ShifterOperand(IP), cond); in AddConstantSetFlags()
2517 adds(rd, rn, ShifterOperand(IP), cond); in AddConstantSetFlags()
2523 void Thumb2Assembler::LoadImmediate(Register rd, int32_t value, Condition cond) { in LoadImmediate() argument
2525 if (ShifterOperandCanHold(rd, R0, MOV, value, &shifter_op)) { in LoadImmediate()
2526 mov(rd, shifter_op, cond); in LoadImmediate()
2527 } else if (ShifterOperandCanHold(rd, R0, MVN, ~value, &shifter_op)) { in LoadImmediate()
2528 mvn(rd, shifter_op, cond); in LoadImmediate()
2530 movw(rd, Low16Bits(value), cond); in LoadImmediate()
2533 movt(rd, value_high, cond); in LoadImmediate()