|
LLVM 22.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"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "spirv-legalizer" |
Functions | |
| LegalityPredicate | typeOfExtendedScalars (unsigned TypeIdx, bool IsExtendedInts) |
| static bool | legalizeExtractVectorElt (LegalizerHelper &Helper, MachineInstr &MI, SPIRVGlobalRegistry *GR) |
| static bool | legalizeInsertVectorElt (LegalizerHelper &Helper, MachineInstr &MI, SPIRVGlobalRegistry *GR) |
| static Register | convertPtrToInt (Register Reg, LLT ConvTy, SPIRVType *SpvType, LegalizerHelper &Helper, MachineRegisterInfo &MRI, SPIRVGlobalRegistry *GR) |
| static bool | legalizeStore (LegalizerHelper &Helper, MachineInstr &MI, SPIRVGlobalRegistry *GR) |
| static bool | needsVectorLegalization (const LLT &Ty, const SPIRVSubtarget &ST) |
| static bool | legalizeSpvBitcast (LegalizerHelper &Helper, MachineInstr &MI, SPIRVGlobalRegistry *GR) |
| static bool | legalizeSpvInsertElt (LegalizerHelper &Helper, MachineInstr &MI, SPIRVGlobalRegistry *GR) |
| static bool | legalizeSpvExtractElt (LegalizerHelper &Helper, MachineInstr &MI, SPIRVGlobalRegistry *GR) |
| #define DEBUG_TYPE "spirv-legalizer" |
Definition at line 32 of file SPIRVLegalizerInfo.cpp.
|
static |
Definition at line 525 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 493 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 508 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 640 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 730 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(), llvm::LegalizerHelper::createStackTemporary(), E(), llvm::foldImm(), llvm::ArrayType::get(), llvm::LLT::getAddressSpace(), llvm::LLT::getElementType(), llvm::TypeSize::getFixed(), llvm::getImm(), llvm::MachineIRBuilder::getMRI(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVPointerType(), llvm::SPIRVGlobalRegistry::getOrCreateSPIRVType(), llvm::MachineOperand::getReg(), llvm::SPIRVGlobalRegistry::getRegClass(), llvm::SPIRVGlobalRegistry::getScalarOrVectorComponentType(), llvm::SPIRVGlobalRegistry::getSPIRVTypeForVReg(), llvm::LegalizerHelper::getStackTemporaryAlignment(), llvm::SPIRVGlobalRegistry::getTypeForSPIRVType(), I, MI, llvm::LegalizerHelper::MIRBuilder, MRI, needsVectorLegalization(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), Reg, and llvm::LLT::scalar().
Referenced by llvm::SPIRVLegalizerInfo::legalizeIntrinsic().
|
static |
Definition at line 663 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(), llvm::LegalizerHelper::createStackTemporary(), E(), llvm::foldImm(), llvm::LLT::getAddressSpace(), llvm::LLT::getElementType(), llvm::TypeSize::getFixed(), 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, and llvm::LLT::scalar().
Referenced by llvm::SPIRVLegalizerInfo::legalizeIntrinsic().
|
static |
Definition at line 538 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(), MI, llvm::LegalizerHelper::MIRBuilder, MRI, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::LLT::scalar().
Referenced by llvm::SPIRVLegalizerInfo::legalizeCustom().
|
static |
Definition at line 631 of file SPIRVLegalizerInfo.cpp.
References llvm::isPowerOf2_32().
Referenced by legalizeSpvBitcast(), legalizeSpvExtractElt(), and legalizeSpvInsertElt().
| LegalityPredicate typeOfExtendedScalars | ( | unsigned | TypeIdx, |
| bool | IsExtendedInts ) |
Definition at line 34 of file SPIRVLegalizerInfo.cpp.
Referenced by llvm::SPIRVLegalizerInfo::SPIRVLegalizerInfo().