|
LLVM 22.0.0git
|
#include "ARM.h"#include "ARMSubtarget.h"#include "MVETailPredUtils.h"#include "Thumb2InstrInfo.h"#include "llvm/ADT/SmallVector.h"#include "llvm/CodeGen/MachineBasicBlock.h"#include "llvm/CodeGen/MachineDominators.h"#include "llvm/CodeGen/MachineFunction.h"#include "llvm/CodeGen/MachineFunctionPass.h"#include "llvm/CodeGen/MachineInstr.h"#include "llvm/CodeGen/MachineLoopInfo.h"#include "llvm/InitializePasses.h"#include "llvm/Support/Debug.h"#include <cassert>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 |
| #define DEBUG_TYPE "arm-mve-vpt-opts" |
Definition at line 35 of file MVETPAndVPTOptimisationsPass.cpp.
Definition at line 550 of file MVETPAndVPTOptimisationsPass.cpp.
Referenced by IsVPNOTEquivalent().
|
static |
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().
|
static |
Definition at line 572 of file MVETPAndVPTOptimisationsPass.cpp.
References assert(), and IsVCMP().
Referenced by IsVPNOTEquivalent().
| INITIALIZE_PASS_BEGIN | ( | MVETPAndVPTOptimisations | , |
| DEBUG_TYPE | , | ||
| "ARM MVE TailPred and VPT Optimisations pass" | , | ||
| false | , | ||
| false | ) |
References DEBUG_TYPE, and INITIALIZE_PASS_DEPENDENCY.
|
static |
Definition at line 264 of file MVETPAndVPTOptimisationsPass.cpp.
References llvm::isLoopStart(), and MI.
Definition at line 545 of file MVETPAndVPTOptimisationsPass.cpp.
References llvm::VCMPOpcodeToVPT().
Referenced by GetCondCode(), and IsVPNOTEquivalent().
|
static |
Definition at line 579 of file MVETPAndVPTOptimisationsPass.cpp.
References assert(), CanHaveSwappedOperands(), Cond, GetCondCode(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::ARMCC::getOppositeCondition(), llvm::ARMCC::getSwappedCondition(), llvm::MachineOperand::isIdenticalTo(), and IsVCMP().
|
static |
Definition at line 605 of file MVETPAndVPTOptimisationsPass.cpp.
References llvm::TargetRegisterClass::getID(), and llvm::Register::isVirtual().
|
static |
Definition at line 99 of file MVETPAndVPTOptimisationsPass.cpp.
References LookThroughCOPY(), MI, and MRI.
Referenced by findLoopComponents(), and LookThroughCOPY().
|
static |
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().
|
static |
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 |
Definition at line 96 of file MVETPAndVPTOptimisationsPass.cpp.
| ARM MVE TailPred and VPT Optimisations false |
Definition at line 97 of file MVETPAndVPTOptimisationsPass.cpp.
|
static |
| ARM MVE TailPred and VPT Optimisations pass |
Definition at line 97 of file MVETPAndVPTOptimisationsPass.cpp.