|
LLVM 23.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" |
| #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 694 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 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 547 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 722 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 875 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 811 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, and llvm::LLT::scalar().
Referenced by llvm::SPIRVLegalizerInfo::legalizeIntrinsic().
|
static |
Definition at line 745 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, and llvm::LLT::scalar().
Referenced by llvm::SPIRVLegalizerInfo::legalizeIntrinsic().
|
static |
Definition at line 598 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 538 of file SPIRVLegalizerInfo.cpp.
References llvm::isPowerOf2_32().
Referenced by legalizeLoad(), legalizeSpvBitcast(), legalizeSpvConstComposite(), legalizeSpvExtractElt(), and legalizeSpvInsertElt().
| LegalityPredicate typeOfExtendedScalars | ( | unsigned | TypeIdx, |
| bool | IsExtendedInts ) |
Definition at line 34 of file SPIRVLegalizerInfo.cpp.
Referenced by llvm::SPIRVLegalizerInfo::SPIRVLegalizerInfo().