Lines Matching +full:use +full:- +full:case

1 //===-- ARMSubtarget.cpp - ARM Subtarget Information ----------------------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
11 //===----------------------------------------------------------------------===//
43 #define DEBUG_TYPE "arm-subtarget"
50 UseFusedMulOps("arm-use-mulops",
60 cl::values(clEnumValN(DefaultIT, "arm-default-it",
62 clEnumValN(RestrictedIT, "arm-restrict-it",
65 /// ForceFastISel - Use the fast-isel, even for subtargets where it is not
68 ForceFastISel("arm-force-fast-isel",
71 /// initializeSubtargetDependencies - Initializes using a CPU and feature string
72 /// so that we can use initializer lists for subtarget initialization.
148 (TM.getMCAsmInfo()->getExceptionHandlingType() == in initializeEnvironment()
164 // Default to the Cortex-a7 CPU when targeting armv7k/thumbv7k. in initSubtargetFeatures()
165 // ARMv7k does not use SjLj exception handling. in initSubtargetFeatures()
166 CPUString = "cortex-a7"; in initSubtargetFeatures()
187 // Execute only support for >= v8-M Baseline requires movt support in initSubtargetFeatures()
191 report_fatal_error("Cannot generate execute-only code for this target"); in initSubtargetFeatures()
210 // emitEpilogue is not ready for them. Thumb tail calls also use t2B, as in initSubtargetFeatures()
211 // the Thumb1 16-bit unconditional branch doesn't have sufficient relocation in initSubtargetFeatures()
215 // For ARMv8-M, we /do/ implement tail calls. Doing this is tricky for v8-M in initSubtargetFeatures()
222 // Thumb1 PIC calls to external symbols use BX, so they can be tail calls, in initSubtargetFeatures()
225 // case. in initSubtargetFeatures()
233 case DefaultIT: in initSubtargetFeatures()
236 case RestrictedIT: in initSubtargetFeatures()
241 // NEON f32 ops are non-IEEE 754 compliant. Darwin is ok with it by default. in initSubtargetFeatures()
256 case Others: in initSubtargetFeatures()
257 case CortexA5: in initSubtargetFeatures()
259 case CortexA7: in initSubtargetFeatures()
262 case CortexA8: in initSubtargetFeatures()
265 case CortexA9: in initSubtargetFeatures()
269 case CortexA12: in initSubtargetFeatures()
271 case CortexA15: in initSubtargetFeatures()
276 case CortexA17: in initSubtargetFeatures()
277 case CortexA32: in initSubtargetFeatures()
278 case CortexA35: in initSubtargetFeatures()
279 case CortexA53: in initSubtargetFeatures()
280 case CortexA55: in initSubtargetFeatures()
281 case CortexA57: in initSubtargetFeatures()
282 case CortexA72: in initSubtargetFeatures()
283 case CortexA73: in initSubtargetFeatures()
284 case CortexA75: in initSubtargetFeatures()
285 case CortexA76: in initSubtargetFeatures()
286 case CortexA77: in initSubtargetFeatures()
287 case CortexA78: in initSubtargetFeatures()
288 case CortexA78AE: in initSubtargetFeatures()
289 case CortexA78C: in initSubtargetFeatures()
290 case CortexA710: in initSubtargetFeatures()
291 case CortexR4: in initSubtargetFeatures()
292 case CortexR5: in initSubtargetFeatures()
293 case CortexR7: in initSubtargetFeatures()
294 case CortexM3: in initSubtargetFeatures()
295 case CortexM7: in initSubtargetFeatures()
296 case CortexR52: in initSubtargetFeatures()
297 case CortexR52plus: in initSubtargetFeatures()
298 case CortexX1: in initSubtargetFeatures()
299 case CortexX1C: in initSubtargetFeatures()
301 case Exynos: in initSubtargetFeatures()
307 case Kryo: in initSubtargetFeatures()
309 case Krait: in initSubtargetFeatures()
312 case NeoverseV1: in initSubtargetFeatures()
314 case Swift: in initSubtargetFeatures()
352 // 32 bit macho has no relocation for a-b if a is undefined, even if b is in in isGVIndirectSymbol()
353 // the section that is being relocated. This means we have to use o load even in isGVIndirectSymbol()
356 (GV->isDeclarationForLinker() || GV->hasCommonLinkage())) in isGVIndirectSymbol()
363 return isTargetELF() && TM.isPositionIndependent() && !GV->isDSOLocal(); in isGVInGOT()
371 // The MachineScheduler can increase register usage, so we use more high in enableMachineScheduler()
374 // instructions, on cortex-m at Oz where we are size-paranoid, don't use the in enableMachineScheduler()
379 // with the use-misched feature. in enableMachineScheduler()
391 // with the use-mipipeliner feature. in enableMachinePipeliner()
403 // Thumb1 cores will generally not benefit from post-ra scheduling in enablePostRAScheduler()
424 // NOTE Windows on ARM needs to use mov.w/mov.t pairs to materialise 32-bit in useMovt()
432 // Enable fast-isel for any target, for testing only. in useFastISel()
436 // Limit fast-isel to the targets that are or have been tested. in useFastISel()
448 // tradeoffs preferred by different sub-architectures and optimisation goals. in getGPRAllocationOrder()
451 // 1: r14, r0-r13 in getGPRAllocationOrder()
452 // 2: r0-r7 in getGPRAllocationOrder()
453 // 3: r0-r7, r12, lr, r8-r11 in getGPRAllocationOrder()
455 // callee-saved registers are used later, as they require extra work in the in getGPRAllocationOrder()
458 // For thumb1-only targets, only the low registers are allocatable. in getGPRAllocationOrder()
462 // Allocate low registers first, so we can select more 16-bit instructions. in getGPRAllocationOrder()
464 // with regards to callee-saved registers, because pushing extra registers is in getGPRAllocationOrder()
480 // cost per use) so we can use narrow encoding. By default, caller-saved in ignoreCSRForAllocationOrder()
482 // their cost per use. When optForMinSize, we prefer the low regs even if in ignoreCSRForAllocationOrder()
490 if (!MF.getTarget().getMCAsmInfo()->usesWindowsCFI() || in splitFramePointerPush()
494 return MFI.hasVarSizedObjects() || getRegisterInfo()->hasStackRealignment(MF); in splitFramePointerPush()