mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-09 11:25:55 +00:00
[x86] Add some tests I missed in the prior commit to cover blends with
zero for v8i16 as well. These exhibit the same domain badness, but also exhibit other weaknesses in our blend lowering. More fixes to come. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228126 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -2046,3 +2046,69 @@ define <8 x i16> @shuffle_v8i16_01u3zzuz(<8 x i16> %a) {
|
|||||||
%shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 undef, i32 3, i32 8, i32 8, i32 undef, i32 8>
|
%shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 undef, i32 3, i32 8, i32 8, i32 undef, i32 8>
|
||||||
ret <8 x i16> %shuffle
|
ret <8 x i16> %shuffle
|
||||||
}
|
}
|
||||||
|
|
||||||
|
define <8 x i16> @shuffle_v8i16_0z234567(<8 x i16> %a) {
|
||||||
|
; SSE2-LABEL: shuffle_v8i16_0z234567:
|
||||||
|
; SSE2: # BB#0:
|
||||||
|
; SSE2-NEXT: andps {{.*}}(%rip), %xmm0
|
||||||
|
; SSE2-NEXT: retq
|
||||||
|
;
|
||||||
|
; SSSE3-LABEL: shuffle_v8i16_0z234567:
|
||||||
|
; SSSE3: # BB#0:
|
||||||
|
; SSSE3-NEXT: andps {{.*}}(%rip), %xmm0
|
||||||
|
; SSSE3-NEXT: retq
|
||||||
|
;
|
||||||
|
; SSE41-LABEL: shuffle_v8i16_0z234567:
|
||||||
|
; SSE41: # BB#0:
|
||||||
|
; SSE41-NEXT: pxor %xmm1, %xmm1
|
||||||
|
; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3,4,5,6,7]
|
||||||
|
; SSE41-NEXT: retq
|
||||||
|
;
|
||||||
|
; AVX-LABEL: shuffle_v8i16_0z234567:
|
||||||
|
; AVX: # BB#0:
|
||||||
|
; AVX-NEXT: vpxor %xmm1, %xmm1, %xmm1
|
||||||
|
; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3,4,5,6,7]
|
||||||
|
; AVX-NEXT: retq
|
||||||
|
%shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32> <i32 0, i32 9, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
|
||||||
|
ret <8 x i16> %shuffle
|
||||||
|
}
|
||||||
|
|
||||||
|
define <8 x i16> @shuffle_v8i16_0zzzz5z7(<8 x i16> %a) {
|
||||||
|
; SSE-LABEL: shuffle_v8i16_0zzzz5z7:
|
||||||
|
; SSE: # BB#0:
|
||||||
|
; SSE-NEXT: andps {{.*}}(%rip), %xmm0
|
||||||
|
; SSE-NEXT: retq
|
||||||
|
;
|
||||||
|
; AVX-LABEL: shuffle_v8i16_0zzzz5z7:
|
||||||
|
; AVX: # BB#0:
|
||||||
|
; AVX-NEXT: vandps {{.*}}(%rip), %xmm0, %xmm0
|
||||||
|
; AVX-NEXT: retq
|
||||||
|
%shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32> <i32 0, i32 8, i32 8, i32 8, i32 8, i32 5, i32 8, i32 7>
|
||||||
|
ret <8 x i16> %shuffle
|
||||||
|
}
|
||||||
|
|
||||||
|
define <8 x i16> @shuffle_v8i16_0123456z(<8 x i16> %a) {
|
||||||
|
; SSE2-LABEL: shuffle_v8i16_0123456z:
|
||||||
|
; SSE2: # BB#0:
|
||||||
|
; SSE2-NEXT: andps {{.*}}(%rip), %xmm0
|
||||||
|
; SSE2-NEXT: retq
|
||||||
|
;
|
||||||
|
; SSSE3-LABEL: shuffle_v8i16_0123456z:
|
||||||
|
; SSSE3: # BB#0:
|
||||||
|
; SSSE3-NEXT: andps {{.*}}(%rip), %xmm0
|
||||||
|
; SSSE3-NEXT: retq
|
||||||
|
;
|
||||||
|
; SSE41-LABEL: shuffle_v8i16_0123456z:
|
||||||
|
; SSE41: # BB#0:
|
||||||
|
; SSE41-NEXT: pxor %xmm1, %xmm1
|
||||||
|
; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3,4,5,6],xmm1[7]
|
||||||
|
; SSE41-NEXT: retq
|
||||||
|
;
|
||||||
|
; AVX-LABEL: shuffle_v8i16_0123456z:
|
||||||
|
; AVX: # BB#0:
|
||||||
|
; AVX-NEXT: vpxor %xmm1, %xmm1, %xmm1
|
||||||
|
; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3,4,5,6],xmm1[7]
|
||||||
|
; AVX-NEXT: retq
|
||||||
|
%shuffle = shufflevector <8 x i16> %a, <8 x i16> zeroinitializer, <8 x i32> <i32 0, i32 9, i32 2, i32 3, i32 4, i32 5, i32 6, i32 15>
|
||||||
|
ret <8 x i16> %shuffle
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user