Skip to content

Commit 39e39f6

Browse files
committed
Use foldImm
1 parent 59a2ca4 commit 39e39f6

File tree

1 file changed

+4
-22
lines changed

1 file changed

+4
-22
lines changed

llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -44,20 +44,6 @@ using ExtInstList =
4444

4545
namespace {
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

Comments
 (0)