Skip to content

Commit 4dbce03

Browse files
committed
!fixup update tests
1 parent 9b33b6a commit 4dbce03

File tree

1 file changed

+19
-101
lines changed

1 file changed

+19
-101
lines changed

llvm/test/Transforms/LoopVectorize/dereferenceable-info-from-assumption-constant-size.ll

Lines changed: 19 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -113,16 +113,29 @@ define void @deref_assumption_in_header_constant_trip_count_loop_invariant_ptr(p
113113
; CHECK: [[VECTOR_PH]]:
114114
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
115115
; CHECK: [[VECTOR_BODY]]:
116-
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
116+
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[PRED_LOAD_CONTINUE2:.*]] ]
117117
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[INDEX]], 0
118118
; CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds i32, ptr [[B]], i64 [[TMP0]]
119119
; CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i32 0
120120
; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <2 x i32>, ptr [[TMP2]], align 4
121121
; CHECK-NEXT: [[TMP3:%.*]] = icmp sge <2 x i32> [[WIDE_LOAD]], zeroinitializer
122-
; CHECK-NEXT: [[TMP4:%.*]] = load i32, ptr [[A]], align 4
122+
; CHECK-NEXT: [[TMP4:%.*]] = xor <2 x i1> [[TMP3]], splat (i1 true)
123+
; CHECK-NEXT: [[TMP6:%.*]] = extractelement <2 x i1> [[TMP4]], i32 0
124+
; CHECK-NEXT: br i1 [[TMP6]], label %[[PRED_LOAD_IF:.*]], label %[[PRED_LOAD_CONTINUE:.*]]
125+
; CHECK: [[PRED_LOAD_IF]]:
123126
; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[A]], align 4
124-
; CHECK-NEXT: [[TMP6:%.*]] = insertelement <2 x i32> poison, i32 [[TMP4]], i32 0
125-
; CHECK-NEXT: [[TMP7:%.*]] = insertelement <2 x i32> [[TMP6]], i32 [[TMP5]], i32 1
127+
; CHECK-NEXT: [[TMP12:%.*]] = insertelement <2 x i32> poison, i32 [[TMP5]], i32 0
128+
; CHECK-NEXT: br label %[[PRED_LOAD_CONTINUE]]
129+
; CHECK: [[PRED_LOAD_CONTINUE]]:
130+
; CHECK-NEXT: [[TMP13:%.*]] = phi <2 x i32> [ poison, %[[VECTOR_BODY]] ], [ [[TMP12]], %[[PRED_LOAD_IF]] ]
131+
; CHECK-NEXT: [[TMP14:%.*]] = extractelement <2 x i1> [[TMP4]], i32 1
132+
; CHECK-NEXT: br i1 [[TMP14]], label %[[PRED_LOAD_IF1:.*]], label %[[PRED_LOAD_CONTINUE2]]
133+
; CHECK: [[PRED_LOAD_IF1]]:
134+
; CHECK-NEXT: [[TMP15:%.*]] = load i32, ptr [[A]], align 4
135+
; CHECK-NEXT: [[TMP11:%.*]] = insertelement <2 x i32> [[TMP13]], i32 [[TMP15]], i32 1
136+
; CHECK-NEXT: br label %[[PRED_LOAD_CONTINUE2]]
137+
; CHECK: [[PRED_LOAD_CONTINUE2]]:
138+
; CHECK-NEXT: [[TMP7:%.*]] = phi <2 x i32> [ [[TMP13]], %[[PRED_LOAD_CONTINUE]] ], [ [[TMP11]], %[[PRED_LOAD_IF1]] ]
126139
; CHECK-NEXT: [[PREDPHI:%.*]] = select <2 x i1> [[TMP3]], <2 x i32> [[WIDE_LOAD]], <2 x i32> [[TMP7]]
127140
; CHECK-NEXT: [[TMP8:%.*]] = getelementptr inbounds i32, ptr [[C]], i64 [[TMP0]]
128141
; CHECK-NEXT: [[TMP9:%.*]] = getelementptr inbounds i32, ptr [[TMP8]], i32 0
@@ -1183,7 +1196,7 @@ define void @deref_assumption_in_preheader_constant_trip_count_align_4_known_via
11831196
; CHECK-NEXT: store <2 x i32> [[PREDPHI]], ptr [[TMP17]], align 4
11841197
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
11851198
; CHECK-NEXT: [[TMP18:%.*]] = icmp eq i64 [[INDEX_NEXT]], 1000
1186-
; CHECK-NEXT: br i1 [[TMP18]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP24:![0-9]+]]
1199+
; CHECK-NEXT: br i1 [[TMP18]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP26:![0-9]+]]
11871200
; CHECK: [[MIDDLE_BLOCK]]:
11881201
; CHECK-NEXT: br i1 true, label %[[EXIT:.*]], label %[[SCALAR_PH]]
11891202
; CHECK: [[SCALAR_PH]]:
@@ -1205,7 +1218,7 @@ define void @deref_assumption_in_preheader_constant_trip_count_align_4_known_via
12051218
; CHECK-NEXT: store i32 [[MERGE]], ptr [[GEP_C]], align 4
12061219
; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
12071220
; CHECK-NEXT: [[EC:%.*]] = icmp eq i64 [[IV_NEXT]], 1000
1208-
; CHECK-NEXT: br i1 [[EC]], label %[[EXIT]], label %[[LOOP_HEADER]], !llvm.loop [[LOOP25:![0-9]+]]
1221+
; CHECK-NEXT: br i1 [[EC]], label %[[EXIT]], label %[[LOOP_HEADER]], !llvm.loop [[LOOP27:![0-9]+]]
12091222
; CHECK: [[EXIT]]:
12101223
; CHECK-NEXT: ret void
12111224
;
@@ -1261,101 +1274,6 @@ define void @deref_assumption_in_preheader_constant_trip_count_align_4_not_known
12611274
; CHECK-NEXT: store <2 x i32> [[PREDPHI]], ptr [[TMP17]], align 4
12621275
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
12631276
; CHECK-NEXT: [[TMP18:%.*]] = icmp eq i64 [[INDEX_NEXT]], 1000
1264-
; CHECK-NEXT: br i1 [[TMP18]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP26:![0-9]+]]
1265-
; CHECK: [[MIDDLE_BLOCK]]:
1266-
; CHECK-NEXT: br i1 true, label %[[EXIT:.*]], label %[[SCALAR_PH]]
1267-
; CHECK: [[SCALAR_PH]]:
1268-
; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 1000, %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
1269-
; CHECK-NEXT: br label %[[LOOP_HEADER:.*]]
1270-
; CHECK: [[LOOP_HEADER]]:
1271-
; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], %[[LOOP_LATCH:.*]] ]
1272-
; CHECK-NEXT: [[GEP_B:%.*]] = getelementptr inbounds i32, ptr [[B]], i64 [[IV]]
1273-
; CHECK-NEXT: [[L_B:%.*]] = load i32, ptr [[GEP_B]], align 4
1274-
; CHECK-NEXT: [[C_1:%.*]] = icmp sge i32 [[L_B]], 0
1275-
; CHECK-NEXT: br i1 [[C_1]], label %[[LOOP_LATCH]], label %[[LOOP_THEN:.*]]
1276-
; CHECK: [[LOOP_THEN]]:
1277-
; CHECK-NEXT: [[GEP_A:%.*]] = getelementptr i32, ptr [[A]], i64 [[IV]]
1278-
; CHECK-NEXT: [[L_A:%.*]] = load i32, ptr [[GEP_A]], align 4
1279-
; CHECK-NEXT: br label %[[LOOP_LATCH]]
1280-
; CHECK: [[LOOP_LATCH]]:
1281-
; CHECK-NEXT: [[MERGE:%.*]] = phi i32 [ [[L_A]], %[[LOOP_THEN]] ], [ [[L_B]], %[[LOOP_HEADER]] ]
1282-
; CHECK-NEXT: [[GEP_C:%.*]] = getelementptr inbounds i32, ptr [[C]], i64 [[IV]]
1283-
; CHECK-NEXT: store i32 [[MERGE]], ptr [[GEP_C]], align 4
1284-
; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
1285-
; CHECK-NEXT: [[EC:%.*]] = icmp eq i64 [[IV_NEXT]], 1000
1286-
; CHECK-NEXT: br i1 [[EC]], label %[[EXIT]], label %[[LOOP_HEADER]], !llvm.loop [[LOOP27:![0-9]+]]
1287-
; CHECK: [[EXIT]]:
1288-
; CHECK-NEXT: ret void
1289-
;
1290-
entry:
1291-
call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %a, i64 4000) ]
1292-
br label %loop.header
1293-
1294-
loop.header:
1295-
%iv = phi i64 [ 0, %entry ], [ %iv.next, %loop.latch ]
1296-
%gep.b = getelementptr inbounds i32, ptr %b, i64 %iv
1297-
%l.b = load i32, ptr %gep.b, align 4
1298-
%c.1 = icmp sge i32 %l.b, 0
1299-
br i1 %c.1, label %loop.latch, label %loop.then
1300-
1301-
loop.then:
1302-
%gep.a = getelementptr i32, ptr %a, i64 %iv
1303-
%l.a = load i32, ptr %gep.a, align 4
1304-
br label %loop.latch
1305-
1306-
loop.latch:
1307-
%merge = phi i32 [ %l.a, %loop.then ], [ %l.b, %loop.header ]
1308-
%gep.c = getelementptr inbounds i32, ptr %c, i64 %iv
1309-
store i32 %merge, ptr %gep.c, align 4
1310-
%iv.next = add nuw nsw i64 %iv, 1
1311-
%ec = icmp eq i64 %iv.next, 1000
1312-
br i1 %ec, label %exit, label %loop.header
1313-
1314-
exit:
1315-
ret void
1316-
}
1317-
1318-
define void @deref_assumption_in_preheader_constant_trip_count_align_4_not_known(ptr noalias %a, ptr noalias %b, ptr noalias %c) {
1319-
; CHECK-LABEL: define void @deref_assumption_in_preheader_constant_trip_count_align_4_not_known(
1320-
; CHECK-SAME: ptr noalias [[A:%.*]], ptr noalias [[B:%.*]], ptr noalias [[C:%.*]]) {
1321-
; CHECK-NEXT: [[ENTRY:.*]]:
1322-
; CHECK-NEXT: call void @llvm.assume(i1 true) [ "dereferenceable"(ptr [[A]], i64 4000) ]
1323-
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
1324-
; CHECK: [[VECTOR_PH]]:
1325-
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
1326-
; CHECK: [[VECTOR_BODY]]:
1327-
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[PRED_LOAD_CONTINUE2:.*]] ]
1328-
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[INDEX]], 0
1329-
; CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds i32, ptr [[B]], i64 [[TMP0]]
1330-
; CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i32 0
1331-
; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <2 x i32>, ptr [[TMP2]], align 4
1332-
; CHECK-NEXT: [[TMP3:%.*]] = icmp sge <2 x i32> [[WIDE_LOAD]], zeroinitializer
1333-
; CHECK-NEXT: [[TMP4:%.*]] = xor <2 x i1> [[TMP3]], splat (i1 true)
1334-
; CHECK-NEXT: [[TMP5:%.*]] = extractelement <2 x i1> [[TMP4]], i32 0
1335-
; CHECK-NEXT: br i1 [[TMP5]], label %[[PRED_LOAD_IF:.*]], label %[[PRED_LOAD_CONTINUE:.*]]
1336-
; CHECK: [[PRED_LOAD_IF]]:
1337-
; CHECK-NEXT: [[TMP6:%.*]] = getelementptr i32, ptr [[A]], i64 [[TMP0]]
1338-
; CHECK-NEXT: [[TMP7:%.*]] = load i32, ptr [[TMP6]], align 4
1339-
; CHECK-NEXT: [[TMP8:%.*]] = insertelement <2 x i32> poison, i32 [[TMP7]], i32 0
1340-
; CHECK-NEXT: br label %[[PRED_LOAD_CONTINUE]]
1341-
; CHECK: [[PRED_LOAD_CONTINUE]]:
1342-
; CHECK-NEXT: [[TMP9:%.*]] = phi <2 x i32> [ poison, %[[VECTOR_BODY]] ], [ [[TMP8]], %[[PRED_LOAD_IF]] ]
1343-
; CHECK-NEXT: [[TMP10:%.*]] = extractelement <2 x i1> [[TMP4]], i32 1
1344-
; CHECK-NEXT: br i1 [[TMP10]], label %[[PRED_LOAD_IF1:.*]], label %[[PRED_LOAD_CONTINUE2]]
1345-
; CHECK: [[PRED_LOAD_IF1]]:
1346-
; CHECK-NEXT: [[TMP11:%.*]] = add i64 [[INDEX]], 1
1347-
; CHECK-NEXT: [[TMP12:%.*]] = getelementptr i32, ptr [[A]], i64 [[TMP11]]
1348-
; CHECK-NEXT: [[TMP13:%.*]] = load i32, ptr [[TMP12]], align 4
1349-
; CHECK-NEXT: [[TMP14:%.*]] = insertelement <2 x i32> [[TMP9]], i32 [[TMP13]], i32 1
1350-
; CHECK-NEXT: br label %[[PRED_LOAD_CONTINUE2]]
1351-
; CHECK: [[PRED_LOAD_CONTINUE2]]:
1352-
; CHECK-NEXT: [[TMP15:%.*]] = phi <2 x i32> [ [[TMP9]], %[[PRED_LOAD_CONTINUE]] ], [ [[TMP14]], %[[PRED_LOAD_IF1]] ]
1353-
; CHECK-NEXT: [[PREDPHI:%.*]] = select <2 x i1> [[TMP3]], <2 x i32> [[WIDE_LOAD]], <2 x i32> [[TMP15]]
1354-
; CHECK-NEXT: [[TMP16:%.*]] = getelementptr inbounds i32, ptr [[C]], i64 [[TMP0]]
1355-
; CHECK-NEXT: [[TMP17:%.*]] = getelementptr inbounds i32, ptr [[TMP16]], i32 0
1356-
; CHECK-NEXT: store <2 x i32> [[PREDPHI]], ptr [[TMP17]], align 4
1357-
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
1358-
; CHECK-NEXT: [[TMP18:%.*]] = icmp eq i64 [[INDEX_NEXT]], 1000
13591277
; CHECK-NEXT: br i1 [[TMP18]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP28:![0-9]+]]
13601278
; CHECK: [[MIDDLE_BLOCK]]:
13611279
; CHECK-NEXT: br i1 true, label %[[EXIT:.*]], label %[[SCALAR_PH]]

0 commit comments

Comments
 (0)