Skip to content

Commit 9871486

Browse files
committed
[InstCombine] Add multiuse tests for canonicalizing (icmp eq/ne (and x, y), {x,y}); NFC
1 parent 2cfea14 commit 9871486

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

llvm/test/Transforms/InstCombine/icmp-of-and-x.ll

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
declare i1 @barrier()
55
declare void @llvm.assume(i1)
6+
declare void @use.i8(i8)
67

78
define i1 @icmp_ult_x_y(i8 %x, i8 %y) {
89
; CHECK-LABEL: @icmp_ult_x_y(
@@ -262,6 +263,21 @@ define i1 @icmp_eq_x_invertable_y(i8 %x, i8 %y) {
262263
ret i1 %r
263264
}
264265

266+
define i1 @icmp_eq_x_invertable_y_fail_multiuse(i8 %x, i8 %y) {
267+
; CHECK-LABEL: @icmp_eq_x_invertable_y_fail_multiuse(
268+
; CHECK-NEXT: [[YY:%.*]] = xor i8 [[Y:%.*]], -1
269+
; CHECK-NEXT: [[AND:%.*]] = and i8 [[YY]], [[X:%.*]]
270+
; CHECK-NEXT: call void @use.i8(i8 [[AND]])
271+
; CHECK-NEXT: [[R:%.*]] = icmp eq i8 [[AND]], [[X]]
272+
; CHECK-NEXT: ret i1 [[R]]
273+
;
274+
%yy = xor i8 %y, -1
275+
%and = and i8 %x, %yy
276+
call void @use.i8(i8 %and)
277+
%r = icmp eq i8 %x, %and
278+
ret i1 %r
279+
}
280+
265281
define i1 @icmp_eq_x_invertable_y2_todo(i8 %x, i1 %y) {
266282
; CHECK-LABEL: @icmp_eq_x_invertable_y2_todo(
267283
; CHECK-NEXT: [[YY:%.*]] = select i1 [[Y:%.*]], i8 7, i8 24

0 commit comments

Comments
 (0)