@@ -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