@@ -44,20 +44,6 @@ using ExtInstList =
4444
4545namespace {
4646
47- uint64_t getUnsignedConstantValueFromReg (llvm::Register Reg,
48- const llvm::MachineRegisterInfo &MRI) {
49- llvm::SPIRVType *ConstTy = MRI.getVRegDef (Reg);
50- assert (ConstTy);
51- if (ConstTy->getOpcode () == llvm::SPIRV::ASSIGN_TYPE) {
52- assert (ConstTy->getOperand (1 ).isReg ());
53- Reg = ConstTy->getOperand (1 ).getReg ();
54- }
55- const llvm::MachineInstr *Const = MRI.getVRegDef (Reg);
56- assert (Const && Const->getOpcode () == llvm::TargetOpcode::G_CONSTANT);
57- const llvm::APInt &Val = Const->getOperand (1 ).getCImm ()->getValue ();
58- return Val.getZExtValue ();
59- }
60-
6147#define GET_GLOBALISEL_PREDICATE_BITSET
6248#include " SPIRVGenGlobalISel.inc"
6349#undef GET_GLOBALISEL_PREDICATE_BITSET
@@ -2588,12 +2574,9 @@ void SPIRVInstructionSelector::selectHandleFromBinding(Register &ResVReg,
25882574 const SPIRVType *ResType,
25892575 MachineInstr &I) const {
25902576
2591- uint32_t Set =
2592- getUnsignedConstantValueFromReg (I.getOperand (2 ).getReg (), *MRI);
2593- uint32_t Binding =
2594- getUnsignedConstantValueFromReg (I.getOperand (3 ).getReg (), *MRI);
2595- uint32_t ArraySize =
2596- getUnsignedConstantValueFromReg (I.getOperand (4 ).getReg (), *MRI);
2577+ uint32_t Set = foldImm (I.getOperand (2 ), MRI);
2578+ uint32_t Binding = foldImm (I.getOperand (3 ), MRI);
2579+ uint32_t ArraySize = foldImm (I.getOperand (4 ), MRI);
25972580
25982581 MachineIRBuilder MIRBuilder (I);
25992582 Register VarReg =
@@ -2918,8 +2901,7 @@ bool SPIRVInstructionSelector::selectSpvThreadId(Register ResVReg,
29182901 // Get Thread ID index. Expecting operand is a constant immediate value,
29192902 // wrapped in a type assignment.
29202903 assert (I.getOperand (2 ).isReg ());
2921- Register ThreadIdReg = I.getOperand (2 ).getReg ();
2922- const uint32_t ThreadId = getUnsignedConstantValueFromReg (ThreadIdReg, *MRI);
2904+ const uint32_t ThreadId = foldImm (I.getOperand (2 ), MRI);
29232905
29242906 // Extract the thread ID from the loaded vector value.
29252907 MachineBasicBlock &BB = *I.getParent ();
0 commit comments