diff options
| author | Michael Kruse <llvm-project@meinersbur.de> | 2025-01-03 10:22:51 +0100 |
|---|---|---|
| committer | Michael Kruse <llvm-project@meinersbur.de> | 2025-01-03 10:22:51 +0100 |
| commit | 38500d63e14ce340236840f60d356cdefb56a52c (patch) | |
| tree | 17edbec446ce9b50d2f215a483b83afb293a635d /llvm/lib/TargetParser | |
| parent | 1a3d5daaef7a6a63448a497da3eff7fc9e23df26 (diff) | |
| parent | 27f30029741ecf023baece7b3dde1ff9011ffefc (diff) | |
Merge branch 'main' into users/meinersbur/flang_runtime_split-headersusers/meinersbur/flang_runtime_split-headers
Diffstat (limited to 'llvm/lib/TargetParser')
| -rw-r--r-- | llvm/lib/TargetParser/AArch64TargetParser.cpp | 18 | ||||
| -rw-r--r-- | llvm/lib/TargetParser/Host.cpp | 28 | ||||
| -rw-r--r-- | llvm/lib/TargetParser/RISCVISAInfo.cpp | 3 | ||||
| -rw-r--r-- | llvm/lib/TargetParser/Triple.cpp | 33 | ||||
| -rw-r--r-- | llvm/lib/TargetParser/X86TargetParser.cpp | 2 |
5 files changed, 60 insertions, 24 deletions
diff --git a/llvm/lib/TargetParser/AArch64TargetParser.cpp b/llvm/lib/TargetParser/AArch64TargetParser.cpp index fe5ab0fabefa..50c9a565e7ae 100644 --- a/llvm/lib/TargetParser/AArch64TargetParser.cpp +++ b/llvm/lib/TargetParser/AArch64TargetParser.cpp @@ -61,12 +61,20 @@ unsigned AArch64::getFMVPriority(ArrayRef<StringRef> Features) { return Priority + MaxFMVPriority * NumFeatures; } -uint64_t AArch64::getCpuSupportsMask(ArrayRef<StringRef> FeatureStrs) { +uint64_t AArch64::getCpuSupportsMask(ArrayRef<StringRef> Features) { + // Transitively enable the Arch Extensions which correspond to each feature. + ExtensionSet FeatureBits; + for (const StringRef Feature : Features) + if (std::optional<FMVInfo> Info = parseFMVExtension(Feature)) + if (Info->ID) + FeatureBits.enable(*Info->ID); + + // Construct a bitmask for all the transitively enabled Arch Extensions. uint64_t FeaturesMask = 0; - for (const StringRef &FeatureStr : FeatureStrs) { - if (auto Ext = parseFMVExtension(FeatureStr)) - FeaturesMask |= (1ULL << Ext->Bit); - } + for (const FMVInfo &Info : getFMVInfo()) + if (Info.ID && FeatureBits.Enabled.test(*Info.ID)) + FeaturesMask |= (1ULL << Info.Bit); + return FeaturesMask; } diff --git a/llvm/lib/TargetParser/Host.cpp b/llvm/lib/TargetParser/Host.cpp index cd5a678d161b..45b4cafc9959 100644 --- a/llvm/lib/TargetParser/Host.cpp +++ b/llvm/lib/TargetParser/Host.cpp @@ -280,8 +280,9 @@ StringRef sys::detail::getHostCPUNameForARM(StringRef ProcCpuinfoContent) { if (Implementer == "0x46") { // Fujitsu Ltd. return StringSwitch<const char *>(Part) - .Case("0x001", "a64fx") - .Default("generic"); + .Case("0x001", "a64fx") + .Case("0x003", "fujitsu-monaka") + .Default("generic"); } if (Implementer == "0x4e") { // NVIDIA Corporation @@ -346,6 +347,29 @@ StringRef sys::detail::getHostCPUNameForARM(StringRef ProcCpuinfoContent) { } } + if (Implementer == "0x61") { // Apple + return StringSwitch<const char *>(Part) + .Case("0x020", "apple-m1") + .Case("0x021", "apple-m1") + .Case("0x022", "apple-m1") + .Case("0x023", "apple-m1") + .Case("0x024", "apple-m1") + .Case("0x025", "apple-m1") + .Case("0x028", "apple-m1") + .Case("0x029", "apple-m1") + .Case("0x030", "apple-m2") + .Case("0x031", "apple-m2") + .Case("0x032", "apple-m2") + .Case("0x033", "apple-m2") + .Case("0x034", "apple-m2") + .Case("0x035", "apple-m2") + .Case("0x038", "apple-m2") + .Case("0x039", "apple-m2") + .Case("0x049", "apple-m3") + .Case("0x048", "apple-m3") + .Default("generic"); + } + if (Implementer == "0x63") { // Arm China. return StringSwitch<const char *>(Part) .Case("0x132", "star-mc1") diff --git a/llvm/lib/TargetParser/RISCVISAInfo.cpp b/llvm/lib/TargetParser/RISCVISAInfo.cpp index d54b81e0d398..4f403e9fb6f5 100644 --- a/llvm/lib/TargetParser/RISCVISAInfo.cpp +++ b/llvm/lib/TargetParser/RISCVISAInfo.cpp @@ -742,7 +742,8 @@ Error RISCVISAInfo::checkDependency() { bool HasZvl = MinVLen != 0; bool HasZcmt = Exts.count("zcmt") != 0; static constexpr StringLiteral XqciExts[] = { - {"xqcia"}, {"xqcicsr"}, {"xqcisls"}}; + {"xqcia"}, {"xqciac"}, {"xqcicli"}, {"xqcics"}, + {"xqcicsr"}, {"xqcilsm"}, {"xqcisls"}}; if (HasI && HasE) return getIncompatibleError("i", "e"); diff --git a/llvm/lib/TargetParser/Triple.cpp b/llvm/lib/TargetParser/Triple.cpp index faabaf18d807..7e040688dc1a 100644 --- a/llvm/lib/TargetParser/Triple.cpp +++ b/llvm/lib/TargetParser/Triple.cpp @@ -241,6 +241,8 @@ StringRef Triple::getVendorTypeName(VendorType Kind) { case Freescale: return "fsl"; case IBM: return "ibm"; case ImaginationTechnologies: return "img"; + case Intel: + return "intel"; case Mesa: return "mesa"; case MipsTechnologies: return "mti"; case NVIDIA: return "nvidia"; @@ -627,21 +629,22 @@ static Triple::ArchType parseArch(StringRef ArchName) { static Triple::VendorType parseVendor(StringRef VendorName) { return StringSwitch<Triple::VendorType>(VendorName) - .Case("apple", Triple::Apple) - .Case("pc", Triple::PC) - .Case("scei", Triple::SCEI) - .Case("sie", Triple::SCEI) - .Case("fsl", Triple::Freescale) - .Case("ibm", Triple::IBM) - .Case("img", Triple::ImaginationTechnologies) - .Case("mti", Triple::MipsTechnologies) - .Case("nvidia", Triple::NVIDIA) - .Case("csr", Triple::CSR) - .Case("amd", Triple::AMD) - .Case("mesa", Triple::Mesa) - .Case("suse", Triple::SUSE) - .Case("oe", Triple::OpenEmbedded) - .Default(Triple::UnknownVendor); + .Case("apple", Triple::Apple) + .Case("pc", Triple::PC) + .Case("scei", Triple::SCEI) + .Case("sie", Triple::SCEI) + .Case("fsl", Triple::Freescale) + .Case("ibm", Triple::IBM) + .Case("img", Triple::ImaginationTechnologies) + .Case("mti", Triple::MipsTechnologies) + .Case("nvidia", Triple::NVIDIA) + .Case("csr", Triple::CSR) + .Case("amd", Triple::AMD) + .Case("mesa", Triple::Mesa) + .Case("suse", Triple::SUSE) + .Case("oe", Triple::OpenEmbedded) + .Case("intel", Triple::Intel) + .Default(Triple::UnknownVendor); } static Triple::OSType parseOS(StringRef OSName) { diff --git a/llvm/lib/TargetParser/X86TargetParser.cpp b/llvm/lib/TargetParser/X86TargetParser.cpp index cc3561861889..e4b7ed7cf9b6 100644 --- a/llvm/lib/TargetParser/X86TargetParser.cpp +++ b/llvm/lib/TargetParser/X86TargetParser.cpp @@ -145,7 +145,7 @@ constexpr FeatureBitset FeaturesDiamondRapids = FeatureSM4 | FeatureEGPR | FeatureZU | FeatureCCMP | FeaturePush2Pop2 | FeaturePPX | FeatureNDD | FeatureNF | FeatureCF | FeatureMOVRS | FeatureAMX_MOVRS | FeatureAMX_AVX512 | FeatureAMX_FP8 | FeatureAMX_TF32 | - FeatureAMX_TRANSPOSE; + FeatureAMX_TRANSPOSE | FeatureUSERMSR; // Intel Atom processors. // Bonnell has feature parity with Core2 and adds MOVBE. |
