Lines Matching defs:GR

11 // Also it processes constants and registers them in GR to avoid duplication.
50 addConstantsToTrack(MachineFunction &MF, SPIRVGlobalRegistry *GR,
68 Register Reg = GR->find(GV, &MF);
70 GR->add(GV, &MF, SrcReg);
71 GR->addGlobalObject(GV, &MF, SrcReg);
75 Register Reg = GR->find(Const, &MF);
85 Register ElemReg = GR->find(ElemConst, &MF);
87 GR->add(ElemConst, &MF, BuildVec->getOperand(1 + i).getReg());
92 GR->add(Const, &MF, SrcReg);
103 GR->getOrCreateSPIRVType(Const->getType(), MIB);
106 GR->getSPIRVTypeID(ExtType), false));
177 static void buildOpBitcast(SPIRVGlobalRegistry *GR, MachineIRBuilder &MIB,
179 SPIRVType *ResType = GR->getSPIRVTypeForVReg(ResVReg);
180 SPIRVType *OpType = GR->getSPIRVTypeForVReg(OpReg);
182 if (!GR->isBitcastCompatible(ResType, OpType))
186 MRI->setRegClass(ResVReg, GR->getRegClass(ResType));
192 .addUse(GR->getSPIRVTypeID(ResType))
214 static void selectOpBitcasts(MachineFunction &MF, SPIRVGlobalRegistry *GR,
222 buildOpBitcast(GR, MIB, MI.getOperand(0).getReg(),
231 static void insertBitcasts(MachineFunction &MF, SPIRVGlobalRegistry *GR,
252 SPIRVType *BaseTy = GR->getOrCreateSPIRVType(ElemTy, MIB);
253 SPIRVType *AssignedPtrType = GR->getOrCreateSPIRVPointerType(
260 if (GR->getSPIRVTypeForVReg(Source) == AssignedPtrType) {
266 GR->assignSPIRVTypeToVReg(AssignedPtrType, Def, MF);
289 static SPIRVType *propagateSPIRVType(MachineInstr *MI, SPIRVGlobalRegistry *GR,
296 SpvType = GR->getSPIRVTypeForVReg(Reg);
303 SpvType = GR->getOrCreateSPIRVType(Ty, MIB);
309 Type *ElementTy = toTypedPointer(GR->getDeducedGlobalValueType(Global));
312 SpvType = GR->getOrCreateSPIRVType(Ty, MIB);
321 if (SPIRVType *Def = propagateSPIRVType(DefInstr, GR, MRI, MIB)) {
322 unsigned CurrentBW = GR->getScalarOrVectorBitWidth(Def);
325 unsigned NumElements = GR->getScalarOrVectorComponentCount(Def);
326 SpvType = GR->getOrCreateSPIRVIntegerType(ExpectedBW, MIB);
329 GR->getOrCreateSPIRVVectorType(SpvType, NumElements, MIB);
336 SpvType = GR->getOrCreateSPIRVIntegerType(
346 SpvType = propagateSPIRVType(Def, GR, MRI, MIB);
357 storageClassToAddressSpace(GR->getPointerStorageClass(SpvType)) !=
361 SpvType = GR->getOrCreateSPIRVPointerType(
362 GR->getPointeeType(SpvType), *MI, *ST.getInstrInfo(),
365 GR->assignSPIRVTypeToVReg(SpvType, Reg, MIB.getMF());
368 MRI.setRegClass(Reg, SpvType ? GR->getRegClass(SpvType)
392 const SPIRVGlobalRegistry &GR) {
394 SpvType = GR.getSPIRVTypeForVReg(SrcReg);
395 const TargetRegisterClass *RC = GR.getRegClass(SpvType);
396 Register Reg = MRI.createGenericVirtualRegister(GR.getRegType(SpvType));
430 SPIRVGlobalRegistry *GR, MachineIRBuilder &MIB,
435 SpvType = SpvType ? SpvType : GR->getOrCreateSPIRVType(Ty, MIB);
440 auto RegClass = GR->getRegClass(SpvType);
444 GR->assignSPIRVTypeToVReg(SpvType, Reg, MIB.getMF());
447 GR->assignSPIRVTypeToVReg(SpvType, NewReg, MIB.getMF());
454 .addUse(GR->getSPIRVTypeID(SpvType))
467 MachineRegisterInfo &MRI, SPIRVGlobalRegistry *GR) {
473 SPIRVType *SpvType = GR->getSPIRVTypeForVReg(OpReg);
474 auto IdOpInfo = createNewIdReg(SpvType, OpReg, MRI, *GR);
476 const TargetRegisterClass *RC = GR->getRegClass(SpvType);
485 generateAssignInstrs(MachineFunction &MF, SPIRVGlobalRegistry *GR,
522 SPIRVType *BaseTy = GR->getOrCreateSPIRVType(ElementTy, MIB);
523 SPIRVType *AssignedPtrType = GR->getOrCreateSPIRVPointerType(
531 insertAssignInstr(Reg, nullptr, AssignedPtrType, GR, MIB,
542 insertAssignInstr(Reg, Ty, nullptr, GR, MIB, MF.getRegInfo());
558 GR->addValueAttrs(Def, std::make_pair(ValueTy, ValueName.str()));
596 Register PrimaryReg = GR->find(OpCI, &MF);
598 GR->add(OpCI, &MF, Reg);
636 insertAssignInstr(Reg, Ty, nullptr, GR, MIB, MRI);
638 propagateSPIRVType(&MI, GR, MRI, MIB);
666 propagateSPIRVType(&MI, GR, MRI, MIB);
677 SPIRVGlobalRegistry *GR,
683 processInstr(MI, MIB, MRI, GR);
716 insertInlineAsmProcess(MachineFunction &MF, SPIRVGlobalRegistry *GR,
733 GR->add(AsmTargetMIB.getInstr(), &MF, AsmTargetReg);
741 ArgTypes.push_back(GR->getOrCreateSPIRVType(ArgTy, MIRBuilder));
743 GR->getOrCreateSPIRVType(FTy->getReturnType(), MIRBuilder);
744 SPIRVType *FuncType = GR->getOrCreateOpTypeFunctionWithArgs(
752 .addUse(GR->getSPIRVTypeID(RetType))
753 .addUse(GR->getSPIRVTypeID(FuncType))
762 GR->add(AsmMIB.getInstr(), &MF, AsmReg);
775 SPIRVType *VoidType = GR->getOrCreateSPIRVType(
777 GR->assignSPIRVTypeToVReg(VoidType, DefReg, MF);
782 .addUse(GR->getSPIRVTypeID(RetType))
791 static void insertInlineAsm(MachineFunction &MF, SPIRVGlobalRegistry *GR,
810 insertInlineAsmProcess(MF, GR, ST, MIRBuilder, ToProcess);
833 SPIRVGlobalRegistry *GR,
881 static void processBlockAddr(MachineFunction &MF, SPIRVGlobalRegistry *GR,
1019 SPIRVGlobalRegistry *GR = ST.getSPIRVGlobalRegistry();
1020 GR->setCurrentFunc(MF);
1026 addConstantsToTrack(MF, GR, ST, TargetExtConstTypes, TrackedConstRegs);
1028 insertBitcasts(MF, GR, MIB);
1029 generateAssignInstrs(MF, GR, MIB, TargetExtConstTypes);
1031 processSwitchesConstants(MF, GR, MIB);
1032 processBlockAddr(MF, GR, MIB);
1035 processInstrsWithTypeFolding(MF, GR, MIB);
1038 insertInlineAsm(MF, GR, ST, MIB);
1039 selectOpBitcasts(MF, GR, MIB);