[llvm-branch-commits] [llvm] [NFC][SPIRV] Remove last uses of `SPIRVType` (PR #182098)
Juan Manuel Martinez CaamaƱo via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Feb 18 10:49:35 PST 2026
https://github.com/jmmartinez created https://github.com/llvm/llvm-project/pull/182098
This patch:
* Replaces some `SPIRVType` uses with `SPIRVTypeInst`
* Replaces cases where this replacement is impossible with `const MachineInstr*`
* For consistency renames some functions / variables
This patch depends on https://github.com/llvm/llvm-project/pull/181668
This patch closes https://github.com/llvm/llvm-project/issues/180788
>From 38b4e4be69eff53860c9d4781dfe9d71c447d6cd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Juan=20Manuel=20Martinez=20Caama=C3=B1o?=
<jmartinezcaamao at gmail.com>
Date: Wed, 18 Feb 2026 19:21:46 +0100
Subject: [PATCH 1/2] [NFC][SPIRV] Replace `SPIRVType` with `SPIRVTypeInst`
---
llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp | 2 +-
llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.h | 8 ++++----
llvm/lib/Target/SPIRV/SPIRVTypeInst.h | 2 +-
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp b/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp
index fb44305cdfae6..f85eb9087d3fb 100644
--- a/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp
@@ -1263,7 +1263,7 @@ SPIRVTypeInst SPIRVGlobalRegistry::restOfCreateSPIRVType(
return SpirvType;
}
-SPIRVType *
+SPIRVTypeInst
SPIRVGlobalRegistry::getSPIRVTypeForVReg(Register VReg,
const MachineFunction *MF) const {
auto t = VRegToTypeMap.find(MF ? MF : CurMF);
diff --git a/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.h b/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.h
index cbc8ad0cd04c1..82aa915d5d35b 100644
--- a/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.h
+++ b/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.h
@@ -36,7 +36,7 @@ class SPIRVGlobalRegistry : public SPIRVIRMapping {
// where Reg = OpType...
// while VRegToTypeMap tracks SPIR-V type assigned to other regs (i.e. not
// type-declaring ones).
- DenseMap<const MachineFunction *, DenseMap<Register, SPIRVType *>>
+ DenseMap<const MachineFunction *, DenseMap<Register, SPIRVTypeInst>>
VRegToTypeMap;
DenseMap<SPIRVTypeInst, const Type *> SPIRVToLLVMType;
@@ -58,7 +58,7 @@ class SPIRVGlobalRegistry : public SPIRVIRMapping {
DenseMap<MachineInstr *, std::pair<Type *, std::string>> ValueAttrs;
SmallPtrSet<const Type *, 4> TypesInProcessing;
- DenseMap<const Type *, SPIRVType *> ForwardPointerTypes;
+ DenseMap<const Type *, SPIRVTypeInst> ForwardPointerTypes;
// Stores for each function the last inserted SPIR-V Type.
// See: SPIRVGlobalRegistry::createOpType.
@@ -344,8 +344,8 @@ class SPIRVGlobalRegistry : public SPIRVIRMapping {
// allows to search for the association in a context of the machine functions
// than the current one, without switching between different "current" machine
// functions.
- SPIRVType *getSPIRVTypeForVReg(Register VReg,
- const MachineFunction *MF = nullptr) const;
+ SPIRVTypeInst getSPIRVTypeForVReg(Register VReg,
+ const MachineFunction *MF = nullptr) const;
// Return the result type of the instruction defining the register.
SPIRVTypeInst getResultType(Register VReg, MachineFunction *MF = nullptr);
diff --git a/llvm/lib/Target/SPIRV/SPIRVTypeInst.h b/llvm/lib/Target/SPIRV/SPIRVTypeInst.h
index 3415bd82cc5bb..40df6ffe411b6 100644
--- a/llvm/lib/Target/SPIRV/SPIRVTypeInst.h
+++ b/llvm/lib/Target/SPIRV/SPIRVTypeInst.h
@@ -35,7 +35,7 @@ class SPIRVTypeInst {
public:
SPIRVTypeInst(const MachineInstr &MI) : SPIRVTypeInst(&MI) {}
- SPIRVTypeInst(const MachineInstr *MI);
+ SPIRVTypeInst(const MachineInstr *MI = nullptr);
// No need to verify the register since it's already verified by the copied
// object.
>From c5cbd1ae03ca222eb9fabec3e5a9875c79b12fda Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Juan=20Manuel=20Martinez=20Caama=C3=B1o?=
<jmartinezcaamao at gmail.com>
Date: Wed, 18 Feb 2026 19:37:36 +0100
Subject: [PATCH 2/2] [NFC][SPIRV] Remove last uses of SPIRVType and do some
renaming for consistency
---
llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp | 97 ++++++++++---------
llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.h | 12 ++-
llvm/lib/Target/SPIRV/SPIRVISelLowering.cpp | 8 +-
llvm/lib/Target/SPIRV/SPIRVTypeInst.h | 6 --
4 files changed, 61 insertions(+), 62 deletions(-)
diff --git a/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp b/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp
index f85eb9087d3fb..762c671a9ba3c 100644
--- a/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp
@@ -144,7 +144,7 @@ inline Register createTypeVReg(MachineIRBuilder &MIRBuilder) {
}
SPIRVTypeInst SPIRVGlobalRegistry::getOpTypeBool(MachineIRBuilder &MIRBuilder) {
- return createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ return createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
return MIRBuilder.buildInstr(SPIRV::OpTypeBool)
.addDef(createTypeVReg(MIRBuilder));
});
@@ -175,7 +175,7 @@ SPIRVTypeInst SPIRVGlobalRegistry::getOpTypeInt(unsigned Width,
Width = adjustOpTypeIntWidth(Width);
const SPIRVSubtarget &ST =
cast<SPIRVSubtarget>(MIRBuilder.getMF().getSubtarget());
- return createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ return createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
if (Width == 4 && ST.canUseExtension(SPIRV::Extension::SPV_INTEL_int4)) {
MIRBuilder.buildInstr(SPIRV::OpExtension)
.addImm(SPIRV::Extension::SPV_INTEL_int4);
@@ -199,7 +199,7 @@ SPIRVTypeInst SPIRVGlobalRegistry::getOpTypeInt(unsigned Width,
SPIRVTypeInst
SPIRVGlobalRegistry::getOpTypeFloat(uint32_t Width,
MachineIRBuilder &MIRBuilder) {
- return createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ return createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
return MIRBuilder.buildInstr(SPIRV::OpTypeFloat)
.addDef(createTypeVReg(MIRBuilder))
.addImm(Width);
@@ -210,7 +210,7 @@ SPIRVTypeInst
SPIRVGlobalRegistry::getOpTypeFloat(uint32_t Width,
MachineIRBuilder &MIRBuilder,
SPIRV::FPEncoding::FPEncoding FPEncode) {
- return createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ return createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
return MIRBuilder.buildInstr(SPIRV::OpTypeFloat)
.addDef(createTypeVReg(MIRBuilder))
.addImm(Width)
@@ -219,7 +219,7 @@ SPIRVGlobalRegistry::getOpTypeFloat(uint32_t Width,
}
SPIRVTypeInst SPIRVGlobalRegistry::getOpTypeVoid(MachineIRBuilder &MIRBuilder) {
- return createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ return createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
return MIRBuilder.buildInstr(SPIRV::OpTypeVoid)
.addDef(createTypeVReg(MIRBuilder));
});
@@ -268,7 +268,7 @@ void SPIRVGlobalRegistry::invalidateMachineInstr(MachineInstr *MI) {
erase(MI);
}
-SPIRVType *SPIRVGlobalRegistry::createOpType(
+const MachineInstr *SPIRVGlobalRegistry::createOpAtFunctionEntry(
MachineIRBuilder &MIRBuilder,
std::function<MachineInstr *(MachineIRBuilder &)> Op) {
auto oldInsertPoint = MIRBuilder.getInsertPt();
@@ -297,14 +297,14 @@ SPIRVType *SPIRVGlobalRegistry::createOpType(
LastInsertedType = Result.first;
}
- MachineInstr *Type = Op(MIRBuilder);
+ MachineInstr *ConstOrType = Op(MIRBuilder);
// We expect all users of this function to insert definitions at the insertion
// point set above that is always the first MBB.
- assert(Type->getParent() == NewMBB);
- LastInsertedType->second = Type;
+ assert(ConstOrType->getParent() == NewMBB);
+ LastInsertedType->second = ConstOrType;
MIRBuilder.setInsertPt(*OldMBB, oldInsertPoint);
- return Type;
+ return ConstOrType;
}
SPIRVTypeInst
@@ -317,7 +317,7 @@ SPIRVGlobalRegistry::getOpTypeVector(uint32_t NumElems, SPIRVTypeInst ElemType,
EleOpc == SPIRV::OpTypeBool) &&
"Invalid vector element type");
- return createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ return createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
return MIRBuilder.buildInstr(SPIRV::OpTypeVector)
.addDef(createTypeVReg(MIRBuilder))
.addUse(getSPIRVTypeID(ElemType))
@@ -352,8 +352,8 @@ Register SPIRVGlobalRegistry::createConstFP(const ConstantFP *CF,
MachineInstr *DepMI =
const_cast<MachineInstr *>(static_cast<const MachineInstr *>(SpvType));
MachineIRBuilder MIRBuilder(*DepMI->getParent(), DepMI->getIterator());
- SPIRVType *NewType =
- createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ const MachineInstr *Const =
+ createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
MachineInstrBuilder MIB;
// In OpenCL OpConstantNull - Scalar floating point: +0.0 (all bits 0)
if (CF->getValue().isPosZero() && ZeroAsNull) {
@@ -374,7 +374,7 @@ Register SPIRVGlobalRegistry::createConstFP(const ConstantFP *CF,
*ST.getRegBankInfo());
return MIB;
});
- add(CF, NewType);
+ add(CF, Const);
return Res;
}
@@ -414,8 +414,8 @@ Register SPIRVGlobalRegistry::createConstInt(const ConstantInt *CI,
MachineInstr *DepMI =
const_cast<MachineInstr *>(static_cast<const MachineInstr *>(SpvType));
MachineIRBuilder MIRBuilder(*DepMI->getParent(), DepMI->getIterator());
- SPIRVType *NewType =
- createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ const MachineInstr *Const =
+ createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
MachineInstrBuilder MIB;
if (BitWidth == 1) {
MIB = MIRBuilder
@@ -439,7 +439,7 @@ Register SPIRVGlobalRegistry::createConstInt(const ConstantInt *CI,
*ST.getRegBankInfo());
return MIB;
});
- add(CI, NewType);
+ add(CI, Const);
return Res;
}
@@ -466,8 +466,8 @@ Register SPIRVGlobalRegistry::buildConstantInt(uint64_t Val,
assignTypeToVReg(Ty, Res, MIRBuilder, SPIRV::AccessQualifier::ReadWrite,
EmitIR);
- SPIRVType *NewType =
- createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ const MachineInstr *Const =
+ createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
if (EmitIR)
return MIRBuilder.buildConstant(Res, *CI);
Register SpvTypeReg = getSPIRVTypeID(SpvType);
@@ -488,7 +488,7 @@ Register SPIRVGlobalRegistry::buildConstantInt(uint64_t Val,
*Subtarget.getRegBankInfo());
return MIB;
});
- add(CI, NewType);
+ add(CI, Const);
return Res;
}
@@ -510,8 +510,8 @@ Register SPIRVGlobalRegistry::buildConstantFP(APFloat Val,
MF.getRegInfo().setRegClass(Res, &SPIRV::fIDRegClass);
assignSPIRVTypeToVReg(SpvType, Res, MF);
- SPIRVType *NewType =
- createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ const MachineInstr *Const =
+ createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
MachineInstrBuilder MIB;
MIB = MIRBuilder.buildInstr(SPIRV::OpConstantF)
.addDef(Res)
@@ -519,7 +519,7 @@ Register SPIRVGlobalRegistry::buildConstantFP(APFloat Val,
addNumImm(CF->getValueAPF().bitcastToAPInt(), MIB);
return MIB;
});
- add(CF, NewType);
+ add(CF, Const);
return Res;
}
@@ -565,7 +565,7 @@ Register SPIRVGlobalRegistry::getOrCreateCompositeOrNull(
const_cast<MachineInstr *>(static_cast<const MachineInstr *>(SpvType));
MachineIRBuilder MIRBuilder(*DepMI->getParent(), DepMI->getIterator());
const MachineInstr *NewMI =
- createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
MachineInstrBuilder MIB;
if (!IsNull) {
MIB = MIRBuilder.buildInstr(SPIRV::OpConstantComposite)
@@ -682,7 +682,7 @@ Register SPIRVGlobalRegistry::getOrCreateIntCompositeOrNull(
assignSPIRVTypeToVReg(SpvType, Res, *CurMF);
const MachineInstr *NewMI =
- createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
if (EmitIR)
return MIRBuilder.buildSplatBuildVector(Res, ElemReg);
@@ -738,7 +738,7 @@ SPIRVGlobalRegistry::getOrCreateConstNullPtr(MachineIRBuilder &MIRBuilder,
assignSPIRVTypeToVReg(SpvType, Res, *CurMF);
const MachineInstr *NewMI =
- createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
return MIRBuilder.buildInstr(SPIRV::OpConstantNull)
.addDef(Res)
.addUse(getSPIRVTypeID(SpvType));
@@ -907,7 +907,8 @@ SPIRVTypeInst SPIRVGlobalRegistry::getOpTypeArray(uint32_t NumElems,
if (NumElems != 0) {
Register NumElementsVReg =
buildConstantInt(NumElems, MIRBuilder, SpvTypeInt32, EmitIR);
- ArrayType = createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ ArrayType = createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder
+ &MIRBuilder) {
return MIRBuilder.buildInstr(SPIRV::OpTypeArray)
.addDef(createTypeVReg(MIRBuilder))
.addUse(getSPIRVTypeID(ElemType))
@@ -919,7 +920,8 @@ SPIRVTypeInst SPIRVGlobalRegistry::getOpTypeArray(uint32_t NumElems,
SPIRVTypeInst SpvTypeInt64 = getOrCreateSPIRVIntegerType(64, MIRBuilder);
Register NumElementsVReg =
buildConstantInt(UINT64_MAX, MIRBuilder, SpvTypeInt64, EmitIR);
- ArrayType = createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ ArrayType = createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder
+ &MIRBuilder) {
return MIRBuilder.buildInstr(SPIRV::OpTypeArray)
.addDef(createTypeVReg(MIRBuilder))
.addUse(getSPIRVTypeID(ElemType))
@@ -932,7 +934,8 @@ SPIRVTypeInst SPIRVGlobalRegistry::getOpTypeArray(uint32_t NumElems,
"SPIR-V modules");
return nullptr;
}
- ArrayType = createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ ArrayType = createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder
+ &MIRBuilder) {
return MIRBuilder.buildInstr(SPIRV::OpTypeRuntimeArray)
.addDef(createTypeVReg(MIRBuilder))
.addUse(getSPIRVTypeID(ElemType));
@@ -954,7 +957,7 @@ SPIRVGlobalRegistry::getOpTypeOpaque(const StructType *Ty,
assert(Ty->hasName());
const StringRef Name = Ty->hasName() ? Ty->getName() : "";
Register ResVReg = createTypeVReg(MIRBuilder);
- return createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ return createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
auto MIB = MIRBuilder.buildInstr(SPIRV::OpTypeOpaque).addDef(ResVReg);
addStringImm(Name, MIB);
buildOpName(ResVReg, Name, MIRBuilder);
@@ -1006,7 +1009,7 @@ SPIRVTypeInst SPIRVGlobalRegistry::getOpTypeStruct(
buildOpDecorate(ResVReg, MIRBuilder, SPIRV::Decoration::CPacked, {});
SPIRVTypeInst SPVType =
- createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
auto MIBStruct =
MIRBuilder.buildInstr(SPIRV::OpTypeStruct).addDef(ResVReg);
for (size_t I = 0; I < SPIRVStructNumElements; ++I)
@@ -1040,7 +1043,7 @@ SPIRVTypeInst SPIRVGlobalRegistry::getOpTypePointer(
if (!Reg.isValid())
Reg = createTypeVReg(MIRBuilder);
- return createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ return createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
return MIRBuilder.buildInstr(SPIRV::OpTypePointer)
.addDef(Reg)
.addImm(static_cast<uint32_t>(SC))
@@ -1050,7 +1053,7 @@ SPIRVTypeInst SPIRVGlobalRegistry::getOpTypePointer(
SPIRVTypeInst SPIRVGlobalRegistry::getOpTypeForwardPointer(
SPIRV::StorageClass::StorageClass SC, MachineIRBuilder &MIRBuilder) {
- return createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ return createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
return MIRBuilder.buildInstr(SPIRV::OpTypeForwardPointer)
.addUse(createTypeVReg(MIRBuilder))
.addImm(static_cast<uint32_t>(SC));
@@ -1069,7 +1072,7 @@ SPIRVTypeInst SPIRVGlobalRegistry::getOpTypeFunction(
Fn, "SPIR-V shaders do not support variadic functions",
MIRBuilder.getDebugLoc()));
}
- return createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ return createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
auto MIB = MIRBuilder.buildInstr(SPIRV::OpTypeFunction)
.addDef(createTypeVReg(MIRBuilder))
.addUse(getSPIRVTypeID(RetType));
@@ -1611,7 +1614,7 @@ SPIRVTypeInst SPIRVGlobalRegistry::getOrCreateOpTypeImage(
if (const MachineInstr *MI = findMI(Key, &MIRBuilder.getMF()))
return MI;
const MachineInstr *NewMI =
- createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
auto MIB =
MIRBuilder.buildInstr(SPIRV::OpTypeImage)
.addDef(createTypeVReg(MIRBuilder))
@@ -1637,7 +1640,7 @@ SPIRVGlobalRegistry::getOrCreateOpTypeSampler(MachineIRBuilder &MIRBuilder) {
if (const MachineInstr *MI = findMI(Key, MF))
return MI;
const MachineInstr *NewMI =
- createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
return MIRBuilder.buildInstr(SPIRV::OpTypeSampler)
.addDef(createTypeVReg(MIRBuilder));
});
@@ -1652,7 +1655,7 @@ SPIRVTypeInst SPIRVGlobalRegistry::getOrCreateOpTypePipe(
if (const MachineInstr *MI = findMI(Key, &MIRBuilder.getMF()))
return MI;
const MachineInstr *NewMI =
- createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
return MIRBuilder.buildInstr(SPIRV::OpTypePipe)
.addDef(createTypeVReg(MIRBuilder))
.addImm(AccessQual);
@@ -1667,7 +1670,7 @@ SPIRVTypeInst SPIRVGlobalRegistry::getOrCreateOpTypeDeviceEvent(
if (const MachineInstr *MI = findMI(Key, &MIRBuilder.getMF()))
return MI;
const MachineInstr *NewMI =
- createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
return MIRBuilder.buildInstr(SPIRV::OpTypeDeviceEvent)
.addDef(createTypeVReg(MIRBuilder));
});
@@ -1684,7 +1687,7 @@ SPIRVTypeInst SPIRVGlobalRegistry::getOrCreateOpTypeSampledImage(
if (const MachineInstr *MI = findMI(Key, &MIRBuilder.getMF()))
return MI;
const MachineInstr *NewMI =
- createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
return MIRBuilder.buildInstr(SPIRV::OpTypeSampledImage)
.addDef(createTypeVReg(MIRBuilder))
.addUse(getSPIRVTypeID(ImageType));
@@ -1701,7 +1704,7 @@ SPIRVTypeInst SPIRVGlobalRegistry::getOrCreateOpTypeCoopMatr(
findMI(ExtensionType, false, &MIRBuilder.getMF()))
return MI;
const MachineInstr *NewMI =
- createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
SPIRVTypeInst SpvTypeInt32 =
getOrCreateSPIRVIntegerType(32, MIRBuilder);
const Type *ET = getTypeForSPIRVType(ElemType);
@@ -1728,7 +1731,7 @@ SPIRVTypeInst SPIRVGlobalRegistry::getOrCreateOpTypeByOpcode(
if (const MachineInstr *MI = findMI(Ty, false, &MIRBuilder.getMF()))
return MI;
const MachineInstr *NewMI =
- createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
return MIRBuilder.buildInstr(Opcode).addDef(createTypeVReg(MIRBuilder));
});
add(Ty, false, NewMI);
@@ -1742,7 +1745,7 @@ SPIRVTypeInst SPIRVGlobalRegistry::getOrCreateUnknownType(
return MI;
Register ResVReg = createTypeVReg(MIRBuilder);
const MachineInstr *NewMI =
- createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
MachineInstrBuilder MIB = MIRBuilder.buildInstr(SPIRV::UNKNOWN_type)
.addDef(ResVReg)
.addImm(Opcode);
@@ -1830,7 +1833,7 @@ SPIRVGlobalRegistry::getOrCreateSPIRVType(unsigned BitWidth, MachineInstr &I,
MachineBasicBlock &DepMBB = I.getMF()->front();
MachineIRBuilder MIRBuilder(DepMBB, DepMBB.getFirstNonPHI());
const MachineInstr *NewMI =
- createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
auto NewTypeMI = BuildMI(MIRBuilder.getMBB(), *MIRBuilder.getInsertPt(),
MIRBuilder.getDL(), TII.get(SPIRVOPcode))
.addDef(createTypeVReg(CurMF->getRegInfo()))
@@ -1895,7 +1898,7 @@ SPIRVGlobalRegistry::getOrCreateSPIRVBoolType(MachineInstr &I,
MachineBasicBlock &DepMBB = I.getMF()->front();
MachineIRBuilder MIRBuilder(DepMBB, DepMBB.getFirstNonPHI());
const MachineInstr *NewMI =
- createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
return BuildMI(MIRBuilder.getMBB(), *MIRBuilder.getInsertPt(),
MIRBuilder.getDL(), TII.get(SPIRV::OpTypeBool))
.addDef(createTypeVReg(CurMF->getRegInfo()));
@@ -1924,7 +1927,7 @@ SPIRVTypeInst SPIRVGlobalRegistry::getOrCreateSPIRVVectorType(
const_cast<MachineInstr *>(static_cast<const MachineInstr *>(BaseType));
MachineIRBuilder MIRBuilder(*DepMI->getParent(), DepMI->getIterator());
const MachineInstr *NewMI =
- createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
return BuildMI(MIRBuilder.getMBB(), *MIRBuilder.getInsertPt(),
MIRBuilder.getDL(), TII.get(SPIRV::OpTypeVector))
.addDef(createTypeVReg(CurMF->getRegInfo()))
@@ -1988,7 +1991,7 @@ SPIRVTypeInst SPIRVGlobalRegistry::getOrCreateSPIRVPointerTypeInternal(
Type *Ty = TypedPointerType::get(const_cast<Type *>(PointerElementType),
AddressSpace);
const MachineInstr *NewMI =
- createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
return BuildMI(MIRBuilder.getMBB(), MIRBuilder.getInsertPt(),
MIRBuilder.getDebugLoc(),
MIRBuilder.getTII().get(SPIRV::OpTypePointer))
@@ -2018,7 +2021,7 @@ Register SPIRVGlobalRegistry::getOrCreateUndef(MachineInstr &I,
const_cast<MachineInstr *>(static_cast<const MachineInstr *>(SpvType));
MachineIRBuilder MIRBuilder(*DepMI->getParent(), DepMI->getIterator());
const MachineInstr *NewMI =
- createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
+ createOpAtFunctionEntry(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
auto MIB = BuildMI(MIRBuilder.getMBB(), *MIRBuilder.getInsertPt(),
MIRBuilder.getDL(), TII.get(SPIRV::OpUndef))
.addDef(Res)
diff --git a/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.h b/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.h
index 82aa915d5d35b..2f5abcbdbace0 100644
--- a/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.h
+++ b/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.h
@@ -102,11 +102,13 @@ class SPIRVGlobalRegistry : public SPIRVIRMapping {
SPIRV::AccessQualifier::AccessQualifier AccessQual,
bool ExplicitLayoutRequired, bool EmitIR);
- // Internal function creating the an OpType at the correct position in the
- // function by tweaking the passed "MIRBuilder" insertion point and restoring
- // it to the correct position. "Op" should be the function creating the
- // specific OpType you need, and should return the newly created instruction.
- SPIRVType *createOpType(MachineIRBuilder &MIRBuilder,
+ // Internal function creating the an Types/Constants at the correct position
+ // in the function by tweaking the passed "MIRBuilder" insertion point and
+ // restoring it to the correct position. "Op" should be the function creating
+ // the specific operation you need, and should return the newly created
+ // instruction.
+ const MachineInstr *
+ createOpAtFunctionEntry(MachineIRBuilder &MIRBuilder,
std::function<MachineInstr *(MachineIRBuilder &)> Op);
public:
diff --git a/llvm/lib/Target/SPIRV/SPIRVISelLowering.cpp b/llvm/lib/Target/SPIRV/SPIRVISelLowering.cpp
index ff73fff8752d7..54b2e86dfeb8b 100644
--- a/llvm/lib/Target/SPIRV/SPIRVISelLowering.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVISelLowering.cpp
@@ -151,9 +151,9 @@ SPIRVTargetLowering::getRegForInlineAsmConstraint(const TargetRegisterInfo *TRI,
}
inline Register getTypeReg(MachineRegisterInfo *MRI, Register OpReg) {
- SPIRVType *TypeInst = MRI->getVRegDef(OpReg);
- return TypeInst && TypeInst->getOpcode() == SPIRV::OpFunctionParameter
- ? TypeInst->getOperand(1).getReg()
+ const MachineInstr *Inst = MRI->getVRegDef(OpReg);
+ return Inst && Inst->getOpcode() == SPIRV::OpFunctionParameter
+ ? Inst->getOperand(1).getReg()
: OpReg;
}
@@ -198,7 +198,7 @@ static void validatePtrTypes(const SPIRVSubtarget &STI,
MachineFunction *MF = I.getParent()->getParent();
Register OpReg = I.getOperand(OpIdx).getReg();
Register OpTypeReg = getTypeReg(MRI, OpReg);
- SPIRVType *OpType = GR.getSPIRVTypeForVReg(OpTypeReg, MF);
+ const MachineInstr *OpType = GR.getSPIRVTypeForVReg(OpTypeReg, MF);
if (!ResType || !OpType || OpType->getOpcode() != SPIRV::OpTypePointer)
return;
// Get operand's pointee type
diff --git a/llvm/lib/Target/SPIRV/SPIRVTypeInst.h b/llvm/lib/Target/SPIRV/SPIRVTypeInst.h
index 40df6ffe411b6..36f3bb5c45c51 100644
--- a/llvm/lib/Target/SPIRV/SPIRVTypeInst.h
+++ b/llvm/lib/Target/SPIRV/SPIRVTypeInst.h
@@ -19,12 +19,6 @@ namespace llvm {
class MachineInstr;
class MachineRegisterInfo;
-/// @deprecated Use SPIRVTypeInst instead
-/// SPIRVType is supposed to represent a MachineInstr that defines a SPIRV Type
-/// (e.g. an OpTypeInt intruction). It is misused in several places and we're
-/// getting rid of it.
-using SPIRVType = const MachineInstr;
-
class SPIRVTypeInst {
const MachineInstr *MI;
More information about the llvm-branch-commits
mailing list