@@ -1546,6 +1546,56 @@ define i8 @trunc_lshr_sext(i8 %A) {
1546
1546
ret i8 %D
1547
1547
}
1548
1548
1549
+ define <2 x i8 > @trunc_lshr_sext_uniform (<2 x i8 > %A ) {
1550
+ ; ALL-LABEL: @trunc_lshr_sext_uniform(
1551
+ ; ALL-NEXT: [[D:%.*]] = ashr <2 x i8> [[A:%.*]], <i8 6, i8 6>
1552
+ ; ALL-NEXT: ret <2 x i8> [[D]]
1553
+ ;
1554
+ %B = sext <2 x i8 > %A to <2 x i32 >
1555
+ %C = lshr <2 x i32 > %B , <i32 6 , i32 6 >
1556
+ %D = trunc <2 x i32 > %C to <2 x i8 >
1557
+ ret <2 x i8 > %D
1558
+ }
1559
+
1560
+ define <2 x i8 > @trunc_lshr_sext_uniform_undef (<2 x i8 > %A ) {
1561
+ ; ALL-LABEL: @trunc_lshr_sext_uniform_undef(
1562
+ ; ALL-NEXT: [[B:%.*]] = sext <2 x i8> [[A:%.*]] to <2 x i32>
1563
+ ; ALL-NEXT: [[C:%.*]] = lshr <2 x i32> [[B]], <i32 6, i32 undef>
1564
+ ; ALL-NEXT: [[D:%.*]] = trunc <2 x i32> [[C]] to <2 x i8>
1565
+ ; ALL-NEXT: ret <2 x i8> [[D]]
1566
+ ;
1567
+ %B = sext <2 x i8 > %A to <2 x i32 >
1568
+ %C = lshr <2 x i32 > %B , <i32 6 , i32 undef >
1569
+ %D = trunc <2 x i32 > %C to <2 x i8 >
1570
+ ret <2 x i8 > %D
1571
+ }
1572
+
1573
+ define <2 x i8 > @trunc_lshr_sext_nonuniform (<2 x i8 > %A ) {
1574
+ ; ALL-LABEL: @trunc_lshr_sext_nonuniform(
1575
+ ; ALL-NEXT: [[B:%.*]] = sext <2 x i8> [[A:%.*]] to <2 x i32>
1576
+ ; ALL-NEXT: [[C:%.*]] = lshr <2 x i32> [[B]], <i32 6, i32 2>
1577
+ ; ALL-NEXT: [[D:%.*]] = trunc <2 x i32> [[C]] to <2 x i8>
1578
+ ; ALL-NEXT: ret <2 x i8> [[D]]
1579
+ ;
1580
+ %B = sext <2 x i8 > %A to <2 x i32 >
1581
+ %C = lshr <2 x i32 > %B , <i32 6 , i32 2 >
1582
+ %D = trunc <2 x i32 > %C to <2 x i8 >
1583
+ ret <2 x i8 > %D
1584
+ }
1585
+
1586
+ define <3 x i8 > @trunc_lshr_sext_nonuniform_undef (<3 x i8 > %A ) {
1587
+ ; ALL-LABEL: @trunc_lshr_sext_nonuniform_undef(
1588
+ ; ALL-NEXT: [[B:%.*]] = sext <3 x i8> [[A:%.*]] to <3 x i32>
1589
+ ; ALL-NEXT: [[C:%.*]] = lshr <3 x i32> [[B]], <i32 6, i32 2, i32 undef>
1590
+ ; ALL-NEXT: [[D:%.*]] = trunc <3 x i32> [[C]] to <3 x i8>
1591
+ ; ALL-NEXT: ret <3 x i8> [[D]]
1592
+ ;
1593
+ %B = sext <3 x i8 > %A to <3 x i32 >
1594
+ %C = lshr <3 x i32 > %B , <i32 6 , i32 2 , i32 undef >
1595
+ %D = trunc <3 x i32 > %C to <3 x i8 >
1596
+ ret <3 x i8 > %D
1597
+ }
1598
+
1549
1599
define <2 x i8 > @trunc_lshr_sext_uses1 (<2 x i8 > %A ) {
1550
1600
; ALL-LABEL: @trunc_lshr_sext_uses1(
1551
1601
; ALL-NEXT: [[B:%.*]] = sext <2 x i8> [[A:%.*]] to <2 x i32>
0 commit comments