Skip to content

Commit 9043cb7

Browse files
committed
[InstCombine] Add additional test for icmp eq/ne with bool load (NFC)
1 parent 77c90eb commit 9043cb7

File tree

2 files changed

+93
-0
lines changed

2 files changed

+93
-0
lines changed

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

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -990,6 +990,50 @@ define i1 @zext_sext_add_icmp_slt_1_type_not_i1(i2 %a, i1 %b) {
990990
ret i1 %r
991991
}
992992

993+
define i1 @icmp_eq_bool_0(ptr %ptr) {
994+
; CHECK-LABEL: @icmp_eq_bool_0(
995+
; CHECK-NEXT: [[VAL:%.*]] = load i64, ptr [[PTR:%.*]], align 8, !range [[RNG6:![0-9]+]]
996+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64 [[VAL]], 0
997+
; CHECK-NEXT: ret i1 [[CMP]]
998+
;
999+
%val = load i64, ptr %ptr, align 8, !range !{i64 0, i64 2}
1000+
%cmp = icmp eq i64 %val, 0
1001+
ret i1 %cmp
1002+
}
1003+
1004+
define i1 @icmp_eq_bool_1(ptr %ptr) {
1005+
; CHECK-LABEL: @icmp_eq_bool_1(
1006+
; CHECK-NEXT: [[VAL:%.*]] = load i64, ptr [[PTR:%.*]], align 8, !range [[RNG6]]
1007+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64 [[VAL]], 1
1008+
; CHECK-NEXT: ret i1 [[CMP]]
1009+
;
1010+
%val = load i64, ptr %ptr, align 8, !range !{i64 0, i64 2}
1011+
%cmp = icmp eq i64 %val, 1
1012+
ret i1 %cmp
1013+
}
1014+
1015+
define i1 @icmp_ne_bool_0(ptr %ptr) {
1016+
; CHECK-LABEL: @icmp_ne_bool_0(
1017+
; CHECK-NEXT: [[VAL:%.*]] = load i64, ptr [[PTR:%.*]], align 8, !range [[RNG6]]
1018+
; CHECK-NEXT: [[CMP:%.*]] = icmp ne i64 [[VAL]], 0
1019+
; CHECK-NEXT: ret i1 [[CMP]]
1020+
;
1021+
%val = load i64, ptr %ptr, align 8, !range !{i64 0, i64 2}
1022+
%cmp = icmp ne i64 %val, 0
1023+
ret i1 %cmp
1024+
}
1025+
1026+
define i1 @icmp_ne_bool_1(ptr %ptr) {
1027+
; CHECK-LABEL: @icmp_ne_bool_1(
1028+
; CHECK-NEXT: [[VAL:%.*]] = load i64, ptr [[PTR:%.*]], align 8, !range [[RNG6]]
1029+
; CHECK-NEXT: [[CMP:%.*]] = icmp ne i64 [[VAL]], 1
1030+
; CHECK-NEXT: ret i1 [[CMP]]
1031+
;
1032+
%val = load i64, ptr %ptr, align 8, !range !{i64 0, i64 2}
1033+
%cmp = icmp ne i64 %val, 1
1034+
ret i1 %cmp
1035+
}
1036+
9931037
!0 = !{i32 1, i32 6}
9941038
!1 = !{i32 0, i32 6}
9951039
!2 = !{i8 0, i8 1}

llvm/test/Transforms/InstCombine/zext.ll

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -702,3 +702,52 @@ define i8 @zext_icmp_eq_pow2(i8 %y, i8 %x) {
702702
%r = zext i1 %c to i8
703703
ret i8 %r
704704
}
705+
706+
define i64 @zext_icmp_eq_bool_0(ptr %ptr) {
707+
; CHECK-LABEL: @zext_icmp_eq_bool_0(
708+
; CHECK-NEXT: [[VAL:%.*]] = load i64, ptr [[PTR:%.*]], align 8, !range [[RNG0:![0-9]+]]
709+
; CHECK-NEXT: [[LEN:%.*]] = xor i64 [[VAL]], 1
710+
; CHECK-NEXT: ret i64 [[LEN]]
711+
;
712+
%val = load i64, ptr %ptr, align 8, !range !{i64 0, i64 2}
713+
%cmp = icmp eq i64 %val, 0
714+
%len = zext i1 %cmp to i64
715+
ret i64 %len
716+
}
717+
718+
define i64 @zext_icmp_eq_bool_1(ptr %ptr) {
719+
; CHECK-LABEL: @zext_icmp_eq_bool_1(
720+
; CHECK-NEXT: [[VAL:%.*]] = load i64, ptr [[PTR:%.*]], align 8, !range [[RNG0]]
721+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64 [[VAL]], 1
722+
; CHECK-NEXT: [[LEN:%.*]] = zext i1 [[CMP]] to i64
723+
; CHECK-NEXT: ret i64 [[LEN]]
724+
;
725+
%val = load i64, ptr %ptr, align 8, !range !{i64 0, i64 2}
726+
%cmp = icmp eq i64 %val, 1
727+
%len = zext i1 %cmp to i64
728+
ret i64 %len
729+
}
730+
731+
define i64 @zext_icmp_ne_bool_0(ptr %ptr) {
732+
; CHECK-LABEL: @zext_icmp_ne_bool_0(
733+
; CHECK-NEXT: [[VAL:%.*]] = load i64, ptr [[PTR:%.*]], align 8, !range [[RNG0]]
734+
; CHECK-NEXT: ret i64 [[VAL]]
735+
;
736+
%val = load i64, ptr %ptr, align 8, !range !{i64 0, i64 2}
737+
%cmp = icmp ne i64 %val, 0
738+
%len = zext i1 %cmp to i64
739+
ret i64 %len
740+
}
741+
742+
define i64 @zext_icmp_ne_bool_1(ptr %ptr) {
743+
; CHECK-LABEL: @zext_icmp_ne_bool_1(
744+
; CHECK-NEXT: [[VAL:%.*]] = load i64, ptr [[PTR:%.*]], align 8, !range [[RNG0]]
745+
; CHECK-NEXT: [[CMP:%.*]] = icmp ne i64 [[VAL]], 1
746+
; CHECK-NEXT: [[LEN:%.*]] = zext i1 [[CMP]] to i64
747+
; CHECK-NEXT: ret i64 [[LEN]]
748+
;
749+
%val = load i64, ptr %ptr, align 8, !range !{i64 0, i64 2}
750+
%cmp = icmp ne i64 %val, 1
751+
%len = zext i1 %cmp to i64
752+
ret i64 %len
753+
}

0 commit comments

Comments
 (0)