@@ -1754,9 +1754,9 @@ define i8 @select_icmp_eq_and_1_0_lshr_tv(i8 %x, i8 %y) {
17541754
17551755define i8 @select_trunc_or_2 (i8 %x , i8 %y ) {
17561756; CHECK-LABEL: @select_trunc_or_2(
1757- ; CHECK-NEXT: [[TRUNC :%.*]] = trunc i8 [[X:%.*]] to i1
1758- ; CHECK-NEXT: [[OR :%.*]] = or i8 [[Y:%.* ]], 2
1759- ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[TRUNC]], i8 [[OR ]], i8 [[Y ]]
1757+ ; CHECK-NEXT: [[TMP1 :%.*]] = shl i8 [[X:%.*]], 1
1758+ ; CHECK-NEXT: [[TMP2 :%.*]] = and i8 [[TMP1 ]], 2
1759+ ; CHECK-NEXT: [[SELECT:%.*]] = or i8 [[Y:%.* ]], [[TMP2 ]]
17601760; CHECK-NEXT: ret i8 [[SELECT]]
17611761;
17621762 %trunc = trunc i8 %x to i1
@@ -1767,9 +1767,9 @@ define i8 @select_trunc_or_2(i8 %x, i8 %y) {
17671767
17681768define i8 @select_not_trunc_or_2 (i8 %x , i8 %y ) {
17691769; CHECK-LABEL: @select_not_trunc_or_2(
1770- ; CHECK-NEXT: [[TRUNC :%.*]] = trunc i8 [[X:%.*]] to i1
1771- ; CHECK-NEXT: [[OR :%.*]] = or i8 [[Y:%.* ]], 2
1772- ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[TRUNC]], i8 [[OR ]], i8 [[Y ]]
1770+ ; CHECK-NEXT: [[TMP1 :%.*]] = shl i8 [[X:%.*]], 1
1771+ ; CHECK-NEXT: [[TMP2 :%.*]] = and i8 [[TMP1 ]], 2
1772+ ; CHECK-NEXT: [[SELECT:%.*]] = or i8 [[Y:%.* ]], [[TMP2 ]]
17731773; CHECK-NEXT: ret i8 [[SELECT]]
17741774;
17751775 %trunc = trunc i8 %x to i1
@@ -1781,9 +1781,8 @@ define i8 @select_not_trunc_or_2(i8 %x, i8 %y) {
17811781
17821782define i8 @select_trunc_nuw_or_2 (i8 %x , i8 %y ) {
17831783; CHECK-LABEL: @select_trunc_nuw_or_2(
1784- ; CHECK-NEXT: [[TRUNC:%.*]] = trunc nuw i8 [[X:%.*]] to i1
1785- ; CHECK-NEXT: [[OR:%.*]] = or i8 [[Y:%.*]], 2
1786- ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[TRUNC]], i8 [[OR]], i8 [[Y]]
1784+ ; CHECK-NEXT: [[TMP1:%.*]] = shl i8 [[X:%.*]], 1
1785+ ; CHECK-NEXT: [[SELECT:%.*]] = or i8 [[Y:%.*]], [[TMP1]]
17871786; CHECK-NEXT: ret i8 [[SELECT]]
17881787;
17891788 %trunc = trunc nuw i8 %x to i1
@@ -1794,9 +1793,9 @@ define i8 @select_trunc_nuw_or_2(i8 %x, i8 %y) {
17941793
17951794define i8 @select_trunc_nsw_or_2 (i8 %x , i8 %y ) {
17961795; CHECK-LABEL: @select_trunc_nsw_or_2(
1797- ; CHECK-NEXT: [[TRUNC :%.*]] = trunc nsw i8 [[X:%.*]] to i1
1798- ; CHECK-NEXT: [[OR :%.*]] = or i8 [[Y:%.* ]], 2
1799- ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[TRUNC]], i8 [[OR ]], i8 [[Y ]]
1796+ ; CHECK-NEXT: [[TMP1 :%.*]] = shl i8 [[X:%.*]], 1
1797+ ; CHECK-NEXT: [[TMP2 :%.*]] = and i8 [[TMP1 ]], 2
1798+ ; CHECK-NEXT: [[SELECT:%.*]] = or i8 [[Y:%.* ]], [[TMP2 ]]
18001799; CHECK-NEXT: ret i8 [[SELECT]]
18011800;
18021801 %trunc = trunc nsw i8 %x to i1
@@ -1807,9 +1806,9 @@ define i8 @select_trunc_nsw_or_2(i8 %x, i8 %y) {
18071806
18081807define <2 x i8 > @select_trunc_or_2_vec (<2 x i8 > %x , <2 x i8 > %y ) {
18091808; CHECK-LABEL: @select_trunc_or_2_vec(
1810- ; CHECK-NEXT: [[TRUNC :%.*]] = trunc <2 x i8> [[X:%.*]] to <2 x i1>
1811- ; CHECK-NEXT: [[OR :%.*]] = or <2 x i8> [[Y:%.* ]], splat (i8 2)
1812- ; CHECK-NEXT: [[SELECT:%.*]] = select <2 x i1> [[TRUNC]], <2 x i8> [[OR ]], <2 x i8> [[Y ]]
1809+ ; CHECK-NEXT: [[TMP1 :%.*]] = shl <2 x i8> [[X:%.*]], splat (i8 1)
1810+ ; CHECK-NEXT: [[TMP2 :%.*]] = and <2 x i8> [[TMP1 ]], splat (i8 2)
1811+ ; CHECK-NEXT: [[SELECT:%.*]] = or <2 x i8> [[Y:%.* ]], [[TMP2 ]]
18131812; CHECK-NEXT: ret <2 x i8> [[SELECT]]
18141813;
18151814 %trunc = trunc <2 x i8 > %x to <2 x i1 >
0 commit comments