| Index: src/arm/assembler-arm.h
|
| diff --git a/src/arm/assembler-arm.h b/src/arm/assembler-arm.h
|
| index 8f224c8af162eb4e075a3f299dd900d7f708b6eb..c0f0125803c285f1b87e820c537ebb1f4f736342 100644
|
| --- a/src/arm/assembler-arm.h
|
| +++ b/src/arm/assembler-arm.h
|
| @@ -824,6 +824,7 @@ class Assembler : public AssemblerBase {
|
|
|
| // Branch instructions
|
| void b(int branch_offset, Condition cond = al);
|
| + void b_thumb(int branch_offset, Condition cond);
|
| void bl(int branch_offset, Condition cond = al);
|
| void blx(int branch_offset); // v5 and above
|
| void blx(Register target, Condition cond = al); // v5 and above
|
| @@ -1023,12 +1024,18 @@ class Assembler : public AssemblerBase {
|
|
|
| void mla(Register dst, Register src1, Register src2, Register srcA,
|
| SBit s = LeaveCC, Condition cond = al);
|
| + void mla_thumb(Register dst, Register src1, Register src2, Register srcA,
|
| + SBit s, Condition cond);
|
|
|
| void mls(Register dst, Register src1, Register src2, Register srcA,
|
| Condition cond = al);
|
| + void mls_thumb(Register dst, Register src1, Register src2, Register srcA,
|
| + Condition cond);
|
|
|
| void sdiv(Register dst, Register src1, Register src2,
|
| Condition cond = al);
|
| + void sdiv_thumb(Register dst, Register src1, Register src2,
|
| + Condition cond);
|
|
|
| void mul(Register dst, Register src1, Register src2,
|
| SBit s = LeaveCC, Condition cond = al);
|
| @@ -1039,15 +1046,23 @@ class Assembler : public AssemblerBase {
|
|
|
| void smlal(Register dstL, Register dstH, Register src1, Register src2,
|
| SBit s = LeaveCC, Condition cond = al);
|
| + void smlal_thumb(Register dstL, Register dstH, Register src1, Register src2,
|
| + SBit s, Condition cond);
|
|
|
| void smull(Register dstL, Register dstH, Register src1, Register src2,
|
| SBit s = LeaveCC, Condition cond = al);
|
| + void smull_thumb(Register dstL, Register dstH, Register src1, Register src2,
|
| + SBit s, Condition cond);
|
|
|
| void umlal(Register dstL, Register dstH, Register src1, Register src2,
|
| SBit s = LeaveCC, Condition cond = al);
|
| + void umlal_thumb(Register dstL, Register dstH, Register src1, Register src2,
|
| + SBit s, Condition cond);
|
|
|
| void umull(Register dstL, Register dstH, Register src1, Register src2,
|
| SBit s = LeaveCC, Condition cond = al);
|
| + void umull_thumb(Register dstL, Register dstH, Register src1, Register src2,
|
| + SBit s, Condition cond);
|
|
|
| // Miscellaneous arithmetic instructions
|
|
|
| @@ -1105,13 +1120,45 @@ class Assembler : public AssemblerBase {
|
|
|
| // Load/Store instructions
|
| void ldr(Register dst, const MemOperand& src, Condition cond = al);
|
| + void ldr_thumb(Register dst, const MemOperand& src);
|
| + void ldr_thumb_immediate(Register dst, const MemOperand& src);
|
| + void ldr_thumb_register(Register dst, const MemOperand& src);
|
| +
|
| void str(Register src, const MemOperand& dst, Condition cond = al);
|
| + void str_thumb(Register src, const MemOperand& dst);
|
| + void str_thumb_register(Register src, const MemOperand& dst);
|
| + void str_thumb_immediate(Register src, const MemOperand& dst);
|
| +
|
| void ldrb(Register dst, const MemOperand& src, Condition cond = al);
|
| + void ldrb_thumb_immediate(Register dst, const MemOperand& src);
|
| + void ldrb_thumb_register(Register dst, const MemOperand& src);
|
| + void ldrb_thumb(Register dst, const MemOperand& src);
|
| +
|
| void strb(Register src, const MemOperand& dst, Condition cond = al);
|
| + void strb_thumb_immediate(Register src, const MemOperand& dst);
|
| + void strb_thumb_register(Register src, const MemOperand& dst);
|
| + void strb_thumb(Register src, const MemOperand& dst);
|
| +
|
| void ldrh(Register dst, const MemOperand& src, Condition cond = al);
|
| + void ldrh_thumb_immediate(Register dst, const MemOperand& src);
|
| + void ldrh_thumb_register(Register dst, const MemOperand& src);
|
| + void ldrh_thumb(Register dst, const MemOperand& src);
|
| +
|
| void strh(Register src, const MemOperand& dst, Condition cond = al);
|
| + void strh_thumb_immediate(Register src, const MemOperand& dst); // 4_4
|
| + void strh_thumb_register(Register src, const MemOperand& dst); // 4_1
|
| + void strh_thumb(Register src, const MemOperand& dst);
|
| +
|
| void ldrsb(Register dst, const MemOperand& src, Condition cond = al);
|
| + void ldrsb_thumb_immediate(Register dst, const MemOperand& src);
|
| + void ldrsb_thumb_register(Register dst, const MemOperand& src);
|
| + void ldrsb_thumb(Register dst, const MemOperand& src);
|
| +
|
| void ldrsh(Register dst, const MemOperand& src, Condition cond = al);
|
| + void ldrsh_thumb(Register dst, const MemOperand& src);
|
| + void ldrsh_thumb_immediate(Register dst, const MemOperand& src);
|
| + void ldrsh_thumb_register(Register dst, const MemOperand& src);
|
| +
|
| void ldrd(Register dst1,
|
| Register dst2,
|
| const MemOperand& src, Condition cond = al);
|
| @@ -1130,7 +1177,10 @@ class Assembler : public AssemblerBase {
|
|
|
| // Load/Store multiple instructions
|
| void ldm(BlockAddrMode am, Register base, RegList dst, Condition cond = al);
|
| + void ldm_thumb(BlockAddrMode am, Register base, RegList dst, Condition cond);
|
| +
|
| void stm(BlockAddrMode am, Register base, RegList src, Condition cond = al);
|
| + void stm_thumb(BlockAddrMode am, Register base, RegList dst, Condition cond);
|
|
|
| // Exception-generating instructions and debugging support
|
| void stop(const char* msg,
|
| @@ -1389,6 +1439,7 @@ class Assembler : public AssemblerBase {
|
| void it_thumb(Condition cond, int num_instr, bool cond2 = false,
|
| bool cond3 = false, bool cond4 = false);
|
| inline void emit_it(Condition cond);
|
| + void ldr_pc_thumb(Register dst, const Operand& src);
|
|
|
| static bool use_immediate_embedded_pointer_loads(
|
| const Assembler* assembler) {
|
| @@ -1663,6 +1714,10 @@ class Assembler : public AssemblerBase {
|
| Register rd,
|
| SBit s,
|
| const Operand& x);
|
| + void move_32_bit_immediate_thumb(Register rd,
|
| + SBit s,
|
| + const Operand& x,
|
| + Condition cond = al);
|
|
|
| // Instruction generation
|
| void addrmod1(Instr instr, Register rn, Register rd, const Operand& x);
|
|
|