[llvm] [VPlan] Replace gather with scalar load + splat for uniform addresses (PR #216767)

Ramkumar Ramachandra via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 17 10:03:15 PDT 2026


================
@@ -5480,6 +5480,30 @@ void VPlanTransforms::makeMemOpWideningDecisions(VPlan &Plan, VFRange &Range,
         return ReplaceWith(VPI, StoreR);
       });
 
+  VPlanTransforms::runPass(
+      "skipUniformGather", ProcessSubset, Plan, [&](VPInstruction *VPI) {
+        if (VPI->getOpcode() != Instruction::Load)
+          return false;
+        VPValue *Addr = VPI->getOperand(0);
+        if (!vputils::isUniformAcrossVFsAndUFs(Addr))
+          return false;
+        auto &LI = cast<LoadInst>(*VPI->getUnderlyingInstr());
+        const DataLayout &DL =
+            Plan.getScalarHeader()->getIRBasicBlock()->getDataLayout();
----------------
artagnon wrote:

Plan.getDataLayout()

https://github.com/llvm/llvm-project/pull/216767


More information about the llvm-commits mailing list