[llvm] [VPlan] Process combineRecipes in a worklist (PR #213899)
Luke Lau via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 15 05:02:34 PDT 2026
================
@@ -0,0 +1,61 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals none --filter-out-after "^scalar.ph" --version 6
+; RUN: opt -p loop-vectorize -force-target-supports-masked-memory-ops -force-vector-width=4 -S %s | FileCheck %s
+
+define void @blend_of_i1_consts(ptr %p, ptr noalias %q, i32 %n) {
+; CHECK-LABEL: define void @blend_of_i1_consts(
+; CHECK-SAME: ptr [[P:%.*]], ptr noalias [[Q:%.*]], i32 [[N:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[MIN_ITERS_CHECK:%.*]] = icmp ult i32 [[N]], 4
+; CHECK-NEXT: br i1 [[MIN_ITERS_CHECK]], label %[[SCALAR_PH:.*]], label %[[VECTOR_SCEVCHECK:.*]]
+; CHECK: [[VECTOR_SCEVCHECK]]:
+; CHECK-NEXT: [[TMP0:%.*]] = add i32 [[N]], -1
+; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[TMP0]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label %[[SCALAR_PH]], label %[[VECTOR_PH:.*]]
+; CHECK: [[VECTOR_PH]]:
+; CHECK-NEXT: [[N_MOD_VF:%.*]] = and i32 [[N]], 3
+; CHECK-NEXT: [[N_VEC:%.*]] = sub i32 [[N]], [[N_MOD_VF]]
+; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
+; CHECK: [[VECTOR_BODY]]:
+; CHECK-NEXT: [[INDEX:%.*]] = phi i32 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
+; CHECK-NEXT: [[VEC_IND:%.*]] = phi <4 x i32> [ <i32 0, i32 1, i32 2, i32 3>, %[[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], %[[VECTOR_BODY]] ]
+; CHECK-NEXT: [[TMP8:%.*]] = icmp sgt <4 x i32> [[VEC_IND]], splat (i32 42)
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr i32, ptr [[Q]], i32 [[INDEX]]
+; CHECK-NEXT: call void @llvm.masked.store.v4i32.p0(<4 x i32> zeroinitializer, ptr align 4 [[TMP7]], <4 x i1> [[TMP8]])
----------------
lukel97 wrote:
Yeah, fixed in df05de83eed45febe976cd712305cf92dab08508 so the worklist now makes a difference. I ended up removing the store, I couldn't figure out how to get that combine to kick in otherwise.
https://github.com/llvm/llvm-project/pull/213899
More information about the llvm-commits
mailing list