LLVM 18.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 | |
namespace | 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< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::SPIRVGlobalRegistry::find(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::find(), llvm::MachineFunction::getRegInfo(), llvm::isSpvIntrinsic(), MBB, MI, MRI, and llvm::SmallVectorTemplateBase< T, bool >::push_back().
|
static |
Definition at line 322 of file SPIRVPreLegalizer.cpp.
References assert(), llvm::LLT::fixed_vector(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::SPIRVGlobalRegistry::getSPIRVTypeForVReg(), MRI, llvm::LLT::pointer(), and llvm::LLT::scalar().
Referenced by processInstr().
|
static |
Definition at line 98 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::ConstantInt::getZExtValue(), llvm::isSpvIntrinsic(), MBB, MI, MRI, and llvm::SmallVectorTemplateBase< T, bool >::push_back().
|
static |
Definition at line 231 of file SPIRVPreLegalizer.cpp.
References llvm::addressSpaceToStorageClass(), assert(), llvm::MachineBasicBlock::begin(), llvm::MachineBasicBlock::empty(), llvm::MachineBasicBlock::end(), llvm::MachineOperand::getCImm(), llvm::MachineOperand::getFPImm(), llvm::SPIRVSubtarget::getInstrInfo(), llvm::getMDOperandAsType(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVPointerType(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVType(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::ConstantInt::getType(), llvm::Value::getType(), llvm::insertAssignInstr(), llvm::isSpvIntrinsic(), llvm_unreachable, MBB, MI, MRI, llvm::post_order(), propagateSPIRVType(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::MachineIRBuilder::setInsertPt(), and UseMI.
|
static |
Definition at line 123 of file SPIRVPreLegalizer.cpp.
References assert(), llvm::MachineIRBuilder::buildBitcast(), llvm::isSpvIntrinsic(), MBB, MI, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::MachineIRBuilder::setInsertPt().
Definition at line 53 of file SPIRVLegalizerInfo.cpp.
Referenced by processInstrsWithTypeFolding().
|
static |
Definition at line 349 of file SPIRVPreLegalizer.cpp.
References llvm::MachineInstrBuilder::addDef(), llvm::MachineInstrBuilder::addUse(), assert(), llvm::MachineIRBuilder::buildInstr(), createNewIdReg(), llvm::MachineInstr::getOperand(), MI, MRI, llvm::MachineIRBuilder::setInsertPt(), and llvm::MachineOperand::setReg().
Referenced by processInstrsWithTypeFolding().
|
static |
Definition at line 373 of file SPIRVPreLegalizer.cpp.
References llvm::MachineFunction::getRegInfo(), isTypeFoldingSupported(), MBB, MI, MRI, Opcode, processInstr(), llvm::LLT::scalar(), and UseMI.
|
static |
Definition at line 409 of file SPIRVPreLegalizer.cpp.
References assert(), CC, llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::contains(), llvm::MachineOperand::CreateCImm(), llvm::MachineOperand::CreateMBB(), llvm::MachineBasicBlock::empty(), llvm::MachineBasicBlock::eraseFromParent(), llvm::MachineBasicBlock::front(), llvm::MachineOperand::getCImm(), llvm::getDefInstrMaybeConstant(), llvm::getIConstVal(), llvm::MachineOperand::getMBB(), llvm::ilist_node_with_parent< NodeTy, ParentTy, Options >::getNextNode(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getPredicate(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::CmpInst::ICMP_EQ, llvm::CmpInst::ICMP_ULE, llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::insert(), llvm::MachineOperand::isMBB(), llvm::MachineOperand::isReg(), llvm::isSpvIntrinsic(), MBB, MI, MRI, llvm::MachineBasicBlock::pred_begin(), llvm::MachineBasicBlock::pred_empty(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::MachineBasicBlock::removeSuccessor(), llvm::SmallVectorBase< Size_T >::size(), llvm::MachineBasicBlock::succ_begin(), and llvm::MachineBasicBlock::succ_empty().
|
static |
Definition at line 148 of file SPIRVPreLegalizer.cpp.
References assert(), llvm::SPIRVGlobalRegistry::assignSPIRVTypeToVReg(), llvm::MachineIRBuilder::getMF(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVType(), llvm::SPIRVGlobalRegistry::getSPIRVTypeForVReg(), MI, MRI, propagateSPIRVType(), and llvm::MachineIRBuilder::setInsertPt().
Referenced by generateAssignInstrs(), and propagateSPIRVType().