diff options
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/CodeGen/X86/avx512-mask-op.ll | 75 |
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 +} + |

