Skip to content

Commit f9f363e

Browse files
committed
[ValueTracking] Add pre-commit tests. NFC.
1 parent 1de7e6c commit f9f363e

File tree

1 file changed

+139
-0
lines changed

1 file changed

+139
-0
lines changed

llvm/test/Transforms/InstCombine/icmp-dom.ll

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,3 +403,142 @@ truelabel:
403403
falselabel:
404404
ret i8 0
405405
}
406+
407+
define i1 @and_mask1_eq(i32 %conv) {
408+
; CHECK-LABEL: @and_mask1_eq(
409+
; CHECK-NEXT: entry:
410+
; CHECK-NEXT: [[AND:%.*]] = and i32 [[CONV:%.*]], 1
411+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[AND]], 0
412+
; CHECK-NEXT: br i1 [[CMP]], label [[THEN:%.*]], label [[ELSE:%.*]]
413+
; CHECK: then:
414+
; CHECK-NEXT: ret i1 false
415+
; CHECK: else:
416+
; CHECK-NEXT: [[AND1:%.*]] = and i32 [[CONV]], 3
417+
; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i32 [[AND1]], 0
418+
; CHECK-NEXT: ret i1 [[CMP1]]
419+
;
420+
entry:
421+
%and = and i32 %conv, 1
422+
%cmp = icmp eq i32 %and, 0
423+
br i1 %cmp, label %then, label %else
424+
425+
then:
426+
ret i1 0
427+
428+
else:
429+
%and1 = and i32 %conv, 3
430+
%cmp1 = icmp eq i32 %and1, 0
431+
ret i1 %cmp1
432+
}
433+
434+
define i1 @and_mask1_ne(i32 %conv) {
435+
; CHECK-LABEL: @and_mask1_ne(
436+
; CHECK-NEXT: entry:
437+
; CHECK-NEXT: [[AND:%.*]] = and i32 [[CONV:%.*]], 1
438+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[AND]], 0
439+
; CHECK-NEXT: br i1 [[CMP]], label [[THEN:%.*]], label [[ELSE:%.*]]
440+
; CHECK: then:
441+
; CHECK-NEXT: ret i1 false
442+
; CHECK: else:
443+
; CHECK-NEXT: [[AND1:%.*]] = and i32 [[CONV]], 3
444+
; CHECK-NEXT: [[CMP1:%.*]] = icmp ne i32 [[AND1]], 0
445+
; CHECK-NEXT: ret i1 [[CMP1]]
446+
;
447+
entry:
448+
%and = and i32 %conv, 1
449+
%cmp = icmp eq i32 %and, 0
450+
br i1 %cmp, label %then, label %else
451+
452+
then:
453+
ret i1 0
454+
455+
else:
456+
%and1 = and i32 %conv, 3
457+
%cmp1 = icmp ne i32 %and1, 0
458+
ret i1 %cmp1
459+
}
460+
461+
define i1 @and_mask2(i32 %conv) {
462+
; CHECK-LABEL: @and_mask2(
463+
; CHECK-NEXT: entry:
464+
; CHECK-NEXT: [[AND:%.*]] = and i32 [[CONV:%.*]], 4
465+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[AND]], 0
466+
; CHECK-NEXT: br i1 [[CMP]], label [[THEN:%.*]], label [[ELSE:%.*]]
467+
; CHECK: then:
468+
; CHECK-NEXT: ret i1 false
469+
; CHECK: else:
470+
; CHECK-NEXT: [[AND1:%.*]] = and i32 [[CONV]], 3
471+
; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i32 [[AND1]], 0
472+
; CHECK-NEXT: ret i1 [[CMP1]]
473+
;
474+
entry:
475+
%and = and i32 %conv, 4
476+
%cmp = icmp eq i32 %and, 0
477+
br i1 %cmp, label %then, label %else
478+
479+
then:
480+
ret i1 0
481+
482+
else:
483+
%and1 = and i32 %conv, 3
484+
%cmp1 = icmp eq i32 %and1, 0
485+
ret i1 %cmp1
486+
}
487+
488+
; TODO: %cmp1 can be folded into false.
489+
490+
define i1 @and_mask3(i32 %conv) {
491+
; CHECK-LABEL: @and_mask3(
492+
; CHECK-NEXT: entry:
493+
; CHECK-NEXT: [[AND:%.*]] = and i32 [[CONV:%.*]], 3
494+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[AND]], 0
495+
; CHECK-NEXT: br i1 [[CMP]], label [[THEN:%.*]], label [[ELSE:%.*]]
496+
; CHECK: then:
497+
; CHECK-NEXT: ret i1 false
498+
; CHECK: else:
499+
; CHECK-NEXT: [[AND1:%.*]] = and i32 [[CONV]], 7
500+
; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i32 [[AND1]], 0
501+
; CHECK-NEXT: ret i1 [[CMP1]]
502+
;
503+
entry:
504+
%and = and i32 %conv, 3
505+
%cmp = icmp eq i32 %and, 0
506+
br i1 %cmp, label %then, label %else
507+
508+
then:
509+
ret i1 0
510+
511+
else:
512+
%and1 = and i32 %conv, 7
513+
%cmp1 = icmp eq i32 %and1, 0
514+
ret i1 %cmp1
515+
}
516+
517+
; TODO: %cmp1 can be folded into false.
518+
519+
define i1 @and_mask4(i32 %conv) {
520+
; CHECK-LABEL: @and_mask4(
521+
; CHECK-NEXT: entry:
522+
; CHECK-NEXT: [[AND:%.*]] = and i32 [[CONV:%.*]], 4
523+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[AND]], 0
524+
; CHECK-NEXT: br i1 [[CMP]], label [[THEN:%.*]], label [[ELSE:%.*]]
525+
; CHECK: then:
526+
; CHECK-NEXT: ret i1 false
527+
; CHECK: else:
528+
; CHECK-NEXT: [[AND1:%.*]] = and i32 [[CONV]], 7
529+
; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i32 [[AND1]], 0
530+
; CHECK-NEXT: ret i1 [[CMP1]]
531+
;
532+
entry:
533+
%and = and i32 %conv, 4
534+
%cmp = icmp eq i32 %and, 0
535+
br i1 %cmp, label %then, label %else
536+
537+
then:
538+
ret i1 0
539+
540+
else:
541+
%and1 = and i32 %conv, 7
542+
%cmp1 = icmp eq i32 %and1, 0
543+
ret i1 %cmp1
544+
}

0 commit comments

Comments
 (0)