summaryrefslogtreecommitdiff
path: root/src/compiler/codegen/mips/MipsLIR.h
diff options
context:
space:
mode:
author buzbee <buzbee@google.com> 2012-03-03 11:48:39 -0800
committer buzbee <buzbee@google.com> 2012-03-03 16:32:24 -0800
commitc5159d55ca8e9022b748176f9f53676e8e9d4cd2 (patch)
treed407a682788fbbca4dbd0821350058a3c2901617 /src/compiler/codegen/mips/MipsLIR.h
parent5b455485c1deda58959fdc410050e01448c032c2 (diff)
MIPS switch table support
And 64-bit neg/add/sub (ouch! Mips has no carry bit...) Change-Id: Ifb94324a0052d6069977fb8f22679b95890445d8
Diffstat (limited to 'src/compiler/codegen/mips/MipsLIR.h')
-rw-r--r--src/compiler/codegen/mips/MipsLIR.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/compiler/codegen/mips/MipsLIR.h b/src/compiler/codegen/mips/MipsLIR.h
index b2cfdbed59..5034623c2b 100644
--- a/src/compiler/codegen/mips/MipsLIR.h
+++ b/src/compiler/codegen/mips/MipsLIR.h
@@ -426,6 +426,10 @@ typedef enum MipsOpCode {
kMipsMfc1, /* mfc1 t,s [01000100000] t[20..16] s[15..11] [00000000000] */
kMipsMtc1, /* mtc1 t,s [01000100100] t[20..16] s[15..11] [00000000000] */
#endif
+ kMipsDelta, /* Psuedo for ori t, s, <label>-<label> */
+ kMipsDeltaHi, /* Pseudo for lui t, high16(<label>-<label>) */
+ kMipsDeltaLo, /* Pseudo for ori t, s, low16(<label>-<label>) */
+ kMipsCurrPC, /* jal to .+8 to materialize pc */
kMipsUndefined, /* undefined [011001xxxxxxxxxxxxxxxx] */
kMipsLast
} MipsOpCode;
@@ -458,6 +462,7 @@ typedef enum MipsOpFeatureFlags {
kMemLoad,
kMemStore,
kPCRelFixup,
+ kRegUseLR,
// FIXME: add NEEDS_FIXUP to instruction attributes
} MipsOpFeatureFlags;
@@ -486,7 +491,8 @@ typedef enum MipsOpFeatureFlags {
#define IS_IT (1 << kIsIT)
#define SETS_CCODES (1 << kSetsCCodes)
#define USES_CCODES (1 << kUsesCCodes)
-#define NEEDS_FIXUP (1 << kPCRelFixup)
+#define NEEDS_FIXUP (1 << kPCRelFixup)
+#define REG_USE_LR (1 << kRegUseLR)
/* attributes, included for compatibility */
#define REG_DEF_FPCS_LIST0 (0)
@@ -513,6 +519,7 @@ typedef enum MipsEncodingKind {
kFmtBitBlt, /* Bit string using end/start */
kFmtDfp, /* Double FP reg */
kFmtSfp, /* Single FP reg */
+ kFmtBlt5_2, /* Same 5-bit field to 2 locations */
} MipsEncodingKind;
/* Struct used to define the snippet positions for each Thumb opcode */