Lines Matching defs:MIRBuilder
35 bool SPIRVCallLowering::lowerReturn(MachineIRBuilder &MIRBuilder,
40 if (MIRBuilder.getMF()
48 produceIndirectPtrTypes(MIRBuilder);
57 const auto &STI = MIRBuilder.getMF().getSubtarget();
58 return MIRBuilder.buildInstr(SPIRV::OpReturnValue)
60 .constrainAllUses(MIRBuilder.getTII(), *STI.getRegisterInfo(),
63 MIRBuilder.buildInstr(SPIRV::OpReturn);
201 MachineIRBuilder &MIRBuilder,
212 return GR->getOrCreateSPIRVType(OriginalArgType, MIRBuilder, ArgAccessQual);
218 cast<TypedPointerType>(ArgType)->getElementType(), MIRBuilder);
220 ElementType, MIRBuilder,
234 GR->getOrCreateSPIRVType(getPointeeTypeByAttr(Arg), MIRBuilder);
236 ElementType, MIRBuilder,
248 return GR->getOrCreateSPIRVType(BuiltinType, MIRBuilder, ArgAccessQual);
258 SPIRVType *ElementType = GR->getOrCreateSPIRVType(ElementTy, MIRBuilder);
260 ElementType, MIRBuilder,
267 return GR->getOrCreateSPIRVType(toTypedPointer(OriginalArgType), MIRBuilder,
289 bool SPIRVCallLowering::lowerFormalArguments(MachineIRBuilder &MIRBuilder,
298 GR->setCurrentFunc(MIRBuilder.getMF());
302 static_cast<const SPIRVSubtarget *>(&MIRBuilder.getMF().getSubtarget());
313 auto *SpirvTy = getArgSPIRVType(F, i, GR, MIRBuilder, *ST);
314 GR->assignSPIRVTypeToVReg(SpirvTy, VRegs[i][0], MIRBuilder.getMF());
318 buildOpName(VRegs[i][0], Arg.getName(), MIRBuilder);
322 buildOpDecorate(VRegs[i][0], MIRBuilder,
328 buildOpDecorate(VRegs[i][0], MIRBuilder, SPIRV::Decoration::Alignment,
334 buildOpDecorate(VRegs[i][0], MIRBuilder,
340 buildOpDecorate(VRegs[i][0], MIRBuilder,
346 buildOpDecorate(VRegs[i][0], MIRBuilder,
352 buildOpDecorate(VRegs[i][0], MIRBuilder,
358 buildOpDecorate(VRegs[i][0], MIRBuilder,
366 buildOpDecorate(VRegs[i][0], MIRBuilder, Decoration, {});
386 buildOpDecorate(VRegs[i][0], MIRBuilder, Dec, DecVec);
393 auto MRI = MIRBuilder.getMRI();
397 GR->add(&F, &MIRBuilder.getMF(), FuncVReg);
408 SPIRVType *RetTy = GR->getOrCreateSPIRVType(FRetTy, MIRBuilder);
411 FTy, RetTy, ArgTypeVRegs, MIRBuilder);
415 MachineInstrBuilder MB = MIRBuilder.buildInstr(SPIRV::OpFunction)
421 GR->addGlobalObject(&F, &MIRBuilder.getMF(), FuncVReg);
430 MIRBuilder.buildInstr(SPIRV::OpFunctionParameter)
434 GR->add(&Arg, &MIRBuilder.getMF(), ArgReg);
435 GR->addGlobalObject(&Arg, &MIRBuilder.getMF(), ArgReg);
440 buildOpName(FuncVReg, F.getName(), MIRBuilder);
444 auto MIB = MIRBuilder.buildInstr(SPIRV::OpEntryPoint)
458 buildOpDecorate(FuncVReg, MIRBuilder, SPIRV::Decoration::LinkageAttributes,
470 buildOpDecorate(FuncVReg, MIRBuilder,
485 MachineIRBuilder &MIRBuilder) const {
487 MachineFunction &MF = MIRBuilder.getMF();
489 SPIRVType *SpirvRetTy = GR->getOrCreateSPIRVType(IC.RetTy, MIRBuilder);
492 SPIRVType *SPIRVTy = GR->getOrCreateSPIRVType(IC.ArgTys[i], MIRBuilder);
501 FTy, SpirvRetTy, SpirvArgTypes, MIRBuilder);
504 SpirvFuncTy, MIRBuilder, SPIRV::StorageClass::Function);
510 bool SPIRVCallLowering::lowerCall(MachineIRBuilder &MIRBuilder,
516 MachineFunction &MF = MIRBuilder.getMF();
541 MachineRegisterInfo *MRI = MIRBuilder.getMRI();
560 setRegClassType(ResVReg, RetTy, GR, MIRBuilder);
563 ResVReg = createVirtualRegister(OrigRetTy, GR, MIRBuilder);
587 SpvType = GR->getOrCreateSPIRVType(ArgTy, MIRBuilder);
606 MIRBuilder, ResVReg, OrigRetTy, ArgVRegs, GR))
620 if (MIRBuilder.getDataLayout().getTypeStoreSize(Arg.getType()).isZero())
633 if (MIRBuilder.getMF()
638 MIRBuilder.buildTrap();
671 ResVReg = MIRBuilder.getMRI()->createVirtualRegister(&SPIRV::iIDRegClass);
672 SPIRVType *RetType = GR->assignTypeToVReg(OrigRetTy, ResVReg, MIRBuilder);
675 auto MIB = MIRBuilder.buildInstr(CallOp)
686 return MIB.constrainAllUses(MIRBuilder.getTII(), *ST->getRegisterInfo(),