LLVM 20.0.0git
Namespaces | Macros | Functions
SPIRVPostLegalizer.cpp File Reference
#include "SPIRV.h"
#include "SPIRVSubtarget.h"
#include "SPIRVUtils.h"
#include "llvm/ADT/PostOrderIterator.h"
#include "llvm/Analysis/OptimizationRemarkEmitter.h"
#include "llvm/CodeGen/MachinePostDominators.h"
#include "llvm/IR/Attributes.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DebugInfoMetadata.h"
#include "llvm/IR/IntrinsicsSPIRV.h"
#include "llvm/Target/TargetIntrinsicInfo.h"
#include <stack>

Go to the source code of this file.

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

Macros

#define DEBUG_TYPE   "spirv-postlegalizer"
 

Functions

bool isTypeFoldingSupported (unsigned Opcode)
 
Register llvm::insertAssignInstr (Register Reg, Type *Ty, SPIRVType *SpirvTy, SPIRVGlobalRegistry *GR, MachineIRBuilder &MIB, MachineRegisterInfo &MRI)
 Helper external function for inserting ASSIGN_TYPE instuction between Reg and its definition, set the new register as a destination of the definition, assign SPIRVType to both registers.
 
void llvm::processInstr (MachineInstr &MI, MachineIRBuilder &MIB, MachineRegisterInfo &MRI, SPIRVGlobalRegistry *GR)
 
static bool isMetaInstrGET (unsigned Opcode)
 
static bool mayBeInserted (unsigned Opcode)
 
static void processNewInstrs (MachineFunction &MF, SPIRVGlobalRegistry *GR, MachineIRBuilder MIB)
 
void visit (MachineFunction &MF, MachineBasicBlock &Start, std::function< void(MachineBasicBlock *)> op)
 
void visit (MachineFunction &MF, std::function< void(MachineBasicBlock *)> op)
 
void sortBlocks (MachineFunction &MF)
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "spirv-postlegalizer"

Definition at line 30 of file SPIRVPostLegalizer.cpp.

Function Documentation

◆ isMetaInstrGET()

static bool isMetaInstrGET ( unsigned  Opcode)
static

Definition at line 58 of file SPIRVPostLegalizer.cpp.

Referenced by processNewInstrs().

◆ isTypeFoldingSupported()

bool isTypeFoldingSupported ( unsigned  Opcode)

Definition at line 53 of file SPIRVLegalizerInfo.cpp.

Referenced by mayBeInserted(), and processNewInstrs().

◆ mayBeInserted()

static bool mayBeInserted ( unsigned  Opcode)
static

Definition at line 64 of file SPIRVPostLegalizer.cpp.

References isTypeFoldingSupported().

Referenced by processNewInstrs().

◆ processNewInstrs()

static void processNewInstrs ( MachineFunction MF,
SPIRVGlobalRegistry GR,
MachineIRBuilder  MIB 
)
static

◆ sortBlocks()

void sortBlocks ( MachineFunction MF)

◆ visit() [1/2]

void visit ( MachineFunction MF,
MachineBasicBlock Start,
std::function< void(MachineBasicBlock *)>  op 
)

◆ visit() [2/2]

void visit ( MachineFunction MF,
std::function< void(MachineBasicBlock *)>  op 
)

Definition at line 174 of file SPIRVPostLegalizer.cpp.

References llvm::MachineFunction::begin(), op, and visit().