summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/pmul.ll
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2016-03-26 09:44:27 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2016-03-26 09:44:27 +0000
commit7379a70677180605fce5e34ea007c3edb5345537 (patch)
tree7a96798b3c420f4a15881f049187a4f91426f895 /llvm/test/CodeGen/X86/pmul.ll
parentb549ab02b4659c2e6164cb1a39ef798b80d643df (diff)
downloadbcm5719-llvm-7379a70677180605fce5e34ea007c3edb5345537.tar.gz
bcm5719-llvm-7379a70677180605fce5e34ea007c3edb5345537.zip
[X86][AVX512BW] AVX512BW can sign-extend v32i8 to v32i16 for simpler v32i8 multiplies.
Only pre-AVX512BW targets need to split v32i8 vectors. llvm-svn: 264509
Diffstat (limited to 'llvm/test/CodeGen/X86/pmul.ll')
-rw-r--r--llvm/test/CodeGen/X86/pmul.ll25
1 files changed, 7 insertions, 18 deletions
diff --git a/llvm/test/CodeGen/X86/pmul.ll b/llvm/test/CodeGen/X86/pmul.ll
index 89c35ba1803..d5fffa8826c 100644
--- a/llvm/test/CodeGen/X86/pmul.ll
+++ b/llvm/test/CodeGen/X86/pmul.ll
@@ -473,15 +473,11 @@ define <32 x i8> @mul_v32i8c(<32 x i8> %i) nounwind {
;
; AVX512BW-LABEL: mul_v32i8c:
; AVX512BW: # BB#0: # %entry
-; AVX512BW-NEXT: vpmovsxbw %xmm0, %ymm1
-; AVX512BW-NEXT: vpmovsxbw {{.*}}(%rip), %ymm2
-; AVX512BW-NEXT: vpmullw %ymm2, %ymm1, %ymm1
-; AVX512BW-NEXT: vpmovwb %zmm1, %ymm1
-; AVX512BW-NEXT: vextracti128 $1, %ymm0, %xmm0
-; AVX512BW-NEXT: vpmovsxbw %xmm0, %ymm0
-; AVX512BW-NEXT: vpmullw %ymm2, %ymm0, %ymm0
+; AVX512BW-NEXT: vmovaps {{.*#+}} ymm1 = [117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117]
+; AVX512BW-NEXT: vpmovsxbw %ymm1, %zmm1
+; AVX512BW-NEXT: vpmovsxbw %ymm0, %zmm0
+; AVX512BW-NEXT: vpmullw %zmm1, %zmm0, %zmm0
; AVX512BW-NEXT: vpmovwb %zmm0, %ymm0
-; AVX512BW-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
; AVX512BW-NEXT: retq
entry:
%A = mul <32 x i8> %i, < i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117, i8 117 >
@@ -678,17 +674,10 @@ define <32 x i8> @mul_v32i8(<32 x i8> %i, <32 x i8> %j) nounwind {
;
; AVX512BW-LABEL: mul_v32i8:
; AVX512BW: # BB#0: # %entry
-; AVX512BW-NEXT: vpmovsxbw %xmm1, %ymm2
-; AVX512BW-NEXT: vpmovsxbw %xmm0, %ymm3
-; AVX512BW-NEXT: vpmullw %ymm2, %ymm3, %ymm2
-; AVX512BW-NEXT: vpmovwb %zmm2, %ymm2
-; AVX512BW-NEXT: vextracti128 $1, %ymm1, %xmm1
-; AVX512BW-NEXT: vpmovsxbw %xmm1, %ymm1
-; AVX512BW-NEXT: vextracti128 $1, %ymm0, %xmm0
-; AVX512BW-NEXT: vpmovsxbw %xmm0, %ymm0
-; AVX512BW-NEXT: vpmullw %ymm1, %ymm0, %ymm0
+; AVX512BW-NEXT: vpmovsxbw %ymm1, %zmm1
+; AVX512BW-NEXT: vpmovsxbw %ymm0, %zmm0
+; AVX512BW-NEXT: vpmullw %zmm1, %zmm0, %zmm0
; AVX512BW-NEXT: vpmovwb %zmm0, %ymm0
-; AVX512BW-NEXT: vinsertf128 $1, %xmm0, %ymm2, %ymm0
; AVX512BW-NEXT: retq
entry:
%A = mul <32 x i8> %i, %j
OpenPOWER on IntegriCloud