[llvm] [LV][VPlan] Add initial support for CSA vectorization (PR #106560)

Florian Hahn via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 14 07:55:42 PDT 2024


================
@@ -2914,6 +2920,25 @@ LoopVectorizationCostModel::getVectorIntrinsicCost(CallInst *CI,
                                    TargetTransformInfo::TCK_RecipThroughput);
 }
 
+void InnerLoopVectorizer::fixCSALiveOuts(VPTransformState &State, VPlan &Plan) {
+  for (const auto &CSA : Plan.getCSAStates()) {
+    VPCSADataUpdateRecipe *VPDataUpdate = CSA.second->getDataUpdate();
+    assert(VPDataUpdate &&
+           "VPDataUpdate must have been introduced prior to fixing live outs");
+    Value *V = VPDataUpdate->getUnderlyingValue();
+    Value *ExtractedScalar =
----------------
fhahn wrote:

Can those fixups be directly done in VPlan, similar to how other live-outs are handled (with the exception of induction users, which is the last remaining case that needs fixing up outside of VPlan)?

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


More information about the llvm-commits mailing list