summaryrefslogtreecommitdiff
path: root/src/jit/emitarm.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/jit/emitarm.h')
-rw-r--r--src/jit/emitarm.h17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/jit/emitarm.h b/src/jit/emitarm.h
index 1440148f42..1e286e8425 100644
--- a/src/jit/emitarm.h
+++ b/src/jit/emitarm.h
@@ -10,10 +10,8 @@
struct CnsVal
{
- int cnsVal;
-#ifdef RELOC_SUPPORT
+ int cnsVal;
bool cnsReloc;
-#endif
};
insSize emitInsSize(insFormat insFmt);
@@ -109,6 +107,10 @@ bool emitInsIsLoad(instruction ins);
bool emitInsIsStore(instruction ins);
bool emitInsIsLoadOrStore(instruction ins);
+// Generate code for a load or store operation and handle the case
+// of contained GT_LEA op1 with [base + index<<scale + offset]
+void emitInsLoadStoreOp(instruction ins, emitAttr attr, regNumber dataReg, GenTreeIndir* indir);
+
/*****************************************************************************
*
* Convert between an index scale in bytes to a smaller encoding used for
@@ -230,6 +232,13 @@ inline static bool insOptsROR(insOpts opt)
return (opt == INS_OPTS_ROR);
}
+// Returns the number of bits used by the given 'size'.
+inline static unsigned getBitWidth(emitAttr size)
+{
+ assert(size <= EA_8BYTE);
+ return (unsigned)size * BITS_PER_BYTE;
+}
+
/************************************************************************/
/* The public entry points to output instructions */
/************************************************************************/
@@ -239,7 +248,9 @@ static bool emitIns_valid_imm_for_alu(int imm);
static bool emitIns_valid_imm_for_mov(int imm);
static bool emitIns_valid_imm_for_small_mov(regNumber reg, int imm, insFlags flags);
static bool emitIns_valid_imm_for_add(int imm, insFlags flags);
+static bool emitIns_valid_imm_for_cmp(int imm, insFlags flags);
static bool emitIns_valid_imm_for_add_sp(int imm);
+static bool emitIns_valid_imm_for_ldst_offset(int imm, emitAttr size);
void emitIns(instruction ins);