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

Unified Diff: src/IceRegistersARM32.h

Issue 1540653003: Add VADD instruction to the ARM integrated assembler. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Clean up ARM register functions. Created 4 years, 11 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 | « src/IceInstARM32.cpp ('k') | tests_lit/assembler/arm32/vadd.ll » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/IceRegistersARM32.h
diff --git a/src/IceRegistersARM32.h b/src/IceRegistersARM32.h
index 0caa9ccdf4e225ccfd0e40bcd6838c36bbb4011b..8ea5b01e5c2fada24c35458f838f270c52eeb084 100644
--- a/src/IceRegistersARM32.h
+++ b/src/IceRegistersARM32.h
@@ -146,56 +146,99 @@ public:
#undef X
};
- static inline GPRRegister getEncodedGPR(int32_t RegNum) {
- assert(Reg_GPR_First <= RegNum);
- assert(RegNum <= Reg_GPR_Last);
+ static inline void assertRegisterDefined(int32_t RegNum) {
+ (void)RegNum;
+ assert(RegNum >= 0);
+ assert(RegNum < Reg_NUM);
+ }
+
+ static inline bool isGPRegister(int32_t RegNum) {
+ assertRegisterDefined(RegNum);
+ return Table[RegNum].IsGPR;
+ }
+
+ static constexpr inline SizeT getNumGPRegs() {
+ return 0
+#define X(val, encode, name, cc_arg, scratch, preserved, stackptr, frameptr, \
+ isGPR, isInt, isI64Pair, isFP32, isFP64, isVec128, alias_init) \
+ +(isGPR)
+ REGARM32_TABLE
+#undef X
+ ;
+ }
+
+ static inline GPRRegister getEncodedGPReg(int32_t RegNum) {
+ assert(isGPRegister(RegNum));
return GPRRegister(Table[RegNum].Encoding);
}
static inline GPRRegister getI64PairFirstGPRNum(int32_t RegNum) {
- assert(Reg_I64PAIR_First <= RegNum);
- assert(RegNum <= Reg_I64PAIR_Last);
+ assert(isI64RegisterPair(RegNum));
return GPRRegister(Table[RegNum].Encoding);
}
static inline GPRRegister getI64PairSecondGPRNum(int32_t RegNum) {
- assert(Reg_I64PAIR_First <= RegNum);
- assert(RegNum <= Reg_I64PAIR_Last);
+ assert(isI64RegisterPair(RegNum));
return GPRRegister(Table[RegNum].Encoding + 1);
}
static inline bool isI64RegisterPair(int32_t RegNum) {
+ assertRegisterDefined(RegNum);
return Table[RegNum].IsI64Pair;
}
static inline bool isEncodedSReg(int32_t RegNum) {
+ assertRegisterDefined(RegNum);
return Table[RegNum].IsFP32;
}
- static inline SizeT getNumSRegs() {
- return Reg_SREG_Last + 1 - Reg_SREG_First;
+ static constexpr inline SizeT getNumSRegs() {
+ return 0
+#define X(val, encode, name, cc_arg, scratch, preserved, stackptr, frameptr, \
+ isGPR, isInt, isI64Pair, isFP32, isFP64, isVec128, alias_init) \
+ +(isFP32)
+ REGARM32_TABLE
+#undef X
+ ;
}
static inline SRegister getEncodedSReg(int32_t RegNum) {
- assert(Reg_SREG_First <= RegNum);
- assert(RegNum <= Reg_SREG_Last);
+ assert(isEncodedSReg(RegNum));
return SRegister(Table[RegNum].Encoding);
}
+ static inline bool isEncodedDReg(int32_t RegNum) {
+ assertRegisterDefined(RegNum);
+ return Table[RegNum].IsFP64;
+ }
+
+ static constexpr inline SizeT getNumDRegs() {
+ return 0
+#define X(val, encode, name, cc_arg, scratch, preserved, stackptr, frameptr, \
+ isGPR, isInt, isI64Pair, isFP32, isFP64, isVec128, alias_init) \
+ +(isFP64)
+ REGARM32_TABLE
+#undef X
+ ;
+ }
+
static inline DRegister getEncodedDReg(int32_t RegNum) {
- assert(Reg_DREG_First <= RegNum);
- assert(RegNum <= Reg_DREG_Last);
+ assert(isEncodedDReg(RegNum));
return DRegister(Table[RegNum].Encoding);
}
+ static inline bool isEncodedQReg(int32_t RegNum) {
+ assertRegisterDefined(RegNum);
+ return Table[RegNum].IsVec128;
+ }
+
static inline QRegister getEncodedQReg(int32_t RegNum) {
- assert(Reg_QREG_First <= RegNum);
- assert(RegNum <= Reg_QREG_Last);
+ assert(isEncodedQReg(RegNum));
return QRegister(Table[RegNum].Encoding);
}
- static inline IceString getRegName(SizeT RegNum) {
- assert(RegNum < Reg_NUM);
+ static inline IceString getRegName(int32_t RegNum) {
+ assertRegisterDefined(RegNum);
return Table[RegNum].Name;
}
};
« no previous file with comments | « src/IceInstARM32.cpp ('k') | tests_lit/assembler/arm32/vadd.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698