[llvm] a4f7977 - [GlobalISel] Avoid redundant vreg lookups in IRTranslator (NFC) (#217888)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 24 00:32:04 PDT 2026
Author: Cullen Rhodes
Date: 2026-08-24T08:31:59+01:00
New Revision: a4f7977c449b24a9b821681bea255f40e589974d
URL: https://github.com/llvm/llvm-project/commit/a4f7977c449b24a9b821681bea255f40e589974d
DIFF: https://github.com/llvm/llvm-project/commit/a4f7977c449b24a9b821681bea255f40e589974d.diff
LOG: [GlobalISel] Avoid redundant vreg lookups in IRTranslator (NFC) (#217888)
Added:
Modified:
llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
Removed:
################################################################################
diff --git a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
index baac98561f25b..4c4527c016271 100644
--- a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
@@ -266,6 +266,7 @@ class IRTranslatorImpl {
// Translate U as a copy of V.
bool translateCopy(const User &U, const Value &V,
MachineIRBuilder &MIRBuilder);
+ bool translateCopy(const User &U, Register Src, MachineIRBuilder &MIRBuilder);
/// Translate an LLVM bitcast into generic IR. Either a COPY or a G_BITCAST is
/// emitted.
@@ -2322,7 +2323,11 @@ bool IRTranslatorImpl::translateSelect(const User &U,
bool IRTranslatorImpl::translateCopy(const User &U, const Value &V,
MachineIRBuilder &MIRBuilder) {
- Register Src = getOrCreateVReg(V);
+ return translateCopy(U, getOrCreateVReg(V), MIRBuilder);
+}
+
+bool IRTranslatorImpl::translateCopy(const User &U, Register Src,
+ MachineIRBuilder &MIRBuilder) {
auto &Regs = *VMap.getVRegs(U);
if (Regs.empty()) {
Regs.push_back(Src);
@@ -2416,7 +2421,7 @@ bool IRTranslatorImpl::translateGetElementPtr(const User &U,
}
if (cast<GEPOperator>(U).hasAllZeroIndices())
- return translateCopy(U, Op0, MIRBuilder);
+ return translateCopy(U, BaseReg, MIRBuilder);
// We might need to splat the base pointer into a vector if the offsets
// are vectors.
@@ -4141,7 +4146,7 @@ bool IRTranslatorImpl::translateInsertVector(const User &U,
// We are inserting an illegal fixed vector into an illegal
// fixed vector, use the scalar as it is not a legal vector type
// in LLT.
- return translateCopy(U, *U.getOperand(0), MIRBuilder);
+ return translateCopy(U, Vec, MIRBuilder);
}
if (isa<FixedVectorType>(U.getOperand(0)->getType())) {
// We are inserting an illegal fixed vector into a legal fixed
@@ -4163,9 +4168,7 @@ bool IRTranslatorImpl::translateInsertVector(const User &U,
}
}
- MIRBuilder.buildInsertSubvector(
- getOrCreateVReg(U), getOrCreateVReg(*U.getOperand(0)),
- getOrCreateVReg(*U.getOperand(1)), CI->getZExtValue());
+ MIRBuilder.buildInsertSubvector(Dst, Vec, Elt, CI->getZExtValue());
return true;
}
@@ -4220,7 +4223,7 @@ bool IRTranslatorImpl::translateExtractVector(const User &U,
InputType && InputType->getNumElements() == 1) {
// We are extracting an illegal fixed vector from an illegal fixed vector,
// use the scalar as it is not a legal vector type in LLT.
- return translateCopy(U, *U.getOperand(0), MIRBuilder);
+ return translateCopy(U, Vec, MIRBuilder);
}
if (isa<FixedVectorType>(U.getOperand(0)->getType())) {
// We are extracting an illegal fixed vector from a legal fixed
@@ -4242,9 +4245,7 @@ bool IRTranslatorImpl::translateExtractVector(const User &U,
}
}
- MIRBuilder.buildExtractSubvector(getOrCreateVReg(U),
- getOrCreateVReg(*U.getOperand(0)),
- CI->getZExtValue());
+ MIRBuilder.buildExtractSubvector(Res, Vec, CI->getZExtValue());
return true;
}
More information about the llvm-commits
mailing list