@@ -1754,9 +1754,9 @@ define i8 @select_icmp_eq_and_1_0_lshr_tv(i8 %x, i8 %y) {
1754
1754
1755
1755
define i8 @select_trunc_or_2 (i8 %x , i8 %y ) {
1756
1756
; 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 ]]
1760
1760
; CHECK-NEXT: ret i8 [[SELECT]]
1761
1761
;
1762
1762
%trunc = trunc i8 %x to i1
@@ -1767,9 +1767,9 @@ define i8 @select_trunc_or_2(i8 %x, i8 %y) {
1767
1767
1768
1768
define i8 @select_not_trunc_or_2 (i8 %x , i8 %y ) {
1769
1769
; 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 ]]
1773
1773
; CHECK-NEXT: ret i8 [[SELECT]]
1774
1774
;
1775
1775
%trunc = trunc i8 %x to i1
@@ -1781,9 +1781,8 @@ define i8 @select_not_trunc_or_2(i8 %x, i8 %y) {
1781
1781
1782
1782
define i8 @select_trunc_nuw_or_2 (i8 %x , i8 %y ) {
1783
1783
; 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]]
1787
1786
; CHECK-NEXT: ret i8 [[SELECT]]
1788
1787
;
1789
1788
%trunc = trunc nuw i8 %x to i1
@@ -1794,9 +1793,9 @@ define i8 @select_trunc_nuw_or_2(i8 %x, i8 %y) {
1794
1793
1795
1794
define i8 @select_trunc_nsw_or_2 (i8 %x , i8 %y ) {
1796
1795
; 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 ]]
1800
1799
; CHECK-NEXT: ret i8 [[SELECT]]
1801
1800
;
1802
1801
%trunc = trunc nsw i8 %x to i1
@@ -1807,9 +1806,9 @@ define i8 @select_trunc_nsw_or_2(i8 %x, i8 %y) {
1807
1806
1808
1807
define <2 x i8 > @select_trunc_or_2_vec (<2 x i8 > %x , <2 x i8 > %y ) {
1809
1808
; 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 ]]
1813
1812
; CHECK-NEXT: ret <2 x i8> [[SELECT]]
1814
1813
;
1815
1814
%trunc = trunc <2 x i8 > %x to <2 x i1 >
0 commit comments