LLVM  12.0.0git
Macros | Functions | Variables
MVEVPTOptimisationsPass.cpp File Reference
#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>
Include dependency graph for MVEVPTOptimisationsPass.cpp:

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 MachineInstrLookThroughCOPY (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< boolMergeEndDec ("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
 

Macro Definition Documentation

◆ DEBUG_TYPE

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

Definition at line 36 of file MVEVPTOptimisationsPass.cpp.

Function Documentation

◆ CanHaveSwappedOperands()

static bool CanHaveSwappedOperands ( unsigned  Opcode)
static

Definition at line 369 of file MVEVPTOptimisationsPass.cpp.

Referenced by IsVPNOTEquivalent().

◆ findLoopComponents()

static bool findLoopComponents ( MachineLoop ML,
MachineRegisterInfo MRI,
MachineInstr *&  LoopStart,
MachineInstr *&  LoopPhi,
MachineInstr *&  LoopDec,
MachineInstr *&  LoopEnd 
)
static

◆ GetCondCode()

static ARMCC::CondCodes GetCondCode ( MachineInstr Instr)
static

◆ INITIALIZE_PASS_BEGIN()

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

◆ IsVCMP()

static bool IsVCMP ( unsigned  Opcode)
static

Definition at line 364 of file MVEVPTOptimisationsPass.cpp.

References llvm::VCMPOpcodeToVPT().

Referenced by GetCondCode(), and IsVPNOTEquivalent().

◆ IsVPNOTEquivalent()

static bool IsVPNOTEquivalent ( MachineInstr Cond,
MachineInstr Prev 
)
static

◆ IsWritingToVCCR()

static bool IsWritingToVCCR ( MachineInstr Instr)
static

◆ LookThroughCOPY()

ARM MVE TailPred and VPT Optimisations static false MachineInstr* LookThroughCOPY ( MachineInstr MI,
MachineRegisterInfo MRI 
)
static

Definition at line 91 of file MVEVPTOptimisationsPass.cpp.

References MI, and MRI.

Referenced by findLoopComponents().

◆ MoveVPNOTBeforeFirstUser()

static bool MoveVPNOTBeforeFirstUser ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  Iter,
Register  Reg 
)
static

Variable Documentation

◆ DEBUG_TYPE

DEBUG_TYPE

Definition at line 88 of file MVEVPTOptimisationsPass.cpp.

◆ false

ARM MVE TailPred and VPT Optimisations false

Definition at line 88 of file MVEVPTOptimisationsPass.cpp.

◆ MergeEndDec

cl::opt<bool> MergeEndDec("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

Definition at line 88 of file MVEVPTOptimisationsPass.cpp.