Lines Matching defs:GR

11 // Also it processes constants and registers them in GR to avoid duplication.
42 addConstantsToTrack(MachineFunction &MF, SPIRVGlobalRegistry *GR,
60 Register Reg = GR->find(GV, &MF);
62 GR->add(GV, &MF, SrcReg);
66 Register Reg = GR->find(Const, &MF);
76 Register ElemReg = GR->find(ElemConst, &MF);
78 GR->add(ElemConst, &MF, BuildVec->getOperand(1 + i).getReg());
83 GR->add(Const, &MF, SrcReg);
94 GR->getOrCreateSPIRVType(Const->getType(), MIB);
97 GR->getSPIRVTypeID(ExtType), false));
168 static void insertBitcasts(MachineFunction &MF, SPIRVGlobalRegistry *GR,
189 SPIRVType *BaseTy = GR->getOrCreateSPIRVType(ElemTy, MIB);
190 SPIRVType *AssignedPtrType = GR->getOrCreateSPIRVPointerType(
196 if (GR->getSPIRVTypeForVReg(Source) == AssignedPtrType) {
202 GR->assignSPIRVTypeToVReg(AssignedPtrType, Def, MF);
225 static SPIRVType *propagateSPIRVType(MachineInstr *MI, SPIRVGlobalRegistry *GR,
232 SpirvTy = GR->getSPIRVTypeForVReg(Reg);
238 SpirvTy = GR->getOrCreateSPIRVType(Ty, MIB);
244 Type *ElementTy = toTypedPointer(GR->getDeducedGlobalValueType(Global));
247 SpirvTy = GR->getOrCreateSPIRVType(Ty, MIB);
256 if (SPIRVType *Def = propagateSPIRVType(DefInstr, GR, MRI, MIB)) {
257 unsigned CurrentBW = GR->getScalarOrVectorBitWidth(Def);
260 unsigned NumElements = GR->getScalarOrVectorComponentCount(Def);
261 SpirvTy = GR->getOrCreateSPIRVIntegerType(ExpectedBW, MIB);
264 GR->getOrCreateSPIRVVectorType(SpirvTy, NumElements, MIB);
271 SpirvTy = GR->getOrCreateSPIRVIntegerType(
281 SpirvTy = propagateSPIRVType(Def, GR, MRI, MIB);
288 GR->assignSPIRVTypeToVReg(SpirvTy, Reg, MIB.getMF());
313 const SPIRVGlobalRegistry &GR) {
315 SpvType = GR.getSPIRVTypeForVReg(SrcReg);
322 GR.getSPIRVTypeForVReg(SpvType->getOperand(1).getReg())->getOpcode() ==
328 unsigned PtrSz = GR.getPointerSize();
372 SPIRVGlobalRegistry *GR, MachineIRBuilder &MIB,
379 SpirvTy = SpirvTy ? SpirvTy : GR->getOrCreateSPIRVType(Ty, MIB);
387 GR->assignSPIRVTypeToVReg(SpirvTy, Reg, MIB.getMF());
390 GR->assignSPIRVTypeToVReg(SpirvTy, NewReg, MIB.getMF());
397 .addUse(GR->getSPIRVTypeID(SpirvTy))
404 MachineRegisterInfo &MRI, SPIRVGlobalRegistry *GR) {
409 createNewIdReg(nullptr, MI.getOperand(0).getReg(), MRI, *GR).first;
418 auto IdOpInfo = createNewIdReg(nullptr, Op.getReg(), MRI, *GR);
426 generateAssignInstrs(MachineFunction &MF, SPIRVGlobalRegistry *GR,
456 SPIRVType *BaseTy = GR->getOrCreateSPIRVType(ElementTy, MIB);
457 SPIRVType *AssignedPtrType = GR->getOrCreateSPIRVPointerType(
465 insertAssignInstr(Reg, nullptr, AssignedPtrType, GR, MIB,
476 insertAssignInstr(Reg, Ty, nullptr, GR, MIB, MF.getRegInfo());
501 Register PrimaryReg = GR->find(OpCI, &MF);
503 GR->add(OpCI, &MF, Reg);
533 insertAssignInstr(Reg, Ty, nullptr, GR, MIB, MRI);
535 propagateSPIRVType(&MI, GR, MRI, MIB);
563 propagateSPIRVType(&MI, GR, MRI, MIB);
574 SPIRVGlobalRegistry *GR,
580 processInstr(MI, MIB, MRI, GR);
607 MRI.setType(DstReg, IsDstPtr ? LLT::pointer(0, GR->getPointerSize())
614 insertInlineAsmProcess(MachineFunction &MF, SPIRVGlobalRegistry *GR,
631 GR->add(AsmTargetMIB.getInstr(), &MF, AsmTargetReg);
639 ArgTypes.push_back(GR->getOrCreateSPIRVType(ArgTy, MIRBuilder));
641 GR->getOrCreateSPIRVType(FTy->getReturnType(), MIRBuilder);
642 SPIRVType *FuncType = GR->getOrCreateOpTypeFunctionWithArgs(
650 .addUse(GR->getSPIRVTypeID(RetType))
651 .addUse(GR->getSPIRVTypeID(FuncType))
660 GR->add(AsmMIB.getInstr(), &MF, AsmReg);
691 SPIRVType *VoidType = GR->getOrCreateSPIRVType(
693 GR->assignSPIRVTypeToVReg(VoidType, DefReg, MF);
697 .addUse(GR->getSPIRVTypeID(RetType))
713 static void insertInlineAsm(MachineFunction &MF, SPIRVGlobalRegistry *GR,
732 insertInlineAsmProcess(MF, GR, ST, MIRBuilder, ToProcess);
753 static void processSwitches(MachineFunction &MF, SPIRVGlobalRegistry *GR,
876 SPIRVGlobalRegistry *GR = ST.getSPIRVGlobalRegistry();
877 GR->setCurrentFunc(MF);
883 addConstantsToTrack(MF, GR, ST, TargetExtConstTypes, TrackedConstRegs);
885 insertBitcasts(MF, GR, MIB);
886 generateAssignInstrs(MF, GR, MIB, TargetExtConstTypes);
887 processSwitches(MF, GR, MIB);
888 processInstrsWithTypeFolding(MF, GR, MIB);
891 insertInlineAsm(MF, GR, ST, MIB);