|
LLVM 22.0.0git
|
#include "SPIRV.h"#include "SPIRVSubtarget.h"#include "SPIRVUtils.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 23 of file SPIRVPostLegalizer.cpp.
|
static |
Definition at line 196 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 53 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 46 of file SPIRVPostLegalizer.cpp.
References llvm::MachineIRBuilder::getMRI(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVIntegerType(), and llvm::MachineRegisterInfo::getType().
Referenced by deduceResultTypeFromOperands().
|
static |
Definition at line 176 of file SPIRVPostLegalizer.cpp.
References deduceIntTypeFromResult(), deduceTypeFromOperandRange(), deduceTypeFromSingleOperand(), and I.
Referenced by deduceAndAssignSpirvType().
|
static |
Definition at line 136 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 118 of file SPIRVPostLegalizer.cpp.
References assert(), deduceTypeFromSingleOperand(), and I.
Referenced by deduceResultTypeFromOperands().
|
static |
Definition at line 100 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 156 of file SPIRVPostLegalizer.cpp.
References llvm::dbgs(), deduceTypeForResultRegister(), llvm::MachineFunction::getRegInfo(), LLVM_DEBUG, MRI, and Reg.
Referenced by deduceAndAssignSpirvType().
|
static |
Definition at line 364 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 325 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 316 of file SPIRVPostLegalizer.cpp.
Referenced by ensureAssignTypeForTypeFolding().
|
static |
Definition at line 257 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(), I, llvm::LLT::isVector(), LLVM_DEBUG, MBB, MRI, llvm::SmallVectorTemplateBase< T, bool >::push_back(), requiresSpirvType(), and llvm::setRegClassType().
|
static |
Definition at line 229 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 391 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 415 of file SPIRVPostLegalizer.cpp.
References llvm::MachineFunction::begin(), op, and visit().