summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h
diff options
context:
space:
mode:
authorMichael Kuperstein <michael.m.kuperstein@intel.com>2015-03-24 09:17:25 +0000
committerMichael Kuperstein <michael.m.kuperstein@intel.com>2015-03-24 09:17:25 +0000
commit774b441b5e11a92d179f57a90c277b48ec74c802 (patch)
tree5f6f9f7de2277b6b73b0e1222dea34fc4fdd7ae2 /llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h
parent25122a3c570a2a324420447bce3ba95aaef304d6 (diff)
downloadbcm5719-llvm-774b441b5e11a92d179f57a90c277b48ec74c802.tar.gz
bcm5719-llvm-774b441b5e11a92d179f57a90c277b48ec74c802.zip
Use std::bitset for SubtargetFeatures
Previously, subtarget features were a bitfield with the underlying type being uint64_t. Since several targets (X86 and ARM, in particular) have hit or were very close to hitting this bound, switching the features to use a bitset. No functional change. The first time this was committed (r229831), it caused several buildbot failures. At least some of the ARM ones were due to gcc/binutils issues, and should now be fixed. Differential Revision: http://reviews.llvm.org/D8542 llvm-svn: 233055
Diffstat (limited to 'llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h')
-rw-r--r--llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h b/llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h
index 6d0337ce15e..4e80a79d293 100644
--- a/llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h
+++ b/llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h
@@ -26,6 +26,8 @@
namespace llvm {
+class FeatureBitset;
+
inline static unsigned getWRegFromXReg(unsigned Reg) {
switch (Reg) {
case AArch64::X0: return AArch64::W0;
@@ -1139,21 +1141,21 @@ namespace AArch64SysReg {
const AArch64NamedImmMapper::Mapping *InstPairs;
size_t NumInstPairs;
- uint64_t FeatureBits;
+ const FeatureBitset &FeatureBits;
- SysRegMapper(uint64_t FeatureBits) : FeatureBits(FeatureBits) { }
+ SysRegMapper(const FeatureBitset &FeatureBits) : FeatureBits(FeatureBits) { }
uint32_t fromString(StringRef Name, bool &Valid) const;
std::string toString(uint32_t Bits) const;
};
struct MSRMapper : SysRegMapper {
static const AArch64NamedImmMapper::Mapping MSRPairs[];
- MSRMapper(uint64_t FeatureBits);
+ MSRMapper(const FeatureBitset &FeatureBits);
};
struct MRSMapper : SysRegMapper {
static const AArch64NamedImmMapper::Mapping MRSPairs[];
- MRSMapper(uint64_t FeatureBits);
+ MRSMapper(const FeatureBitset &FeatureBits);
};
uint32_t ParseGenericRegister(StringRef Name, bool &Valid);
OpenPOWER on IntegriCloud