LLVM
12.0.0git
|
#include "ARM.h"
#include "ARMSubtarget.h"
#include "MCTargetDesc/ARMBaseInfo.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 (MVEVPTOptimisations, DEBUG_TYPE, "ARM MVE TailPred and VPT Optimisations pass", false, false) INITIALIZE_PASS_END(MVEVPTOptimisations | |
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 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)) |
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 36 of file MVEVPTOptimisationsPass.cpp.
Definition at line 369 of file MVEVPTOptimisationsPass.cpp.
Referenced by IsVPNOTEquivalent().
|
static |
Definition at line 102 of file MVEVPTOptimisationsPass.cpp.
References llvm::dbgs(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::LoopBase< BlockT, LoopT >::getLoopLatch(), llvm::MachineOperand::getMBB(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), LLVM_DEBUG, LookThroughCOPY(), MRI, and llvm::MachineBasicBlock::terminators().
|
static |
Definition at line 391 of file MVEVPTOptimisationsPass.cpp.
References assert(), llvm::MachineOperand::getImm(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), and IsVCMP().
Referenced by IsVPNOTEquivalent().
INITIALIZE_PASS_BEGIN | ( | MVEVPTOptimisations | , |
DEBUG_TYPE | , | ||
"ARM MVE TailPred and VPT Optimisations pass" | , | ||
false | , | ||
false | |||
) |
Definition at line 364 of file MVEVPTOptimisationsPass.cpp.
References llvm::VCMPOpcodeToVPT().
Referenced by GetCondCode(), and IsVPNOTEquivalent().
|
static |
Definition at line 398 of file MVEVPTOptimisationsPass.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 424 of file MVEVPTOptimisationsPass.cpp.
References llvm::TargetRegisterClass::getID(), llvm::MachineInstr::getMF(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::MachineRegisterInfo::getRegClassOrNull(), llvm::MachineFunction::getRegInfo(), llvm::MachineOperand::isReg(), and llvm::Register::isVirtual().
|
static |
Definition at line 91 of file MVEVPTOptimisationsPass.cpp.
Referenced by findLoopComponents().
|
static |
Definition at line 470 of file MVEVPTOptimisationsPass.cpp.
References assert(), llvm::dbgs(), llvm::MachineInstr::dump(), llvm::MachineBasicBlock::end(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::getVPTInstrPredicate(), LLVM_DEBUG, MBB, llvm::ARMVCC::None, Reg, llvm::MachineOperand::setIsKill(), and llvm::MachineBasicBlock::splice().
DEBUG_TYPE |
Definition at line 88 of file MVEVPTOptimisationsPass.cpp.
ARM MVE TailPred and VPT Optimisations false |
Definition at line 88 of file MVEVPTOptimisationsPass.cpp.
|
static |
ARM MVE TailPred and VPT Optimisations pass |
Definition at line 88 of file MVEVPTOptimisationsPass.cpp.