summaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/avx512-calling-conv.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGen/X86/avx512-calling-conv.ll')
-rw-r--r--test/CodeGen/X86/avx512-calling-conv.ll88
1 files changed, 24 insertions, 64 deletions
diff --git a/test/CodeGen/X86/avx512-calling-conv.ll b/test/CodeGen/X86/avx512-calling-conv.ll
index 6e6d61f37d2ed..248462d0de51a 100644
--- a/test/CodeGen/X86/avx512-calling-conv.ll
+++ b/test/CodeGen/X86/avx512-calling-conv.ll
@@ -17,78 +17,40 @@ define <16 x i1> @test1() {
}
define <16 x i1> @test2(<16 x i1>%a, <16 x i1>%b) {
-; KNL-LABEL: test2:
-; KNL: ## %bb.0:
-; KNL-NEXT: vpmovsxbd %xmm1, %zmm1
-; KNL-NEXT: vpslld $31, %zmm1, %zmm1
-; KNL-NEXT: vpmovsxbd %xmm0, %zmm0
-; KNL-NEXT: vpslld $31, %zmm0, %zmm0
-; KNL-NEXT: vptestmd %zmm0, %zmm0, %k1
-; KNL-NEXT: vptestmd %zmm1, %zmm1, %k1 {%k1}
-; KNL-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
-; KNL-NEXT: vpmovdb %zmm0, %xmm0
-; KNL-NEXT: retq
-;
-; SKX-LABEL: test2:
-; SKX: ## %bb.0:
-; SKX-NEXT: vpsllw $7, %xmm1, %xmm1
-; SKX-NEXT: vpmovb2m %xmm1, %k0
-; SKX-NEXT: vpsllw $7, %xmm0, %xmm0
-; SKX-NEXT: vpmovb2m %xmm0, %k1
-; SKX-NEXT: kandw %k0, %k1, %k0
-; SKX-NEXT: vpmovm2b %k0, %xmm0
-; SKX-NEXT: retq
+; ALL_X64-LABEL: test2:
+; ALL_X64: ## %bb.0:
+; ALL_X64-NEXT: vpand %xmm1, %xmm0, %xmm0
+; ALL_X64-NEXT: vpsllw $7, %xmm0, %xmm0
+; ALL_X64-NEXT: vpand {{.*}}(%rip), %xmm0, %xmm0
+; ALL_X64-NEXT: vpxor %xmm1, %xmm1, %xmm1
+; ALL_X64-NEXT: vpcmpgtb %xmm0, %xmm1, %xmm0
+; ALL_X64-NEXT: retq
;
; KNL_X32-LABEL: test2:
; KNL_X32: ## %bb.0:
-; KNL_X32-NEXT: vpmovsxbd %xmm1, %zmm1
-; KNL_X32-NEXT: vpslld $31, %zmm1, %zmm1
-; KNL_X32-NEXT: vpmovsxbd %xmm0, %zmm0
-; KNL_X32-NEXT: vpslld $31, %zmm0, %zmm0
-; KNL_X32-NEXT: vptestmd %zmm0, %zmm0, %k1
-; KNL_X32-NEXT: vptestmd %zmm1, %zmm1, %k1 {%k1}
-; KNL_X32-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
-; KNL_X32-NEXT: vpmovdb %zmm0, %xmm0
+; KNL_X32-NEXT: vpand %xmm1, %xmm0, %xmm0
+; KNL_X32-NEXT: vpsllw $7, %xmm0, %xmm0
+; KNL_X32-NEXT: vpand LCPI1_0, %xmm0, %xmm0
+; KNL_X32-NEXT: vpxor %xmm1, %xmm1, %xmm1
+; KNL_X32-NEXT: vpcmpgtb %xmm0, %xmm1, %xmm0
; KNL_X32-NEXT: retl
%c = and <16 x i1>%a, %b
ret <16 x i1> %c
}
define <8 x i1> @test3(<8 x i1>%a, <8 x i1>%b) {
-; KNL-LABEL: test3:
-; KNL: ## %bb.0:
-; KNL-NEXT: vpmovsxwq %xmm1, %zmm1
-; KNL-NEXT: vpsllq $63, %zmm1, %zmm1
-; KNL-NEXT: vpmovsxwq %xmm0, %zmm0
-; KNL-NEXT: vpsllq $63, %zmm0, %zmm0
-; KNL-NEXT: vptestmq %zmm0, %zmm0, %k1
-; KNL-NEXT: vptestmq %zmm1, %zmm1, %k1 {%k1}
-; KNL-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
-; KNL-NEXT: vpmovdw %zmm0, %ymm0
-; KNL-NEXT: ## kill: def %xmm0 killed %xmm0 killed %ymm0
-; KNL-NEXT: retq
-;
-; SKX-LABEL: test3:
-; SKX: ## %bb.0:
-; SKX-NEXT: vpsllw $15, %xmm1, %xmm1
-; SKX-NEXT: vpmovw2m %xmm1, %k0
-; SKX-NEXT: vpsllw $15, %xmm0, %xmm0
-; SKX-NEXT: vpmovw2m %xmm0, %k1
-; SKX-NEXT: kandb %k0, %k1, %k0
-; SKX-NEXT: vpmovm2w %k0, %xmm0
-; SKX-NEXT: retq
+; ALL_X64-LABEL: test3:
+; ALL_X64: ## %bb.0:
+; ALL_X64-NEXT: vpand %xmm1, %xmm0, %xmm0
+; ALL_X64-NEXT: vpsllw $15, %xmm0, %xmm0
+; ALL_X64-NEXT: vpsraw $15, %xmm0, %xmm0
+; ALL_X64-NEXT: retq
;
; KNL_X32-LABEL: test3:
; KNL_X32: ## %bb.0:
-; KNL_X32-NEXT: vpmovsxwq %xmm1, %zmm1
-; KNL_X32-NEXT: vpsllq $63, %zmm1, %zmm1
-; KNL_X32-NEXT: vpmovsxwq %xmm0, %zmm0
-; KNL_X32-NEXT: vpsllq $63, %zmm0, %zmm0
-; KNL_X32-NEXT: vptestmq %zmm0, %zmm0, %k1
-; KNL_X32-NEXT: vptestmq %zmm1, %zmm1, %k1 {%k1}
-; KNL_X32-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
-; KNL_X32-NEXT: vpmovdw %zmm0, %ymm0
-; KNL_X32-NEXT: ## kill: def %xmm0 killed %xmm0 killed %ymm0
+; KNL_X32-NEXT: vpand %xmm1, %xmm0, %xmm0
+; KNL_X32-NEXT: vpsllw $15, %xmm0, %xmm0
+; KNL_X32-NEXT: vpsraw $15, %xmm0, %xmm0
; KNL_X32-NEXT: retl
%c = and <8 x i1>%a, %b
ret <8 x i1> %c
@@ -102,11 +64,9 @@ define <4 x i1> @test4(<4 x i1>%a, <4 x i1>%b) {
;
; SKX-LABEL: test4:
; SKX: ## %bb.0:
-; SKX-NEXT: vpslld $31, %xmm1, %xmm1
+; SKX-NEXT: vpand %xmm1, %xmm0, %xmm0
; SKX-NEXT: vpslld $31, %xmm0, %xmm0
-; SKX-NEXT: vptestmd %xmm0, %xmm0, %k1
-; SKX-NEXT: vptestmd %xmm1, %xmm1, %k0 {%k1}
-; SKX-NEXT: vpmovm2d %k0, %xmm0
+; SKX-NEXT: vpsrad $31, %xmm0, %xmm0
; SKX-NEXT: retq
;
; KNL_X32-LABEL: test4: