Lines Matching +full:bi +full:- +full:directional
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 "
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),
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,
88 // Determine default and user-specified characteristics
211 // FIXME: remove this to enable 64-bit SLP if performance looks good.
225 // FIXME: remove this to enable 64-bit SLP if performance looks good.
259 // FIXME: remove this to enable 64-bit SLP if performance looks good.
270 // FIXME: remove this to enable 64-bit SLP if performance looks good.
280 // FIXME: remove this to enable 64-bit SLP if performance looks good.
296 // FIXME: remove this to enable 64-bit SLP if performance looks good.
358 if (ReservedRegNames.count(TRI->getName(AArch64::X0 + i)))
361 // X30 is named LR, so we can't use TRI->getName to check X30.
364 // X29 is named FP, so we can't use TRI->getName to check X29.
396 // MachO large model always goes via a GOT, simply to get a single 8-byte
405 if (GV->isTagged())
409 if (GV->hasDLLImportStorageClass()) {
421 GV->hasExternalWeakLinkage())
428 if (AllowTaggedGlobals && !isa<FunctionType>(GV->getValueType()))
439 !GV->hasInternalLinkage())
445 F->hasFnAttribute(Attribute::NonLazyBind) && !TM.shouldAssumeDSOLocal(GV))
449 if (isWindowsArm64EC() && GV->getValueType()->isFunctionTy()) {
450 if (GV->hasDLLImportStorageClass()) {
456 if (GV->hasExternalLinkage()) {
473 // bi-directional scheduling. 253.perlbmk.
477 // help nearly no benchmark on out-of-order architectures, on the other hand
486 !Def->isInstr() || !Use->isInstr() ||
487 (Def->getInstr()->getOpcode() != TargetOpcode::BUNDLE &&
488 Use->getInstr()->getOpcode() != TargetOpcode::BUNDLE))
493 const MachineInstr *DefMI = Def->getInstr();
494 if (DefMI->getOpcode() == TargetOpcode::BUNDLE) {
495 Register Reg = DefMI->getOperand(DefOpIdx).getReg();
505 const MachineInstr *UseMI = Use->getInstr();
506 if (UseMI->getOpcode() == TargetOpcode::BUNDLE) {
507 Register Reg = UseMI->getOperand(UseOpIdx).getReg();
518 SchedModel->computeOperandLatency(DefMI, DefOpIdx, UseMI, UseOpIdx));
572 if (MF.getFunction().hasFnAttribute("ptrauth-returns") &&
573 MF.getFunction().hasFnAttribute("ptrauth-auth-traps"))
579 // performance regression or incompatibility with execute-only mappings.
586 if (!ParentFn.hasFnAttribute("ptrauth-indirect-gotos"))