Lines Matching +full:test +full:- +full:cpu
1 //===-- AArch64TargetParser - Parser for AArch64 features -------*- C++ -*-===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
10 // such as FPU/CPU/ARCH and extension names.
12 //===----------------------------------------------------------------------===//
23 #define DEBUG_TYPE "target-parser"
32 return (Arch[1] - 48); in checkArchVersion()
36 const AArch64::ArchInfo *AArch64::getArchForCpu(StringRef CPU) { in getArchForCpu() argument
37 // Note: this now takes cpu aliases into account in getArchForCpu()
38 std::optional<CpuInfo> Cpu = parseCpu(CPU); in getArchForCpu() local
39 if (!Cpu) in getArchForCpu()
41 return &Cpu->Arch; in getArchForCpu()
46 if (A->getSubArch() == SubArch) in findBySubArch()
55 FeaturesMask |= (1ULL << Ext->Bit); in getCpuSupportsMask()
65 if (InputExts.test(E.ID) && !E.PosTargetFeature.empty()) in getExtensionFeatures()
83 assert(!(AE.has_value() && AE->NegTargetFeature.empty())); in getArchExtFeature()
84 return IsNegated ? AE->NegTargetFeature : AE->PosTargetFeature; in getArchExtFeature()
95 // The apple-latest alias is backend only, do not expose it to clang's -mcpu. in fillValidCPUArchList()
96 if (Alias.AltName != "apple-latest") in fillValidCPUArchList()
115 if (A->Name.ends_with(Syn)) in parseArch()
156 // Then find the CPU name. in parseCpu()
165 outs() << "All available -march extensions for AArch64\n\n" in PrintSupportedExtensions()
170 // Extensions without a feature cannot be used with -march. in PrintSupportedExtensions()
173 << format(Ext.Description.empty() ? "%-20s%s\n" : "%-20s%-55s%s\n", in PrintSupportedExtensions()
200 << format("%-55s%s\n", in printEnabledExtensions()
215 if (Enabled.test(E)) in enable()
233 // +fp16 implies +fp16fml for v8.4A+, but not v9.0-A+ in enable()
234 if (E == AEK_FP16 && BaseArch->is_superset(ARMV8_4A) && in enable()
235 !BaseArch->is_superset(ARMV9A)) in enable()
239 if (E == AEK_CRYPTO && BaseArch->is_superset(ARMV8_4A)) { in enable()
247 // -crypto always disables aes, sha2, sha3 and sm4, even for architectures in disable()
256 if (!Enabled.test(E)) in disable()
270 void AArch64::ExtensionSet::addCPUDefaults(const CpuInfo &CPU) { in addCPUDefaults() argument
271 LLVM_DEBUG(llvm::dbgs() << "addCPUDefaults(" << CPU.Name << ")\n"); in addCPUDefaults()
272 BaseArch = &CPU.Arch; in addCPUDefaults()
274 AArch64::ExtensionBitset CPUExtensions = CPU.getImpliedExtensions(); in addCPUDefaults()
276 if (CPUExtensions.test(E.ID)) in addCPUDefaults()
285 if (Arch.DefaultExts.test(E.ID)) in addArchDefaults()
294 // The "no-feat" form is allowed in the target attribute but nowhere else. in parseModifier()
295 if (AllowNoDashForm && Modifier.starts_with("no-")) in parseModifier()
303 if (AE->PosTargetFeature.empty() || AE->NegTargetFeature.empty()) in parseModifier()
306 disable(AE->ID); in parseModifier()
308 enable(AE->ID); in parseModifier()
319 bool IsNegated = F[0] == '-'; in reconstructFromParsedFeatures()
321 Touched.set(AE->ID); in reconstructFromParsedFeatures()
323 Enabled.reset(AE->ID); in reconstructFromParsedFeatures()
325 Enabled.set(AE->ID); in reconstructFromParsedFeatures()