comparison test/CodeGen/AArch64/analyze-branch.ll @ 134:3a76565eade5 LLVM5.0.1

update 5.0.1
author mir3636
date Sat, 17 Feb 2018 09:57:20 +0900
parents 60c9769439b8
children
comparison
equal deleted inserted replaced
133:c60214abe0e8 134:3a76565eade5
16 br i1 %tst, label %true, label %false, !prof !0 16 br i1 %tst, label %true, label %false, !prof !0
17 17
18 ; CHECK: cmp {{w[0-9]+}}, #42 18 ; CHECK: cmp {{w[0-9]+}}, #42
19 19
20 ; CHECK: b.ne [[FALSE:.LBB[0-9]+_[0-9]+]] 20 ; CHECK: b.ne [[FALSE:.LBB[0-9]+_[0-9]+]]
21 ; CHECK-NEXT: // BB# 21 ; CHECK-NEXT: // %bb.
22 ; CHECK-NEXT: bl test_true 22 ; CHECK-NEXT: bl test_true
23 23
24 ; CHECK: [[FALSE]]: 24 ; CHECK: [[FALSE]]:
25 ; CHECK: bl test_false 25 ; CHECK: bl test_false
26 26
39 br i1 %tst, label %true, label %false, !prof !1 39 br i1 %tst, label %true, label %false, !prof !1
40 40
41 ; CHECK: cmp {{w[0-9]+}}, #42 41 ; CHECK: cmp {{w[0-9]+}}, #42
42 42
43 ; CHECK: b.eq [[TRUE:.LBB[0-9]+_[0-9]+]] 43 ; CHECK: b.eq [[TRUE:.LBB[0-9]+_[0-9]+]]
44 ; CHECK-NEXT: // BB# 44 ; CHECK-NEXT: // %bb.
45 ; CHECK-NEXT: bl test_false 45 ; CHECK-NEXT: bl test_false
46 46
47 ; CHECK: [[TRUE]]: 47 ; CHECK: [[TRUE]]:
48 ; CHECK: bl test_true 48 ; CHECK: bl test_true
49 49
60 ; CHECK-LABEL: test_CBZ_fallthrough_taken: 60 ; CHECK-LABEL: test_CBZ_fallthrough_taken:
61 %tst = icmp eq i32 %in, 0 61 %tst = icmp eq i32 %in, 0
62 br i1 %tst, label %true, label %false, !prof !0 62 br i1 %tst, label %true, label %false, !prof !0
63 63
64 ; CHECK: cbnz {{w[0-9]+}}, [[FALSE:.LBB[0-9]+_[0-9]+]] 64 ; CHECK: cbnz {{w[0-9]+}}, [[FALSE:.LBB[0-9]+_[0-9]+]]
65 ; CHECK-NEXT: // BB# 65 ; CHECK-NEXT: // %bb.
66 ; CHECK-NEXT: bl test_true 66 ; CHECK-NEXT: bl test_true
67 67
68 ; CHECK: [[FALSE]]: 68 ; CHECK: [[FALSE]]:
69 ; CHECK: bl test_false 69 ; CHECK: bl test_false
70 70
81 ; CHECK-LABEL: test_CBZ_fallthrough_nottaken: 81 ; CHECK-LABEL: test_CBZ_fallthrough_nottaken:
82 %tst = icmp eq i64 %in, 0 82 %tst = icmp eq i64 %in, 0
83 br i1 %tst, label %true, label %false, !prof !1 83 br i1 %tst, label %true, label %false, !prof !1
84 84
85 ; CHECK: cbz {{x[0-9]+}}, [[TRUE:.LBB[0-9]+_[0-9]+]] 85 ; CHECK: cbz {{x[0-9]+}}, [[TRUE:.LBB[0-9]+_[0-9]+]]
86 ; CHECK-NEXT: // BB# 86 ; CHECK-NEXT: // %bb.
87 ; CHECK-NEXT: bl test_false 87 ; CHECK-NEXT: bl test_false
88 88
89 ; CHECK: [[TRUE]]: 89 ; CHECK: [[TRUE]]:
90 ; CHECK: bl test_true 90 ; CHECK: bl test_true
91 91
102 ; CHECK-LABEL: test_CBNZ_fallthrough_taken: 102 ; CHECK-LABEL: test_CBNZ_fallthrough_taken:
103 %tst = icmp ne i32 %in, 0 103 %tst = icmp ne i32 %in, 0
104 br i1 %tst, label %true, label %false, !prof !0 104 br i1 %tst, label %true, label %false, !prof !0
105 105
106 ; CHECK: cbz {{w[0-9]+}}, [[FALSE:.LBB[0-9]+_[0-9]+]] 106 ; CHECK: cbz {{w[0-9]+}}, [[FALSE:.LBB[0-9]+_[0-9]+]]
107 ; CHECK-NEXT: // BB# 107 ; CHECK-NEXT: // %bb.
108 ; CHECK-NEXT: bl test_true 108 ; CHECK-NEXT: bl test_true
109 109
110 ; CHECK: [[FALSE]]: 110 ; CHECK: [[FALSE]]:
111 ; CHECK: bl test_false 111 ; CHECK: bl test_false
112 112
123 ; CHECK-LABEL: test_CBNZ_fallthrough_nottaken: 123 ; CHECK-LABEL: test_CBNZ_fallthrough_nottaken:
124 %tst = icmp ne i64 %in, 0 124 %tst = icmp ne i64 %in, 0
125 br i1 %tst, label %true, label %false, !prof !1 125 br i1 %tst, label %true, label %false, !prof !1
126 126
127 ; CHECK: cbnz {{x[0-9]+}}, [[TRUE:.LBB[0-9]+_[0-9]+]] 127 ; CHECK: cbnz {{x[0-9]+}}, [[TRUE:.LBB[0-9]+_[0-9]+]]
128 ; CHECK-NEXT: // BB# 128 ; CHECK-NEXT: // %bb.
129 ; CHECK-NEXT: bl test_false 129 ; CHECK-NEXT: bl test_false
130 130
131 ; CHECK: [[TRUE]]: 131 ; CHECK: [[TRUE]]:
132 ; CHECK: bl test_true 132 ; CHECK: bl test_true
133 133
145 %bit = and i32 %in, 32768 145 %bit = and i32 %in, 32768
146 %tst = icmp eq i32 %bit, 0 146 %tst = icmp eq i32 %bit, 0
147 br i1 %tst, label %true, label %false, !prof !0 147 br i1 %tst, label %true, label %false, !prof !0
148 148
149 ; CHECK: tbnz {{w[0-9]+}}, #15, [[FALSE:.LBB[0-9]+_[0-9]+]] 149 ; CHECK: tbnz {{w[0-9]+}}, #15, [[FALSE:.LBB[0-9]+_[0-9]+]]
150 ; CHECK-NEXT: // BB# 150 ; CHECK-NEXT: // %bb.
151 ; CHECK-NEXT: bl test_true 151 ; CHECK-NEXT: bl test_true
152 152
153 ; CHECK: [[FALSE]]: 153 ; CHECK: [[FALSE]]:
154 ; CHECK: bl test_false 154 ; CHECK: bl test_false
155 155
167 %bit = and i64 %in, 32768 167 %bit = and i64 %in, 32768
168 %tst = icmp eq i64 %bit, 0 168 %tst = icmp eq i64 %bit, 0
169 br i1 %tst, label %true, label %false, !prof !1 169 br i1 %tst, label %true, label %false, !prof !1
170 170
171 ; CHECK: tbz {{[wx][0-9]+}}, #15, [[TRUE:.LBB[0-9]+_[0-9]+]] 171 ; CHECK: tbz {{[wx][0-9]+}}, #15, [[TRUE:.LBB[0-9]+_[0-9]+]]
172 ; CHECK-NEXT: // BB# 172 ; CHECK-NEXT: // %bb.
173 ; CHECK-NEXT: bl test_false 173 ; CHECK-NEXT: bl test_false
174 174
175 ; CHECK: [[TRUE]]: 175 ; CHECK: [[TRUE]]:
176 ; CHECK: bl test_true 176 ; CHECK: bl test_true
177 177
190 %bit = and i32 %in, 32768 190 %bit = and i32 %in, 32768
191 %tst = icmp ne i32 %bit, 0 191 %tst = icmp ne i32 %bit, 0
192 br i1 %tst, label %true, label %false, !prof !0 192 br i1 %tst, label %true, label %false, !prof !0
193 193
194 ; CHECK: tbz {{w[0-9]+}}, #15, [[FALSE:.LBB[0-9]+_[0-9]+]] 194 ; CHECK: tbz {{w[0-9]+}}, #15, [[FALSE:.LBB[0-9]+_[0-9]+]]
195 ; CHECK-NEXT: // BB# 195 ; CHECK-NEXT: // %bb.
196 ; CHECK-NEXT: bl test_true 196 ; CHECK-NEXT: bl test_true
197 197
198 ; CHECK: [[FALSE]]: 198 ; CHECK: [[FALSE]]:
199 ; CHECK: bl test_false 199 ; CHECK: bl test_false
200 200
212 %bit = and i64 %in, 32768 212 %bit = and i64 %in, 32768
213 %tst = icmp ne i64 %bit, 0 213 %tst = icmp ne i64 %bit, 0
214 br i1 %tst, label %true, label %false, !prof !1 214 br i1 %tst, label %true, label %false, !prof !1
215 215
216 ; CHECK: tbnz {{[wx][0-9]+}}, #15, [[TRUE:.LBB[0-9]+_[0-9]+]] 216 ; CHECK: tbnz {{[wx][0-9]+}}, #15, [[TRUE:.LBB[0-9]+_[0-9]+]]
217 ; CHECK-NEXT: // BB# 217 ; CHECK-NEXT: // %bb.
218 ; CHECK-NEXT: bl test_false 218 ; CHECK-NEXT: bl test_false
219 219
220 ; CHECK: [[TRUE]]: 220 ; CHECK: [[TRUE]]:
221 ; CHECK: bl test_true 221 ; CHECK: bl test_true
222 222
223 true: 223 true:
224 call void @test_true() 224 call void @test_true()
225 ret void 225 ret void
226 226
227 false: 227 false:
228 call void @test_false() 228 call void @test_false()
229 ret void 229 ret void
230 } 230 }
231 231