@@ -1749,3 +1749,31 @@ define <4 x i32> @select_vector_cmp_with_bitcasts(<2 x i64> %x, <4 x i32> %y) {
1749
1749
%sel = select <4 x i1 > %cmp , <4 x i32 > %sub.bc , <4 x i32 > zeroinitializer
1750
1750
ret <4 x i32 > %sel
1751
1751
}
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