@@ -172,3 +172,87 @@ define i1 @test_ne_cp2_other_okay2(i8 %x, i8 %yy) {
172
172
%r = icmp ne i8 %and_x_y , %and_x_neg_y
173
173
ret i1 %r
174
174
}
175
+
176
+ define i1 @test_eq_0_and_15_add_1 (i8 %a ) {
177
+ ; CHECK-LABEL: @test_eq_0_and_15_add_1(
178
+ ; CHECK-NEXT: entry:
179
+ ; CHECK-NEXT: [[TMP0:%.*]] = and i8 [[A:%.*]], 15
180
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[TMP0]], 15
181
+ ; CHECK-NEXT: ret i1 [[CMP]]
182
+ ;
183
+ entry:
184
+ %add = add i8 %a , 1
185
+ %and = and i8 %add , 15
186
+ %cmp = icmp eq i8 %and , 0
187
+ ret i1 %cmp
188
+ }
189
+
190
+ define i1 @test_ne_0_and_15_add_1 (i8 %a ) {
191
+ ; CHECK-LABEL: @test_ne_0_and_15_add_1(
192
+ ; CHECK-NEXT: entry:
193
+ ; CHECK-NEXT: [[TMP0:%.*]] = and i8 [[A:%.*]], 15
194
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne i8 [[TMP0]], 15
195
+ ; CHECK-NEXT: ret i1 [[CMP]]
196
+ ;
197
+ entry:
198
+ %add = add i8 %a , 1
199
+ %and = and i8 %add , 15
200
+ %cmp = icmp ne i8 %and , 0
201
+ ret i1 %cmp
202
+ }
203
+
204
+ define i1 @test_eq_0_and_15_add_3 (i8 %a ) {
205
+ ; CHECK-LABEL: @test_eq_0_and_15_add_3(
206
+ ; CHECK-NEXT: entry:
207
+ ; CHECK-NEXT: [[TMP0:%.*]] = and i8 [[A:%.*]], 15
208
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[TMP0]], 13
209
+ ; CHECK-NEXT: ret i1 [[CMP]]
210
+ ;
211
+ entry:
212
+ %add = add i8 %a , 3
213
+ %and = and i8 %add , 15
214
+ %cmp = icmp eq i8 %and , 0
215
+ ret i1 %cmp
216
+ }
217
+
218
+ define i1 @test_ne_0_and_15_add_3 (i8 %a ) {
219
+ ; CHECK-LABEL: @test_ne_0_and_15_add_3(
220
+ ; CHECK-NEXT: entry:
221
+ ; CHECK-NEXT: [[TMP0:%.*]] = and i8 [[A:%.*]], 15
222
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne i8 [[TMP0]], 13
223
+ ; CHECK-NEXT: ret i1 [[CMP]]
224
+ ;
225
+ entry:
226
+ %add = add i8 %a , 3
227
+ %and = and i8 %add , 15
228
+ %cmp = icmp ne i8 %and , 0
229
+ ret i1 %cmp
230
+ }
231
+
232
+ define i1 @test_eq_11_and_15_add_10 (i8 %a ) {
233
+ ; CHECK-LABEL: @test_eq_11_and_15_add_10(
234
+ ; CHECK-NEXT: entry:
235
+ ; CHECK-NEXT: [[TMP0:%.*]] = and i8 [[A:%.*]], 15
236
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[TMP0]], 1
237
+ ; CHECK-NEXT: ret i1 [[CMP]]
238
+ ;
239
+ entry:
240
+ %add = add i8 %a , 10
241
+ %and = and i8 %add , 15
242
+ %cmp = icmp eq i8 %and , 11
243
+ ret i1 %cmp
244
+ }
245
+
246
+ define i1 @test_ne_11_and_15_add_10 (i8 %a ) {
247
+ ; CHECK-LABEL: @test_ne_11_and_15_add_10(
248
+ ; CHECK-NEXT: entry:
249
+ ; CHECK-NEXT: [[TMP0:%.*]] = and i8 [[A:%.*]], 15
250
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne i8 [[TMP0]], 1
251
+ ; CHECK-NEXT: ret i1 [[CMP]]
252
+ ;
253
+ entry:
254
+ %add = add i8 %a , 10
255
+ %and = and i8 %add , 15
256
+ %cmp = icmp ne i8 %and , 11
257
+ ret i1 %cmp
258
+ }
0 commit comments