Lines Matching +full:- +full:ne
1 ; RUN: opt < %s -instsimplify -S | FileCheck %s
3 ; CHECK-LABEL: @foo
5 ; CHECK-NEXT: %[[add:.*]] = add i32 %[[and]], -1
6 ; CHECK-NEXT: ret i32 %[[add]]
9 %n = add i32 %o, -1
14 ; CHECK-LABEL: @exact_lshr_eq_both_zero
15 ; CHECK-NEXT: ret i1 true
22 ; CHECK-LABEL: @exact_ashr_eq_both_zero
23 ; CHECK-NEXT: ret i1 true
30 ; CHECK-LABEL: @nonexact_ashr_eq_both_zero
31 ; CHECK-NEXT: ret i1 true
38 ; CHECK-LABEL: @exact_lshr_ne_both_zero
39 ; CHECK-NEXT: ret i1 false
42 %cmp = icmp ne i8 %shr, 0
46 ; CHECK-LABEL: @exact_ashr_ne_both_zero
47 ; CHECK-NEXT: ret i1 false
50 %cmp = icmp ne i8 %shr, 0
54 ; CHECK-LABEL: @nonexact_lshr_ne_both_zero
55 ; CHECK-NEXT: ret i1 false
58 %cmp = icmp ne i8 %shr, 0
62 ; CHECK-LABEL: @nonexact_ashr_ne_both_zero
63 ; CHECK-NEXT: ret i1 false
66 %cmp = icmp ne i8 %shr, 0
70 ; CHECK-LABEL: @exact_lshr_eq_last_zero
71 ; CHECK-NEXT: ret i1 false
78 ; CHECK-LABEL: @exact_ashr_eq_last_zero
79 ; CHECK-NEXT: ret i1 false
81 %shr = ashr exact i8 -128, %a
86 ; CHECK-LABEL: @nonexact_lshr_eq_both_zero
87 ; CHECK-NEXT: ret i1 true
94 ; CHECK-LABEL: @exact_lshr_ne_last_zero
95 ; CHECK-NEXT: ret i1 true
98 %cmp = icmp ne i8 %shr, 0
102 ; CHECK-LABEL: @exact_ashr_ne_last_zero
103 ; CHECK-NEXT: ret i1 true
105 %shr = ashr exact i8 -128, %a
106 %cmp = icmp ne i8 %shr, 0
110 ; CHECK-LABEL: @nonexact_lshr_eq_last_zero
111 ; CHECK-NEXT: ret i1 false
118 ; CHECK-LABEL: @nonexact_ashr_eq_last_zero
119 ; CHECK-NEXT: ret i1 false
121 %shr = ashr i8 -128, %a
126 ; CHECK-LABEL: @nonexact_lshr_ne_last_zero
127 ; CHECK-NEXT: ret i1 true
130 %cmp = icmp ne i8 %shr, 0
134 ; CHECK-LABEL: @nonexact_ashr_ne_last_zero
135 ; CHECK-NEXT: ret i1 true
137 %shr = ashr i8 -128, %a
138 %cmp = icmp ne i8 %shr, 0
142 ; CHECK-LABEL: @lshr_eq_first_zero
143 ; CHECK-NEXT: ret i1 false
150 ; CHECK-LABEL: @ashr_eq_first_zero
151 ; CHECK-NEXT: ret i1 false
158 ; CHECK-LABEL: @lshr_ne_first_zero
159 ; CHECK-NEXT: ret i1 true
162 %cmp = icmp ne i8 %shr, 2
166 ; CHECK-LABEL: @ashr_ne_first_zero
167 ; CHECK-NEXT: ret i1 true
170 %cmp = icmp ne i8 %shr, 2
174 ; CHECK-LABEL: @ashr_eq_both_minus1
175 ; CHECK-NEXT: ret i1 true
177 %shr = ashr i8 -1, %a
178 %cmp = icmp eq i8 %shr, -1
182 ; CHECK-LABEL: @ashr_ne_both_minus1
183 ; CHECK-NEXT: ret i1 false
185 %shr = ashr i8 -1, %a
186 %cmp = icmp ne i8 %shr, -1
190 ; CHECK-LABEL: @exact_ashr_eq_both_minus1
191 ; CHECK-NEXT: ret i1 true
193 %shr = ashr exact i8 -1, %a
194 %cmp = icmp eq i8 %shr, -1
198 ; CHECK-LABEL: @exact_ashr_ne_both_minus1
199 ; CHECK-NEXT: ret i1 false
201 %shr = ashr exact i8 -1, %a
202 %cmp = icmp ne i8 %shr, -1
206 ; CHECK-LABEL: @exact_ashr_eq_opposite_msb
207 ; CHECK-NEXT: ret i1 false
209 %shr = ashr exact i8 -128, %a
214 ; CHECK-LABEL: @exact_ashr_eq_noexactlog
215 ; CHECK-NEXT: ret i1 false
217 %shr = ashr exact i8 -90, %a
218 %cmp = icmp eq i8 %shr, -30
222 ; CHECK-LABEL: @exact_ashr_ne_opposite_msb
223 ; CHECK-NEXT: ret i1 true
225 %shr = ashr exact i8 -128, %a
226 %cmp = icmp ne i8 %shr, 1
230 ; CHECK-LABEL: @ashr_eq_opposite_msb
231 ; CHECK-NEXT: ret i1 false
233 %shr = ashr i8 -128, %a
238 ; CHECK-LABEL: @ashr_ne_opposite_msb
239 ; CHECK-NEXT: ret i1 true
241 %shr = ashr i8 -128, %a
242 %cmp = icmp ne i8 %shr, 1
246 ; CHECK-LABEL: @exact_ashr_eq_shift_gt
247 ; CHECK-NEXT: ret i1 false
249 %shr = ashr exact i8 -2, %a
250 %cmp = icmp eq i8 %shr, -8
254 ; CHECK-LABEL: @exact_ashr_ne_shift_gt
255 ; CHECK-NEXT: ret i1 true
257 %shr = ashr exact i8 -2, %a
258 %cmp = icmp ne i8 %shr, -8
262 ; CHECK-LABEL: @nonexact_ashr_eq_shift_gt
263 ; CHECK-NEXT: ret i1 false
265 %shr = ashr i8 -2, %a
266 %cmp = icmp eq i8 %shr, -8
270 ; CHECK-LABEL: @nonexact_ashr_ne_shift_gt
271 ; CHECK-NEXT: ret i1 true
273 %shr = ashr i8 -2, %a
274 %cmp = icmp ne i8 %shr, -8
278 ; CHECK-LABEL: @exact_lshr_eq_shift_gt
279 ; CHECK-NEXT: ret i1 false
286 ; CHECK-LABEL: @exact_lshr_ne_shift_gt
287 ; CHECK-NEXT: ret i1 true
290 %cmp = icmp ne i8 %shr, 8
294 ; CHECK-LABEL: @nonexact_lshr_eq_shift_gt
295 ; CHECK-NEXT: ret i1 false
302 ; CHECK-LABEL: @nonexact_lshr_ne_shift_gt
303 ; CHECK-NEXT: ret i1 true
306 %cmp = icmp ne i8 %shr, 8
310 ; CHECK-LABEL: @exact_ashr_ne_noexactlog
311 ; CHECK-NEXT: ret i1 true
313 %shr = ashr exact i8 -90, %a
314 %cmp = icmp ne i8 %shr, -30
318 ; CHECK-LABEL: @exact_lshr_eq_noexactlog
319 ; CHECK-NEXT: ret i1 false
326 ; CHECK-LABEL: @exact_lshr_ne_noexactlog
327 ; CHECK-NEXT: ret i1 true
330 %cmp = icmp ne i8 %shr, 30
334 ; CHECK-LABEL: @exact_lshr_lowbit
335 ; CHECK-NEXT: ret i32 7
341 ; CHECK-LABEL: @exact_ashr_lowbit
342 ; CHECK-NEXT: ret i32 7