[X86] Don't widen 128/256-bit strict compares with vXi1 result to 512-bits on KNL.
If we widen the compare we might trigger a spurious exception from
the garbage data.
We have two choices here. Explicitly force the upper bits to zero.
Or use a legacy VEX vcmpps/pd instruction and convert the XMM/YMM
result to mask register.
I've chosen to go with the second option. I'm not sure which is
really best. In some cases we could get rid of the zeroing since
the producing instruction probably already zeroed it. But we lose
the ability to fold a load. So which is best is dependent on
surrounding code.
Differential Revision: https://reviews.llvm.org/D74522
diff --git a/llvm/test/CodeGen/X86/vec-strict-cmp-256.ll b/llvm/test/CodeGen/X86/vec-strict-cmp-256.ll
index 225aebf..dd0dd95 100644
--- a/llvm/test/CodeGen/X86/vec-strict-cmp-256.ll
+++ b/llvm/test/CodeGen/X86/vec-strict-cmp-256.ll
@@ -49,11 +49,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpeqps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpeqps 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -62,11 +61,10 @@
;
; AVX512F-64-LABEL: test_v8f32_oeq_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpeqps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpeqps %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -121,11 +119,11 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmplt_oqps %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT: vcmplt_oqps %ymm2, %ymm3, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -134,11 +132,10 @@
;
; AVX512F-64-LABEL: test_v8f32_ogt_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmplt_oqps %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT: vcmplt_oqps %ymm2, %ymm3, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -193,11 +190,11 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmple_oqps %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT: vcmple_oqps %ymm2, %ymm3, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -206,11 +203,10 @@
;
; AVX512F-64-LABEL: test_v8f32_oge_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmple_oqps %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT: vcmple_oqps %ymm2, %ymm3, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -264,11 +260,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmplt_oqps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmplt_oqps 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -277,11 +272,10 @@
;
; AVX512F-64-LABEL: test_v8f32_olt_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmplt_oqps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmplt_oqps %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -335,11 +329,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmple_oqps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmple_oqps 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -348,11 +341,10 @@
;
; AVX512F-64-LABEL: test_v8f32_ole_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmple_oqps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmple_oqps %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -406,11 +398,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpneq_oqps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpneq_oqps 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -419,11 +410,10 @@
;
; AVX512F-64-LABEL: test_v8f32_one_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpneq_oqps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpneq_oqps %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -477,11 +467,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpordps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpordps 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -490,11 +479,10 @@
;
; AVX512F-64-LABEL: test_v8f32_ord_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpordps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpordps %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -548,11 +536,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpeq_uqps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpeq_uqps 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -561,11 +548,10 @@
;
; AVX512F-64-LABEL: test_v8f32_ueq_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpeq_uqps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpeq_uqps %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -619,11 +605,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpnle_uqps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpnle_uqps 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -632,11 +617,10 @@
;
; AVX512F-64-LABEL: test_v8f32_ugt_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpnle_uqps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpnle_uqps %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -690,11 +674,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpnlt_uqps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpnlt_uqps 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -703,11 +686,10 @@
;
; AVX512F-64-LABEL: test_v8f32_uge_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpnlt_uqps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpnlt_uqps %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -762,11 +744,11 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpnle_uqps %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT: vcmpnle_uqps %ymm2, %ymm3, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -775,11 +757,10 @@
;
; AVX512F-64-LABEL: test_v8f32_ult_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpnle_uqps %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT: vcmpnle_uqps %ymm2, %ymm3, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -834,11 +815,11 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpnlt_uqps %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT: vcmpnlt_uqps %ymm2, %ymm3, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -847,11 +828,10 @@
;
; AVX512F-64-LABEL: test_v8f32_ule_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpnlt_uqps %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT: vcmpnlt_uqps %ymm2, %ymm3, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -905,11 +885,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpneqps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpneqps 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -918,11 +897,10 @@
;
; AVX512F-64-LABEL: test_v8f32_une_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpneqps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpneqps %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -976,11 +954,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpunordps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpunordps 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -989,11 +966,10 @@
;
; AVX512F-64-LABEL: test_v8f32_uno_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpunordps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpunordps %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -1047,11 +1023,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpeqpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpeqpd 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -1060,11 +1035,10 @@
;
; AVX512F-64-LABEL: test_v4f64_oeq_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpeqpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpeqpd %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -1119,11 +1093,11 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmplt_oqpd %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT: vcmplt_oqpd %ymm2, %ymm3, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -1132,11 +1106,10 @@
;
; AVX512F-64-LABEL: test_v4f64_ogt_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmplt_oqpd %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT: vcmplt_oqpd %ymm2, %ymm3, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -1191,11 +1164,11 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmple_oqpd %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT: vcmple_oqpd %ymm2, %ymm3, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -1204,11 +1177,10 @@
;
; AVX512F-64-LABEL: test_v4f64_oge_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmple_oqpd %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT: vcmple_oqpd %ymm2, %ymm3, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -1262,11 +1234,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmplt_oqpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmplt_oqpd 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -1275,11 +1246,10 @@
;
; AVX512F-64-LABEL: test_v4f64_olt_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmplt_oqpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmplt_oqpd %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -1333,11 +1303,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmple_oqpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmple_oqpd 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -1346,11 +1315,10 @@
;
; AVX512F-64-LABEL: test_v4f64_ole_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmple_oqpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmple_oqpd %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -1404,11 +1372,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpneq_oqpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpneq_oqpd 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -1417,11 +1384,10 @@
;
; AVX512F-64-LABEL: test_v4f64_one_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpneq_oqpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpneq_oqpd %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -1475,11 +1441,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpordpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpordpd 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -1488,11 +1453,10 @@
;
; AVX512F-64-LABEL: test_v4f64_ord_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpordpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpordpd %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -1546,11 +1510,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpeq_uqpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpeq_uqpd 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -1559,11 +1522,10 @@
;
; AVX512F-64-LABEL: test_v4f64_ueq_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpeq_uqpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpeq_uqpd %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -1617,11 +1579,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpnle_uqpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpnle_uqpd 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -1630,11 +1591,10 @@
;
; AVX512F-64-LABEL: test_v4f64_ugt_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpnle_uqpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpnle_uqpd %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -1688,11 +1648,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpnlt_uqpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpnlt_uqpd 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -1701,11 +1660,10 @@
;
; AVX512F-64-LABEL: test_v4f64_uge_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpnlt_uqpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpnlt_uqpd %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -1760,11 +1718,11 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpnle_uqpd %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT: vcmpnle_uqpd %ymm2, %ymm3, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -1773,11 +1731,10 @@
;
; AVX512F-64-LABEL: test_v4f64_ult_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpnle_uqpd %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT: vcmpnle_uqpd %ymm2, %ymm3, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -1832,11 +1789,11 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpnlt_uqpd %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT: vcmpnlt_uqpd %ymm2, %ymm3, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -1845,11 +1802,10 @@
;
; AVX512F-64-LABEL: test_v4f64_ule_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpnlt_uqpd %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT: vcmpnlt_uqpd %ymm2, %ymm3, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -1903,11 +1859,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpneqpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpneqpd 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -1916,11 +1871,10 @@
;
; AVX512F-64-LABEL: test_v4f64_une_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpneqpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpneqpd %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -1974,11 +1928,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpunordpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpunordpd 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -1987,11 +1940,10 @@
;
; AVX512F-64-LABEL: test_v4f64_uno_q:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpunordpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpunordpd %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -2045,11 +1997,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpeq_osps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpeq_osps 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -2058,11 +2009,10 @@
;
; AVX512F-64-LABEL: test_v8f32_oeq_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpeq_osps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpeq_osps %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -2117,11 +2067,11 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpltps %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT: vcmpltps %ymm2, %ymm3, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -2130,11 +2080,10 @@
;
; AVX512F-64-LABEL: test_v8f32_ogt_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpltps %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT: vcmpltps %ymm2, %ymm3, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -2189,11 +2138,11 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpleps %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT: vcmpleps %ymm2, %ymm3, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -2202,11 +2151,10 @@
;
; AVX512F-64-LABEL: test_v8f32_oge_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpleps %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT: vcmpleps %ymm2, %ymm3, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -2260,11 +2208,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpltps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpltps 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -2273,11 +2220,10 @@
;
; AVX512F-64-LABEL: test_v8f32_olt_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpltps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpltps %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -2331,11 +2277,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpleps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpleps 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -2344,11 +2289,10 @@
;
; AVX512F-64-LABEL: test_v8f32_ole_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpleps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpleps %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -2402,11 +2346,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpneq_osps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpneq_osps 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -2415,11 +2358,10 @@
;
; AVX512F-64-LABEL: test_v8f32_one_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpneq_osps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpneq_osps %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -2473,11 +2415,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpord_sps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpord_sps 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -2486,11 +2427,10 @@
;
; AVX512F-64-LABEL: test_v8f32_ord_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpord_sps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpord_sps %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -2544,11 +2484,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpeq_usps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpeq_usps 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -2557,11 +2496,10 @@
;
; AVX512F-64-LABEL: test_v8f32_ueq_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpeq_usps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpeq_usps %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -2615,11 +2553,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpnleps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpnleps 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -2628,11 +2565,10 @@
;
; AVX512F-64-LABEL: test_v8f32_ugt_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpnleps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpnleps %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -2686,11 +2622,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpnltps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpnltps 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -2699,11 +2634,10 @@
;
; AVX512F-64-LABEL: test_v8f32_uge_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpnltps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpnltps %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -2758,11 +2692,11 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpnleps %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT: vcmpnleps %ymm2, %ymm3, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -2771,11 +2705,10 @@
;
; AVX512F-64-LABEL: test_v8f32_ult_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpnleps %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT: vcmpnleps %ymm2, %ymm3, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -2830,11 +2763,11 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpnltps %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT: vcmpnltps %ymm2, %ymm3, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -2843,11 +2776,10 @@
;
; AVX512F-64-LABEL: test_v8f32_ule_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpnltps %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT: vcmpnltps %ymm2, %ymm3, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -2901,11 +2833,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpneq_usps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpneq_usps 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -2914,11 +2845,10 @@
;
; AVX512F-64-LABEL: test_v8f32_une_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpneq_usps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpneq_usps %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -2972,11 +2902,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpunord_sps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpunord_sps 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -2985,11 +2914,10 @@
;
; AVX512F-64-LABEL: test_v8f32_uno_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpunord_sps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpunord_sps %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -3043,11 +2971,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpeq_ospd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpeq_ospd 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -3056,11 +2983,10 @@
;
; AVX512F-64-LABEL: test_v4f64_oeq_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpeq_ospd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpeq_ospd %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -3115,11 +3041,11 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpltpd %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT: vcmpltpd %ymm2, %ymm3, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -3128,11 +3054,10 @@
;
; AVX512F-64-LABEL: test_v4f64_ogt_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpltpd %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT: vcmpltpd %ymm2, %ymm3, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -3187,11 +3112,11 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmplepd %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT: vcmplepd %ymm2, %ymm3, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -3200,11 +3125,10 @@
;
; AVX512F-64-LABEL: test_v4f64_oge_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmplepd %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT: vcmplepd %ymm2, %ymm3, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -3258,11 +3182,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpltpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpltpd 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -3271,11 +3194,10 @@
;
; AVX512F-64-LABEL: test_v4f64_olt_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpltpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpltpd %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -3329,11 +3251,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmplepd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmplepd 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -3342,11 +3263,10 @@
;
; AVX512F-64-LABEL: test_v4f64_ole_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmplepd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmplepd %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -3400,11 +3320,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpneq_ospd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpneq_ospd 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -3413,11 +3332,10 @@
;
; AVX512F-64-LABEL: test_v4f64_one_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpneq_ospd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpneq_ospd %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -3471,11 +3389,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpord_spd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpord_spd 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -3484,11 +3401,10 @@
;
; AVX512F-64-LABEL: test_v4f64_ord_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpord_spd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpord_spd %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -3542,11 +3458,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpeq_uspd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpeq_uspd 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -3555,11 +3470,10 @@
;
; AVX512F-64-LABEL: test_v4f64_ueq_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpeq_uspd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpeq_uspd %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -3613,11 +3527,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpnlepd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpnlepd 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -3626,11 +3539,10 @@
;
; AVX512F-64-LABEL: test_v4f64_ugt_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpnlepd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpnlepd %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -3684,11 +3596,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpnltpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpnltpd 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -3697,11 +3608,10 @@
;
; AVX512F-64-LABEL: test_v4f64_uge_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpnltpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpnltpd %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -3756,11 +3666,11 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpnlepd %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT: vcmpnlepd %ymm2, %ymm3, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -3769,11 +3679,10 @@
;
; AVX512F-64-LABEL: test_v4f64_ult_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpnlepd %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT: vcmpnlepd %ymm2, %ymm3, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -3828,11 +3737,11 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpnltpd %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT: vcmpnltpd %ymm2, %ymm3, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -3841,11 +3750,10 @@
;
; AVX512F-64-LABEL: test_v4f64_ule_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpnltpd %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT: vcmpnltpd %ymm2, %ymm3, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -3899,11 +3807,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpneq_uspd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpneq_uspd 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -3912,11 +3819,10 @@
;
; AVX512F-64-LABEL: test_v4f64_une_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpneq_uspd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpneq_uspd %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq
@@ -3970,11 +3876,10 @@
; AVX512F-32-NEXT: movl %esp, %ebp
; AVX512F-32-NEXT: andl $-32, %esp
; AVX512F-32-NEXT: subl $32, %esp
-; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3
-; AVX512F-32-NEXT: vcmpunord_spd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT: vcmpunord_spd 8(%ebp), %ymm2, %ymm2
+; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-32-NEXT: movl %ebp, %esp
@@ -3983,11 +3888,10 @@
;
; AVX512F-64-LABEL: test_v4f64_uno_s:
; AVX512F-64: # %bb.0:
-; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3
-; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
-; AVX512F-64-NEXT: vcmpunord_spd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT: vcmpunord_spd %ymm3, %ymm2, %ymm2
+; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1
; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
; AVX512F-64-NEXT: retq