|
LLVM 24.0.0git
|
#include "SPIRVLegalizerInfo.h"#include "SPIRV.h"#include "SPIRVGlobalRegistry.h"#include "SPIRVSubtarget.h"#include "SPIRVUtils.h"#include "llvm/CodeGen/GlobalISel/GenericMachineInstrs.h"#include "llvm/CodeGen/GlobalISel/LegalizerHelper.h"#include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h"#include "llvm/CodeGen/MachineInstr.h"#include "llvm/CodeGen/MachineRegisterInfo.h"#include "llvm/CodeGen/TargetOpcodes.h"#include "llvm/IR/IntrinsicsSPIRV.h"#include "llvm/Support/Debug.h"#include "llvm/Support/MathExtras.h"#include "llvm/Support/SPIRVAddrSpace.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "spirv-legalizer" |
| #define DEBUG_TYPE "spirv-legalizer" |
Definition at line 33 of file SPIRVLegalizerInfo.cpp.
|
static |
Definition at line 1082 of file SPIRVLegalizerInfo.cpp.
References llvm::MachineIRBuilder::buildBuildVector(), llvm::createVirtualRegister(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVVectorType(), llvm::SPIRVGlobalRegistry::getSPIRVTypeForVReg(), and llvm::ArrayRef< T >::size().
Referenced by legalizeElementwiseIntrinsic().
|
static |
Definition at line 684 of file SPIRVLegalizerInfo.cpp.
References llvm::MachineInstrBuilder::addDef(), llvm::MachineInstrBuilder::addUse(), llvm::SPIRVGlobalRegistry::assignSPIRVTypeToVReg(), llvm::MachineIRBuilder::buildInstr(), llvm::MachineIRBuilder::getMF(), llvm::SPIRVGlobalRegistry::getRegClass(), llvm::LegalizerHelper::MIRBuilder, MRI, and Reg.
Referenced by llvm::SPIRVLegalizerInfo::legalizeCustom().
|
static |
Definition at line 853 of file SPIRVLegalizerInfo.cpp.
References llvm::SPIRVGlobalRegistry::assignSPIRVTypeToVReg(), llvm::LegalizerHelper::createStackTemporary(), llvm::ArrayType::get(), llvm::TypeSize::getFixed(), llvm::MachineIRBuilder::getMF(), llvm::MachineIRBuilder::getMRI(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVPointerType(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVType(), llvm::SPIRVGlobalRegistry::getRegClass(), llvm::SPIRVGlobalRegistry::getScalarOrVectorComponentType(), llvm::SPIRVGlobalRegistry::getSPIRVTypeForVReg(), llvm::LegalizerHelper::getStackTemporaryAlignment(), llvm::SPIRVGlobalRegistry::getTypeForSPIRVType(), llvm::LegalizerHelper::MIRBuilder, and MRI.
Referenced by legalizeSpvExtractElt(), and legalizeSpvInsertElt().
|
static |
Definition at line 1097 of file SPIRVLegalizerInfo.cpp.
References llvm::MachineInstrBuilder::add(), llvm::append_range(), llvm::ArrayRef(), llvm::MachineIRBuilder::buildBuildVector(), llvm::MachineIRBuilder::buildIntrinsic(), buildVectorPart(), llvm::MachineOperand::CreateReg(), llvm::createVirtualRegister(), llvm::drop_begin(), llvm::DenseMapBase< StorageT, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::DenseMapBase< StorageT, KeyT, ValueT, KeyInfoT, BucketT >::find(), llvm::MachineIRBuilder::getMRI(), llvm::LLT::getNumElements(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVVectorType(), llvm::SPIRVGlobalRegistry::getScalarOrVectorComponentType(), llvm::SPIRVGlobalRegistry::getSPIRVTypeForVReg(), llvm::Intrinsic::isTriviallyScalarizable(), MI, llvm::LegalizerHelper::MIRBuilder, MRI, needsVectorLegalization(), llvm::Offset, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::MachineInstr::setFlags(), llvm::Size, llvm::DenseMapBase< StorageT, KeyT, ValueT, KeyInfoT, BucketT >::try_emplace(), and unmergeToScalars().
Referenced by llvm::SPIRVLegalizerInfo::legalizeIntrinsic().
|
static |
Definition at line 653 of file SPIRVLegalizerInfo.cpp.
References llvm::MachineInstrBuilder::addUse(), llvm::MachineIRBuilder::buildIntrinsic(), MI, and llvm::LegalizerHelper::MIRBuilder.
Referenced by llvm::SPIRVLegalizerInfo::legalizeCustom().
|
static |
Definition at line 668 of file SPIRVLegalizerInfo.cpp.
References llvm::MachineInstrBuilder::addUse(), llvm::MachineIRBuilder::buildIntrinsic(), MI, and llvm::LegalizerHelper::MIRBuilder.
Referenced by llvm::SPIRVLegalizerInfo::legalizeCustom().
|
static |
Definition at line 707 of file SPIRVLegalizerInfo.cpp.
References llvm::MachineInstrBuilder::addUse(), llvm::MachineIRBuilder::buildBuildVector(), llvm::MachineIRBuilder::buildConstant(), llvm::MachineIRBuilder::buildIntrinsic(), llvm::MachineIRBuilder::buildLoad(), llvm::commonAlignment(), llvm::MachineMemOperand::getAlign(), llvm::LLT::getElementType(), llvm::LLT::getNumElements(), llvm::MachineMemOperand::getPointerInfo(), llvm::LLT::getSizeInBytes(), llvm::MachinePointerInfo::getWithOffset(), llvm::LLT::isVector(), MI, llvm::LegalizerHelper::MIRBuilder, MRI, needsVectorLegalization(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::LLT::scalar().
Referenced by llvm::SPIRVLegalizerInfo::legalizeCustom().
|
static |
Definition at line 881 of file SPIRVLegalizerInfo.cpp.
References llvm::MachineIRBuilder::buildBitcast(), llvm::dbgs(), llvm::MachineIRBuilder::getMRI(), LLVM_DEBUG, MI, llvm::LegalizerHelper::MIRBuilder, MRI, and needsVectorLegalization().
Referenced by llvm::SPIRVLegalizerInfo::legalizeIntrinsic().
|
static |
Definition at line 1034 of file SPIRVLegalizerInfo.cpp.
References llvm::SPIRVGlobalRegistry::assignSPIRVTypeToVReg(), llvm::MachineIRBuilder::buildBuildVector(), llvm::MachineIRBuilder::buildConstant(), llvm::LLT::getElementType(), llvm::MachineIRBuilder::getMF(), llvm::MachineIRBuilder::getMRI(), llvm::LLT::getNumElements(), llvm::SPIRVGlobalRegistry::getScalarOrVectorComponentType(), llvm::SPIRVGlobalRegistry::getSPIRVTypeForVReg(), MI, llvm::LegalizerHelper::MIRBuilder, MRI, needsVectorLegalization(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().
Referenced by llvm::SPIRVLegalizerInfo::legalizeIntrinsic().
|
static |
Definition at line 970 of file SPIRVLegalizerInfo.cpp.
References llvm::MachineInstrBuilder::addUse(), llvm::SPIRVGlobalRegistry::assignSPIRVTypeToVReg(), llvm::MachineIRBuilder::buildConstant(), llvm::MachineIRBuilder::buildIntrinsic(), llvm::MachineIRBuilder::buildLoad(), llvm::MachineIRBuilder::buildStore(), llvm::MachineIRBuilder::buildUnmerge(), createStackTemporaryForVector(), E(), llvm::foldImm(), llvm::LLT::getAddressSpace(), llvm::LLT::getElementType(), llvm::getImm(), llvm::MachineIRBuilder::getMRI(), llvm::MachineOperand::getReg(), llvm::SPIRVGlobalRegistry::getRegClass(), llvm::SPIRVGlobalRegistry::getSPIRVTypeForVReg(), llvm::LegalizerHelper::getStackTemporaryAlignment(), I, MI, llvm::LegalizerHelper::MIRBuilder, MRI, needsVectorLegalization(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), Reg, llvm::LLT::scalar(), and uint64_t.
Referenced by llvm::SPIRVLegalizerInfo::legalizeIntrinsic().
|
static |
Definition at line 904 of file SPIRVLegalizerInfo.cpp.
References llvm::MachineInstrBuilder::addUse(), llvm::SPIRVGlobalRegistry::assignSPIRVTypeToVReg(), llvm::MachineIRBuilder::buildBuildVector(), llvm::MachineIRBuilder::buildConstant(), llvm::MachineIRBuilder::buildIntrinsic(), llvm::MachineIRBuilder::buildLoad(), llvm::MachineIRBuilder::buildStore(), llvm::MachineIRBuilder::buildUnmerge(), createStackTemporaryForVector(), E(), llvm::foldImm(), llvm::LLT::getAddressSpace(), llvm::LLT::getElementType(), llvm::getImm(), llvm::MachineIRBuilder::getMRI(), llvm::MachineOperand::getReg(), llvm::SPIRVGlobalRegistry::getRegClass(), llvm::SPIRVGlobalRegistry::getRegType(), llvm::SPIRVGlobalRegistry::getScalarOrVectorComponentType(), llvm::SPIRVGlobalRegistry::getSPIRVTypeForVReg(), llvm::LegalizerHelper::getStackTemporaryAlignment(), I, MI, llvm::LegalizerHelper::MIRBuilder, MRI, needsVectorLegalization(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), Reg, llvm::LLT::scalar(), and uint64_t.
Referenced by llvm::SPIRVLegalizerInfo::legalizeIntrinsic().
|
static |
Definition at line 758 of file SPIRVLegalizerInfo.cpp.
References llvm::MachineInstrBuilder::addUse(), assert(), llvm::MachineIRBuilder::buildConstant(), llvm::MachineIRBuilder::buildIntrinsic(), llvm::MachineIRBuilder::buildStore(), llvm::MachineIRBuilder::buildUnmerge(), llvm::commonAlignment(), llvm::MachineMemOperand::getAlign(), llvm::LLT::getElementType(), llvm::LLT::getNumElements(), llvm::MachineMemOperand::getPointerInfo(), llvm::LLT::getSizeInBytes(), llvm::MachinePointerInfo::getWithOffset(), llvm::LLT::isVector(), MI, llvm::LegalizerHelper::MIRBuilder, MRI, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::LLT::scalar().
Referenced by llvm::SPIRVLegalizerInfo::legalizeCustom().
|
static |
Definition at line 697 of file SPIRVLegalizerInfo.cpp.
References llvm::isPowerOf2_32().
Referenced by legalizeElementwiseIntrinsic(), legalizeLoad(), legalizeSpvBitcast(), legalizeSpvConstComposite(), legalizeSpvExtractElt(), and legalizeSpvInsertElt().
| LegalityPredicate typeOfExtendedScalars | ( | unsigned | TypeIdx, |
| bool | IsExtendedInts ) |
Definition at line 35 of file SPIRVLegalizerInfo.cpp.
Referenced by llvm::SPIRVLegalizerInfo::SPIRVLegalizerInfo().
| LegalityPredicate typeOfLongVectors | ( | unsigned | TypeIdx, |
| bool | IsLongVecs ) |
Definition at line 42 of file SPIRVLegalizerInfo.cpp.
Referenced by llvm::SPIRVLegalizerInfo::SPIRVLegalizerInfo().
|
static |
Definition at line 1066 of file SPIRVLegalizerInfo.cpp.
References llvm::MachineIRBuilder::buildUnmerge(), llvm::createVirtualRegister(), llvm::MachineIRBuilder::getMRI(), llvm::SPIRVGlobalRegistry::getScalarOrVectorComponentType(), llvm::SPIRVGlobalRegistry::getSPIRVTypeForVReg(), llvm::MachineRegisterInfo::getType(), I, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and Reg.
Referenced by legalizeElementwiseIntrinsic().