Add nonuniform vector trunc(or(shl(zext(x),c1),srl(zext(x),c2))) tests

This commit is contained in:
Simon Pilgrim 2020-07-03 11:40:17 +01:00
parent 029046dc32
commit b3a2882dbc
1 changed files with 34 additions and 0 deletions

View File

@ -500,6 +500,40 @@ define <2 x i16> @test40vec(<2 x i16> %a) {
ret <2 x i16> %r
}
define <2 x i16> @test40vec_nonuniform(<2 x i16> %a) {
; ALL-LABEL: @test40vec_nonuniform(
; ALL-NEXT: [[T:%.*]] = zext <2 x i16> [[A:%.*]] to <2 x i32>
; ALL-NEXT: [[T21:%.*]] = lshr <2 x i32> [[T]], <i32 9, i32 10>
; ALL-NEXT: [[T5:%.*]] = shl <2 x i32> [[T]], <i32 8, i32 9>
; ALL-NEXT: [[T32:%.*]] = or <2 x i32> [[T21]], [[T5]]
; ALL-NEXT: [[R:%.*]] = trunc <2 x i32> [[T32]] to <2 x i16>
; ALL-NEXT: ret <2 x i16> [[R]]
;
%t = zext <2 x i16> %a to <2 x i32>
%t21 = lshr <2 x i32> %t, <i32 9, i32 10>
%t5 = shl <2 x i32> %t, <i32 8, i32 9>
%t32 = or <2 x i32> %t21, %t5
%r = trunc <2 x i32> %t32 to <2 x i16>
ret <2 x i16> %r
}
define <2 x i16> @test40vec_undef(<2 x i16> %a) {
; ALL-LABEL: @test40vec_undef(
; ALL-NEXT: [[T:%.*]] = zext <2 x i16> [[A:%.*]] to <2 x i32>
; ALL-NEXT: [[T21:%.*]] = lshr <2 x i32> [[T]], <i32 9, i32 undef>
; ALL-NEXT: [[T5:%.*]] = shl <2 x i32> [[T]], <i32 8, i32 undef>
; ALL-NEXT: [[T32:%.*]] = or <2 x i32> [[T21]], [[T5]]
; ALL-NEXT: [[R:%.*]] = trunc <2 x i32> [[T32]] to <2 x i16>
; ALL-NEXT: ret <2 x i16> [[R]]
;
%t = zext <2 x i16> %a to <2 x i32>
%t21 = lshr <2 x i32> %t, <i32 9, i32 undef>
%t5 = shl <2 x i32> %t, <i32 8, i32 undef>
%t32 = or <2 x i32> %t21, %t5
%r = trunc <2 x i32> %t32 to <2 x i16>
ret <2 x i16> %r
}
; PR1263
define i32* @test41(i32* %t1) {
; ALL-LABEL: @test41(