LLVM: lib/Target/ARM/MVETPAndVPTOptimisationsPass.cpp File Reference (original) (raw)

Go to the source code of this file.

Macros
#define DEBUG_TYPE "arm-mve-vpt-opts"
Functions
INITIALIZE_PASS_BEGIN (MVETPAndVPTOptimisations, DEBUG_TYPE, "ARM MVE TailPred and VPT Optimisations pass", false, false) INITIALIZE_PASS_END(MVETPAndVPTOptimisations
ARM MVE TailPred and VPT Optimisations static false MachineInstr * LookThroughCOPY (MachineInstr *MI, MachineRegisterInfo *MRI)
static bool findLoopComponents (MachineLoop *ML, MachineRegisterInfo *MRI, MachineInstr *&LoopStart, MachineInstr *&LoopPhi, MachineInstr *&LoopDec, MachineInstr *&LoopEnd)
static void RevertWhileLoopSetup (MachineInstr *MI, const TargetInstrInfo *TII)
static bool IsInvalidTPInstruction (MachineInstr &MI)
static bool IsVCMP (unsigned Opcode)
static bool CanHaveSwappedOperands (unsigned Opcode)
static ARMCC::CondCodes GetCondCode (MachineInstr &Instr)
static bool IsVPNOTEquivalent (MachineInstr &Cond, MachineInstr &Prev)
static bool IsWritingToVCCR (MachineInstr &Instr)
static bool MoveVPNOTBeforeFirstUser (MachineBasicBlock &MBB, MachineBasicBlock::iterator Iter, Register Reg)
Variables
static cl::opt< bool > MergeEndDec ("arm-enable-merge-loopenddec", cl::Hidden, cl::desc("Enable merging Loop End and Dec instructions."), cl::init(true))
static cl::opt< bool > SetLRPredicate ("arm-set-lr-predicate", cl::Hidden, cl::desc("Enable setting lr as a predicate in tail predication regions."), cl::init(true))
DEBUG_TYPE
ARM MVE TailPred and VPT Optimisations pass
ARM MVE TailPred and VPT Optimisations false

DEBUG_TYPE

#define DEBUG_TYPE "arm-mve-vpt-opts"

CanHaveSwappedOperands()

findLoopComponents()

Definition at line 110 of file MVETPAndVPTOptimisationsPass.cpp.

References llvm::dbgs(), llvm::MachineOperand::getMBB(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), LLVM_DEBUG, LookThroughCOPY(), ML, MRI, T, and llvm::MachineBasicBlock::terminators().

GetCondCode()

INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( MVETPAndVPTOptimisations ,
DEBUG_TYPE ,
"ARM MVE TailPred and VPT Optimisations pass" ,
false ,
false )

IsInvalidTPInstruction()

IsVCMP()

IsVPNOTEquivalent()

IsWritingToVCCR()

LookThroughCOPY()

MoveVPNOTBeforeFirstUser()

Definition at line 651 of file MVETPAndVPTOptimisationsPass.cpp.

References assert(), llvm::dbgs(), llvm::MachineInstr::dump(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::getVPTInstrPredicate(), LLVM_DEBUG, MBB, llvm::ARMVCC::None, Reg, and llvm::MachineOperand::setIsKill().

RevertWhileLoopSetup()

Definition at line 186 of file MVETPAndVPTOptimisationsPass.cpp.

References llvm::MachineInstrBuilder::add(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), llvm::ARMCC::AL, assert(), llvm::BuildMI(), llvm::RegState::Define, llvm::ARMCC::EQ, I, MBB, MI, and TII.

DEBUG_TYPE

false

ARM MVE TailPred and VPT Optimisations false

MergeEndDec

cl::opt< bool > MergeEndDec("arm-enable-merge-loopenddec", cl::Hidden, cl::desc("Enable merging Loop End and Dec instructions."), cl::init(true)) ( "arm-enable-merge-loopenddec" , cl::Hidden , cl::desc("Enable merging Loop End and Dec instructions.") , cl::init(true) ) static

pass

ARM MVE TailPred and VPT Optimisations pass

SetLRPredicate

cl::opt< bool > SetLRPredicate("arm-set-lr-predicate", cl::Hidden, cl::desc("Enable setting lr as a predicate in tail predication regions."), cl::init(true)) ( "arm-set-lr-predicate" , cl::Hidden , cl::desc("Enable setting lr as a predicate in tail predication regions.") , cl::init(true) ) static