@@ -1712,9 +1712,9 @@ define i8 @select_icmp_eq_and_1_0_lshr_tv(i8 %x, i8 %y) {
1712
1712
1713
1713
define i8 @select_trunc_or_2 (i8 %x , i8 %y ) {
1714
1714
; CHECK-LABEL: @select_trunc_or_2(
1715
- ; CHECK-NEXT: [[TRUNC :%.*]] = trunc i8 [[X:%.*]] to i1
1716
- ; CHECK-NEXT: [[OR :%.*]] = or i8 [[Y:%.* ]], 2
1717
- ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[TRUNC]], i8 [[OR ]], i8 [[Y ]]
1715
+ ; CHECK-NEXT: [[TMP1 :%.*]] = shl i8 [[X:%.*]], 1
1716
+ ; CHECK-NEXT: [[TMP2 :%.*]] = and i8 [[TMP1 ]], 2
1717
+ ; CHECK-NEXT: [[SELECT:%.*]] = or i8 [[Y:%.* ]], [[TMP2 ]]
1718
1718
; CHECK-NEXT: ret i8 [[SELECT]]
1719
1719
;
1720
1720
%trunc = trunc i8 %x to i1
@@ -1725,9 +1725,9 @@ define i8 @select_trunc_or_2(i8 %x, i8 %y) {
1725
1725
1726
1726
define i8 @select_not_trunc_or_2 (i8 %x , i8 %y ) {
1727
1727
; CHECK-LABEL: @select_not_trunc_or_2(
1728
- ; CHECK-NEXT: [[TRUNC :%.*]] = trunc i8 [[X:%.*]] to i1
1729
- ; CHECK-NEXT: [[OR :%.*]] = or i8 [[Y:%.* ]], 2
1730
- ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[TRUNC]], i8 [[OR ]], i8 [[Y ]]
1728
+ ; CHECK-NEXT: [[TMP1 :%.*]] = shl i8 [[X:%.*]], 1
1729
+ ; CHECK-NEXT: [[TMP2 :%.*]] = and i8 [[TMP1 ]], 2
1730
+ ; CHECK-NEXT: [[SELECT:%.*]] = or i8 [[Y:%.* ]], [[TMP2 ]]
1731
1731
; CHECK-NEXT: ret i8 [[SELECT]]
1732
1732
;
1733
1733
%trunc = trunc i8 %x to i1
@@ -1739,9 +1739,8 @@ define i8 @select_not_trunc_or_2(i8 %x, i8 %y) {
1739
1739
1740
1740
define i8 @select_trunc_nuw_or_2 (i8 %x , i8 %y ) {
1741
1741
; CHECK-LABEL: @select_trunc_nuw_or_2(
1742
- ; CHECK-NEXT: [[TRUNC:%.*]] = trunc nuw i8 [[X:%.*]] to i1
1743
- ; CHECK-NEXT: [[OR:%.*]] = or i8 [[Y:%.*]], 2
1744
- ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[TRUNC]], i8 [[OR]], i8 [[Y]]
1742
+ ; CHECK-NEXT: [[TMP1:%.*]] = shl i8 [[X:%.*]], 1
1743
+ ; CHECK-NEXT: [[SELECT:%.*]] = or i8 [[Y:%.*]], [[TMP1]]
1745
1744
; CHECK-NEXT: ret i8 [[SELECT]]
1746
1745
;
1747
1746
%trunc = trunc nuw i8 %x to i1
@@ -1752,9 +1751,9 @@ define i8 @select_trunc_nuw_or_2(i8 %x, i8 %y) {
1752
1751
1753
1752
define i8 @select_trunc_nsw_or_2 (i8 %x , i8 %y ) {
1754
1753
; CHECK-LABEL: @select_trunc_nsw_or_2(
1755
- ; CHECK-NEXT: [[TRUNC :%.*]] = trunc nsw i8 [[X:%.*]] to i1
1756
- ; CHECK-NEXT: [[OR :%.*]] = or i8 [[Y:%.* ]], 2
1757
- ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[TRUNC]], i8 [[OR ]], i8 [[Y ]]
1754
+ ; CHECK-NEXT: [[TMP1 :%.*]] = shl i8 [[X:%.*]], 1
1755
+ ; CHECK-NEXT: [[TMP2 :%.*]] = and i8 [[TMP1 ]], 2
1756
+ ; CHECK-NEXT: [[SELECT:%.*]] = or i8 [[Y:%.* ]], [[TMP2 ]]
1758
1757
; CHECK-NEXT: ret i8 [[SELECT]]
1759
1758
;
1760
1759
%trunc = trunc nsw i8 %x to i1
@@ -1765,9 +1764,9 @@ define i8 @select_trunc_nsw_or_2(i8 %x, i8 %y) {
1765
1764
1766
1765
define <2 x i8 > @select_trunc_or_2_vec (<2 x i8 > %x , <2 x i8 > %y ) {
1767
1766
; CHECK-LABEL: @select_trunc_or_2_vec(
1768
- ; CHECK-NEXT: [[TRUNC :%.*]] = trunc <2 x i8> [[X:%.*]] to <2 x i1>
1769
- ; CHECK-NEXT: [[OR :%.*]] = or <2 x i8> [[Y:%.* ]], splat (i8 2)
1770
- ; CHECK-NEXT: [[SELECT:%.*]] = select <2 x i1> [[TRUNC]], <2 x i8> [[OR ]], <2 x i8> [[Y ]]
1767
+ ; CHECK-NEXT: [[TMP1 :%.*]] = shl <2 x i8> [[X:%.*]], splat (i8 1)
1768
+ ; CHECK-NEXT: [[TMP2 :%.*]] = and <2 x i8> [[TMP1 ]], splat (i8 2)
1769
+ ; CHECK-NEXT: [[SELECT:%.*]] = or <2 x i8> [[Y:%.* ]], [[TMP2 ]]
1771
1770
; CHECK-NEXT: ret <2 x i8> [[SELECT]]
1772
1771
;
1773
1772
%trunc = trunc <2 x i8 > %x to <2 x i1 >
0 commit comments