|
LLVM 22.0.0git
|
#include "SPIRV.h"#include "SPIRVSubtarget.h"#include "SPIRVUtils.h"#include "llvm/CodeGen/GlobalISel/GenericMachineInstrs.h"#include "llvm/IR/IntrinsicsSPIRV.h"#include "llvm/Support/Debug.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" |
| #define DEBUG_TYPE "spirv-postlegalizer" |
Definition at line 24 of file SPIRVPostLegalizer.cpp.
|
static |
Definition at line 226 of file SPIRVPostLegalizer.cpp.
References llvm::SPIRVGlobalRegistry::assignSPIRVTypeToVReg(), llvm::SPIRVGlobalRegistry::CurMF, llvm::dbgs(), deduceAndAssignTypeForGUnmerge(), deduceResultTypeFromOperands(), deduceTypeFromUses(), llvm::MachineFunction::getRegInfo(), I, LLVM_DEBUG, MRI, and llvm::setRegClassType().
Referenced by registerSpirvTypeForNewInstructions().
|
static |
Definition at line 54 of file SPIRVPostLegalizer.cpp.
References assert(), llvm::SPIRVSubtarget::getInstrInfo(), llvm::LLT::getNumElements(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVVectorType(), llvm::MachineFunction::getRegInfo(), llvm::SPIRVGlobalRegistry::getScalarOrVectorComponentType(), llvm::SPIRVGlobalRegistry::getSPIRVTypeForVReg(), llvm::MachineFunction::getSubtarget(), I, llvm::LLT::isVector(), MRI, and llvm::setRegClassType().
Referenced by deduceAndAssignSpirvType().
|
static |
Definition at line 47 of file SPIRVPostLegalizer.cpp.
References llvm::MachineIRBuilder::getMRI(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVIntegerType(), and llvm::MachineRegisterInfo::getType().
Referenced by deduceResultTypeFromOperands().
|
static |
Definition at line 206 of file SPIRVPostLegalizer.cpp.
References deduceIntTypeFromResult(), deduceTypeFromOperandRange(), deduceTypeFromSingleOperand(), and I.
Referenced by deduceAndAssignSpirvType().
|
static |
Definition at line 120 of file SPIRVPostLegalizer.cpp.
References assert(), deduceTypeFromSingleOperand(), and I.
Referenced by deduceResultTypeFromOperands().
|
static |
Definition at line 138 of file SPIRVPostLegalizer.cpp.
References llvm::MachineIRBuilder::getMRI(), llvm::LLT::getNumElements(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVVectorType(), llvm::SPIRVGlobalRegistry::getScalarOrVectorComponentType(), llvm::SPIRVGlobalRegistry::getSPIRVTypeForVReg(), llvm::MachineRegisterInfo::getType(), and llvm::LLT::isVector().
Referenced by deduceTypeFromUses().
|
static |
Definition at line 102 of file SPIRVPostLegalizer.cpp.
References llvm::MachineIRBuilder::getMRI(), llvm::LLT::getNumElements(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVVectorType(), llvm::SPIRVGlobalRegistry::getScalarOrVectorComponentType(), llvm::SPIRVGlobalRegistry::getSPIRVTypeForVReg(), llvm::MachineRegisterInfo::getType(), I, llvm::LLT::isVector(), and OpIdx.
Referenced by deduceResultTypeFromOperands(), and deduceTypeFromOperandRange().
|
static |
Definition at line 158 of file SPIRVPostLegalizer.cpp.
References llvm::cast(), llvm::dbgs(), deduceTypeFromResultRegister(), llvm::MachineFunction::getRegInfo(), LLVM_DEBUG, MRI, and Reg.
Referenced by deduceAndAssignSpirvType().
|
static |
Definition at line 399 of file SPIRVPostLegalizer.cpp.
References assert(), llvm::dbgs(), generateAssignType(), llvm::MachineFunction::getName(), llvm::MachineFunction::getRegInfo(), llvm::SPIRVGlobalRegistry::getSPIRVTypeForVReg(), hasAssignType(), llvm::isTypeFoldingSupported(), LLVM_DEBUG, MBB, MI, and MRI.
|
static |
Definition at line 360 of file SPIRVPostLegalizer.cpp.
References llvm::MachineInstrBuilder::addDef(), llvm::MachineInstrBuilder::addUse(), llvm::SPIRVGlobalRegistry::assignSPIRVTypeToVReg(), llvm::MachineIRBuilder::buildInstr(), llvm::dbgs(), E(), llvm::MachineIRBuilder::getMF(), llvm::MachineOperand::getReg(), llvm::SPIRVGlobalRegistry::getRegClass(), llvm::SPIRVGlobalRegistry::getSPIRVTypeID(), I, LLVM_DEBUG, MI, MRI, llvm::printReg(), llvm::MachineInstrBuilder::setMIFlags(), llvm::MachineOperand::setReg(), and llvm::updateRegType().
Referenced by ensureAssignTypeForTypeFolding().
|
static |
Definition at line 351 of file SPIRVPostLegalizer.cpp.
Referenced by ensureAssignTypeForTypeFolding().
|
static |
Definition at line 287 of file SPIRVPostLegalizer.cpp.
References Changed, llvm::dbgs(), deduceAndAssignSpirvType(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), llvm::LLT::getElementType(), llvm::LLT::getNumElements(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVIntegerType(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVVectorType(), llvm::MachineFunction::getRegInfo(), llvm::LLT::getSizeInBits(), llvm::SPIRVGlobalRegistry::getSPIRVTypeForVReg(), I, llvm::LLT::isVector(), LLVM_DEBUG, MBB, MRI, llvm::SmallVectorTemplateBase< T, bool >::push_back(), requiresSpirvType(), and llvm::setRegClassType().
|
static |
Definition at line 259 of file SPIRVPostLegalizer.cpp.
References llvm::SPIRVGlobalRegistry::CurMF, llvm::dbgs(), llvm::SPIRVGlobalRegistry::getSPIRVTypeForVReg(), I, LLVM_DEBUG, MRI, and llvm::setRegClassType().
Referenced by registerSpirvTypeForNewInstructions().
| void visit | ( | MachineFunction & | MF, |
| MachineBasicBlock & | Start, | ||
| std::function< void(MachineBasicBlock *)> | op ) |
Definition at line 426 of file SPIRVPostLegalizer.cpp.
References llvm::SmallPtrSetImpl< PtrType >::contains(), llvm::SmallPtrSetImpl< PtrType >::insert(), MBB, and op.
Referenced by llvm::computeDeadSymbolsAndUpdateIndirectCalls(), llvm::ScalarEvolution::getLosslessPtrToIntExpr(), and visit().
| void visit | ( | MachineFunction & | MF, |
| std::function< void(MachineBasicBlock *)> | op ) |
Definition at line 450 of file SPIRVPostLegalizer.cpp.
References llvm::MachineFunction::begin(), op, and visit().