Skip to content

Commit 4eea157

Browse files
authored
[GlobalISel] Return byte offsets from computeValueLLTs (NFC) (#166747)
To avoid scaling offsets back and forth. This is also what SelectionDAG equivalent (ComputeValueVTs) does, and will allow to reuse ComputeValueTypes with less effort.
1 parent 94c384c commit 4eea157

File tree

2 files changed

+16
-16
lines changed

2 files changed

+16
-16
lines changed

llvm/lib/CodeGen/Analysis.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,8 @@ void llvm::computeValueLLTs(const DataLayout &DL, Type &Ty,
177177
return;
178178
// Base case: we can get an LLT for this LLVM IR type.
179179
ValueTys.push_back(getLLTForType(Ty, DL));
180-
if (Offsets != nullptr)
181-
Offsets->push_back(StartingOffset * 8);
180+
if (Offsets)
181+
Offsets->push_back(StartingOffset);
182182
}
183183

184184
/// ExtractTypeInfo - Returns the type info, possibly bitcast, encoded in V.

llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1412,14 +1412,14 @@ bool IRTranslator::translateLoad(const User &U, MachineIRBuilder &MIRBuilder) {
14121412
Regs.size() == 1 ? LI.getMetadata(LLVMContext::MD_range) : nullptr;
14131413
for (unsigned i = 0; i < Regs.size(); ++i) {
14141414
Register Addr;
1415-
MIRBuilder.materializeObjectPtrOffset(Addr, Base, OffsetTy, Offsets[i] / 8);
1415+
MIRBuilder.materializeObjectPtrOffset(Addr, Base, OffsetTy, Offsets[i]);
14161416

1417-
MachinePointerInfo Ptr(LI.getPointerOperand(), Offsets[i] / 8);
1417+
MachinePointerInfo Ptr(LI.getPointerOperand(), Offsets[i]);
14181418
Align BaseAlign = getMemOpAlign(LI);
1419-
auto MMO = MF->getMachineMemOperand(
1420-
Ptr, Flags, MRI->getType(Regs[i]),
1421-
commonAlignment(BaseAlign, Offsets[i] / 8), AAInfo, Ranges,
1422-
LI.getSyncScopeID(), LI.getOrdering());
1419+
auto MMO =
1420+
MF->getMachineMemOperand(Ptr, Flags, MRI->getType(Regs[i]),
1421+
commonAlignment(BaseAlign, Offsets[i]), AAInfo,
1422+
Ranges, LI.getSyncScopeID(), LI.getOrdering());
14231423
MIRBuilder.buildLoad(Regs[i], Addr, *MMO);
14241424
}
14251425

@@ -1451,14 +1451,14 @@ bool IRTranslator::translateStore(const User &U, MachineIRBuilder &MIRBuilder) {
14511451

14521452
for (unsigned i = 0; i < Vals.size(); ++i) {
14531453
Register Addr;
1454-
MIRBuilder.materializeObjectPtrOffset(Addr, Base, OffsetTy, Offsets[i] / 8);
1454+
MIRBuilder.materializeObjectPtrOffset(Addr, Base, OffsetTy, Offsets[i]);
14551455

1456-
MachinePointerInfo Ptr(SI.getPointerOperand(), Offsets[i] / 8);
1456+
MachinePointerInfo Ptr(SI.getPointerOperand(), Offsets[i]);
14571457
Align BaseAlign = getMemOpAlign(SI);
1458-
auto MMO = MF->getMachineMemOperand(
1459-
Ptr, Flags, MRI->getType(Vals[i]),
1460-
commonAlignment(BaseAlign, Offsets[i] / 8), SI.getAAMetadata(), nullptr,
1461-
SI.getSyncScopeID(), SI.getOrdering());
1458+
auto MMO = MF->getMachineMemOperand(Ptr, Flags, MRI->getType(Vals[i]),
1459+
commonAlignment(BaseAlign, Offsets[i]),
1460+
SI.getAAMetadata(), nullptr,
1461+
SI.getSyncScopeID(), SI.getOrdering());
14621462
MIRBuilder.buildStore(Vals[i], Addr, *MMO);
14631463
}
14641464
return true;
@@ -1483,8 +1483,8 @@ static uint64_t getOffsetFromIndices(const User &U, const DataLayout &DL) {
14831483
llvm::append_range(Indices, drop_begin(U.operands()));
14841484
}
14851485

1486-
return 8 * static_cast<uint64_t>(
1487-
DL.getIndexedOffsetInType(Src->getType(), Indices));
1486+
return static_cast<uint64_t>(
1487+
DL.getIndexedOffsetInType(Src->getType(), Indices));
14881488
}
14891489

14901490
bool IRTranslator::translateExtractValue(const User &U,

0 commit comments

Comments
 (0)