Index: src/IceRegistersARM32.h |
diff --git a/src/IceRegistersARM32.h b/src/IceRegistersARM32.h |
index 31323c250b9d725410133ec4e9094ba2d8512233..3136b38ebdd6a0094002a5e5b3a829ee64bd645c 100644 |
--- a/src/IceRegistersARM32.h |
+++ b/src/IceRegistersARM32.h |
@@ -146,12 +146,39 @@ public: |
#undef X |
}; |
+ enum RegClass { |
Jim Stichnoth
2016/01/13 16:24:54
FWIW, there is already Ice::RegClass defined in Ic
Karl
2016/01/14 18:27:19
Changed to use TypeToRegisterSet vectors for this
|
+ RegClass_GP, |
+ RegClass_GPPair, |
+ RegClass_S, |
+ RegClass_D, |
+ RegClass_Q, |
+ RegClass_Other, |
+ // Defines the number of RegClass'es |
+ Num_RegClasses |
Jim Stichnoth
2016/01/13 16:24:54
Usually this dummy value is named something like R
Karl
2016/01/14 18:27:19
Done.
|
+ }; |
+ |
static inline void assertRegisterDefined(int32_t RegNum) { |
(void)RegNum; |
assert(RegNum >= 0); |
assert(RegNum < Reg_NUM); |
} |
+ static RegClass getRegClass(int32_t RegNum) { |
Jim Stichnoth
2016/01/13 16:24:54
I'm not sure why some of these functions are "stat
Karl
2016/01/14 18:27:19
The inline's are removed. I left removing class Re
|
+ assert(RegNum >= 0); |
+ assert(RegNum < Reg_NUM); |
+ if (Table[RegNum].IsGPR) |
+ return RegClass_GP; |
+ if (Table[RegNum].IsI64Pair) |
+ return RegClass_GPPair; |
+ if (Table[RegNum].IsFP32) |
+ return RegClass_S; |
+ if (Table[RegNum].IsFP64) |
+ return RegClass_D; |
+ if (Table[RegNum].IsVec128) |
+ return RegClass_Q; |
+ return RegClass_Other; |
+ } |
+ |
static inline bool isGPRegister(int32_t RegNum) { |
assertRegisterDefined(RegNum); |
return Table[RegNum].IsGPR; |