LLVM
17.0.0git
|
#include "SPIRV.h"
#include "SPIRVSubtarget.h"
#include "SPIRVUtils.h"
#include "llvm/ADT/PostOrderIterator.h"
#include "llvm/Analysis/OptimizationRemarkEmitter.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"
Go to the source code of this file.
Namespaces | |
llvm | |
This is an optimization pass for GlobalISel generic memory operations. | |
Macros | |
#define | DEBUG_TYPE "spirv-prelegalizer" |
#define DEBUG_TYPE "spirv-prelegalizer" |
Definition at line 26 of file SPIRVPreLegalizer.cpp.
|
static |
Definition at line 41 of file SPIRVPreLegalizer.cpp.
References llvm::SPIRVGlobalRegistry::add(), assert(), llvm::DenseMapBase< DenseMap< KeyT, ValueT, DenseMapInfo< KeyT >, llvm::detail::DenseMapPair< KeyT, ValueT > >, KeyT, ValueT, DenseMapInfo< KeyT >, llvm::detail::DenseMapPair< KeyT, ValueT > >::end(), llvm::SPIRVGlobalRegistry::find(), llvm::DenseMapBase< DenseMap< KeyT, ValueT, DenseMapInfo< KeyT >, llvm::detail::DenseMapPair< KeyT, ValueT > >, KeyT, ValueT, DenseMapInfo< KeyT >, llvm::detail::DenseMapPair< KeyT, ValueT > >::find(), llvm::MachineFunction::getRegInfo(), llvm::MachineRegisterInfo::getVRegDef(), i, llvm::isSpvIntrinsic(), MBB, MI, MRI, and llvm::MachineRegisterInfo::replaceRegWith().
|
static |
Definition at line 303 of file SPIRVPreLegalizer.cpp.
References assert(), llvm::MachineRegisterInfo::createGenericVirtualRegister(), llvm::LLT::fixed_vector(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::SPIRVGlobalRegistry::getSPIRVTypeForVReg(), llvm::MachineRegisterInfo::getType(), llvm::LLT::isPointer(), llvm::LLT::isVector(), MRI, llvm::LLT::pointer(), llvm::LLT::scalar(), and llvm::MachineRegisterInfo::setRegClass().
Referenced by processInstr().
|
static |
Definition at line 95 of file SPIRVPreLegalizer.cpp.
References assert(), llvm::MachineOperand::CreateImm(), llvm::MachineOperand::getCImm(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::MachineRegisterInfo::getVRegDef(), llvm::ConstantInt::getZExtValue(), llvm::isSpvIntrinsic(), MBB, MI, MRI, and llvm::MachineRegisterInfo::use_empty().
|
static |
Definition at line 225 of file SPIRVPreLegalizer.cpp.
References assert(), llvm::MachineBasicBlock::begin(), llvm::tgtok::Def, llvm::MachineBasicBlock::empty(), llvm::MachineBasicBlock::end(), llvm::VectorType::get(), llvm::MachineOperand::getCImm(), llvm::MachineOperand::getFPImm(), llvm::getMDOperandAsType(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineFunction::getRegInfo(), llvm::ConstantInt::getType(), llvm::Value::getType(), llvm::MachineRegisterInfo::getVRegDef(), llvm::MachineRegisterInfo::hasOneUse(), llvm::insertAssignInstr(), llvm::isSpvIntrinsic(), llvm_unreachable, MBB, MI, MRI, llvm::post_order(), propagateSPIRVType(), llvm::MachineRegisterInfo::use_instr_begin(), and UseMI.
|
static |
Definition at line 120 of file SPIRVPreLegalizer.cpp.
References assert(), llvm::MachineIRBuilder::buildBitcast(), llvm::isSpvIntrinsic(), MBB, MI, and llvm::MachineIRBuilder::setInsertPt().
bool isTypeFoldingSupported | ( | unsigned | Opcode | ) |
Definition at line 53 of file SPIRVLegalizerInfo.cpp.
References TypeFoldingSupportingOpcs.
Referenced by llvm::SPIRVLegalizerInfo::legalizeCustom(), and processInstrsWithTypeFolding().
|
static |
Definition at line 330 of file SPIRVPreLegalizer.cpp.
References llvm::MachineInstrBuilder::addDef(), llvm::MachineInstrBuilder::addUse(), assert(), llvm::MachineIRBuilder::buildInstr(), createNewIdReg(), llvm::MachineInstr::getOperand(), llvm::MachineRegisterInfo::hasOneUse(), MI, MRI, llvm::MachineIRBuilder::setInsertPt(), llvm::MachineOperand::setReg(), and llvm::MachineRegisterInfo::use_instr_begin().
Referenced by processInstrsWithTypeFolding().
|
static |
Definition at line 354 of file SPIRVPreLegalizer.cpp.
References llvm::MachineInstr::getOpcode(), llvm::MachineFunction::getRegInfo(), llvm::MachineRegisterInfo::getType(), llvm::MachineRegisterInfo::getVRegDef(), llvm::MachineRegisterInfo::hasOneUse(), isTypeFoldingSupported(), llvm::LLT::isVector(), MBB, MI, MRI, processInstr(), llvm::LLT::scalar(), llvm::MachineRegisterInfo::setRegClass(), llvm::MachineRegisterInfo::setType(), llvm::MachineRegisterInfo::use_instr_begin(), and UseMI.
|
static |
Definition at line 390 of file SPIRVPreLegalizer.cpp.
References assert(), llvm::SPIRVGlobalRegistry::assignSPIRVTypeToVReg(), CC, llvm::detail::DenseSetImpl< ValueT, DenseMap< ValueT, detail::DenseSetEmpty, DenseMapInfo< ValueT >, detail::DenseSetPair< ValueT > >, DenseMapInfo< ValueT > >::contains(), llvm::MachineOperand::CreateCImm(), llvm::MachineOperand::CreateMBB(), llvm::MachineBasicBlock::front(), llvm::IntegerType::get(), llvm::MachineOperand::getCImm(), llvm::getDefInstrMaybeConstant(), llvm::getIConstVal(), llvm::MachineOperand::getMBB(), llvm::MachineIRBuilder::getMF(), llvm::ilist_node_with_parent< NodeTy, ParentTy, Options >::getNextNode(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVType(), llvm::MachineOperand::getParent(), llvm::MachineOperand::getPredicate(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::SPIRVGlobalRegistry::getSPIRVTypeForVReg(), llvm::MachineRegisterInfo::hasOneDef(), llvm::MachineRegisterInfo::hasOneUse(), i, llvm::SystemZISD::ICMP, llvm::CmpInst::ICMP_EQ, llvm::CmpInst::ICMP_ULE, llvm::detail::DenseSetImpl< ValueT, DenseMap< ValueT, detail::DenseSetEmpty, DenseMapInfo< ValueT >, detail::DenseSetPair< ValueT > >, DenseMapInfo< ValueT > >::insert(), llvm::insertAssignInstr(), llvm::MachineOperand::isMBB(), llvm::MachineOperand::isReg(), llvm::isSpvIntrinsic(), j(), MBB, MI, MRI, llvm::MachineIRBuilder::setInsertPt(), llvm::MachineRegisterInfo::setRegClass(), and llvm::MachineRegisterInfo::use_begin().
Referenced by llvm::SPIRVModuleAnalysis::runOnModule().
|
static |
Definition at line 145 of file SPIRVPreLegalizer.cpp.
References assert(), llvm::SPIRVGlobalRegistry::assignSPIRVTypeToVReg(), llvm::tgtok::Def, llvm::MachineIRBuilder::getMF(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVType(), llvm::MachineRegisterInfo::getRegClassOrNull(), llvm::SPIRVGlobalRegistry::getSPIRVTypeForVReg(), llvm::MachineRegisterInfo::getVRegDef(), MI, MRI, llvm::MachineIRBuilder::setInsertPt(), and llvm::MachineRegisterInfo::setRegClass().
Referenced by generateAssignInstrs().