summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/avx512-mask-op.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/X86/avx512-mask-op.ll')
-rw-r--r--llvm/test/CodeGen/X86/avx512-mask-op.ll41
1 files changed, 41 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/avx512-mask-op.ll b/llvm/test/CodeGen/X86/avx512-mask-op.ll
index a91e939bc7a..353f9ad42a6 100644
--- a/llvm/test/CodeGen/X86/avx512-mask-op.ll
+++ b/llvm/test/CodeGen/X86/avx512-mask-op.ll
@@ -55,6 +55,7 @@ define i32 @mask8_zext(i8 %x) {
; KNL-NEXT: kmovw %edi, %k0
; KNL-NEXT: knotw %k0, %k0
; KNL-NEXT: kmovw %k0, %eax
+; KNL-NEXT: movzbl %al, %eax
; KNL-NEXT: retq
;
; SKX-LABEL: mask8_zext:
@@ -1959,3 +1960,43 @@ define void @store_64i1(<64 x i1>* %a, <64 x i1> %v) {
store <64 x i1> %v, <64 x i1>* %a
ret void
}
+
+define i32 @test_bitcast_v8i1_zext(<16 x i32> %a) {
+; KNL-LABEL: test_bitcast_v8i1_zext:
+; KNL: ## BB#0:
+; KNL-NEXT: vpxord %zmm1, %zmm1, %zmm1
+; KNL-NEXT: vpcmpeqd %zmm1, %zmm0, %k0
+; KNL-NEXT: kmovw %k0, %eax
+; KNL-NEXT: movzbl %al, %eax
+; KNL-NEXT: addl %eax, %eax
+; KNL-NEXT: retq
+;
+; SKX-LABEL: test_bitcast_v8i1_zext:
+; SKX: ## BB#0:
+; SKX-NEXT: vpxord %zmm1, %zmm1, %zmm1
+; SKX-NEXT: vpcmpeqd %zmm1, %zmm0, %k0
+; SKX-NEXT: kmovb %k0, %eax
+; SKX-NEXT: addl %eax, %eax
+; SKX-NEXT: retq
+ %v1 = icmp eq <16 x i32> %a, zeroinitializer
+ %mask = shufflevector <16 x i1> %v1, <16 x i1> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
+ %mask1 = bitcast <8 x i1> %mask to i8
+ %val = zext i8 %mask1 to i32
+ %val1 = add i32 %val, %val
+ ret i32 %val1
+}
+
+define i32 @test_bitcast_v16i1_zext(<16 x i32> %a) {
+; CHECK-LABEL: test_bitcast_v16i1_zext:
+; CHECK: ## BB#0:
+; CHECK-NEXT: vpxord %zmm1, %zmm1, %zmm1
+; CHECK-NEXT: vpcmpeqd %zmm1, %zmm0, %k0
+; CHECK-NEXT: kmovw %k0, %eax
+; CHECK-NEXT: addl %eax, %eax
+; CHECK-NEXT: retq
+ %v1 = icmp eq <16 x i32> %a, zeroinitializer
+ %mask1 = bitcast <16 x i1> %v1 to i16
+ %val = zext i16 %mask1 to i32
+ %val1 = add i32 %val, %val
+ ret i32 %val1
+}
OpenPOWER on IntegriCloud