Lines Matching refs:MIRBuilder

61     const Type *Type, Register VReg, MachineIRBuilder &MIRBuilder,  in assignTypeToVReg()  argument
64 getOrCreateSPIRVType(Type, MIRBuilder, AccessQual, EmitIR); in assignTypeToVReg()
65 assignSPIRVTypeToVReg(SpirvType, VReg, MIRBuilder.getMF()); in assignTypeToVReg()
75 static Register createTypeVReg(MachineIRBuilder &MIRBuilder) { in createTypeVReg() argument
76 auto &MRI = MIRBuilder.getMF().getRegInfo(); in createTypeVReg()
88 SPIRVType *SPIRVGlobalRegistry::getOpTypeBool(MachineIRBuilder &MIRBuilder) { in getOpTypeBool() argument
89 return MIRBuilder.buildInstr(SPIRV::OpTypeBool) in getOpTypeBool()
90 .addDef(createTypeVReg(MIRBuilder)); in getOpTypeBool()
112 MachineIRBuilder &MIRBuilder, in getOpTypeInt() argument
116 cast<SPIRVSubtarget>(MIRBuilder.getMF().getSubtarget()); in getOpTypeInt()
119 MIRBuilder.buildInstr(SPIRV::OpExtension) in getOpTypeInt()
121 MIRBuilder.buildInstr(SPIRV::OpCapability) in getOpTypeInt()
124 auto MIB = MIRBuilder.buildInstr(SPIRV::OpTypeInt) in getOpTypeInt()
125 .addDef(createTypeVReg(MIRBuilder)) in getOpTypeInt()
132 MachineIRBuilder &MIRBuilder) { in getOpTypeFloat() argument
133 auto MIB = MIRBuilder.buildInstr(SPIRV::OpTypeFloat) in getOpTypeFloat()
134 .addDef(createTypeVReg(MIRBuilder)) in getOpTypeFloat()
139 SPIRVType *SPIRVGlobalRegistry::getOpTypeVoid(MachineIRBuilder &MIRBuilder) { in getOpTypeVoid() argument
140 return MIRBuilder.buildInstr(SPIRV::OpTypeVoid) in getOpTypeVoid()
141 .addDef(createTypeVReg(MIRBuilder)); in getOpTypeVoid()
146 MachineIRBuilder &MIRBuilder) { in getOpTypeVector() argument
153 auto MIB = MIRBuilder.buildInstr(SPIRV::OpTypeVector) in getOpTypeVector()
154 .addDef(createTypeVReg(MIRBuilder)) in getOpTypeVector()
162 MachineIRBuilder *MIRBuilder, in getOrCreateConstIntReg() argument
181 if (MIRBuilder) in getOrCreateConstIntReg()
182 assignTypeToVReg(LLVMIntTy, Res, *MIRBuilder); in getOrCreateConstIntReg()
193 MachineIRBuilder *MIRBuilder, in getOrCreateConstFloatReg() argument
203 if (MIRBuilder) in getOrCreateConstFloatReg()
204 SpvType = getOrCreateSPIRVType(LLVMFloatTy, *MIRBuilder); in getOrCreateConstFloatReg()
218 if (MIRBuilder) in getOrCreateConstFloatReg()
219 assignTypeToVReg(LLVMFloatTy, Res, *MIRBuilder); in getOrCreateConstFloatReg()
297 MachineIRBuilder &MIRBuilder, in buildConstantInt() argument
300 auto &MF = MIRBuilder.getMF(); in buildConstantInt()
315 assignTypeToVReg(LLVMIntTy, Res, MIRBuilder, in buildConstantInt()
317 DT.add(ConstInt, &MIRBuilder.getMF(), Res); in buildConstantInt()
319 MIRBuilder.buildConstant(Res, *ConstInt); in buildConstantInt()
322 SpvType = getOrCreateSPIRVIntegerType(BitWidth, MIRBuilder); in buildConstantInt()
325 MIB = MIRBuilder.buildInstr(SPIRV::OpConstantI) in buildConstantInt()
330 MIB = MIRBuilder.buildInstr(SPIRV::OpConstantNull) in buildConstantInt()
344 MachineIRBuilder &MIRBuilder, in buildConstantFP() argument
346 auto &MF = MIRBuilder.getMF(); in buildConstantFP()
350 SpvType = getOrCreateSPIRVType(LLVMFPTy, MIRBuilder); in buildConstantFP()
362 MIB = MIRBuilder.buildInstr(SPIRV::OpConstantF) in buildConstantFP()
503 uint64_t Val, MachineIRBuilder &MIRBuilder, SPIRVType *SpvType, bool EmitIR, in getOrCreateIntCompositeOrNull() argument
510 getOrCreateSPIRVIntegerType(BitWidth, MIRBuilder); in getOrCreateIntCompositeOrNull()
511 SpvScalConst = buildConstantInt(Val, MIRBuilder, SpvBaseType, EmitIR); in getOrCreateIntCompositeOrNull()
520 MIRBuilder.buildSplatVector(SpvVecConst, SpvScalConst); in getOrCreateIntCompositeOrNull()
523 auto MIB = MIRBuilder.buildInstr(SPIRV::OpConstantComposite) in getOrCreateIntCompositeOrNull()
529 MIRBuilder.buildInstr(SPIRV::OpConstantNull) in getOrCreateIntCompositeOrNull()
541 MachineIRBuilder &MIRBuilder, in getOrCreateConsIntVector() argument
551 return getOrCreateIntCompositeOrNull(Val, MIRBuilder, SpvType, EmitIR, in getOrCreateConsIntVector()
557 SPIRVGlobalRegistry::getOrCreateConstNullPtr(MachineIRBuilder &MIRBuilder, in getOrCreateConstNullPtr() argument
570 MIRBuilder.buildInstr(SPIRV::OpConstantNull) in getOrCreateConstNullPtr()
580 MachineIRBuilder &MIRBuilder, SPIRVType *SpvType) { in buildConstantSampler() argument
583 SampTy = getOrCreateSPIRVType(getTypeForSPIRVType(SpvType), MIRBuilder); in buildConstantSampler()
585 MIRBuilder)) == nullptr) in buildConstantSampler()
591 : MIRBuilder.getMRI()->createVirtualRegister(&SPIRV::IDRegClass); in buildConstantSampler()
592 auto Res = MIRBuilder.buildInstr(SPIRV::OpConstantSampler) in buildConstantSampler()
606 SPIRV::LinkageType::LinkageType LinkageType, MachineIRBuilder &MIRBuilder, in buildGlobalVariable() argument
614 Module *M = MIRBuilder.getMF().getFunction().getParent(); in buildGlobalVariable()
625 Register Reg = DT.find(GVar, &MIRBuilder.getMF()); in buildGlobalVariable()
628 MIRBuilder.buildCopy(ResVReg, Reg); in buildGlobalVariable()
632 auto MIB = MIRBuilder.buildInstr(SPIRV::OpVariable) in buildGlobalVariable()
650 DT.add(GVar, &MIRBuilder.getMF(), Reg); in buildGlobalVariable()
653 auto MRI = MIRBuilder.getMRI(); in buildGlobalVariable()
659 assignSPIRVTypeToVReg(BaseType, Reg, MIRBuilder.getMF()); in buildGlobalVariable()
666 assignSPIRVTypeToVReg(BaseType, Reg, MIRBuilder.getMF()); in buildGlobalVariable()
671 buildOpName(Reg, GVar->getName(), MIRBuilder); in buildGlobalVariable()
676 cast<SPIRVSubtarget>(MIRBuilder.getMF().getSubtarget()); in buildGlobalVariable()
678 buildOpDecorate(Reg, MIRBuilder, SPIRV::Decoration::Constant, {}); in buildGlobalVariable()
682 buildOpDecorate(Reg, MIRBuilder, SPIRV::Decoration::Alignment, {Alignment}); in buildGlobalVariable()
686 buildOpDecorate(Reg, MIRBuilder, SPIRV::Decoration::LinkageAttributes, in buildGlobalVariable()
691 buildOpDecorate(Reg, MIRBuilder, SPIRV::Decoration::BuiltIn, in buildGlobalVariable()
699 buildOpSpirvDecorations(Reg, MIRBuilder, GVarMD); in buildGlobalVariable()
706 MachineIRBuilder &MIRBuilder, in getOpTypeArray() argument
711 buildConstantInt(NumElems, MIRBuilder, nullptr, EmitIR); in getOpTypeArray()
712 auto MIB = MIRBuilder.buildInstr(SPIRV::OpTypeArray) in getOpTypeArray()
713 .addDef(createTypeVReg(MIRBuilder)) in getOpTypeArray()
720 MachineIRBuilder &MIRBuilder) { in getOpTypeOpaque() argument
723 Register ResVReg = createTypeVReg(MIRBuilder); in getOpTypeOpaque()
724 auto MIB = MIRBuilder.buildInstr(SPIRV::OpTypeOpaque).addDef(ResVReg); in getOpTypeOpaque()
726 buildOpName(ResVReg, Name, MIRBuilder); in getOpTypeOpaque()
731 MachineIRBuilder &MIRBuilder, in getOpTypeStruct() argument
735 SPIRVType *ElemTy = findSPIRVType(toTypedPointer(Elem), MIRBuilder); in getOpTypeStruct()
740 Register ResVReg = createTypeVReg(MIRBuilder); in getOpTypeStruct()
741 auto MIB = MIRBuilder.buildInstr(SPIRV::OpTypeStruct).addDef(ResVReg); in getOpTypeStruct()
745 buildOpName(ResVReg, Ty->getName(), MIRBuilder); in getOpTypeStruct()
747 buildOpDecorate(ResVReg, MIRBuilder, SPIRV::Decoration::CPacked, {}); in getOpTypeStruct()
752 const Type *Ty, MachineIRBuilder &MIRBuilder, in getOrCreateSpecialType() argument
755 return SPIRV::lowerBuiltinType(Ty, AccQual, MIRBuilder, this); in getOrCreateSpecialType()
760 MachineIRBuilder &MIRBuilder, Register Reg) { in getOpTypePointer() argument
762 Reg = createTypeVReg(MIRBuilder); in getOpTypePointer()
763 return MIRBuilder.buildInstr(SPIRV::OpTypePointer) in getOpTypePointer()
770 SPIRV::StorageClass::StorageClass SC, MachineIRBuilder &MIRBuilder) { in getOpTypeForwardPointer() argument
771 return MIRBuilder.buildInstr(SPIRV::OpTypeForwardPointer) in getOpTypeForwardPointer()
772 .addUse(createTypeVReg(MIRBuilder)) in getOpTypeForwardPointer()
778 MachineIRBuilder &MIRBuilder) { in getOpTypeFunction() argument
779 auto MIB = MIRBuilder.buildInstr(SPIRV::OpTypeFunction) in getOpTypeFunction()
780 .addDef(createTypeVReg(MIRBuilder)) in getOpTypeFunction()
790 MachineIRBuilder &MIRBuilder) { in getOrCreateOpTypeFunctionWithArgs() argument
791 Register Reg = DT.find(Ty, &MIRBuilder.getMF()); in getOrCreateOpTypeFunctionWithArgs()
794 SPIRVType *SpirvType = getOpTypeFunction(RetType, ArgTypes, MIRBuilder); in getOrCreateOpTypeFunctionWithArgs()
800 const Type *Ty, MachineIRBuilder &MIRBuilder, in findSPIRVType() argument
803 Register Reg = DT.find(Ty, &MIRBuilder.getMF()); in findSPIRVType()
808 return restOfCreateSPIRVType(Ty, MIRBuilder, AccQual, EmitIR); in findSPIRVType()
840 const Type *Ty, MachineIRBuilder &MIRBuilder, in createSPIRVType() argument
843 return getOrCreateSpecialType(Ty, MIRBuilder, AccQual); in createSPIRVType()
847 auto tt = t->second.find(&MIRBuilder.getMF()); in createSPIRVType()
854 return Width == 1 ? getOpTypeBool(MIRBuilder) in createSPIRVType()
855 : getOpTypeInt(Width, MIRBuilder, false); in createSPIRVType()
858 return getOpTypeFloat(Ty->getPrimitiveSizeInBits(), MIRBuilder); in createSPIRVType()
860 return getOpTypeVoid(MIRBuilder); in createSPIRVType()
863 findSPIRVType(cast<FixedVectorType>(Ty)->getElementType(), MIRBuilder); in createSPIRVType()
865 MIRBuilder); in createSPIRVType()
868 SPIRVType *El = findSPIRVType(Ty->getArrayElementType(), MIRBuilder); in createSPIRVType()
869 return getOpTypeArray(Ty->getArrayNumElements(), El, MIRBuilder, EmitIR); in createSPIRVType()
873 return getOpTypeOpaque(SType, MIRBuilder); in createSPIRVType()
874 return getOpTypeStruct(SType, MIRBuilder, EmitIR); in createSPIRVType()
877 SPIRVType *RetTy = findSPIRVType(FType->getReturnType(), MIRBuilder); in createSPIRVType()
880 ParamTypes.push_back(findSPIRVType(t, MIRBuilder)); in createSPIRVType()
882 return getOpTypeFunction(RetTy, ParamTypes, MIRBuilder); in createSPIRVType()
894 SpvElementType = getOrCreateSPIRVType(PType->getElementType(), MIRBuilder, in createSPIRVType()
897 SpvElementType = getOrCreateSPIRVIntegerType(8, MIRBuilder); in createSPIRVType()
901 static_cast<const SPIRVSubtarget *>(&MIRBuilder.getMF().getSubtarget()); in createSPIRVType()
907 ForwardPointerTypes[Ty] = getOpTypeForwardPointer(SC, MIRBuilder); in createSPIRVType()
914 return getOpTypePointer(SC, SpvElementType, MIRBuilder, Reg); in createSPIRVType()
917 return getOrCreateSPIRVPointerType(SpvElementType, MIRBuilder, SC); in createSPIRVType()
921 const Type *Ty, MachineIRBuilder &MIRBuilder, in restOfCreateSPIRVType() argument
926 SPIRVType *SpirvType = createSPIRVType(Ty, MIRBuilder, AccessQual, EmitIR); in restOfCreateSPIRVType()
928 VRegToTypeMap[&MIRBuilder.getMF()][getSPIRVTypeID(SpirvType)] = SpirvType; in restOfCreateSPIRVType()
930 Register Reg = DT.find(Ty, &MIRBuilder.getMF()); in restOfCreateSPIRVType()
936 DT.add(Ty, &MIRBuilder.getMF(), getSPIRVTypeID(SpirvType)); in restOfCreateSPIRVType()
939 getPointerAddressSpace(Ty), &MIRBuilder.getMF(), in restOfCreateSPIRVType()
942 DT.add(Type::getInt8Ty(MIRBuilder.getMF().getFunction().getContext()), in restOfCreateSPIRVType()
943 getPointerAddressSpace(Ty), &MIRBuilder.getMF(), in restOfCreateSPIRVType()
963 const Type *Ty, MachineIRBuilder &MIRBuilder, in getOrCreateSPIRVType() argument
968 Reg = DT.find(Ty, &MIRBuilder.getMF()); in getOrCreateSPIRVType()
971 getPointerAddressSpace(Ty), &MIRBuilder.getMF()); in getOrCreateSPIRVType()
974 DT.find(Type::getInt8Ty(MIRBuilder.getMF().getFunction().getContext()), in getOrCreateSPIRVType()
975 getPointerAddressSpace(Ty), &MIRBuilder.getMF()); in getOrCreateSPIRVType()
981 SPIRVType *STy = restOfCreateSPIRVType(Ty, MIRBuilder, AccessQual, EmitIR); in getOrCreateSPIRVType()
986 if ((Reg = DT.find(Ty2, &MIRBuilder.getMF())).isValid()) in getOrCreateSPIRVType()
989 STy2 = restOfCreateSPIRVType(Ty2, MIRBuilder, AccessQual, EmitIR); in getOrCreateSPIRVType()
1113 MachineIRBuilder &MIRBuilder, SPIRVType *SampledType, SPIRV::Dim::Dim Dim, in getOrCreateOpTypeImage() argument
1120 if (auto *Res = checkSpecialInstr(TD, MIRBuilder)) in getOrCreateOpTypeImage()
1122 Register ResVReg = createTypeVReg(MIRBuilder); in getOrCreateOpTypeImage()
1123 DT.add(TD, &MIRBuilder.getMF(), ResVReg); in getOrCreateOpTypeImage()
1124 return MIRBuilder.buildInstr(SPIRV::OpTypeImage) in getOrCreateOpTypeImage()
1137 SPIRVGlobalRegistry::getOrCreateOpTypeSampler(MachineIRBuilder &MIRBuilder) { in getOrCreateOpTypeSampler() argument
1139 if (auto *Res = checkSpecialInstr(TD, MIRBuilder)) in getOrCreateOpTypeSampler()
1141 Register ResVReg = createTypeVReg(MIRBuilder); in getOrCreateOpTypeSampler()
1142 DT.add(TD, &MIRBuilder.getMF(), ResVReg); in getOrCreateOpTypeSampler()
1143 return MIRBuilder.buildInstr(SPIRV::OpTypeSampler).addDef(ResVReg); in getOrCreateOpTypeSampler()
1147 MachineIRBuilder &MIRBuilder, in getOrCreateOpTypePipe() argument
1150 if (auto *Res = checkSpecialInstr(TD, MIRBuilder)) in getOrCreateOpTypePipe()
1152 Register ResVReg = createTypeVReg(MIRBuilder); in getOrCreateOpTypePipe()
1153 DT.add(TD, &MIRBuilder.getMF(), ResVReg); in getOrCreateOpTypePipe()
1154 return MIRBuilder.buildInstr(SPIRV::OpTypePipe) in getOrCreateOpTypePipe()
1160 MachineIRBuilder &MIRBuilder) { in getOrCreateOpTypeDeviceEvent() argument
1162 if (auto *Res = checkSpecialInstr(TD, MIRBuilder)) in getOrCreateOpTypeDeviceEvent()
1164 Register ResVReg = createTypeVReg(MIRBuilder); in getOrCreateOpTypeDeviceEvent()
1165 DT.add(TD, &MIRBuilder.getMF(), ResVReg); in getOrCreateOpTypeDeviceEvent()
1166 return MIRBuilder.buildInstr(SPIRV::OpTypeDeviceEvent).addDef(ResVReg); in getOrCreateOpTypeDeviceEvent()
1170 SPIRVType *ImageType, MachineIRBuilder &MIRBuilder) { in getOrCreateOpTypeSampledImage() argument
1172 SPIRVToLLVMType.lookup(MIRBuilder.getMF().getRegInfo().getVRegDef( in getOrCreateOpTypeSampledImage()
1175 if (auto *Res = checkSpecialInstr(TD, MIRBuilder)) in getOrCreateOpTypeSampledImage()
1177 Register ResVReg = createTypeVReg(MIRBuilder); in getOrCreateOpTypeSampledImage()
1178 DT.add(TD, &MIRBuilder.getMF(), ResVReg); in getOrCreateOpTypeSampledImage()
1179 return MIRBuilder.buildInstr(SPIRV::OpTypeSampledImage) in getOrCreateOpTypeSampledImage()
1185 MachineIRBuilder &MIRBuilder, const TargetExtType *ExtensionType, in getOrCreateOpTypeCoopMatr() argument
1188 Register ResVReg = DT.find(ExtensionType, &MIRBuilder.getMF()); in getOrCreateOpTypeCoopMatr()
1190 return MIRBuilder.getMF().getRegInfo().getUniqueVRegDef(ResVReg); in getOrCreateOpTypeCoopMatr()
1191 ResVReg = createTypeVReg(MIRBuilder); in getOrCreateOpTypeCoopMatr()
1193 MIRBuilder.buildInstr(SPIRV::OpTypeCooperativeMatrixKHR) in getOrCreateOpTypeCoopMatr()
1196 .addUse(buildConstantInt(Scope, MIRBuilder, nullptr, true)) in getOrCreateOpTypeCoopMatr()
1197 .addUse(buildConstantInt(Rows, MIRBuilder, nullptr, true)) in getOrCreateOpTypeCoopMatr()
1198 .addUse(buildConstantInt(Columns, MIRBuilder, nullptr, true)) in getOrCreateOpTypeCoopMatr()
1199 .addUse(buildConstantInt(Use, MIRBuilder, nullptr, true)); in getOrCreateOpTypeCoopMatr()
1200 DT.add(ExtensionType, &MIRBuilder.getMF(), ResVReg); in getOrCreateOpTypeCoopMatr()
1205 const Type *Ty, MachineIRBuilder &MIRBuilder, unsigned Opcode) { in getOrCreateOpTypeByOpcode() argument
1206 Register ResVReg = DT.find(Ty, &MIRBuilder.getMF()); in getOrCreateOpTypeByOpcode()
1208 return MIRBuilder.getMF().getRegInfo().getUniqueVRegDef(ResVReg); in getOrCreateOpTypeByOpcode()
1209 ResVReg = createTypeVReg(MIRBuilder); in getOrCreateOpTypeByOpcode()
1210 SPIRVType *SpirvTy = MIRBuilder.buildInstr(Opcode).addDef(ResVReg); in getOrCreateOpTypeByOpcode()
1211 DT.add(Ty, &MIRBuilder.getMF(), ResVReg); in getOrCreateOpTypeByOpcode()
1217 MachineIRBuilder &MIRBuilder) { in checkSpecialInstr() argument
1218 Register Reg = DT.find(TD, &MIRBuilder.getMF()); in checkSpecialInstr()
1220 return MIRBuilder.getMF().getRegInfo().getUniqueVRegDef(Reg); in checkSpecialInstr()
1226 StringRef TypeStr, MachineIRBuilder &MIRBuilder, in getOrCreateSPIRVTypeByName() argument
1230 auto &Ctx = MIRBuilder.getMF().getFunction().getContext(); in getOrCreateSPIRVTypeByName()
1235 TypeStr.str(), MIRBuilder.getContext()), in getOrCreateSPIRVTypeByName()
1236 MIRBuilder, AQ); in getOrCreateSPIRVTypeByName()
1247 auto SpirvTy = getOrCreateSPIRVType(Ty, MIRBuilder, AQ); in getOrCreateSPIRVTypeByName()
1251 SpirvTy = getOrCreateSPIRVPointerType(SpirvTy, MIRBuilder, SC); in getOrCreateSPIRVTypeByName()
1263 SpirvTy = getOrCreateSPIRVVectorType(SpirvTy, VecElts, MIRBuilder); in getOrCreateSPIRVTypeByName()
1266 SpirvTy = getOrCreateSPIRVPointerType(SpirvTy, MIRBuilder, SC); in getOrCreateSPIRVTypeByName()
1273 MachineIRBuilder &MIRBuilder) { in getOrCreateSPIRVIntegerType() argument
1275 IntegerType::get(MIRBuilder.getMF().getFunction().getContext(), BitWidth), in getOrCreateSPIRVIntegerType()
1276 MIRBuilder); in getOrCreateSPIRVIntegerType()
1336 SPIRVGlobalRegistry::getOrCreateSPIRVBoolType(MachineIRBuilder &MIRBuilder) { in getOrCreateSPIRVBoolType() argument
1338 IntegerType::get(MIRBuilder.getMF().getFunction().getContext(), 1), in getOrCreateSPIRVBoolType()
1339 MIRBuilder); in getOrCreateSPIRVBoolType()
1357 SPIRVType *BaseType, unsigned NumElements, MachineIRBuilder &MIRBuilder) { in getOrCreateSPIRVVectorType() argument
1361 MIRBuilder); in getOrCreateSPIRVVectorType()
1401 SPIRVType *BaseType, MachineIRBuilder &MIRBuilder, in getOrCreateSPIRVPointerType() argument
1412 auto MIB = BuildMI(MIRBuilder.getMBB(), MIRBuilder.getInsertPt(), in getOrCreateSPIRVPointerType()
1413 MIRBuilder.getDebugLoc(), in getOrCreateSPIRVPointerType()
1414 MIRBuilder.getTII().get(SPIRV::OpTypePointer)) in getOrCreateSPIRVPointerType()
1425 MachineIRBuilder MIRBuilder(I); in getOrCreateSPIRVPointerType() local
1426 return getOrCreateSPIRVPointerType(BaseType, MIRBuilder, SC); in getOrCreateSPIRVPointerType()