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
44target 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"
77define 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;
6445entry:
6546 br label %loop
8768define 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;
144106entry:
145107 br label %loop
@@ -167,7 +129,7 @@ exit:
167129define 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;
224167entry:
225168 br label %loop
0 commit comments