[llvm] [VPlan] Add VPIRAttributes; use for VPWidenCallRecipe. (PR #207075)

Ramkumar Ramachandra via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 15 01:08:05 PDT 2026


================
@@ -69,6 +72,72 @@ exit:
   ret void
 }
 
+; The call site carries a propagatable (range) and a non-propagatable
+; (noundef) attribute on both the argument and return. Make sure only the valid
+; attributes are printed.
+define void @wide_call_attrs_filtered_and_combined(ptr noalias %in.ptr, ptr noalias %out.ptr) {
+; CHECK-LABEL: VPlan for loop in 'wide_call_attrs_filtered_and_combined'
+; CHECK:  VPlan ' for UF>=1' {
+; CHECK-NEXT:  Live-in vp<[[VP0:%[0-9]+]]> = VF
+; CHECK-NEXT:  Live-in vp<[[VP1:%[0-9]+]]> = VF * UF
+; CHECK-NEXT:  Live-in vp<[[VP2:%[0-9]+]]> = vector-trip-count
+; CHECK-NEXT:  Live-in ir<1000> = original trip-count
+; CHECK-EMPTY:
+; CHECK-NEXT:  ir-bb<entry>:
+; CHECK-NEXT:  Successor(s): scalar.ph, vector.ph
+; CHECK-EMPTY:
+; CHECK-NEXT:  vector.ph:
+; CHECK-NEXT:  Successor(s): vector loop
+; CHECK-EMPTY:
+; CHECK-NEXT:  <x1> vector loop: {
+; CHECK-NEXT:  vp<[[VP3:%[0-9]+]]> = CANONICAL-IV
+; CHECK-EMPTY:
+; CHECK-NEXT:    vector.body:
+; CHECK-NEXT:      ir<%iv> = WIDEN-INDUCTION nuw nsw ir<0>, ir<1>, vp<[[VP0]]>
+; CHECK-NEXT:      CLONE ir<%in.gep> = getelementptr inbounds ir<%in.ptr>, ir<%iv>
+; CHECK-NEXT:      vp<[[VP4:%[0-9]+]]> = vector-pointer inbounds ir<%in.gep>, ir<1>
+; CHECK-NEXT:      WIDEN ir<%in> = load vp<[[VP4]]>
+; CHECK-NEXT:      WIDEN-CALL ir<%call> = call  range(i64 0, 60) @bar(range(i64 0, 50) ir<%in>) (using library function: vec_bar)
----------------
artagnon wrote:

"call  range..." <- double space after call? Why is noundef not being printed?

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


More information about the llvm-commits mailing list