Lines Matching +full:use +full:- +full:case
1 //===-- AArch64Subtarget.cpp - AArch64 Subtarget Information ----*- C++ -*-===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
11 //===----------------------------------------------------------------------===//
32 #define DEBUG_TYPE "aarch64-subtarget"
39 EnableEarlyIfConvert("aarch64-early-ifcvt", cl::desc("Enable the early if "
42 // If OS supports TBI, use this flag to enable it.
44 UseAddressTopByteIgnored("aarch64-use-tbi", cl::desc("Assume that top byte of "
48 "aarch64-macho-enable-nonlazybind",
49 cl::desc("Call nonlazybind functions via direct GOT load for Mach-O"),
52 static cl::opt<bool> UseAA("aarch64-use-aa", cl::init(true),
53 cl::desc("Enable the use of AA during codegen."));
56 "aarch64-insert-extract-base-cost",
63 ReservedRegsForRA("reserve-regs-for-regalloc", cl::desc("Reserve physical "
69 AuthenticatedLRCheckMethod("aarch64-authenticated-lr-check-method",
76 "aarch64-min-jump-table-entries", cl::init(13), cl::Hidden,
77 cl::desc("Set minimum number of entries to use a jump table on AArch64"));
88 // Determine default and user-specified characteristics in initializeSubtargetDependencies()
107 case Others: in initializeProperties()
109 case Carmel: in initializeProperties()
112 case CortexA35: in initializeProperties()
113 case CortexA53: in initializeProperties()
114 case CortexA55: in initializeProperties()
115 case CortexR82: in initializeProperties()
116 case CortexR82AE: in initializeProperties()
121 case CortexA57: in initializeProperties()
127 case CortexA65: in initializeProperties()
130 case CortexA72: in initializeProperties()
131 case CortexA73: in initializeProperties()
132 case CortexA75: in initializeProperties()
137 case CortexA76: in initializeProperties()
138 case CortexA77: in initializeProperties()
139 case CortexA78: in initializeProperties()
140 case CortexA78AE: in initializeProperties()
141 case CortexA78C: in initializeProperties()
142 case CortexX1: in initializeProperties()
147 case CortexA510: in initializeProperties()
148 case CortexA520: in initializeProperties()
154 case CortexA710: in initializeProperties()
155 case CortexA715: in initializeProperties()
156 case CortexA720: in initializeProperties()
157 case CortexA725: in initializeProperties()
158 case CortexX2: in initializeProperties()
159 case CortexX3: in initializeProperties()
160 case CortexX4: in initializeProperties()
161 case CortexX925: in initializeProperties()
167 case A64FX: in initializeProperties()
177 case AppleA7: in initializeProperties()
178 case AppleA10: in initializeProperties()
179 case AppleA11: in initializeProperties()
180 case AppleA12: in initializeProperties()
181 case AppleA13: in initializeProperties()
182 case AppleA14: in initializeProperties()
183 case AppleA15: in initializeProperties()
184 case AppleA16: in initializeProperties()
185 case AppleA17: in initializeProperties()
186 case AppleM4: in initializeProperties()
192 case AppleA14: in initializeProperties()
193 case AppleA15: in initializeProperties()
194 case AppleA16: in initializeProperties()
195 case AppleA17: in initializeProperties()
196 case AppleM4: in initializeProperties()
203 case ExynosM3: in initializeProperties()
209 case Falkor: in initializeProperties()
211 // FIXME: remove this to enable 64-bit SLP if performance looks good. in initializeProperties()
218 case Kryo: in initializeProperties()
225 // FIXME: remove this to enable 64-bit SLP if performance looks good. in initializeProperties()
228 case NeoverseE1: in initializeProperties()
231 case NeoverseN1: in initializeProperties()
236 case NeoverseN2: in initializeProperties()
237 case NeoverseN3: in initializeProperties()
238 case NeoverseV2: in initializeProperties()
239 case NeoverseV3: in initializeProperties()
245 case NeoverseV1: in initializeProperties()
252 case Neoverse512TVB: in initializeProperties()
257 case Saphira: in initializeProperties()
259 // FIXME: remove this to enable 64-bit SLP if performance looks good. in initializeProperties()
262 case ThunderX2T99: in initializeProperties()
270 // FIXME: remove this to enable 64-bit SLP if performance looks good. in initializeProperties()
273 case ThunderX: in initializeProperties()
274 case ThunderXT88: in initializeProperties()
275 case ThunderXT81: in initializeProperties()
276 case ThunderXT83: in initializeProperties()
280 // FIXME: remove this to enable 64-bit SLP if performance looks good. in initializeProperties()
283 case TSV110: in initializeProperties()
288 case ThunderX3T110: in initializeProperties()
296 // FIXME: remove this to enable 64-bit SLP if performance looks good. in initializeProperties()
299 case Ampere1: in initializeProperties()
300 case Ampere1A: in initializeProperties()
301 case Ampere1B: in initializeProperties()
307 case Oryon: in initializeProperties()
358 if (ReservedRegNames.count(TRI->getName(AArch64::X0 + i))) in AArch64Subtarget()
361 // X30 is named LR, so we can't use TRI->getName to check X30. in AArch64Subtarget()
364 // X29 is named FP, so we can't use TRI->getName to check X29. in AArch64Subtarget()
396 // MachO large model always goes via a GOT, simply to get a single 8-byte in ClassifyGlobalReference()
405 if (GV->isTagged()) in ClassifyGlobalReference()
409 if (GV->hasDLLImportStorageClass()) { in ClassifyGlobalReference()
417 // The small code model's direct accesses use ADRP, which cannot in ClassifyGlobalReference()
421 GV->hasExternalWeakLinkage()) in ClassifyGlobalReference()
428 if (AllowTaggedGlobals && !isa<FunctionType>(GV->getValueType())) in ClassifyGlobalReference()
439 !GV->hasInternalLinkage()) in classifyGlobalFunctionReference()
445 F->hasFnAttribute(Attribute::NonLazyBind) && !TM.shouldAssumeDSOLocal(GV)) in classifyGlobalFunctionReference()
449 if (isWindowsArm64EC() && GV->getValueType()->isFunctionTy()) { in classifyGlobalFunctionReference()
450 if (GV->hasDLLImportStorageClass()) { in classifyGlobalFunctionReference()
452 // directly, use MO_ARM64EC_CALLMANGLE. in classifyGlobalFunctionReference()
456 if (GV->hasExternalLinkage()) { in classifyGlobalFunctionReference()
457 // If we're calling a symbol directly, use the mangled form in the in classifyGlobalFunctionReference()
463 // Use ClassifyGlobalReference for setting MO_DLLIMPORT/MO_COFFSTUB. in classifyGlobalFunctionReference()
473 // bi-directional scheduling. 253.perlbmk. in overrideSchedPolicy()
477 // help nearly no benchmark on out-of-order architectures, on the other hand in overrideSchedPolicy()
483 SUnit *Def, int DefOpIdx, SUnit *Use, int UseOpIdx, SDep &Dep, in adjustSchedDependency() argument
486 !Def->isInstr() || !Use->isInstr() || in adjustSchedDependency()
487 (Def->getInstr()->getOpcode() != TargetOpcode::BUNDLE && in adjustSchedDependency()
488 Use->getInstr()->getOpcode() != TargetOpcode::BUNDLE)) in adjustSchedDependency()
493 const MachineInstr *DefMI = Def->getInstr(); in adjustSchedDependency()
494 if (DefMI->getOpcode() == TargetOpcode::BUNDLE) { in adjustSchedDependency()
495 Register Reg = DefMI->getOperand(DefOpIdx).getReg(); in adjustSchedDependency()
504 // If the Use is a BUNDLE, find the first instruction that uses the Reg. in adjustSchedDependency()
505 const MachineInstr *UseMI = Use->getInstr(); in adjustSchedDependency()
506 if (UseMI->getOpcode() == TargetOpcode::BUNDLE) { in adjustSchedDependency()
507 Register Reg = UseMI->getOperand(UseOpIdx).getReg(); in adjustSchedDependency()
518 SchedModel->computeOperandLatency(DefMI, DefOpIdx, UseMI, UseOpIdx)); in adjustSchedDependency()
572 if (MF.getFunction().hasFnAttribute("ptrauth-returns") && in getAuthenticatedLRCheckMethod()
573 MF.getFunction().hasFnAttribute("ptrauth-auth-traps")) in getAuthenticatedLRCheckMethod()
578 // At now, use None by default because checks may introduce an unexpected in getAuthenticatedLRCheckMethod()
579 // performance regression or incompatibility with execute-only mappings. in getAuthenticatedLRCheckMethod()
586 if (!ParentFn.hasFnAttribute("ptrauth-indirect-gotos")) in getPtrAuthBlockAddressDiscriminatorIfEnabled()