@@ -213,8 +213,7 @@ void SPIRVModuleAnalysis::setBaseInfo(const Module &M) {
213
213
if (ST->isOpenCLEnv ()) {
214
214
// TODO: check if it's required by default.
215
215
MAI.ExtInstSetMap [static_cast <unsigned >(
216
- SPIRV::InstructionSet::OpenCL_std)] =
217
- Register::index2VirtReg (MAI.getNextID ());
216
+ SPIRV::InstructionSet::OpenCL_std)] = MAI.getNextIDRegister ();
218
217
}
219
218
}
220
219
@@ -306,7 +305,8 @@ void SPIRVModuleAnalysis::visitFunPtrUse(
306
305
} while (OpDefMI && (OpDefMI->getOpcode () == SPIRV::OpFunction ||
307
306
OpDefMI->getOpcode () == SPIRV::OpFunctionParameter));
308
307
// associate the function pointer with the newly assigned global number
309
- Register GlobalFunDefReg = MAI.getRegisterAlias (FunDefMF, OpFunDef->getReg ());
308
+ MCRegister GlobalFunDefReg =
309
+ MAI.getRegisterAlias (FunDefMF, OpFunDef->getReg ());
310
310
assert (GlobalFunDefReg.isValid () &&
311
311
" Function definition must refer to a global register" );
312
312
MAI.setRegisterAlias (MF, OpReg, GlobalFunDefReg);
@@ -353,10 +353,10 @@ void SPIRVModuleAnalysis::visitDecl(
353
353
" No unique definition is found for the virtual register" );
354
354
}
355
355
356
- Register GReg;
356
+ MCRegister GReg;
357
357
bool IsFunDef = false ;
358
358
if (TII->isSpecConstantInstr (MI)) {
359
- GReg = Register::index2VirtReg ( MAI.getNextID () );
359
+ GReg = MAI.getNextIDRegister ( );
360
360
MAI.MS [SPIRV::MB_TypeConstVars].push_back (&MI);
361
361
} else if (Opcode == SPIRV::OpFunction ||
362
362
Opcode == SPIRV::OpFunctionParameter) {
@@ -366,7 +366,7 @@ void SPIRVModuleAnalysis::visitDecl(
366
366
const MachineInstr *NextInstr = MI.getNextNode ();
367
367
while (NextInstr &&
368
368
NextInstr->getOpcode () == SPIRV::OpTypeStructContinuedINTEL) {
369
- Register Tmp = handleTypeDeclOrConstant (*NextInstr, SignatureToGReg);
369
+ MCRegister Tmp = handleTypeDeclOrConstant (*NextInstr, SignatureToGReg);
370
370
MAI.setRegisterAlias (MF, NextInstr->getOperand (0 ).getReg (), Tmp);
371
371
MAI.setSkipEmission (NextInstr);
372
372
NextInstr = NextInstr->getNextNode ();
@@ -389,7 +389,7 @@ void SPIRVModuleAnalysis::visitDecl(
389
389
MAI.setSkipEmission (&MI);
390
390
}
391
391
392
- Register SPIRVModuleAnalysis::handleFunctionOrParameter (
392
+ MCRegister SPIRVModuleAnalysis::handleFunctionOrParameter (
393
393
const MachineFunction *MF, const MachineInstr &MI,
394
394
std::map<const Value *, unsigned > &GlobalToGReg, bool &IsFunDef) {
395
395
const Value *GObj = GR->getGlobalObject (MF, MI.getOperand (0 ).getReg ());
@@ -402,27 +402,27 @@ Register SPIRVModuleAnalysis::handleFunctionOrParameter(
402
402
auto It = GlobalToGReg.find (GObj);
403
403
if (It != GlobalToGReg.end ())
404
404
return It->second ;
405
- Register GReg = Register::index2VirtReg ( MAI.getNextID () );
405
+ MCRegister GReg = MAI.getNextIDRegister ( );
406
406
GlobalToGReg[GObj] = GReg;
407
407
if (!IsFunDef)
408
408
MAI.MS [SPIRV::MB_ExtFuncDecls].push_back (&MI);
409
409
return GReg;
410
410
}
411
411
412
- Register
412
+ MCRegister
413
413
SPIRVModuleAnalysis::handleTypeDeclOrConstant (const MachineInstr &MI,
414
414
InstrGRegsMap &SignatureToGReg) {
415
415
InstrSignature MISign = instrToSignature (MI, MAI, false );
416
416
auto It = SignatureToGReg.find (MISign);
417
417
if (It != SignatureToGReg.end ())
418
418
return It->second ;
419
- Register GReg = Register::index2VirtReg ( MAI.getNextID () );
419
+ MCRegister GReg = MAI.getNextIDRegister ( );
420
420
SignatureToGReg[MISign] = GReg;
421
421
MAI.MS [SPIRV::MB_TypeConstVars].push_back (&MI);
422
422
return GReg;
423
423
}
424
424
425
- Register SPIRVModuleAnalysis::handleVariable (
425
+ MCRegister SPIRVModuleAnalysis::handleVariable (
426
426
const MachineFunction *MF, const MachineInstr &MI,
427
427
std::map<const Value *, unsigned > &GlobalToGReg) {
428
428
MAI.GlobalVarList .push_back (&MI);
@@ -431,7 +431,7 @@ Register SPIRVModuleAnalysis::handleVariable(
431
431
auto It = GlobalToGReg.find (GObj);
432
432
if (It != GlobalToGReg.end ())
433
433
return It->second ;
434
- Register GReg = Register::index2VirtReg ( MAI.getNextID () );
434
+ MCRegister GReg = MAI.getNextIDRegister ( );
435
435
GlobalToGReg[GObj] = GReg;
436
436
MAI.MS [SPIRV::MB_TypeConstVars].push_back (&MI);
437
437
return GReg;
@@ -507,7 +507,7 @@ void SPIRVModuleAnalysis::collectFuncNames(MachineInstr &MI,
507
507
} else if (MI.getOpcode () == SPIRV::OpFunction) {
508
508
// Record all internal OpFunction declarations.
509
509
Register Reg = MI.defs ().begin ()->getReg ();
510
- Register GlobalReg = MAI.getRegisterAlias (MI.getMF (), Reg);
510
+ MCRegister GlobalReg = MAI.getRegisterAlias (MI.getMF (), Reg);
511
511
assert (GlobalReg.isValid ());
512
512
MAI.FuncMap [F] = GlobalReg;
513
513
}
@@ -599,14 +599,14 @@ void SPIRVModuleAnalysis::numberRegistersGlobally(const Module &M) {
599
599
Register Reg = Op.getReg ();
600
600
if (MAI.hasRegisterAlias (MF, Reg))
601
601
continue ;
602
- Register NewReg = Register::index2VirtReg ( MAI.getNextID () );
602
+ MCRegister NewReg = MAI.getNextIDRegister ( );
603
603
MAI.setRegisterAlias (MF, Reg, NewReg);
604
604
}
605
605
if (MI.getOpcode () != SPIRV::OpExtInst)
606
606
continue ;
607
607
auto Set = MI.getOperand (2 ).getImm ();
608
608
if (!MAI.ExtInstSetMap .contains (Set))
609
- MAI.ExtInstSetMap [Set] = Register::index2VirtReg ( MAI.getNextID () );
609
+ MAI.ExtInstSetMap [Set] = MAI.getNextIDRegister ( );
610
610
}
611
611
}
612
612
}
@@ -1938,7 +1938,7 @@ static void addMBBNames(const Module &M, const SPIRVInstrInfo &TII,
1938
1938
Register Reg = MRI.createGenericVirtualRegister (LLT::scalar (64 ));
1939
1939
MRI.setRegClass (Reg, &SPIRV::IDRegClass);
1940
1940
buildOpName (Reg, MBB.getName (), *std::prev (MBB.end ()), TII);
1941
- Register GlobalReg = MAI.getOrCreateMBBRegister (MBB);
1941
+ MCRegister GlobalReg = MAI.getOrCreateMBBRegister (MBB);
1942
1942
MAI.setRegisterAlias (MF, Reg, GlobalReg);
1943
1943
}
1944
1944
}
@@ -1992,6 +1992,7 @@ bool SPIRVModuleAnalysis::runOnModule(Module &M) {
1992
1992
1993
1993
// Process type/const/global var/func decl instructions, number their
1994
1994
// destination registers from 0 to N, collect Extensions and Capabilities.
1995
+ collectReqs (M, MAI, MMI, *ST);
1995
1996
collectDeclarations (M);
1996
1997
1997
1998
// Number rest of registers from N+1 onwards.
0 commit comments