LLVM 20.0.0git
Macros | Functions
MVEVPTBlockPass.cpp File Reference
#include "ARM.h"
#include "ARMMachineFunctionInfo.h"
#include "ARMSubtarget.h"
#include "MCTargetDesc/ARMBaseInfo.h"
#include "Thumb2InstrInfo.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineInstrBundle.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/IR/DebugLoc.h"
#include "llvm/MC/MCInstrDesc.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/Support/Debug.h"
#include <cassert>
#include <new>

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "arm-mve-vpt"
 

Functions

static MachineInstrfindVCMPToFoldIntoVPST (MachineBasicBlock::iterator MI, const TargetRegisterInfo *TRI, unsigned &NewOpcode)
 
static bool StepOverPredicatedInstrs (MachineBasicBlock::instr_iterator &Iter, MachineBasicBlock::instr_iterator EndIter, unsigned MaxSteps, unsigned &NumInstrsSteppedOver)
 
static bool IsVPRDefinedOrKilledByBlock (MachineBasicBlock::iterator Iter, MachineBasicBlock::iterator End)
 
static ARM::PredBlockMask GetInitialBlockMask (unsigned BlockSize)
 
static ARM::PredBlockMask CreateVPTBlock (MachineBasicBlock::instr_iterator &Iter, MachineBasicBlock::instr_iterator EndIter, SmallVectorImpl< MachineInstr * > &DeadInstructions)
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "arm-mve-vpt"

Definition at line 33 of file MVEVPTBlockPass.cpp.

Function Documentation

◆ CreateVPTBlock()

static ARM::PredBlockMask CreateVPTBlock ( MachineBasicBlock::instr_iterator Iter,
MachineBasicBlock::instr_iterator  EndIter,
SmallVectorImpl< MachineInstr * > &  DeadInstructions 
)
static

◆ findVCMPToFoldIntoVPST()

static MachineInstr * findVCMPToFoldIntoVPST ( MachineBasicBlock::iterator  MI,
const TargetRegisterInfo TRI,
unsigned NewOpcode 
)
static

Definition at line 65 of file MVEVPTBlockPass.cpp.

References MI, llvm::registerDefinedBetween(), TRI, and llvm::VCMPOpcodeToVPT().

◆ GetInitialBlockMask()

static ARM::PredBlockMask GetInitialBlockMask ( unsigned  BlockSize)
static

Definition at line 141 of file MVEVPTBlockPass.cpp.

References BlockSize, and llvm_unreachable.

Referenced by CreateVPTBlock().

◆ IsVPRDefinedOrKilledByBlock()

static bool IsVPRDefinedOrKilledByBlock ( MachineBasicBlock::iterator  Iter,
MachineBasicBlock::iterator  End 
)
static

Definition at line 131 of file MVEVPTBlockPass.cpp.

References End.

Referenced by CreateVPTBlock().

◆ StepOverPredicatedInstrs()

static bool StepOverPredicatedInstrs ( MachineBasicBlock::instr_iterator Iter,
MachineBasicBlock::instr_iterator  EndIter,
unsigned  MaxSteps,
unsigned NumInstrsSteppedOver 
)
static