LLVM
15.0.0git
|
#include "SPIRV.h"
#include "SPIRVGlobalRegistry.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.
Macros | |
#define | DEBUG_TYPE "spirv-prelegalizer" |
#define DEBUG_TYPE "spirv-prelegalizer" |
Definition at line 27 of file SPIRVPreLegalizer.cpp.
|
static |
Definition at line 250 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 49 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(), isSpvIntrinsic(), MBB, MI, MRI, and llvm::MachineRegisterInfo::use_empty().
|
static |
Definition at line 172 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(), getMDOperandAsType(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineFunction::getRegInfo(), llvm::ConstantInt::getType(), llvm::Value::getType(), llvm::MachineRegisterInfo::getVRegDef(), llvm::MachineRegisterInfo::hasOneUse(), insertAssignInstr(), isSpvIntrinsic(), llvm_unreachable, MBB, MI, MRI, llvm::post_order(), propagateSPIRVType(), llvm::MachineRegisterInfo::use_instr_begin(), and UseMI.
|
static |
Definition at line 146 of file SPIRVPreLegalizer.cpp.
References llvm::MachineInstrBuilder::addDef(), llvm::MachineInstrBuilder::addUse(), assert(), llvm::SPIRVGlobalRegistry::assignSPIRVTypeToVReg(), llvm::MachineIRBuilder::buildInstr(), llvm::MachineRegisterInfo::createGenericVirtualRegister(), llvm::tgtok::Def, llvm::MachineIRBuilder::getMF(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVType(), llvm::MachineRegisterInfo::getRegClassOrNull(), llvm::SPIRVGlobalRegistry::getSPIRVTypeID(), llvm::MachineRegisterInfo::getType(), llvm::MachineRegisterInfo::getVRegDef(), MRI, llvm::MachineIRBuilder::setInsertPt(), and llvm::MachineRegisterInfo::setRegClass().
Referenced by generateAssignInstrs().
|
static |
Definition at line 74 of file SPIRVPreLegalizer.cpp.
References assert(), llvm::MachineIRBuilder::buildBitcast(), isSpvIntrinsic(), MBB, MI, and llvm::MachineIRBuilder::setInsertPt().
|
static |
Definition at line 42 of file SPIRVPreLegalizer.cpp.
References MI.
Referenced by foldConstantsIntoIntrinsics(), generateAssignInstrs(), insertBitcasts(), and processSwitches().
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 277 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 301 of file SPIRVPreLegalizer.cpp.
References llvm::MachineFunction::getRegInfo(), isTypeFoldingSupported(), MBB, MI, MRI, and processInstr().
|
static |
Definition at line 313 of file SPIRVPreLegalizer.cpp.
References assert(), llvm::SPIRVGlobalRegistry::assignSPIRVTypeToVReg(), 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(), getDefInstrMaybeConstant(), 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::CmpInst::ICMP_EQ, llvm::detail::DenseSetImpl< ValueT, DenseMap< ValueT, detail::DenseSetEmpty, DenseMapInfo< ValueT >, detail::DenseSetPair< ValueT > >, DenseMapInfo< ValueT > >::insert(), llvm::MachineOperand::isMBB(), llvm::MachineOperand::isReg(), isSpvIntrinsic(), MBB, MI, MRI, llvm::MachineIRBuilder::setInsertPt(), llvm::MachineRegisterInfo::setRegClass(), llvm::MachineBasicBlock::succ_begin(), and llvm::MachineRegisterInfo::use_begin().
|
static |
Definition at line 99 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().