summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/CodeGen/X86/avx512-mask-op.ll75
1 files changed, 75 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/avx512-mask-op.ll b/llvm/test/CodeGen/X86/avx512-mask-op.ll
index 5f3588d68d0..6e12289389a 100644
--- a/llvm/test/CodeGen/X86/avx512-mask-op.ll
+++ b/llvm/test/CodeGen/X86/avx512-mask-op.ll
@@ -207,3 +207,78 @@ true:
false:
ret void
}
+
+; KNL-LABEL: test8
+; KNL: vpxord %zmm2, %zmm2, %zmm2
+; KNL: jg
+; KNL: vpcmpltud %zmm2, %zmm1, %k1
+; KNL: jmp
+; KNL: vpcmpgtd %zmm2, %zmm0, %k1
+
+; SKX-LABEL: test8
+; SKX: jg
+; SKX: vpcmpltud {{.*}}, %k0
+; SKX: vpmovm2b
+; SKX: vpcmpgtd {{.*}}, %k0
+; SKX: vpmovm2b
+
+define <16 x i8> @test8(<16 x i32>%a, <16 x i32>%b, i32 %a1, i32 %b1) {
+ %cond = icmp sgt i32 %a1, %b1
+ %cmp1 = icmp sgt <16 x i32> %a, zeroinitializer
+ %cmp2 = icmp ult <16 x i32> %b, zeroinitializer
+ %mix = select i1 %cond, <16 x i1> %cmp1, <16 x i1> %cmp2
+ %res = sext <16 x i1> %mix to <16 x i8>
+ ret <16 x i8> %res
+}
+
+; KNL-LABEL: test9
+; KNL: jg
+; KNL: vpmovsxbd %xmm1, %zmm0
+; KNL: jmp
+; KNL: vpmovsxbd %xmm0, %zmm0
+
+; SKX-LABEL: test9
+; SKX: vpmovb2m %xmm1, %k0
+; SKX: vpmovm2b %k0, %xmm0
+; SKX: retq
+; SKX: vpmovb2m %xmm0, %k0
+; SKX: vpmovm2b %k0, %xmm0
+
+define <16 x i1> @test9(<16 x i1>%a, <16 x i1>%b, i32 %a1, i32 %b1) {
+ %mask = icmp sgt i32 %a1, %b1
+ %c = select i1 %mask, <16 x i1>%a, <16 x i1>%b
+ ret <16 x i1>%c
+}
+
+; KNL-LABEL: test10
+; KNL: jg
+; KNL: vpmovsxwq %xmm1, %zmm0
+; KNL: jmp
+; KNL: vpmovsxwq %xmm0, %zmm0
+
+; SKX-LABEL: test10
+; SKX: jg
+; SKX: vpmovw2m %xmm1, %k0
+; SKX: vpmovm2w %k0, %xmm0
+; SKX: retq
+; SKX: vpmovw2m %xmm0, %k0
+; SKX: vpmovm2w %k0, %xmm0
+define <8 x i1> @test10(<8 x i1>%a, <8 x i1>%b, i32 %a1, i32 %b1) {
+ %mask = icmp sgt i32 %a1, %b1
+ %c = select i1 %mask, <8 x i1>%a, <8 x i1>%b
+ ret <8 x i1>%c
+}
+
+; SKX-LABEL: test11
+; SKX: jg
+; SKX: vpmovd2m %xmm1, %k0
+; SKX: vpmovm2d %k0, %xmm0
+; SKX: retq
+; SKX: vpmovd2m %xmm0, %k0
+; SKX: vpmovm2d %k0, %xmm0
+define <4 x i1> @test11(<4 x i1>%a, <4 x i1>%b, i32 %a1, i32 %b1) {
+ %mask = icmp sgt i32 %a1, %b1
+ %c = select i1 %mask, <4 x i1>%a, <4 x i1>%b
+ ret <4 x i1>%c
+}
+
OpenPOWER on IntegriCloud