diff options
author | Michael Kuperstein <michael.m.kuperstein@intel.com> | 2015-03-24 09:17:25 +0000 |
---|---|---|
committer | Michael Kuperstein <michael.m.kuperstein@intel.com> | 2015-03-24 09:17:25 +0000 |
commit | 774b441b5e11a92d179f57a90c277b48ec74c802 (patch) | |
tree | 5f6f9f7de2277b6b73b0e1222dea34fc4fdd7ae2 /llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h | |
parent | 25122a3c570a2a324420447bce3ba95aaef304d6 (diff) | |
download | bcm5719-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.h | 10 |
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); |