@@ -76,12 +76,12 @@ define i32 @print_partial_reduction(ptr %a, ptr %b) "target-features"="+neon,+do
7676; CHECK-NEXT: Successor(s): vector.ph
7777; CHECK-EMPTY:
7878; CHECK-NEXT: vector.ph:
79- ; CHECK-NEXT: EMIT vp<%1 > = reduction-start-vector ir<0>, ir<0>, ir<4>
79+ ; CHECK-NEXT: EMIT vp<[[RDX_START:%[0-9]+]] > = reduction-start-vector ir<0>, ir<0>, ir<4>
8080; CHECK-NEXT: Successor(s): vector.body
8181; CHECK-EMPTY:
8282; CHECK-NEXT: vector.body:
8383; CHECK-NEXT: EMIT-SCALAR vp<%index> = phi [ ir<0>, vector.ph ], [ vp<%index.next>, vector.body ]
84- ; CHECK-NEXT: WIDEN-REDUCTION-PHI ir<%accum> = phi vp<%1 >, ir<%add> (VF scaled by 1/4)
84+ ; CHECK-NEXT: WIDEN-REDUCTION-PHI ir<%accum> = phi vp<[[RDX_START]] >, ir<%add> (VF scaled by 1/4)
8585; CHECK-NEXT: CLONE ir<%gep.a> = getelementptr ir<%a>, vp<%index>
8686; CHECK-NEXT: WIDEN ir<%load.a> = load ir<%gep.a>
8787; CHECK-NEXT: CLONE ir<%gep.b> = getelementptr ir<%b>, vp<%index>
@@ -95,11 +95,11 @@ define i32 @print_partial_reduction(ptr %a, ptr %b) "target-features"="+neon,+do
9595; CHECK-NEXT: Successor(s): middle.block, vector.body
9696; CHECK-EMPTY:
9797; CHECK-NEXT: middle.block:
98- ; CHECK-NEXT: EMIT vp<%3 > = compute-reduction-result ir<%accum>, ir<%add>
98+ ; CHECK-NEXT: EMIT vp<[[RED_RESULT:%[0-9]+]] > = compute-reduction-result ir<%accum>, ir<%add>
9999; CHECK-NEXT: Successor(s): ir-bb<exit>
100100; CHECK-EMPTY:
101101; CHECK-NEXT: ir-bb<exit>:
102- ; CHECK-NEXT: IR %add.lcssa = phi i32 [ %add, %for.body ] (extra operand: vp<%3 > from middle.block)
102+ ; CHECK-NEXT: IR %add.lcssa = phi i32 [ %add, %for.body ] (extra operand: vp<[[RED_RESULT]] > from middle.block)
103103; CHECK-NEXT: No successors
104104; CHECK-NEXT: }
105105entry:
@@ -127,48 +127,48 @@ exit:
127127; Test that we also get VPExpressions when there is predication.
128128define i32 @print_partial_reduction_predication (ptr %a , ptr %b , i64 %N ) "target-features" ="+sve" {
129129; CHECK: VPlan 'Initial VPlan for VF={8,16},UF>=1' {
130- ; CHECK-NEXT: Live-in vp<%0 > = VF
131- ; CHECK-NEXT: Live-in vp<%1 > = VF * UF
130+ ; CHECK-NEXT: Live-in vp<[[VF:%[0-9]+]] > = VF
131+ ; CHECK-NEXT: Live-in vp<[[VFxUF:%[0-9]+]] > = VF * UF
132132; CHECK-NEXT: Live-in ir<%N> = original trip-count
133133; CHECK-EMPTY:
134134; CHECK-NEXT: ir-bb<entry>:
135135; CHECK-NEXT: Successor(s): scalar.ph, vector.ph
136136; CHECK-EMPTY:
137137; CHECK-NEXT: vector.ph:
138- ; CHECK-NEXT: EMIT vp<%4 > = reduction-start-vector ir<0>, ir<0>, ir<4>
139- ; CHECK-NEXT: EMIT vp<%5 > = TC > VF ? TC - VF : 0 ir<%N>
138+ ; CHECK-NEXT: EMIT vp<[[RDX_START:%[0-9]+]] > = reduction-start-vector ir<0>, ir<0>, ir<4>
139+ ; CHECK-NEXT: EMIT vp<[[TC_MINUS_VF:%[0-9]+]] > = TC > VF ? TC - VF : 0 ir<%N>
140140; CHECK-NEXT: EMIT vp<%index.part.next> = VF * Part + ir<0>
141141; CHECK-NEXT: EMIT vp<%active.lane.mask.entry> = active lane mask vp<%index.part.next>, ir<%N>, ir<1>
142142; CHECK-NEXT: Successor(s): vector loop
143143; CHECK-EMPTY:
144144; CHECK-NEXT: <x1> vector loop: {
145145; CHECK-NEXT: vector.body:
146- ; CHECK-NEXT: EMIT vp<%6 > = CANONICAL-INDUCTION ir<0>, vp<%index.next>
147- ; CHECK-NEXT: ACTIVE-LANE-MASK-PHI vp<%7 > = phi vp<%active.lane.mask.entry>, vp<%active.lane.mask.next>
148- ; CHECK-NEXT: WIDEN-REDUCTION-PHI ir<%accum> = phi vp<%4 >, vp<%11 > (VF scaled by 1/4)
149- ; CHECK-NEXT: vp<%8 > = SCALAR-STEPS vp<%6 >, ir<1>, vp<%0 >
150- ; CHECK-NEXT: CLONE ir<%gep.a> = getelementptr ir<%a>, vp<%8 >
151- ; CHECK-NEXT: vp<%9 > = vector-pointer ir<%gep.a>
152- ; CHECK-NEXT: WIDEN ir<%load.a> = load vp<%9 >, vp<%7 >
153- ; CHECK-NEXT: CLONE ir<%gep.b> = getelementptr ir<%b>, vp<%8 >
154- ; CHECK-NEXT: vp<%10 > = vector-pointer ir<%gep.b>
155- ; CHECK-NEXT: WIDEN ir<%load.b> = load vp<%10 >, vp<%7 >
156- ; CHECK-NEXT: EXPRESSION vp<%11 > = vp<%7 > + partial.reduce.add (mul (ir<%load.b> zext to i32), (ir<%load.a> zext to i32), <badref>)
157- ; CHECK-NEXT: EMIT vp<%index.next> = add vp<%6 >, vp<%1 >
158- ; CHECK-NEXT: EMIT vp<%12 > = VF * Part + vp<%6 >
159- ; CHECK-NEXT: EMIT vp<%active.lane.mask.next> = active lane mask vp<%12 >, vp<%5 >, ir<1>
160- ; CHECK-NEXT: EMIT vp<%13 > = not vp<%active.lane.mask.next>
161- ; CHECK-NEXT: EMIT branch-on-cond vp<%13 >
146+ ; CHECK-NEXT: EMIT vp<[[CAN_IV:%[0-9]+]] > = CANONICAL-INDUCTION ir<0>, vp<%index.next>
147+ ; CHECK-NEXT: ACTIVE-LANE-MASK-PHI vp<[[MASK:%[0-9]+]] > = phi vp<%active.lane.mask.entry>, vp<%active.lane.mask.next>
148+ ; CHECK-NEXT: WIDEN-REDUCTION-PHI ir<%accum> = phi vp<[[RDX_START]] >, vp<[[REDUCE:%[0-9]+]] > (VF scaled by 1/4)
149+ ; CHECK-NEXT: vp<[[STEPS:%[0-9]+]] > = SCALAR-STEPS vp<[[CAN_IV]] >, ir<1>, vp<[[VF]] >
150+ ; CHECK-NEXT: CLONE ir<%gep.a> = getelementptr ir<%a>, vp<[[STEPS]] >
151+ ; CHECK-NEXT: vp<[[PTR_A:%[0-9]+]] > = vector-pointer ir<%gep.a>
152+ ; CHECK-NEXT: WIDEN ir<%load.a> = load vp<[[PTR_A]] >, vp<[[MASK]] >
153+ ; CHECK-NEXT: CLONE ir<%gep.b> = getelementptr ir<%b>, vp<[[STEPS]] >
154+ ; CHECK-NEXT: vp<[[PTR_B:%[0-9]+]] > = vector-pointer ir<%gep.b>
155+ ; CHECK-NEXT: WIDEN ir<%load.b> = load vp<[[PTR_B]] >, vp<[[MASK]] >
156+ ; CHECK-NEXT: EXPRESSION vp<[[REDUCE]] > = vp<[[MASK]] > + partial.reduce.add (mul (ir<%load.b> zext to i32), (ir<%load.a> zext to i32), <badref>)
157+ ; CHECK-NEXT: EMIT vp<%index.next> = add vp<[[CAN_IV]] >, vp<[[VFxUF]] >
158+ ; CHECK-NEXT: EMIT vp<[[PART_IDX:%[0-9]+]] > = VF * Part + vp<[[CAN_IV]] >
159+ ; CHECK-NEXT: EMIT vp<%active.lane.mask.next> = active lane mask vp<[[PART_IDX]] >, vp<[[TC_MINUS_VF]] >, ir<1>
160+ ; CHECK-NEXT: EMIT vp<[[NOT_MASK:%[0-9]+]] > = not vp<%active.lane.mask.next>
161+ ; CHECK-NEXT: EMIT branch-on-cond vp<[[NOT_MASK]] >
162162; CHECK-NEXT: No successors
163163; CHECK-NEXT: }
164164; CHECK-NEXT: Successor(s): middle.block
165165; CHECK-EMPTY:
166166; CHECK-NEXT: middle.block:
167- ; CHECK-NEXT: EMIT vp<%15 > = compute-reduction-result ir<%accum>, vp<%11 >
167+ ; CHECK-NEXT: EMIT vp<[[RED_RESULT:%[0-9]+]] > = compute-reduction-result ir<%accum>, vp<[[REDUCE]] >
168168; CHECK-NEXT: Successor(s): ir-bb<exit>
169169; CHECK-EMPTY:
170170; CHECK-NEXT: ir-bb<exit>:
171- ; CHECK-NEXT: IR %add.lcssa = phi i32 [ %add, %for.body ] (extra operand: vp<%15 > from middle.block)
171+ ; CHECK-NEXT: IR %add.lcssa = phi i32 [ %add, %for.body ] (extra operand: vp<[[RED_RESULT]] > from middle.block)
172172; CHECK-NEXT: No successors
173173entry:
174174 br label %for.body
0 commit comments