Skip to content

Commit 99b95bd

Browse files
committed
[GVN] Regenerate test checks (NFC)
1 parent b72f1ec commit 99b95bd

File tree

1 file changed

+51
-17
lines changed

1 file changed

+51
-17
lines changed

llvm/test/Transforms/GVN/PRE/pre-after-rle.ll

Lines changed: 51 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,32 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
12
; RUN: opt -passes='require<phi-values>,gvn' -S < %s | FileCheck %s
23

34
declare noalias i8* @malloc(i64)
45

56
; Detecting that %s is fully redundant should let us detect that %w is partially
67
; redundant.
78
define void @fn1(i32** noalias %start, i32* %width, i32 %h) {
8-
; CHECK-LABEL: @fn1
9+
; CHECK-LABEL: @fn1(
10+
; CHECK-NEXT: entry:
11+
; CHECK-NEXT: [[CALL:%.*]] = tail call noalias i8* @malloc(i64 1024)
12+
; CHECK-NEXT: [[CALL_CAST:%.*]] = bitcast i8* [[CALL]] to i32*
13+
; CHECK-NEXT: store i32* [[CALL_CAST]], i32** [[START:%.*]], align 8
14+
; CHECK-NEXT: br label [[PREHEADER:%.*]]
15+
; CHECK: preheader:
16+
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 1, [[H:%.*]]
17+
; CHECK-NEXT: br i1 [[CMP]], label [[PREHEADER_BODY_CRIT_EDGE:%.*]], label [[EXIT:%.*]]
18+
; CHECK: preheader.body_crit_edge:
19+
; CHECK-NEXT: [[W_PRE:%.*]] = load i32, i32* [[WIDTH:%.*]], align 8
20+
; CHECK-NEXT: br label [[BODY:%.*]]
21+
; CHECK: body:
22+
; CHECK-NEXT: [[J:%.*]] = phi i32 [ 0, [[PREHEADER_BODY_CRIT_EDGE]] ], [ [[J_NEXT:%.*]], [[BODY]] ]
23+
; CHECK-NEXT: store i32 0, i32* [[CALL_CAST]], align 4
24+
; CHECK-NEXT: [[J_NEXT]] = add nuw nsw i32 [[J]], 1
25+
; CHECK-NEXT: [[CMP3:%.*]] = icmp slt i32 [[J_NEXT]], [[W_PRE]]
26+
; CHECK-NEXT: br i1 [[CMP3]], label [[BODY]], label [[PREHEADER]]
27+
; CHECK: exit:
28+
; CHECK-NEXT: ret void
29+
;
930
entry:
1031
%call = tail call noalias i8* @malloc(i64 1024)
1132
%call.cast = bitcast i8* %call to i32*
@@ -16,12 +37,6 @@ preheader:
1637
%cmp = icmp slt i32 1, %h
1738
br i1 %cmp, label %body, label %exit
1839

19-
; CHECK-LABEL: preheader.body_crit_edge:
20-
; CHECK: load i32, i32* %width, align 8
21-
22-
; CHECK-LABEL: body:
23-
; CHECK-NOT: load i32*, i32** %start, align 8
24-
; CHECK-NOT: load i32, i32* %width, align 8
2540
body:
2641
%j = phi i32 [ 0, %preheader ], [ %j.next, %body ]
2742
%s = load i32*, i32** %start, align 8
@@ -40,7 +55,35 @@ exit:
4055
; %w is partially redundant requires alias analysis that can analyze those
4156
; values.
4257
define void @fn2(i32** noalias %start, i32* %width, i32 %h, i32 %arg) {
43-
; CHECK-LABEL: @fn2
58+
; CHECK-LABEL: @fn2(
59+
; CHECK-NEXT: entry:
60+
; CHECK-NEXT: [[CALL:%.*]] = tail call noalias i8* @malloc(i64 1024)
61+
; CHECK-NEXT: [[CALL_CAST:%.*]] = bitcast i8* [[CALL]] to i32*
62+
; CHECK-NEXT: [[CMP1:%.*]] = icmp slt i32 [[ARG:%.*]], 0
63+
; CHECK-NEXT: br i1 [[CMP1]], label [[IF:%.*]], label [[ELSE:%.*]]
64+
; CHECK: if:
65+
; CHECK-NEXT: store i32* [[CALL_CAST]], i32** [[START:%.*]], align 8
66+
; CHECK-NEXT: br label [[PREHEADER:%.*]]
67+
; CHECK: else:
68+
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds i32, i32* [[CALL_CAST]], i32 [[ARG]]
69+
; CHECK-NEXT: store i32* [[GEP]], i32** [[START]], align 8
70+
; CHECK-NEXT: br label [[PREHEADER]]
71+
; CHECK: preheader:
72+
; CHECK-NEXT: [[S:%.*]] = phi i32* [ [[S]], [[BODY:%.*]] ], [ [[GEP]], [[ELSE]] ], [ [[CALL_CAST]], [[IF]] ]
73+
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 1, [[H:%.*]]
74+
; CHECK-NEXT: br i1 [[CMP]], label [[PREHEADER_BODY_CRIT_EDGE:%.*]], label [[EXIT:%.*]]
75+
; CHECK: preheader.body_crit_edge:
76+
; CHECK-NEXT: [[W_PRE:%.*]] = load i32, i32* [[WIDTH:%.*]], align 8
77+
; CHECK-NEXT: br label [[BODY]]
78+
; CHECK: body:
79+
; CHECK-NEXT: [[J:%.*]] = phi i32 [ 0, [[PREHEADER_BODY_CRIT_EDGE]] ], [ [[J_NEXT:%.*]], [[BODY]] ]
80+
; CHECK-NEXT: store i32 0, i32* [[S]], align 4
81+
; CHECK-NEXT: [[J_NEXT]] = add nuw nsw i32 [[J]], 1
82+
; CHECK-NEXT: [[CMP3:%.*]] = icmp slt i32 [[J_NEXT]], [[W_PRE]]
83+
; CHECK-NEXT: br i1 [[CMP3]], label [[BODY]], label [[PREHEADER]]
84+
; CHECK: exit:
85+
; CHECK-NEXT: ret void
86+
;
4487
entry:
4588
%call = tail call noalias i8* @malloc(i64 1024)
4689
%call.cast = bitcast i8* %call to i32*
@@ -56,19 +99,10 @@ else:
5699
store i32* %gep, i32** %start, align 8
57100
br label %preheader
58101

59-
; CHECK-LABEL: preheader:
60-
; CHECK: %s = phi i32* [ %s, %body ], [ %gep, %else ], [ %call.cast, %if ]
61-
62102
preheader:
63103
%cmp = icmp slt i32 1, %h
64104
br i1 %cmp, label %body, label %exit
65105

66-
; CHECK-LABEL: preheader.body_crit_edge:
67-
; CHECK: load i32, i32* %width, align 8
68-
69-
; CHECK-LABEL: body:
70-
; CHECK-NOT: load i32*, i32** %start, align 8
71-
; CHECK-NOT: load i32, i32* %width, align 8
72106
body:
73107
%j = phi i32 [ 0, %preheader ], [ %j.next, %body ]
74108
%s = load i32*, i32** %start, align 8

0 commit comments

Comments
 (0)