@@ -53,41 +53,41 @@ define void @vector_reverse_i64(ptr nocapture noundef writeonly %A, ptr nocaptur
53
53
; CHECK-NEXT: LV: Scalarizing: %cmp = icmp ugt i64 %indvars.iv, 1
54
54
; CHECK-NEXT: LV: Scalarizing: %indvars.iv.next = add nsw i64 %indvars.iv, -1
55
55
; CHECK-NEXT: VPlan 'Initial VPlan for VF={vscale x 4},UF>=1' {
56
- ; CHECK-NEXT: Live-in vp<%0 > = VF * UF
57
- ; CHECK-NEXT: Live-in vp<%1 > = vector-trip-count
58
- ; CHECK-NEXT: vp<%2 > = original trip-count
56
+ ; CHECK-NEXT: Live-in vp<[[VFxUF:%.+]] > = VF * UF
57
+ ; CHECK-NEXT: Live-in vp<[[VEC_TC:%.+]] > = vector-trip-count
58
+ ; CHECK-NEXT: vp<[[TC:%.+]] > = original trip-count
59
59
; CHECK-EMPTY:
60
60
; CHECK-NEXT: ir-bb<for.body.preheader>:
61
61
; CHECK-NEXT: IR %0 = zext i32 %n to i64
62
- ; CHECK-NEXT: EMIT vp<%2 > = EXPAND SCEV (zext i32 %n to i64)
62
+ ; CHECK-NEXT: EMIT vp<[[TC]] > = EXPAND SCEV (zext i32 %n to i64)
63
63
; CHECK-NEXT: No successors
64
64
; CHECK-EMPTY:
65
65
; CHECK-NEXT: vector.ph:
66
66
; CHECK-NEXT: Successor(s): vector loop
67
67
; CHECK-EMPTY:
68
68
; CHECK-NEXT: <x1> vector loop: {
69
69
; CHECK-NEXT: vector.body:
70
- ; CHECK-NEXT: EMIT vp<%3 > = CANONICAL-INDUCTION ir<0>, vp<%8>
71
- ; CHECK-NEXT: vp<%4 > = DERIVED-IV ir<%n> + vp<%3 > * ir<-1>
72
- ; CHECK-NEXT: vp<%5 > = SCALAR-STEPS vp<%4 >, ir<-1>
73
- ; CHECK-NEXT: CLONE ir<%i.0> = add nsw vp<%5 >, ir<-1>
70
+ ; CHECK-NEXT: EMIT vp<[[CAN_IV:%.+]] > = CANONICAL-INDUCTION
71
+ ; CHECK-NEXT: vp<[[DEV_IV:%.+]] > = DERIVED-IV ir<%n> + vp<[[CAN_IV]] > * ir<-1>
72
+ ; CHECK-NEXT: vp<[[STEPS:%.+]] > = SCALAR-STEPS vp<[[DEV_IV]] >, ir<-1>
73
+ ; CHECK-NEXT: CLONE ir<%i.0> = add nsw vp<[[STEPS]] >, ir<-1>
74
74
; CHECK-NEXT: CLONE ir<%idxprom> = zext ir<%i.0>
75
75
; CHECK-NEXT: CLONE ir<%arrayidx> = getelementptr inbounds ir<%B>, ir<%idxprom>
76
- ; CHECK-NEXT: vp<%6 > = vector-pointer (reverse) ir<%arrayidx>
77
- ; CHECK-NEXT: WIDEN ir<%1> = load vp<%6 >
76
+ ; CHECK-NEXT: vp<[[VEC_PTR:%.+]] > = vector-pointer (reverse) ir<%arrayidx>
77
+ ; CHECK-NEXT: WIDEN ir<%1> = load vp<[[VEC_PTR]] >
78
78
; CHECK-NEXT: WIDEN ir<%add9> = add ir<%1>, ir<1>
79
79
; CHECK-NEXT: CLONE ir<%arrayidx3> = getelementptr inbounds ir<%A>, ir<%idxprom>
80
- ; CHECK-NEXT: vp<%7 > = vector-pointer (reverse) ir<%arrayidx3>
81
- ; CHECK-NEXT: WIDEN store vp<%7 >, ir<%add9>
82
- ; CHECK-NEXT: EMIT vp<%8 > = add nuw vp<%3 >, vp<%0 >
83
- ; CHECK-NEXT: EMIT branch-on-count vp<%8 >, vp<%1 >
80
+ ; CHECK-NEXT: vp<[[VEC_PTR2:%.+]] > = vector-pointer (reverse) ir<%arrayidx3>
81
+ ; CHECK-NEXT: WIDEN store vp<[[VEC_PTR2]] >, ir<%add9>
82
+ ; CHECK-NEXT: EMIT vp<[[CAN_IV_NEXT:%.+]] > = add nuw vp<[[CAN_IV]] >, vp<[[VFxUF]] >
83
+ ; CHECK-NEXT: EMIT branch-on-count vp<[[CAN_IV_NEXT]] >, vp<[[VEC_TC]] >
84
84
; CHECK-NEXT: No successors
85
85
; CHECK-NEXT: }
86
86
; CHECK-NEXT: Successor(s): middle.block
87
87
; CHECK-EMPTY:
88
88
; CHECK-NEXT: middle.block:
89
- ; CHECK-NEXT: EMIT vp<%10 > = icmp eq vp<%2 >, vp<%1 >
90
- ; CHECK-NEXT: EMIT branch-on-cond vp<%10 >
89
+ ; CHECK-NEXT: EMIT vp<[[CMP:%.+]] > = icmp eq vp<[[TC]] >, vp<[[VEC_TC]] >
90
+ ; CHECK-NEXT: EMIT branch-on-cond vp<[[CMP]] >
91
91
; CHECK-NEXT: Successor(s): ir-bb<for.cond.cleanup.loopexit>, scalar.ph
92
92
; CHECK-EMPTY:
93
93
; CHECK-NEXT: ir-bb<for.cond.cleanup.loopexit>:
@@ -137,41 +137,41 @@ define void @vector_reverse_i64(ptr nocapture noundef writeonly %A, ptr nocaptur
137
137
; CHECK-NEXT: LEV: Epilogue vectorization is not profitable for this loop
138
138
; CHECK-NEXT: Executing best plan with VF=vscale x 4, UF=1
139
139
; CHECK-NEXT: VPlan 'Final VPlan for VF={vscale x 4},UF={1}' {
140
- ; CHECK-NEXT: Live-in vp<%0 > = VF * UF
141
- ; CHECK-NEXT: Live-in vp<%1 > = vector-trip-count
142
- ; CHECK-NEXT: vp<%2 > = original trip-count
140
+ ; CHECK-NEXT: Live-in vp<[[VFxUF:%.+]] > = VF * UF
141
+ ; CHECK-NEXT: Live-in vp<[[VEC_TC:%.+]] > = vector-trip-count
142
+ ; CHECK-NEXT: vp<[[TC:%.+]] > = original trip-count
143
143
; CHECK-EMPTY:
144
144
; CHECK-NEXT: ir-bb<for.body.preheader>:
145
145
; CHECK-NEXT: IR %0 = zext i32 %n to i64
146
- ; CHECK-NEXT: EMIT vp<%2 > = EXPAND SCEV (zext i32 %n to i64)
146
+ ; CHECK-NEXT: EMIT vp<[[TC]] > = EXPAND SCEV (zext i32 %n to i64)
147
147
; CHECK-NEXT: No successors
148
148
; CHECK-EMPTY:
149
149
; CHECK-NEXT: vector.ph:
150
150
; CHECK-NEXT: Successor(s): vector loop
151
151
; CHECK-EMPTY:
152
152
; CHECK-NEXT: <x1> vector loop: {
153
153
; CHECK-NEXT: vector.body:
154
- ; CHECK-NEXT: EMIT vp<%3 > = CANONICAL-INDUCTION ir<0>, vp<%8>
155
- ; CHECK-NEXT: vp<%4 > = DERIVED-IV ir<%n> + vp<%3 > * ir<-1>
156
- ; CHECK-NEXT: vp<%5 > = SCALAR-STEPS vp<%4 >, ir<-1>
157
- ; CHECK-NEXT: CLONE ir<%i.0> = add nsw vp<%5 >, ir<-1>
154
+ ; CHECK-NEXT: EMIT vp<[[CAN_IV:%.+]] > = CANONICAL-INDUCTION
155
+ ; CHECK-NEXT: vp<[[DEV_IV:%.+]] > = DERIVED-IV ir<%n> + vp<[[CAN_IV]] > * ir<-1>
156
+ ; CHECK-NEXT: vp<[[STEPS:%.+]] > = SCALAR-STEPS vp<[[DEV_IV]] >, ir<-1>
157
+ ; CHECK-NEXT: CLONE ir<%i.0> = add nsw vp<[[STEPS]] >, ir<-1>
158
158
; CHECK-NEXT: CLONE ir<%idxprom> = zext ir<%i.0>
159
159
; CHECK-NEXT: CLONE ir<%arrayidx> = getelementptr inbounds ir<%B>, ir<%idxprom>
160
- ; CHECK-NEXT: vp<%6 > = vector-pointer (reverse) ir<%arrayidx>
161
- ; CHECK-NEXT: WIDEN ir<%13> = load vp<%6 >
160
+ ; CHECK-NEXT: vp<[[VEC_PTR:%.+]] > = vector-pointer (reverse) ir<%arrayidx>
161
+ ; CHECK-NEXT: WIDEN ir<%13> = load vp<[[VEC_PTR]] >
162
162
; CHECK-NEXT: WIDEN ir<%add9> = add ir<%13>, ir<1>
163
163
; CHECK-NEXT: CLONE ir<%arrayidx3> = getelementptr inbounds ir<%A>, ir<%idxprom>
164
- ; CHECK-NEXT: vp<%7 > = vector-pointer (reverse) ir<%arrayidx3>
165
- ; CHECK-NEXT: WIDEN store vp<%7 >, ir<%add9>
166
- ; CHECK-NEXT: EMIT vp<%8 > = add nuw vp<%3 >, vp<%0 >
167
- ; CHECK-NEXT: EMIT branch-on-count vp<%8 >, vp<%1 >
164
+ ; CHECK-NEXT: vp<[[VEC_PTR2:%.+]] > = vector-pointer (reverse) ir<%arrayidx3>
165
+ ; CHECK-NEXT: WIDEN store vp<[[VEC_PTR2]] >, ir<%add9>
166
+ ; CHECK-NEXT: EMIT vp<[[CAN_IV_NEXT:%.+]] > = add nuw vp<[[CAN_IV]] >, vp<[[VFxUF]] >
167
+ ; CHECK-NEXT: EMIT branch-on-count vp<[[CAN_IV_NEXT]] >, vp<[[VEC_TC]] >
168
168
; CHECK-NEXT: No successors
169
169
; CHECK-NEXT: }
170
170
; CHECK-NEXT: Successor(s): middle.block
171
171
; CHECK-EMPTY:
172
172
; CHECK-NEXT: middle.block:
173
- ; CHECK-NEXT: EMIT vp<%10 > = icmp eq vp<%2 >, vp<%1 >
174
- ; CHECK-NEXT: EMIT branch-on-cond vp<%10 >
173
+ ; CHECK-NEXT: EMIT vp<[[CMP:%.+]] > = icmp eq vp<[[TC]] >, vp<[[VEC_TC]] >
174
+ ; CHECK-NEXT: EMIT branch-on-cond vp<[[CMP]] >
175
175
; CHECK-NEXT: Successor(s): ir-bb<for.cond.cleanup.loopexit>, scalar.ph
176
176
; CHECK-EMPTY:
177
177
; CHECK-NEXT: ir-bb<for.cond.cleanup.loopexit>:
@@ -257,41 +257,41 @@ define void @vector_reverse_f32(ptr nocapture noundef writeonly %A, ptr nocaptur
257
257
; CHECK-NEXT: LV: Scalarizing: %cmp = icmp ugt i64 %indvars.iv, 1
258
258
; CHECK-NEXT: LV: Scalarizing: %indvars.iv.next = add nsw i64 %indvars.iv, -1
259
259
; CHECK-NEXT: VPlan 'Initial VPlan for VF={vscale x 4},UF>=1' {
260
- ; CHECK-NEXT: Live-in vp<%0 > = VF * UF
261
- ; CHECK-NEXT: Live-in vp<%1 > = vector-trip-count
262
- ; CHECK-NEXT: vp<%2 > = original trip-count
260
+ ; CHECK-NEXT: Live-in vp<[[VFxUF:%.+]] > = VF * UF
261
+ ; CHECK-NEXT: Live-in vp<[[VEC_TC:%.+]] > = vector-trip-count
262
+ ; CHECK-NEXT: vp<[[TC:%.+]] > = original trip-count
263
263
; CHECK-EMPTY:
264
264
; CHECK-NEXT: ir-bb<for.body.preheader>:
265
265
; CHECK-NEXT: IR %0 = zext i32 %n to i64
266
- ; CHECK-NEXT: EMIT vp<%2 > = EXPAND SCEV (zext i32 %n to i64)
266
+ ; CHECK-NEXT: EMIT vp<[[TC]] > = EXPAND SCEV (zext i32 %n to i64)
267
267
; CHECK-NEXT: No successors
268
268
; CHECK-EMPTY:
269
269
; CHECK-NEXT: vector.ph:
270
270
; CHECK-NEXT: Successor(s): vector loop
271
271
; CHECK-EMPTY:
272
272
; CHECK-NEXT: <x1> vector loop: {
273
273
; CHECK-NEXT: vector.body:
274
- ; CHECK-NEXT: EMIT vp<%3 > = CANONICAL-INDUCTION ir<0>, vp<%8>
275
- ; CHECK-NEXT: vp<%4 > = DERIVED-IV ir<%n> + vp<%3 > * ir<-1>
276
- ; CHECK-NEXT: vp<%5 > = SCALAR-STEPS vp<%4 >, ir<-1>
277
- ; CHECK-NEXT: CLONE ir<%i.0> = add nsw vp<%5 >, ir<-1>
274
+ ; CHECK-NEXT: EMIT vp<[[CAN_IV:%.+]] > = CANONICAL-INDUCTION
275
+ ; CHECK-NEXT: vp<[[DEV_IV:%.+]] > = DERIVED-IV ir<%n> + vp<[[CAN_IV]] > * ir<-1>
276
+ ; CHECK-NEXT: vp<[[STEPS:%.+]] > = SCALAR-STEPS vp<[[DEV_IV]] >, ir<-1>
277
+ ; CHECK-NEXT: CLONE ir<%i.0> = add nsw vp<[[STEPS]] >, ir<-1>
278
278
; CHECK-NEXT: CLONE ir<%idxprom> = zext ir<%i.0>
279
279
; CHECK-NEXT: CLONE ir<%arrayidx> = getelementptr inbounds ir<%B>, ir<%idxprom>
280
- ; CHECK-NEXT: vp<%6 > = vector-pointer (reverse) ir<%arrayidx>
281
- ; CHECK-NEXT: WIDEN ir<%1> = load vp<%6 >
280
+ ; CHECK-NEXT: vp<[[VEC_PTR:%.+]] > = vector-pointer (reverse) ir<%arrayidx>
281
+ ; CHECK-NEXT: WIDEN ir<%1> = load vp<[[VEC_PTR]] >
282
282
; CHECK-NEXT: WIDEN ir<%conv1> = fadd ir<%1>, ir<1.000000e+00>
283
283
; CHECK-NEXT: CLONE ir<%arrayidx3> = getelementptr inbounds ir<%A>, ir<%idxprom>
284
- ; CHECK-NEXT: vp<%7 > = vector-pointer (reverse) ir<%arrayidx3>
285
- ; CHECK-NEXT: WIDEN store vp<%7 >, ir<%conv1>
286
- ; CHECK-NEXT: EMIT vp<%8 > = add nuw vp<%3 >, vp<%0 >
287
- ; CHECK-NEXT: EMIT branch-on-count vp<%8 >, vp<%1 >
284
+ ; CHECK-NEXT: vp<[[VEC_PTR2:%.+]] > = vector-pointer (reverse) ir<%arrayidx3>
285
+ ; CHECK-NEXT: WIDEN store vp<[[VEC_PTR2]] >, ir<%conv1>
286
+ ; CHECK-NEXT: EMIT vp<[[CAN_IV_NEXT:%.+]] > = add nuw vp<[[CAN_IV]] >, vp<[[VFxUF]] >
287
+ ; CHECK-NEXT: EMIT branch-on-count vp<[[CAN_IV_NEXT]] >, vp<[[VEC_TC]] >
288
288
; CHECK-NEXT: No successors
289
289
; CHECK-NEXT: }
290
290
; CHECK-NEXT: Successor(s): middle.block
291
291
; CHECK-EMPTY:
292
292
; CHECK-NEXT: middle.block:
293
- ; CHECK-NEXT: EMIT vp<%10 > = icmp eq vp<%2 >, vp<%1 >
294
- ; CHECK-NEXT: EMIT branch-on-cond vp<%10 >
293
+ ; CHECK-NEXT: EMIT vp<[[CMP:%.+]] > = icmp eq vp<[[TC]] >, vp<[[VEC_TC]] >
294
+ ; CHECK-NEXT: EMIT branch-on-cond vp<[[CMP]] >
295
295
; CHECK-NEXT: Successor(s): ir-bb<for.cond.cleanup.loopexit>, scalar.ph
296
296
; CHECK-EMPTY:
297
297
; CHECK-NEXT: ir-bb<for.cond.cleanup.loopexit>:
@@ -341,41 +341,41 @@ define void @vector_reverse_f32(ptr nocapture noundef writeonly %A, ptr nocaptur
341
341
; CHECK-NEXT: LEV: Epilogue vectorization is not profitable for this loop
342
342
; CHECK-NEXT: Executing best plan with VF=vscale x 4, UF=1
343
343
; CHECK-NEXT: VPlan 'Final VPlan for VF={vscale x 4},UF={1}' {
344
- ; CHECK-NEXT: Live-in vp<%0 > = VF * UF
345
- ; CHECK-NEXT: Live-in vp<%1 > = vector-trip-count
346
- ; CHECK-NEXT: vp<%2 > = original trip-count
344
+ ; CHECK-NEXT: Live-in vp<[[VFxUF:%.+]] > = VF * UF
345
+ ; CHECK-NEXT: Live-in vp<[[VEC_TC:%.+]] > = vector-trip-count
346
+ ; CHECK-NEXT: vp<[[TC:%.+]] > = original trip-count
347
347
; CHECK-EMPTY:
348
348
; CHECK-NEXT: ir-bb<for.body.preheader>:
349
349
; CHECK-NEXT: IR %0 = zext i32 %n to i64
350
- ; CHECK-NEXT: EMIT vp<%2 > = EXPAND SCEV (zext i32 %n to i64)
350
+ ; CHECK-NEXT: EMIT vp<[[TC]] > = EXPAND SCEV (zext i32 %n to i64)
351
351
; CHECK-NEXT: No successors
352
352
; CHECK-EMPTY:
353
353
; CHECK-NEXT: vector.ph:
354
354
; CHECK-NEXT: Successor(s): vector loop
355
355
; CHECK-EMPTY:
356
356
; CHECK-NEXT: <x1> vector loop: {
357
357
; CHECK-NEXT: vector.body:
358
- ; CHECK-NEXT: EMIT vp<%3 > = CANONICAL-INDUCTION ir<0>, vp<%8>
359
- ; CHECK-NEXT: vp<%4 > = DERIVED-IV ir<%n> + vp<%3 > * ir<-1>
360
- ; CHECK-NEXT: vp<%5 > = SCALAR-STEPS vp<%4 >, ir<-1>
361
- ; CHECK-NEXT: CLONE ir<%i.0> = add nsw vp<%5 >, ir<-1>
358
+ ; CHECK-NEXT: EMIT vp<[[CAN_IV:%.+]] > = CANONICAL-INDUCTION
359
+ ; CHECK-NEXT: vp<[[DEV_IV:%.+]] > = DERIVED-IV ir<%n> + vp<[[CAN_IV]] > * ir<-1>
360
+ ; CHECK-NEXT: vp<[[STEPS:%.+]] > = SCALAR-STEPS vp<[[DEV_IV]] >, ir<-1>
361
+ ; CHECK-NEXT: CLONE ir<%i.0> = add nsw vp<[[STEPS]] >, ir<-1>
362
362
; CHECK-NEXT: CLONE ir<%idxprom> = zext ir<%i.0>
363
363
; CHECK-NEXT: CLONE ir<%arrayidx> = getelementptr inbounds ir<%B>, ir<%idxprom>
364
- ; CHECK-NEXT: vp<%6 > = vector-pointer (reverse) ir<%arrayidx>
365
- ; CHECK-NEXT: WIDEN ir<%13> = load vp<%6 >
364
+ ; CHECK-NEXT: vp<[[VEC_PTR:%.+]] > = vector-pointer (reverse) ir<%arrayidx>
365
+ ; CHECK-NEXT: WIDEN ir<%13> = load vp<[[VEC_PTR]] >
366
366
; CHECK-NEXT: WIDEN ir<%conv1> = fadd ir<%13>, ir<1.000000e+00>
367
367
; CHECK-NEXT: CLONE ir<%arrayidx3> = getelementptr inbounds ir<%A>, ir<%idxprom>
368
- ; CHECK-NEXT: vp<%7 > = vector-pointer (reverse) ir<%arrayidx3>
369
- ; CHECK-NEXT: WIDEN store vp<%7 >, ir<%conv1>
370
- ; CHECK-NEXT: EMIT vp<%8 > = add nuw vp<%3 >, vp<%0 >
371
- ; CHECK-NEXT: EMIT branch-on-count vp<%8 >, vp<%1 >
368
+ ; CHECK-NEXT: vp<[[VEC_PTR:%.+]] > = vector-pointer (reverse) ir<%arrayidx3>
369
+ ; CHECK-NEXT: WIDEN store vp<[[VEC_PTR]] >, ir<%conv1>
370
+ ; CHECK-NEXT: EMIT vp<[[CAN_IV_NEXT:%.+]] > = add nuw vp<[[CAN_IV]] >, vp<[[VFxUF]] >
371
+ ; CHECK-NEXT: EMIT branch-on-count vp<[[CAN_IV_NEXT]] >, vp<[[VEC_TC]] >
372
372
; CHECK-NEXT: No successors
373
373
; CHECK-NEXT: }
374
374
; CHECK-NEXT: Successor(s): middle.block
375
375
; CHECK-EMPTY:
376
376
; CHECK-NEXT: middle.block:
377
- ; CHECK-NEXT: EMIT vp<%10 > = icmp eq vp<%2 >, vp<%1 >
378
- ; CHECK-NEXT: EMIT branch-on-cond vp<%10 >
377
+ ; CHECK-NEXT: EMIT vp<[[CMP:%.+]] > = icmp eq vp<[[TC]] >, vp<[[VEC_TC]] >
378
+ ; CHECK-NEXT: EMIT branch-on-cond vp<[[CMP]] >
379
379
; CHECK-NEXT: Successor(s): ir-bb<for.cond.cleanup.loopexit>, scalar.ph
380
380
; CHECK-EMPTY:
381
381
; CHECK-NEXT: ir-bb<for.cond.cleanup.loopexit>:
0 commit comments