Skip to content

Commit 2f2100c

Browse files
committed
[LV] Add additional tests for #106441.
Further increase test coverage for #106441 Also regenerate checks with -filter-out-after.
1 parent a27da0a commit 2f2100c

4 files changed

+443
-707
lines changed

llvm/test/Transforms/LoopVectorize/AArch64/transform-narrow-interleave-to-widen-memory-constant-ops.ll

+7-64
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals none --version 5
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals none --filter-out-after "^scalar.ph:" --version 5
22
; RUN: opt -p loop-vectorize -S %s | FileCheck --check-prefixes=CHECK %s
33

44
target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-n32:64-S128-Fn32"
@@ -7,7 +7,7 @@ target triple = "arm64-apple-macosx15.0.0"
77
define void @test_add_double_same_const_args_1(ptr %res, ptr noalias %A, ptr noalias %B) {
88
; CHECK-LABEL: define void @test_add_double_same_const_args_1(
99
; CHECK-SAME: ptr [[RES:%.*]], ptr noalias [[A:%.*]], ptr noalias [[B:%.*]]) {
10-
; CHECK-NEXT: [[ENTRY:.*]]:
10+
; CHECK-NEXT: [[ENTRY:.*:]]
1111
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
1212
; CHECK: [[VECTOR_PH]]:
1313
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
@@ -39,27 +39,8 @@ define void @test_add_double_same_const_args_1(ptr %res, ptr noalias %A, ptr noa
3939
; CHECK-NEXT: [[TMP12:%.*]] = icmp eq i64 [[INDEX_NEXT]], 100
4040
; CHECK-NEXT: br i1 [[TMP12]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
4141
; CHECK: [[MIDDLE_BLOCK]]:
42-
; CHECK-NEXT: br i1 true, label %[[EXIT:.*]], label %[[SCALAR_PH]]
42+
; CHECK-NEXT: br i1 true, [[EXIT:label %.*]], label %[[SCALAR_PH]]
4343
; CHECK: [[SCALAR_PH]]:
44-
; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 100, %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
45-
; CHECK-NEXT: br label %[[LOOP:.*]]
46-
; CHECK: [[LOOP]]:
47-
; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], %[[LOOP]] ]
48-
; CHECK-NEXT: [[GEP_A_0:%.*]] = getelementptr inbounds nuw { double, double }, ptr [[A]], i64 [[IV]]
49-
; CHECK-NEXT: [[L_A_0:%.*]] = load double, ptr [[GEP_A_0]], align 4
50-
; CHECK-NEXT: [[GEP_A_1:%.*]] = getelementptr inbounds nuw i8, ptr [[GEP_A_0]], i64 8
51-
; CHECK-NEXT: [[L_A_1:%.*]] = load double, ptr [[GEP_A_1]], align 4
52-
; CHECK-NEXT: [[ADD_0:%.*]] = fadd double [[L_A_0]], 1.000000e+00
53-
; CHECK-NEXT: [[ADD_1:%.*]] = fadd double [[L_A_1]], 1.000000e+00
54-
; CHECK-NEXT: [[GEP_RES_0:%.*]] = getelementptr inbounds nuw { double, double }, ptr [[RES]], i64 [[IV]]
55-
; CHECK-NEXT: store double [[ADD_0]], ptr [[GEP_RES_0]], align 4
56-
; CHECK-NEXT: [[GEP_RES_1:%.*]] = getelementptr inbounds nuw i8, ptr [[GEP_RES_0]], i64 8
57-
; CHECK-NEXT: store double [[ADD_1]], ptr [[GEP_RES_1]], align 4
58-
; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
59-
; CHECK-NEXT: [[EC:%.*]] = icmp eq i64 [[IV_NEXT]], 100
60-
; CHECK-NEXT: br i1 [[EC]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP3:![0-9]+]]
61-
; CHECK: [[EXIT]]:
62-
; CHECK-NEXT: ret void
6344
;
6445
entry:
6546
br label %loop
@@ -87,7 +68,7 @@ exit:
8768
define void @test_add_double_same_const_args_2(ptr %res, ptr noalias %A, ptr noalias %B) {
8869
; CHECK-LABEL: define void @test_add_double_same_const_args_2(
8970
; CHECK-SAME: ptr [[RES:%.*]], ptr noalias [[A:%.*]], ptr noalias [[B:%.*]]) {
90-
; CHECK-NEXT: [[ENTRY:.*]]:
71+
; CHECK-NEXT: [[ENTRY:.*:]]
9172
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
9273
; CHECK: [[VECTOR_PH]]:
9374
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
@@ -119,27 +100,8 @@ define void @test_add_double_same_const_args_2(ptr %res, ptr noalias %A, ptr noa
119100
; CHECK-NEXT: [[TMP12:%.*]] = icmp eq i64 [[INDEX_NEXT]], 100
120101
; CHECK-NEXT: br i1 [[TMP12]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP4:![0-9]+]]
121102
; CHECK: [[MIDDLE_BLOCK]]:
122-
; CHECK-NEXT: br i1 true, label %[[EXIT:.*]], label %[[SCALAR_PH]]
103+
; CHECK-NEXT: br i1 true, [[EXIT:label %.*]], label %[[SCALAR_PH]]
123104
; CHECK: [[SCALAR_PH]]:
124-
; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 100, %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
125-
; CHECK-NEXT: br label %[[LOOP:.*]]
126-
; CHECK: [[LOOP]]:
127-
; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], %[[LOOP]] ]
128-
; CHECK-NEXT: [[GEP_B_0:%.*]] = getelementptr inbounds nuw { double, double }, ptr [[B]], i64 [[IV]]
129-
; CHECK-NEXT: [[L_B_0:%.*]] = load double, ptr [[GEP_B_0]], align 4
130-
; CHECK-NEXT: [[ADD_0:%.*]] = fadd double 1.000000e+00, [[L_B_0]]
131-
; CHECK-NEXT: [[GEP_B_1:%.*]] = getelementptr inbounds nuw i8, ptr [[GEP_B_0]], i64 8
132-
; CHECK-NEXT: [[L_B_1:%.*]] = load double, ptr [[GEP_B_1]], align 4
133-
; CHECK-NEXT: [[ADD_1:%.*]] = fadd double 1.000000e+00, [[L_B_1]]
134-
; CHECK-NEXT: [[GEP_RES_0:%.*]] = getelementptr inbounds nuw { double, double }, ptr [[RES]], i64 [[IV]]
135-
; CHECK-NEXT: store double [[ADD_0]], ptr [[GEP_RES_0]], align 4
136-
; CHECK-NEXT: [[GEP_RES_1:%.*]] = getelementptr inbounds nuw i8, ptr [[GEP_RES_0]], i64 8
137-
; CHECK-NEXT: store double [[ADD_1]], ptr [[GEP_RES_1]], align 4
138-
; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
139-
; CHECK-NEXT: [[EC:%.*]] = icmp eq i64 [[IV_NEXT]], 100
140-
; CHECK-NEXT: br i1 [[EC]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP5:![0-9]+]]
141-
; CHECK: [[EXIT]]:
142-
; CHECK-NEXT: ret void
143105
;
144106
entry:
145107
br label %loop
@@ -167,7 +129,7 @@ exit:
167129
define void @test_add_double_mixed_const_args(ptr %res, ptr noalias %A, ptr noalias %B) {
168130
; CHECK-LABEL: define void @test_add_double_mixed_const_args(
169131
; CHECK-SAME: ptr [[RES:%.*]], ptr noalias [[A:%.*]], ptr noalias [[B:%.*]]) {
170-
; CHECK-NEXT: [[ENTRY:.*]]:
132+
; CHECK-NEXT: [[ENTRY:.*:]]
171133
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
172134
; CHECK: [[VECTOR_PH]]:
173135
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
@@ -199,27 +161,8 @@ define void @test_add_double_mixed_const_args(ptr %res, ptr noalias %A, ptr noal
199161
; CHECK-NEXT: [[TMP12:%.*]] = icmp eq i64 [[INDEX_NEXT]], 100
200162
; CHECK-NEXT: br i1 [[TMP12]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP6:![0-9]+]]
201163
; CHECK: [[MIDDLE_BLOCK]]:
202-
; CHECK-NEXT: br i1 true, label %[[EXIT:.*]], label %[[SCALAR_PH]]
164+
; CHECK-NEXT: br i1 true, [[EXIT:label %.*]], label %[[SCALAR_PH]]
203165
; CHECK: [[SCALAR_PH]]:
204-
; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 100, %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
205-
; CHECK-NEXT: br label %[[LOOP:.*]]
206-
; CHECK: [[LOOP]]:
207-
; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], %[[LOOP]] ]
208-
; CHECK-NEXT: [[GEP_B_0:%.*]] = getelementptr inbounds nuw { double, double }, ptr [[B]], i64 [[IV]]
209-
; CHECK-NEXT: [[L_B_0:%.*]] = load double, ptr [[GEP_B_0]], align 4
210-
; CHECK-NEXT: [[ADD_0:%.*]] = fadd double 1.000000e+00, [[L_B_0]]
211-
; CHECK-NEXT: [[GEP_B_1:%.*]] = getelementptr inbounds nuw i8, ptr [[GEP_B_0]], i64 8
212-
; CHECK-NEXT: [[L_B_1:%.*]] = load double, ptr [[GEP_B_1]], align 4
213-
; CHECK-NEXT: [[ADD_1:%.*]] = fadd double 2.000000e+00, [[L_B_1]]
214-
; CHECK-NEXT: [[GEP_RES_0:%.*]] = getelementptr inbounds nuw { double, double }, ptr [[RES]], i64 [[IV]]
215-
; CHECK-NEXT: store double [[ADD_0]], ptr [[GEP_RES_0]], align 4
216-
; CHECK-NEXT: [[GEP_RES_1:%.*]] = getelementptr inbounds nuw i8, ptr [[GEP_RES_0]], i64 8
217-
; CHECK-NEXT: store double [[ADD_1]], ptr [[GEP_RES_1]], align 4
218-
; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
219-
; CHECK-NEXT: [[EC:%.*]] = icmp eq i64 [[IV_NEXT]], 100
220-
; CHECK-NEXT: br i1 [[EC]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP7:![0-9]+]]
221-
; CHECK: [[EXIT]]:
222-
; CHECK-NEXT: ret void
223166
;
224167
entry:
225168
br label %loop

llvm/test/Transforms/LoopVectorize/AArch64/transform-narrow-interleave-to-widen-memory-cost.ll

+6-51
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals none --version 5
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals none --filter-out-after "^scalar.ph:" --version 5
22
; RUN: opt -p loop-vectorize -S %s | FileCheck %s
33

44
target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-n32:64-S128-Fn32"
@@ -7,7 +7,7 @@ target triple = "arm64-apple-macosx"
77
define void @test_complex_add_float(ptr %res, ptr noalias %A, ptr noalias %B, i64 %N) {
88
; CHECK-LABEL: define void @test_complex_add_float(
99
; CHECK-SAME: ptr [[RES:%.*]], ptr noalias [[A:%.*]], ptr noalias [[B:%.*]], i64 [[N:%.*]]) {
10-
; CHECK-NEXT: [[ENTRY:.*]]:
10+
; CHECK-NEXT: [[ENTRY:.*:]]
1111
; CHECK-NEXT: [[MIN_ITERS_CHECK:%.*]] = icmp ult i64 [[N]], 8
1212
; CHECK-NEXT: br i1 [[MIN_ITERS_CHECK]], label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
1313
; CHECK: [[VECTOR_PH]]:
@@ -51,31 +51,8 @@ define void @test_complex_add_float(ptr %res, ptr noalias %A, ptr noalias %B, i6
5151
; CHECK-NEXT: br i1 [[TMP14]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
5252
; CHECK: [[MIDDLE_BLOCK]]:
5353
; CHECK-NEXT: [[CMP_N:%.*]] = icmp eq i64 [[N]], [[N_VEC]]
54-
; CHECK-NEXT: br i1 [[CMP_N]], label %[[EXIT:.*]], label %[[SCALAR_PH]]
54+
; CHECK-NEXT: br i1 [[CMP_N]], [[EXIT:label %.*]], label %[[SCALAR_PH]]
5555
; CHECK: [[SCALAR_PH]]:
56-
; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC]], %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
57-
; CHECK-NEXT: br label %[[LOOP:.*]]
58-
; CHECK: [[LOOP]]:
59-
; CHECK-NEXT: [[IV1:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], %[[LOOP]] ]
60-
; CHECK-NEXT: [[GEP_A_2:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[A]], i64 [[IV1]]
61-
; CHECK-NEXT: [[GEP_B_2:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[B]], i64 [[IV1]]
62-
; CHECK-NEXT: [[L_A_0:%.*]] = load float, ptr [[GEP_A_2]], align 4
63-
; CHECK-NEXT: [[GEP_A_1:%.*]] = getelementptr inbounds nuw i8, ptr [[GEP_A_2]], i64 4
64-
; CHECK-NEXT: [[L_A_1:%.*]] = load float, ptr [[GEP_A_1]], align 4
65-
; CHECK-NEXT: [[L_B_0:%.*]] = load float, ptr [[GEP_B_2]], align 4
66-
; CHECK-NEXT: [[ADD_0:%.*]] = fadd float [[L_A_0]], [[L_B_0]]
67-
; CHECK-NEXT: [[GEP_B_1:%.*]] = getelementptr inbounds nuw i8, ptr [[GEP_B_2]], i64 4
68-
; CHECK-NEXT: [[L_B_1:%.*]] = load float, ptr [[GEP_B_1]], align 4
69-
; CHECK-NEXT: [[ADD_1:%.*]] = fadd float [[L_A_1]], [[L_B_1]]
70-
; CHECK-NEXT: [[GEP_RES_0:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[RES]], i64 [[IV1]]
71-
; CHECK-NEXT: store float [[ADD_0]], ptr [[GEP_RES_0]], align 4
72-
; CHECK-NEXT: [[GEP_RES_1:%.*]] = getelementptr inbounds nuw i8, ptr [[GEP_RES_0]], i64 4
73-
; CHECK-NEXT: store float [[ADD_1]], ptr [[GEP_RES_1]], align 4
74-
; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV1]], 1
75-
; CHECK-NEXT: [[EC:%.*]] = icmp eq i64 [[IV_NEXT]], [[N]]
76-
; CHECK-NEXT: br i1 [[EC]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP3:![0-9]+]]
77-
; CHECK: [[EXIT]]:
78-
; CHECK-NEXT: ret void
7956
;
8057
entry:
8158
br label %loop
@@ -107,7 +84,7 @@ exit:
10784
define void @test_complex_add_double(ptr %res, ptr noalias %A, ptr noalias %B, i64 %N) {
10885
; CHECK-LABEL: define void @test_complex_add_double(
10986
; CHECK-SAME: ptr [[RES:%.*]], ptr noalias [[A:%.*]], ptr noalias [[B:%.*]], i64 [[N:%.*]]) {
110-
; CHECK-NEXT: [[ENTRY:.*]]:
87+
; CHECK-NEXT: [[ENTRY:.*:]]
11188
; CHECK-NEXT: [[MIN_ITERS_CHECK:%.*]] = icmp ult i64 [[N]], 4
11289
; CHECK-NEXT: br i1 [[MIN_ITERS_CHECK]], label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
11390
; CHECK: [[VECTOR_PH]]:
@@ -151,31 +128,9 @@ define void @test_complex_add_double(ptr %res, ptr noalias %A, ptr noalias %B, i
151128
; CHECK-NEXT: br i1 [[TMP14]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP4:![0-9]+]]
152129
; CHECK: [[MIDDLE_BLOCK]]:
153130
; CHECK-NEXT: [[CMP_N:%.*]] = icmp eq i64 [[N]], [[N_VEC]]
154-
; CHECK-NEXT: br i1 [[CMP_N]], label %[[EXIT:.*]], label %[[SCALAR_PH]]
131+
; CHECK-NEXT: br i1 [[CMP_N]], [[EXIT:label %.*]], label %[[SCALAR_PH]]
155132
; CHECK: [[SCALAR_PH]]:
156-
; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC]], %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
157-
; CHECK-NEXT: br label %[[LOOP:.*]]
158-
; CHECK: [[LOOP]]:
159-
; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], %[[LOOP]] ]
160-
; CHECK-NEXT: [[GEP_A_0:%.*]] = getelementptr inbounds nuw { double, double }, ptr [[A]], i64 [[IV]]
161-
; CHECK-NEXT: [[GEP_B_0:%.*]] = getelementptr inbounds nuw { double, double }, ptr [[B]], i64 [[IV]]
162-
; CHECK-NEXT: [[L_A_0:%.*]] = load double, ptr [[GEP_A_0]], align 4
163-
; CHECK-NEXT: [[GEP_A_1:%.*]] = getelementptr inbounds nuw i8, ptr [[GEP_A_0]], i64 8
164-
; CHECK-NEXT: [[L_A_1:%.*]] = load double, ptr [[GEP_A_1]], align 4
165-
; CHECK-NEXT: [[L_B_0:%.*]] = load double, ptr [[GEP_B_0]], align 4
166-
; CHECK-NEXT: [[ADD_0:%.*]] = fadd double [[L_A_0]], [[L_B_0]]
167-
; CHECK-NEXT: [[GEP_B_1:%.*]] = getelementptr inbounds nuw i8, ptr [[GEP_B_0]], i64 8
168-
; CHECK-NEXT: [[L_B_1:%.*]] = load double, ptr [[GEP_B_1]], align 4
169-
; CHECK-NEXT: [[ADD_1:%.*]] = fadd double [[L_A_1]], [[L_B_1]]
170-
; CHECK-NEXT: [[GEP_RES_0:%.*]] = getelementptr inbounds nuw { double, double }, ptr [[RES]], i64 [[IV]]
171-
; CHECK-NEXT: store double [[ADD_0]], ptr [[GEP_RES_0]], align 4
172-
; CHECK-NEXT: [[GEP_RES_1:%.*]] = getelementptr inbounds nuw i8, ptr [[GEP_RES_0]], i64 8
173-
; CHECK-NEXT: store double [[ADD_1]], ptr [[GEP_RES_1]], align 4
174-
; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
175-
; CHECK-NEXT: [[EC:%.*]] = icmp eq i64 [[IV_NEXT]], [[N]]
176-
; CHECK-NEXT: br i1 [[EC]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP5:![0-9]+]]
177-
; CHECK: [[EXIT]]:
178-
; CHECK-NEXT: ret void
133+
;
179134
entry:
180135
br label %loop
181136

0 commit comments

Comments
 (0)