Changeset View
Changeset View
Standalone View
Standalone View
llvm/lib/Target/AArch64/AArch64InstrInfo.td
- This file is larger than 256 KB, so syntax highlighting is disabled by default.
Show First 20 Lines • Show All 587 Lines • ▼ Show 20 Lines | |||||
// the Function object through the <Target>Subtarget and objections were raised | // the Function object through the <Target>Subtarget and objections were raised | ||||
// to that (see post-commit review comments for r301750). | // to that (see post-commit review comments for r301750). | ||||
let RecomputePerFunction = 1 in { | let RecomputePerFunction = 1 in { | ||||
def ForCodeSize : Predicate<"shouldOptForSize(MF)">; | def ForCodeSize : Predicate<"shouldOptForSize(MF)">; | ||||
def NotForCodeSize : Predicate<"!shouldOptForSize(MF)">; | def NotForCodeSize : Predicate<"!shouldOptForSize(MF)">; | ||||
// Avoid generating STRQro if it is slow, unless we're optimizing for code size. | // Avoid generating STRQro if it is slow, unless we're optimizing for code size. | ||||
def UseSTRQro : Predicate<"!Subtarget->isSTRQroSlow() || shouldOptForSize(MF)">; | def UseSTRQro : Predicate<"!Subtarget->isSTRQroSlow() || shouldOptForSize(MF)">; | ||||
def UseBTI : Predicate<[{ MF->getFunction().hasFnAttribute("branch-target-enforcement") }]>; | def UseBTI : Predicate<[{ MF->getInfo<AArch64FunctionInfo>()->branchTargetEnforcement() }]>; | ||||
def NotUseBTI : Predicate<[{ !MF->getFunction().hasFnAttribute("branch-target-enforcement") }]>; | def NotUseBTI : Predicate<[{ !MF->getInfo<AArch64FunctionInfo>()->branchTargetEnforcement() }]>; | ||||
def SLSBLRMitigation : Predicate<[{ MF->getSubtarget<AArch64Subtarget>().hardenSlsBlr() }]>; | def SLSBLRMitigation : Predicate<[{ MF->getSubtarget<AArch64Subtarget>().hardenSlsBlr() }]>; | ||||
def NoSLSBLRMitigation : Predicate<[{ !MF->getSubtarget<AArch64Subtarget>().hardenSlsBlr() }]>; | def NoSLSBLRMitigation : Predicate<[{ !MF->getSubtarget<AArch64Subtarget>().hardenSlsBlr() }]>; | ||||
// Toggles patterns which aren't beneficial in GlobalISel when we aren't | // Toggles patterns which aren't beneficial in GlobalISel when we aren't | ||||
// optimizing. This allows us to selectively use patterns without impacting | // optimizing. This allows us to selectively use patterns without impacting | ||||
// SelectionDAG's behaviour. | // SelectionDAG's behaviour. | ||||
// FIXME: One day there will probably be a nicer way to check for this, but | // FIXME: One day there will probably be a nicer way to check for this, but | ||||
// today is not that day. | // today is not that day. | ||||
▲ Show 20 Lines • Show All 7,089 Lines • Show Last 20 Lines |