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
2
2
; RUN: opt -p loop-vectorize -S %s | FileCheck --check-prefixes=CHECK %s
3
3
4
4
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"
7
7
define void @test_add_double_same_const_args_1 (ptr %res , ptr noalias %A , ptr noalias %B ) {
8
8
; CHECK-LABEL: define void @test_add_double_same_const_args_1(
9
9
; CHECK-SAME: ptr [[RES:%.*]], ptr noalias [[A:%.*]], ptr noalias [[B:%.*]]) {
10
- ; CHECK-NEXT: [[ENTRY:.*]]:
10
+ ; CHECK-NEXT: [[ENTRY:.*:]]
11
11
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
12
12
; CHECK: [[VECTOR_PH]]:
13
13
; 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
39
39
; CHECK-NEXT: [[TMP12:%.*]] = icmp eq i64 [[INDEX_NEXT]], 100
40
40
; CHECK-NEXT: br i1 [[TMP12]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
41
41
; 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]]
43
43
; 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
63
44
;
64
45
entry:
65
46
br label %loop
87
68
define void @test_add_double_same_const_args_2 (ptr %res , ptr noalias %A , ptr noalias %B ) {
88
69
; CHECK-LABEL: define void @test_add_double_same_const_args_2(
89
70
; CHECK-SAME: ptr [[RES:%.*]], ptr noalias [[A:%.*]], ptr noalias [[B:%.*]]) {
90
- ; CHECK-NEXT: [[ENTRY:.*]]:
71
+ ; CHECK-NEXT: [[ENTRY:.*:]]
91
72
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
92
73
; CHECK: [[VECTOR_PH]]:
93
74
; 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
119
100
; CHECK-NEXT: [[TMP12:%.*]] = icmp eq i64 [[INDEX_NEXT]], 100
120
101
; CHECK-NEXT: br i1 [[TMP12]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP4:![0-9]+]]
121
102
; 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]]
123
104
; 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
143
105
;
144
106
entry:
145
107
br label %loop
@@ -167,7 +129,7 @@ exit:
167
129
define void @test_add_double_mixed_const_args (ptr %res , ptr noalias %A , ptr noalias %B ) {
168
130
; CHECK-LABEL: define void @test_add_double_mixed_const_args(
169
131
; CHECK-SAME: ptr [[RES:%.*]], ptr noalias [[A:%.*]], ptr noalias [[B:%.*]]) {
170
- ; CHECK-NEXT: [[ENTRY:.*]]:
132
+ ; CHECK-NEXT: [[ENTRY:.*:]]
171
133
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
172
134
; CHECK: [[VECTOR_PH]]:
173
135
; 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
199
161
; CHECK-NEXT: [[TMP12:%.*]] = icmp eq i64 [[INDEX_NEXT]], 100
200
162
; CHECK-NEXT: br i1 [[TMP12]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP6:![0-9]+]]
201
163
; 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]]
203
165
; 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
223
166
;
224
167
entry:
225
168
br label %loop
0 commit comments