annotate llvm/test/Transforms/NewGVN/condprop-xfail.ll @ 150:1d019706d866

LLVM10
author anatofuz
date Thu, 13 Feb 2020 15:10:13 +0900
parents
children 2e18cbf3894f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 ; XFAIL: *
anatofuz
parents:
diff changeset
2 ; RUN: opt < %s -basicaa -newgvn -S | FileCheck %s
anatofuz
parents:
diff changeset
3
anatofuz
parents:
diff changeset
4 @a = external global i32 ; <i32*> [#uses=7]
anatofuz
parents:
diff changeset
5
anatofuz
parents:
diff changeset
6 ;; NewGVN takes two passes to get this, because we prune predicateinfo
anatofuz
parents:
diff changeset
7 ; CHECK-LABEL: @test1(
anatofuz
parents:
diff changeset
8 define i32 @test1() nounwind {
anatofuz
parents:
diff changeset
9 entry:
anatofuz
parents:
diff changeset
10 %0 = load i32, i32* @a, align 4
anatofuz
parents:
diff changeset
11 %1 = icmp eq i32 %0, 4
anatofuz
parents:
diff changeset
12 br i1 %1, label %bb, label %bb1
anatofuz
parents:
diff changeset
13
anatofuz
parents:
diff changeset
14 bb: ; preds = %entry
anatofuz
parents:
diff changeset
15 br label %bb8
anatofuz
parents:
diff changeset
16
anatofuz
parents:
diff changeset
17 bb1: ; preds = %entry
anatofuz
parents:
diff changeset
18 %2 = load i32, i32* @a, align 4
anatofuz
parents:
diff changeset
19 %3 = icmp eq i32 %2, 5
anatofuz
parents:
diff changeset
20 br i1 %3, label %bb2, label %bb3
anatofuz
parents:
diff changeset
21
anatofuz
parents:
diff changeset
22 bb2: ; preds = %bb1
anatofuz
parents:
diff changeset
23 br label %bb8
anatofuz
parents:
diff changeset
24
anatofuz
parents:
diff changeset
25 bb3: ; preds = %bb1
anatofuz
parents:
diff changeset
26 %4 = load i32, i32* @a, align 4
anatofuz
parents:
diff changeset
27 %5 = icmp eq i32 %4, 4
anatofuz
parents:
diff changeset
28 ; CHECK: br i1 false, label %bb4, label %bb5
anatofuz
parents:
diff changeset
29 br i1 %5, label %bb4, label %bb5
anatofuz
parents:
diff changeset
30
anatofuz
parents:
diff changeset
31 bb4: ; preds = %bb3
anatofuz
parents:
diff changeset
32 %6 = load i32, i32* @a, align 4
anatofuz
parents:
diff changeset
33 %7 = add i32 %6, 5
anatofuz
parents:
diff changeset
34 br label %bb8
anatofuz
parents:
diff changeset
35
anatofuz
parents:
diff changeset
36 bb5: ; preds = %bb3
anatofuz
parents:
diff changeset
37 %8 = load i32, i32* @a, align 4
anatofuz
parents:
diff changeset
38 %9 = icmp eq i32 %8, 5
anatofuz
parents:
diff changeset
39 ; CHECK: br i1 false, label %bb6, label %bb7
anatofuz
parents:
diff changeset
40 br i1 %9, label %bb6, label %bb7
anatofuz
parents:
diff changeset
41
anatofuz
parents:
diff changeset
42 bb6: ; preds = %bb5
anatofuz
parents:
diff changeset
43 %10 = load i32, i32* @a, align 4
anatofuz
parents:
diff changeset
44 %11 = add i32 %10, 4
anatofuz
parents:
diff changeset
45 br label %bb8
anatofuz
parents:
diff changeset
46
anatofuz
parents:
diff changeset
47 bb7: ; preds = %bb5
anatofuz
parents:
diff changeset
48 %12 = load i32, i32* @a, align 4
anatofuz
parents:
diff changeset
49 br label %bb8
anatofuz
parents:
diff changeset
50
anatofuz
parents:
diff changeset
51 bb8: ; preds = %bb7, %bb6, %bb4, %bb2, %bb
anatofuz
parents:
diff changeset
52 %.0 = phi i32 [ %12, %bb7 ], [ %11, %bb6 ], [ %7, %bb4 ], [ 4, %bb2 ], [ 5, %bb ]
anatofuz
parents:
diff changeset
53 br label %return
anatofuz
parents:
diff changeset
54
anatofuz
parents:
diff changeset
55 return: ; preds = %bb8
anatofuz
parents:
diff changeset
56 ret i32 %.0
anatofuz
parents:
diff changeset
57 }
anatofuz
parents:
diff changeset
58 ;; NewGVN takes two passes to get test[6,8] and test[6,8]_fp's main part
anatofuz
parents:
diff changeset
59 ;; The icmp ne requires an equality table that inserts the inequalities for each
anatofuz
parents:
diff changeset
60 ;; discovered equality while processing.
anatofuz
parents:
diff changeset
61 ; CHECK-LABEL: @test6(
anatofuz
parents:
diff changeset
62 define i1 @test6(i32 %x, i32 %y) {
anatofuz
parents:
diff changeset
63 %cmp2 = icmp ne i32 %x, %y
anatofuz
parents:
diff changeset
64 %cmp = icmp eq i32 %x, %y
anatofuz
parents:
diff changeset
65 %cmp3 = icmp eq i32 %x, %y
anatofuz
parents:
diff changeset
66 br i1 %cmp, label %same, label %different
anatofuz
parents:
diff changeset
67
anatofuz
parents:
diff changeset
68 same:
anatofuz
parents:
diff changeset
69 ; CHECK: ret i1 false
anatofuz
parents:
diff changeset
70 ret i1 %cmp2
anatofuz
parents:
diff changeset
71
anatofuz
parents:
diff changeset
72 different:
anatofuz
parents:
diff changeset
73 ; CHECK: ret i1 false
anatofuz
parents:
diff changeset
74 ret i1 %cmp3
anatofuz
parents:
diff changeset
75 }
anatofuz
parents:
diff changeset
76
anatofuz
parents:
diff changeset
77 ; CHECK-LABEL: @test6_fp(
anatofuz
parents:
diff changeset
78 define i1 @test6_fp(float %x, float %y) {
anatofuz
parents:
diff changeset
79 %cmp2 = fcmp une float %x, %y
anatofuz
parents:
diff changeset
80 %cmp = fcmp oeq float %x, %y
anatofuz
parents:
diff changeset
81 %cmp3 = fcmp oeq float %x, %y
anatofuz
parents:
diff changeset
82 br i1 %cmp, label %same, label %different
anatofuz
parents:
diff changeset
83
anatofuz
parents:
diff changeset
84 same:
anatofuz
parents:
diff changeset
85 ; CHECK: ret i1 false
anatofuz
parents:
diff changeset
86 ret i1 %cmp2
anatofuz
parents:
diff changeset
87
anatofuz
parents:
diff changeset
88 different:
anatofuz
parents:
diff changeset
89 ; CHECK: ret i1 false
anatofuz
parents:
diff changeset
90 ret i1 %cmp3
anatofuz
parents:
diff changeset
91 }
anatofuz
parents:
diff changeset
92 ; CHECK-LABEL: @test8(
anatofuz
parents:
diff changeset
93 define i1 @test8(i32 %x, i32 %y) {
anatofuz
parents:
diff changeset
94 %cmp2 = icmp sle i32 %x, %y
anatofuz
parents:
diff changeset
95 %cmp = icmp sgt i32 %x, %y
anatofuz
parents:
diff changeset
96 %cmp3 = icmp sgt i32 %x, %y
anatofuz
parents:
diff changeset
97 br i1 %cmp, label %same, label %different
anatofuz
parents:
diff changeset
98
anatofuz
parents:
diff changeset
99 same:
anatofuz
parents:
diff changeset
100 ; CHECK: ret i1 false
anatofuz
parents:
diff changeset
101 ret i1 %cmp2
anatofuz
parents:
diff changeset
102
anatofuz
parents:
diff changeset
103 different:
anatofuz
parents:
diff changeset
104 ; CHECK: ret i1 false
anatofuz
parents:
diff changeset
105 ret i1 %cmp3
anatofuz
parents:
diff changeset
106 }
anatofuz
parents:
diff changeset
107
anatofuz
parents:
diff changeset
108 ; CHECK-LABEL: @test8_fp(
anatofuz
parents:
diff changeset
109 define i1 @test8_fp(float %x, float %y) {
anatofuz
parents:
diff changeset
110 %cmp2 = fcmp ule float %x, %y
anatofuz
parents:
diff changeset
111 %cmp = fcmp ogt float %x, %y
anatofuz
parents:
diff changeset
112 %cmp3 = fcmp ogt float %x, %y
anatofuz
parents:
diff changeset
113 br i1 %cmp, label %same, label %different
anatofuz
parents:
diff changeset
114
anatofuz
parents:
diff changeset
115 same:
anatofuz
parents:
diff changeset
116 ; CHECK: ret i1 false
anatofuz
parents:
diff changeset
117 ret i1 %cmp2
anatofuz
parents:
diff changeset
118
anatofuz
parents:
diff changeset
119 different:
anatofuz
parents:
diff changeset
120 ; CHECK: ret i1 false
anatofuz
parents:
diff changeset
121 ret i1 %cmp3
anatofuz
parents:
diff changeset
122 }
anatofuz
parents:
diff changeset
123