Skip to content

Commit cd264f0

Browse files
committed
[InstSimplify] Test select bit test with trunc to i1 (NFC)
1 parent 386dec2 commit cd264f0

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

llvm/test/Transforms/InstSimplify/select.ll

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1749,3 +1749,31 @@ define <4 x i32> @select_vector_cmp_with_bitcasts(<2 x i64> %x, <4 x i32> %y) {
17491749
%sel = select <4 x i1> %cmp, <4 x i32> %sub.bc, <4 x i32> zeroinitializer
17501750
ret <4 x i32> %sel
17511751
}
1752+
1753+
define i8 @bittest_trunc_or(i8 %x) {
1754+
; CHECK-LABEL: @bittest_trunc_or(
1755+
; CHECK-NEXT: [[TRUNC:%.*]] = trunc i8 [[X1:%.*]] to i1
1756+
; CHECK-NEXT: [[OR:%.*]] = or i8 [[X1]], 1
1757+
; CHECK-NEXT: [[X:%.*]] = select i1 [[TRUNC]], i8 [[OR]], i8 [[X1]]
1758+
; CHECK-NEXT: ret i8 [[X]]
1759+
;
1760+
%trunc = trunc i8 %x to i1
1761+
%or = or i8 %x, 1
1762+
%cond = select i1 %trunc, i8 %or, i8 %x
1763+
ret i8 %cond
1764+
}
1765+
1766+
define i8 @bittest_trunc_not_or(i8 %x) {
1767+
; CHECK-LABEL: @bittest_trunc_not_or(
1768+
; CHECK-NEXT: [[TRUNC:%.*]] = trunc i8 [[X:%.*]] to i1
1769+
; CHECK-NEXT: [[NOT:%.*]] = xor i1 [[TRUNC]], true
1770+
; CHECK-NEXT: [[OR:%.*]] = or i8 [[X]], 1
1771+
; CHECK-NEXT: [[COND:%.*]] = select i1 [[NOT]], i8 [[OR]], i8 [[X]]
1772+
; CHECK-NEXT: ret i8 [[COND]]
1773+
;
1774+
%trunc = trunc i8 %x to i1
1775+
%not = xor i1 %trunc, true
1776+
%or = or i8 %x, 1
1777+
%cond = select i1 %not, i8 %or, i8 %x
1778+
ret i8 %cond
1779+
}

0 commit comments

Comments
 (0)