diff options
Diffstat (limited to 'llvm/test/CodeGen')
| -rw-r--r-- | llvm/test/CodeGen/X86/avx512-vec-cmp.ll | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/llvm/test/CodeGen/X86/avx512-vec-cmp.ll b/llvm/test/CodeGen/X86/avx512-vec-cmp.ll index 6a4a3aa7e37..a8c558df9de 100644 --- a/llvm/test/CodeGen/X86/avx512-vec-cmp.ll +++ b/llvm/test/CodeGen/X86/avx512-vec-cmp.ll @@ -152,7 +152,6 @@ define <8 x i32> @test11_unsigned(<8 x i32> %x, <8 x i32> %y) nounwind { ret <8 x i32> %max } - define i16 @test12(<16 x i64> %a, <16 x i64> %b) nounwind { ; KNL-LABEL: test12: ; KNL: ## BB#0: @@ -166,6 +165,32 @@ define i16 @test12(<16 x i64> %a, <16 x i64> %b) nounwind { ret i16 %res1 } +define i32 @test12_v32i32(<32 x i32> %a, <32 x i32> %b) nounwind { +; SKX-LABEL: test12_v32i32: +; SKX: ## BB#0: +; SKX-NEXT: vpcmpeqd %zmm2, %zmm0, %k0 +; SKX-NEXT: vpcmpeqd %zmm3, %zmm1, %k1 +; SKX-NEXT: kunpckwd %k0, %k1, %k0 +; SKX-NEXT: kmovd %k0, %eax +; SKX-NEXT: retq + %res = icmp eq <32 x i32> %a, %b + %res1 = bitcast <32 x i1> %res to i32 + ret i32 %res1 +} + +define i64 @test12_v64i16(<64 x i16> %a, <64 x i16> %b) nounwind { +; SKX-LABEL: test12_v64i16: +; SKX: ## BB#0: +; SKX-NEXT: vpcmpeqw %zmm2, %zmm0, %k0 +; SKX-NEXT: vpcmpeqw %zmm3, %zmm1, %k1 +; SKX-NEXT: kunpckdq %k0, %k1, %k0 +; SKX-NEXT: kmovq %k0, %rax +; SKX-NEXT: retq + %res = icmp eq <64 x i16> %a, %b + %res1 = bitcast <64 x i1> %res to i64 + ret i64 %res1 +} + define <16 x i32> @test13(<16 x float>%a, <16 x float>%b) ; KNL-LABEL: test13: ; KNL: ## BB#0: |

