forked from OSchip/llvm-project
Add nonuniform vector trunc(or(shl(zext(x),c1),srl(zext(x),c2))) tests
This commit is contained in:
parent
029046dc32
commit
b3a2882dbc
|
@ -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(
|
||||
|
|
Loading…
Reference in New Issue