Skip to content

Commit 324df26

Browse files
committed
[InstCombine] Add trunc(lshr(sext(x),c)) non-uniform vector tests
1 parent 60b8520 commit 324df26

File tree

1 file changed

+50
-0
lines changed
  • llvm/test/Transforms/InstCombine

1 file changed

+50
-0
lines changed

llvm/test/Transforms/InstCombine/cast.ll

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1546,6 +1546,56 @@ define i8 @trunc_lshr_sext(i8 %A) {
15461546
ret i8 %D
15471547
}
15481548

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+
15491599
define <2 x i8> @trunc_lshr_sext_uses1(<2 x i8> %A) {
15501600
; ALL-LABEL: @trunc_lshr_sext_uses1(
15511601
; ALL-NEXT: [[B:%.*]] = sext <2 x i8> [[A:%.*]] to <2 x i32>

0 commit comments

Comments
 (0)