Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(29)

Unified Diff: src/arm/assembler-arm.h

Issue 23530065: Thumb2 Backend: Branch, load, store, misc. instruction encoding methods Base URL: HEAD^
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/arm/assembler-arm.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « no previous file | src/arm/assembler-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698