mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
Refactor ARM subarchitecture parsing
According to a FIXME in ARMMCTargetDesc.cpp the ARM version parsing should be in the Triple helper class. Patch by: Gabor Ballabas git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212479 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -350,6 +350,26 @@ static Triple::ObjectFormatType parseFormat(StringRef EnvironmentName) {
|
||||
.Default(Triple::UnknownObjectFormat);
|
||||
}
|
||||
|
||||
static Triple::SubArchType parseSubArch(StringRef SubArchName) {
|
||||
return StringSwitch<Triple::SubArchType>(SubArchName)
|
||||
.EndsWith("v8", Triple::ARMSubArch_v8)
|
||||
.EndsWith("v8a", Triple::ARMSubArch_v8)
|
||||
.EndsWith("v7", Triple::ARMSubArch_v7)
|
||||
.EndsWith("v7a", Triple::ARMSubArch_v7)
|
||||
.EndsWith("v7em", Triple::ARMSubArch_v7em)
|
||||
.EndsWith("v7m", Triple::ARMSubArch_v7m)
|
||||
.EndsWith("v7s", Triple::ARMSubArch_v7s)
|
||||
.EndsWith("v6", Triple::ARMSubArch_v6)
|
||||
.EndsWith("v6m", Triple::ARMSubArch_v6m)
|
||||
.EndsWith("v6t2", Triple::ARMSubArch_v6t2)
|
||||
.EndsWith("v5", Triple::ARMSubArch_v5)
|
||||
.EndsWith("v5t", Triple::ARMSubArch_v5)
|
||||
.EndsWith("v5te", Triple::ARMSubArch_v5te)
|
||||
.EndsWith("v4t", Triple::ARMSubArch_v4t)
|
||||
.EndsWith("v4", Triple::ARMSubArch_v4)
|
||||
.Default(Triple::NoSubArch);
|
||||
}
|
||||
|
||||
static const char *getObjectFormatTypeName(Triple::ObjectFormatType Kind) {
|
||||
switch (Kind) {
|
||||
case Triple::UnknownObjectFormat: return "";
|
||||
@@ -375,6 +395,7 @@ static Triple::ObjectFormatType getDefaultFormat(const Triple &T) {
|
||||
Triple::Triple(const Twine &Str)
|
||||
: Data(Str.str()),
|
||||
Arch(parseArch(getArchName())),
|
||||
SubArch(parseSubArch(getArchName())),
|
||||
Vendor(parseVendor(getVendorName())),
|
||||
OS(parseOS(getOSName())),
|
||||
Environment(parseEnvironment(getEnvironmentName())),
|
||||
@@ -392,6 +413,7 @@ Triple::Triple(const Twine &Str)
|
||||
Triple::Triple(const Twine &ArchStr, const Twine &VendorStr, const Twine &OSStr)
|
||||
: Data((ArchStr + Twine('-') + VendorStr + Twine('-') + OSStr).str()),
|
||||
Arch(parseArch(ArchStr.str())),
|
||||
SubArch(parseSubArch(ArchStr.str())),
|
||||
Vendor(parseVendor(VendorStr.str())),
|
||||
OS(parseOS(OSStr.str())),
|
||||
Environment(), ObjectFormat(Triple::UnknownObjectFormat) {
|
||||
@@ -408,6 +430,7 @@ Triple::Triple(const Twine &ArchStr, const Twine &VendorStr, const Twine &OSStr,
|
||||
: Data((ArchStr + Twine('-') + VendorStr + Twine('-') + OSStr + Twine('-') +
|
||||
EnvironmentStr).str()),
|
||||
Arch(parseArch(ArchStr.str())),
|
||||
SubArch(parseSubArch(ArchStr.str())),
|
||||
Vendor(parseVendor(VendorStr.str())),
|
||||
OS(parseOS(OSStr.str())),
|
||||
Environment(parseEnvironment(EnvironmentStr.str())),
|
||||
|
Reference in New Issue
Block a user