@@ -356,3 +356,71 @@ define i1 @non_eq_xor_common_op_fail(i8 %x, i8 %y, i8 %ww, i8 %a) {
356
356
%r = icmp eq i8 %axy , %axz
357
357
ret i1 %r
358
358
}
359
+
360
+ define i1 @non_eq_disjoint_or (i8 %x , i8 %yy , i8 %w ) {
361
+ ; CHECK-LABEL: @non_eq_disjoint_or(
362
+ ; CHECK-NEXT: [[Y:%.*]] = add nuw i8 [[YY:%.*]], 1
363
+ ; CHECK-NEXT: [[LHS:%.*]] = add i8 [[X:%.*]], [[W:%.*]]
364
+ ; CHECK-NEXT: [[VAL:%.*]] = or disjoint i8 [[Y]], [[W]]
365
+ ; CHECK-NEXT: [[RHS:%.*]] = add i8 [[X]], [[VAL]]
366
+ ; CHECK-NEXT: [[R:%.*]] = icmp eq i8 [[LHS]], [[RHS]]
367
+ ; CHECK-NEXT: ret i1 [[R]]
368
+ ;
369
+ %y = add nuw i8 %yy , 1
370
+ %lhs = add i8 %x , %w
371
+ %val = or disjoint i8 %y , %w
372
+ %rhs = add i8 %x , %val
373
+ %r = icmp eq i8 %lhs , %rhs
374
+ ret i1 %r
375
+ }
376
+
377
+ define i1 @non_eq_or_fail (i8 %x , i8 %yy , i8 %w ) {
378
+ ; CHECK-LABEL: @non_eq_or_fail(
379
+ ; CHECK-NEXT: [[Y:%.*]] = add nuw i8 [[YY:%.*]], 1
380
+ ; CHECK-NEXT: [[LHS:%.*]] = add i8 [[X:%.*]], [[W:%.*]]
381
+ ; CHECK-NEXT: [[VAL:%.*]] = or i8 [[Y]], [[W]]
382
+ ; CHECK-NEXT: [[RHS:%.*]] = add i8 [[X]], [[VAL]]
383
+ ; CHECK-NEXT: [[R:%.*]] = icmp eq i8 [[LHS]], [[RHS]]
384
+ ; CHECK-NEXT: ret i1 [[R]]
385
+ ;
386
+ %y = add nuw i8 %yy , 1
387
+ %lhs = add i8 %x , %w
388
+ %val = or i8 %y , %w
389
+ %rhs = add i8 %x , %val
390
+ %r = icmp eq i8 %lhs , %rhs
391
+ ret i1 %r
392
+ }
393
+
394
+ define i1 @non_eq_xor (i8 %x , i8 %yy , i8 %w ) {
395
+ ; CHECK-LABEL: @non_eq_xor(
396
+ ; CHECK-NEXT: [[Y:%.*]] = add nuw i8 [[YY:%.*]], 1
397
+ ; CHECK-NEXT: [[LHS:%.*]] = add i8 [[X:%.*]], [[W:%.*]]
398
+ ; CHECK-NEXT: [[VAL:%.*]] = xor i8 [[Y]], [[W]]
399
+ ; CHECK-NEXT: [[RHS:%.*]] = add i8 [[X]], [[VAL]]
400
+ ; CHECK-NEXT: [[R:%.*]] = icmp eq i8 [[LHS]], [[RHS]]
401
+ ; CHECK-NEXT: ret i1 [[R]]
402
+ ;
403
+ %y = add nuw i8 %yy , 1
404
+ %lhs = add i8 %x , %w
405
+ %val = xor i8 %y , %w
406
+ %rhs = add i8 %x , %val
407
+ %r = icmp eq i8 %lhs , %rhs
408
+ ret i1 %r
409
+ }
410
+
411
+ define i1 @non_eq_xor_fail (i8 %x , i8 %yy , i8 %w ) {
412
+ ; CHECK-LABEL: @non_eq_xor_fail(
413
+ ; CHECK-NEXT: [[Y:%.*]] = add nsw i8 [[YY:%.*]], 1
414
+ ; CHECK-NEXT: [[LHS:%.*]] = add i8 [[X:%.*]], [[W:%.*]]
415
+ ; CHECK-NEXT: [[VAL:%.*]] = xor i8 [[Y]], [[W]]
416
+ ; CHECK-NEXT: [[RHS:%.*]] = add i8 [[X]], [[VAL]]
417
+ ; CHECK-NEXT: [[R:%.*]] = icmp eq i8 [[LHS]], [[RHS]]
418
+ ; CHECK-NEXT: ret i1 [[R]]
419
+ ;
420
+ %y = add nsw i8 %yy , 1
421
+ %lhs = add i8 %x , %w
422
+ %val = xor i8 %y , %w
423
+ %rhs = add i8 %x , %val
424
+ %r = icmp eq i8 %lhs , %rhs
425
+ ret i1 %r
426
+ }
0 commit comments