[llvm] af15082 - [X86] Add test RUN lines to show cases where we use 512-bit vcmppd/ps with garbage upper bits for 128/256-bit strict_fsetcc

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 12 20:52:50 PST 2020


Author: Craig Topper
Date: 2020-02-12T20:51:52-08:00
New Revision: af15082af42020c155144103cb345ae54f02b39f

URL: https://github.com/llvm/llvm-project/commit/af15082af42020c155144103cb345ae54f02b39f
DIFF: https://github.com/llvm/llvm-project/commit/af15082af42020c155144103cb345ae54f02b39f.diff

LOG: [X86] Add test RUN lines to show cases where we use 512-bit vcmppd/ps with garbage upper bits for 128/256-bit strict_fsetcc

On KNL targets, we widen 128/256-bit strict_fsetcc nodes to
512-bits without forcing the upper bits to zero. This can cause
spurious exceptions due to garbage upper bits. This behavior was
inherited from the non-strict case where the spurious exception
isn't a problem.

Added: 
    

Modified: 
    llvm/test/CodeGen/X86/vec-strict-cmp-128.ll
    llvm/test/CodeGen/X86/vec-strict-cmp-256.ll
    llvm/test/CodeGen/X86/vec-strict-cmp-sub128.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/X86/vec-strict-cmp-128.ll b/llvm/test/CodeGen/X86/vec-strict-cmp-128.ll
index 3b56e0114915..7e11f2625603 100644
--- a/llvm/test/CodeGen/X86/vec-strict-cmp-128.ll
+++ b/llvm/test/CodeGen/X86/vec-strict-cmp-128.ll
@@ -5,6 +5,8 @@
 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx -O3 | FileCheck %s --check-prefixes=CHECK,AVX,AVX-64
 ; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512f -mattr=+avx512vl -O3 | FileCheck %s --check-prefixes=CHECK,AVX512-32
 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f -mattr=+avx512vl -O3 | FileCheck %s --check-prefixes=CHECK,AVX512-64
+; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512f -O3 | FileCheck %s --check-prefixes=CHECK,AVX512F-32
+; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f -O3 | FileCheck %s --check-prefixes=CHECK,AVX512F-64
 
 define <4 x i32> @test_v4f32_oeq_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {
 ; SSE-32-LABEL: test_v4f32_oeq_q:
@@ -64,6 +66,36 @@ define <4 x i32> @test_v4f32_oeq_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpeqps %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_oeq_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpeqps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_oeq_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpeqps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"oeq",
                                                metadata !"fpexcept.strict") #0
@@ -189,6 +221,36 @@ define <4 x i32> @test_v4f32_ogt_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmplt_oqps %xmm2, %xmm3, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_ogt_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmplt_oqps %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_ogt_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmplt_oqps %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"ogt",
                                                metadata !"fpexcept.strict") #0
@@ -314,6 +376,36 @@ define <4 x i32> @test_v4f32_oge_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmple_oqps %xmm2, %xmm3, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_oge_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmple_oqps %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_oge_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmple_oqps %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"oge",
                                                metadata !"fpexcept.strict") #0
@@ -438,6 +530,36 @@ define <4 x i32> @test_v4f32_olt_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmplt_oqps %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_olt_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmplt_oqps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_olt_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmplt_oqps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"olt",
                                                metadata !"fpexcept.strict") #0
@@ -562,6 +684,36 @@ define <4 x i32> @test_v4f32_ole_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmple_oqps %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_ole_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmple_oqps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_ole_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmple_oqps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"ole",
                                                metadata !"fpexcept.strict") #0
@@ -634,6 +786,36 @@ define <4 x i32> @test_v4f32_one_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpneq_oqps %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_one_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpneq_oqps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_one_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpneq_oqps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"one",
                                                metadata !"fpexcept.strict") #0
@@ -699,6 +881,36 @@ define <4 x i32> @test_v4f32_ord_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpordps %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_ord_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpordps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_ord_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpordps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"ord",
                                                metadata !"fpexcept.strict") #0
@@ -771,6 +983,36 @@ define <4 x i32> @test_v4f32_ueq_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpeq_uqps %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_ueq_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpeq_uqps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_ueq_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpeq_uqps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"ueq",
                                                metadata !"fpexcept.strict") #0
@@ -895,6 +1137,36 @@ define <4 x i32> @test_v4f32_ugt_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpnle_uqps %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_ugt_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpnle_uqps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_ugt_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpnle_uqps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"ugt",
                                                metadata !"fpexcept.strict") #0
@@ -1019,6 +1291,36 @@ define <4 x i32> @test_v4f32_uge_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpnlt_uqps %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_uge_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpnlt_uqps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_uge_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpnlt_uqps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"uge",
                                                metadata !"fpexcept.strict") #0
@@ -1144,6 +1446,36 @@ define <4 x i32> @test_v4f32_ult_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpnle_uqps %xmm2, %xmm3, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_ult_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpnle_uqps %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_ult_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpnle_uqps %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"ult",
                                                metadata !"fpexcept.strict") #0
@@ -1269,6 +1601,36 @@ define <4 x i32> @test_v4f32_ule_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpnlt_uqps %xmm2, %xmm3, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_ule_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpnlt_uqps %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_ule_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpnlt_uqps %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"ule",
                                                metadata !"fpexcept.strict") #0
@@ -1334,6 +1696,36 @@ define <4 x i32> @test_v4f32_une_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpneqps %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_une_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpneqps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_une_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpneqps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"une",
                                                metadata !"fpexcept.strict") #0
@@ -1399,6 +1791,36 @@ define <4 x i32> @test_v4f32_uno_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpunordps %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_uno_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpunordps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_uno_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpunordps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"uno",
                                                metadata !"fpexcept.strict") #0
@@ -1464,6 +1886,36 @@ define <2 x i64> @test_v2f64_oeq_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpeqpd %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_oeq_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpeqpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_oeq_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpeqpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"oeq",
                                                metadata !"fpexcept.strict") #0
@@ -1555,6 +2007,36 @@ define <2 x i64> @test_v2f64_ogt_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmplt_oqpd %xmm2, %xmm3, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_ogt_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmplt_oqpd %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_ogt_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmplt_oqpd %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"ogt",
                                                metadata !"fpexcept.strict") #0
@@ -1646,6 +2128,36 @@ define <2 x i64> @test_v2f64_oge_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmple_oqpd %xmm2, %xmm3, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_oge_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmple_oqpd %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_oge_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmple_oqpd %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"oge",
                                                metadata !"fpexcept.strict") #0
@@ -1736,6 +2248,36 @@ define <2 x i64> @test_v2f64_olt_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmplt_oqpd %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_olt_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmplt_oqpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_olt_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmplt_oqpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"olt",
                                                metadata !"fpexcept.strict") #0
@@ -1826,6 +2368,36 @@ define <2 x i64> @test_v2f64_ole_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmple_oqpd %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_ole_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmple_oqpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_ole_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmple_oqpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"ole",
                                                metadata !"fpexcept.strict") #0
@@ -1898,6 +2470,36 @@ define <2 x i64> @test_v2f64_one_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpneq_oqpd %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_one_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpneq_oqpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_one_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpneq_oqpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"one",
                                                metadata !"fpexcept.strict") #0
@@ -1963,6 +2565,36 @@ define <2 x i64> @test_v2f64_ord_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpordpd %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_ord_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpordpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_ord_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpordpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"ord",
                                                metadata !"fpexcept.strict") #0
@@ -2035,6 +2667,36 @@ define <2 x i64> @test_v2f64_ueq_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpeq_uqpd %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_ueq_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpeq_uqpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_ueq_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpeq_uqpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"ueq",
                                                metadata !"fpexcept.strict") #0
@@ -2125,6 +2787,36 @@ define <2 x i64> @test_v2f64_ugt_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpnle_uqpd %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_ugt_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpnle_uqpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_ugt_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpnle_uqpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"ugt",
                                                metadata !"fpexcept.strict") #0
@@ -2215,6 +2907,36 @@ define <2 x i64> @test_v2f64_uge_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpnlt_uqpd %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_uge_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpnlt_uqpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_uge_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpnlt_uqpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"uge",
                                                metadata !"fpexcept.strict") #0
@@ -2306,6 +3028,36 @@ define <2 x i64> @test_v2f64_ult_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpnle_uqpd %xmm2, %xmm3, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_ult_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpnle_uqpd %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_ult_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpnle_uqpd %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"ult",
                                                metadata !"fpexcept.strict") #0
@@ -2397,6 +3149,36 @@ define <2 x i64> @test_v2f64_ule_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpnlt_uqpd %xmm2, %xmm3, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_ule_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpnlt_uqpd %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_ule_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpnlt_uqpd %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"ule",
                                                metadata !"fpexcept.strict") #0
@@ -2462,6 +3244,36 @@ define <2 x i64> @test_v2f64_une_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpneqpd %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_une_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpneqpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_une_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpneqpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"une",
                                                metadata !"fpexcept.strict") #0
@@ -2527,6 +3339,36 @@ define <2 x i64> @test_v2f64_uno_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpunordpd %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_uno_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpunordpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_uno_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpunordpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"uno",
                                                metadata !"fpexcept.strict") #0
@@ -2597,6 +3439,36 @@ define <4 x i32> @test_v4f32_oeq_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpeq_osps %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_oeq_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpeq_osps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_oeq_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpeq_osps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"oeq",
                                                metadata !"fpexcept.strict") #0
@@ -2664,6 +3536,36 @@ define <4 x i32> @test_v4f32_ogt_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpltps %xmm2, %xmm3, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_ogt_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpltps %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_ogt_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpltps %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"ogt",
                                                metadata !"fpexcept.strict") #0
@@ -2731,6 +3633,36 @@ define <4 x i32> @test_v4f32_oge_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpleps %xmm2, %xmm3, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_oge_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpleps %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_oge_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpleps %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"oge",
                                                metadata !"fpexcept.strict") #0
@@ -2796,6 +3728,36 @@ define <4 x i32> @test_v4f32_olt_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpltps %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_olt_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpltps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_olt_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpltps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"olt",
                                                metadata !"fpexcept.strict") #0
@@ -2861,6 +3823,36 @@ define <4 x i32> @test_v4f32_ole_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpleps %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_ole_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpleps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_ole_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpleps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"ole",
                                                metadata !"fpexcept.strict") #0
@@ -2937,6 +3929,36 @@ define <4 x i32> @test_v4f32_one_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpneq_osps %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_one_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpneq_osps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_one_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpneq_osps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"one",
                                                metadata !"fpexcept.strict") #0
@@ -3007,6 +4029,36 @@ define <4 x i32> @test_v4f32_ord_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpord_sps %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_ord_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpord_sps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_ord_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpord_sps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"ord",
                                                metadata !"fpexcept.strict") #0
@@ -3083,6 +4135,36 @@ define <4 x i32> @test_v4f32_ueq_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpeq_usps %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_ueq_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpeq_usps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_ueq_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpeq_usps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"ueq",
                                                metadata !"fpexcept.strict") #0
@@ -3148,6 +4230,36 @@ define <4 x i32> @test_v4f32_ugt_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpnleps %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_ugt_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpnleps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_ugt_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpnleps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"ugt",
                                                metadata !"fpexcept.strict") #0
@@ -3213,6 +4325,36 @@ define <4 x i32> @test_v4f32_uge_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpnltps %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_uge_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpnltps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_uge_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpnltps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"uge",
                                                metadata !"fpexcept.strict") #0
@@ -3280,6 +4422,36 @@ define <4 x i32> @test_v4f32_ult_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpnleps %xmm2, %xmm3, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_ult_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpnleps %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_ult_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpnleps %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"ult",
                                                metadata !"fpexcept.strict") #0
@@ -3347,6 +4519,36 @@ define <4 x i32> @test_v4f32_ule_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpnltps %xmm2, %xmm3, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_ule_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpnltps %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_ule_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpnltps %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"ule",
                                                metadata !"fpexcept.strict") #0
@@ -3417,6 +4619,36 @@ define <4 x i32> @test_v4f32_une_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpneq_usps %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_une_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpneq_usps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_une_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpneq_usps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"une",
                                                metadata !"fpexcept.strict") #0
@@ -3487,6 +4719,36 @@ define <4 x i32> @test_v4f32_uno_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1,
 ; AVX512-64-NEXT:    vcmpunord_sps %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f32_uno_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpunord_sps %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v4f32_uno_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpunord_sps %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(
                                                <4 x float> %f1, <4 x float> %f2, metadata !"uno",
                                                metadata !"fpexcept.strict") #0
@@ -3557,6 +4819,36 @@ define <2 x i64> @test_v2f64_oeq_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpeq_ospd %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_oeq_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpeq_ospd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_oeq_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpeq_ospd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"oeq",
                                                metadata !"fpexcept.strict") #0
@@ -3624,6 +4916,36 @@ define <2 x i64> @test_v2f64_ogt_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpltpd %xmm2, %xmm3, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_ogt_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpltpd %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_ogt_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpltpd %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"ogt",
                                                metadata !"fpexcept.strict") #0
@@ -3691,6 +5013,36 @@ define <2 x i64> @test_v2f64_oge_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmplepd %xmm2, %xmm3, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_oge_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmplepd %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_oge_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmplepd %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"oge",
                                                metadata !"fpexcept.strict") #0
@@ -3756,6 +5108,36 @@ define <2 x i64> @test_v2f64_olt_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpltpd %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_olt_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpltpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_olt_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpltpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"olt",
                                                metadata !"fpexcept.strict") #0
@@ -3821,6 +5203,36 @@ define <2 x i64> @test_v2f64_ole_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmplepd %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_ole_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmplepd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_ole_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmplepd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"ole",
                                                metadata !"fpexcept.strict") #0
@@ -3897,6 +5309,36 @@ define <2 x i64> @test_v2f64_one_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpneq_ospd %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_one_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpneq_ospd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_one_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpneq_ospd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"one",
                                                metadata !"fpexcept.strict") #0
@@ -3967,6 +5409,36 @@ define <2 x i64> @test_v2f64_ord_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpord_spd %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_ord_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpord_spd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_ord_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpord_spd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"ord",
                                                metadata !"fpexcept.strict") #0
@@ -4043,6 +5515,36 @@ define <2 x i64> @test_v2f64_ueq_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpeq_uspd %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_ueq_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpeq_uspd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_ueq_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpeq_uspd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"ueq",
                                                metadata !"fpexcept.strict") #0
@@ -4108,6 +5610,36 @@ define <2 x i64> @test_v2f64_ugt_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpnlepd %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_ugt_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpnlepd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_ugt_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpnlepd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"ugt",
                                                metadata !"fpexcept.strict") #0
@@ -4173,6 +5705,36 @@ define <2 x i64> @test_v2f64_uge_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpnltpd %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_uge_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpnltpd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_uge_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpnltpd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"uge",
                                                metadata !"fpexcept.strict") #0
@@ -4240,6 +5802,36 @@ define <2 x i64> @test_v2f64_ult_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpnlepd %xmm2, %xmm3, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_ult_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpnlepd %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_ult_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpnlepd %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"ult",
                                                metadata !"fpexcept.strict") #0
@@ -4307,6 +5899,36 @@ define <2 x i64> @test_v2f64_ule_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpnltpd %xmm2, %xmm3, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_ule_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpnltpd %zmm2, %zmm3, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_ule_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpnltpd %zmm2, %zmm3, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"ule",
                                                metadata !"fpexcept.strict") #0
@@ -4377,6 +5999,36 @@ define <2 x i64> @test_v2f64_une_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpneq_uspd %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_une_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpneq_uspd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_une_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpneq_uspd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"une",
                                                metadata !"fpexcept.strict") #0
@@ -4447,6 +6099,36 @@ define <2 x i64> @test_v2f64_uno_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1,
 ; AVX512-64-NEXT:    vcmpunord_spd %xmm3, %xmm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f64_uno_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vcmpunord_spd %zmm3, %zmm2, %k1
+; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f64_uno_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3
+; AVX512F-64-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vcmpunord_spd %zmm3, %zmm2, %k1
+; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(
                                                <2 x double> %f1, <2 x double> %f2, metadata !"uno",
                                                metadata !"fpexcept.strict") #0

diff  --git a/llvm/test/CodeGen/X86/vec-strict-cmp-256.ll b/llvm/test/CodeGen/X86/vec-strict-cmp-256.ll
index 583c2b484cf3..225aebfeb65a 100644
--- a/llvm/test/CodeGen/X86/vec-strict-cmp-256.ll
+++ b/llvm/test/CodeGen/X86/vec-strict-cmp-256.ll
@@ -3,6 +3,8 @@
 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx -O3 | FileCheck %s --check-prefixes=CHECK,AVX,AVX-64
 ; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512f -mattr=+avx512vl -O3 | FileCheck %s --check-prefixes=CHECK,AVX512-32
 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f -mattr=+avx512vl -O3 | FileCheck %s --check-prefixes=CHECK,AVX512-64
+; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512f -O3 | FileCheck %s --check-prefixes=CHECK,AVX512F-32
+; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f -O3 | FileCheck %s --check-prefixes=CHECK,AVX512F-64
 
 define <8 x i32> @test_v8f32_oeq_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {
 ; AVX-32-LABEL: test_v8f32_oeq_q:
@@ -40,6 +42,34 @@ define <8 x i32> @test_v8f32_oeq_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpeqps %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_oeq_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"oeq",
                                                metadata !"fpexcept.strict") #0
@@ -84,6 +114,34 @@ define <8 x i32> @test_v8f32_ogt_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmplt_oqps %ymm2, %ymm3, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_ogt_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"ogt",
                                                metadata !"fpexcept.strict") #0
@@ -128,6 +186,34 @@ define <8 x i32> @test_v8f32_oge_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmple_oqps %ymm2, %ymm3, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_oge_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"oge",
                                                metadata !"fpexcept.strict") #0
@@ -171,6 +257,34 @@ define <8 x i32> @test_v8f32_olt_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmplt_oqps %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_olt_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"olt",
                                                metadata !"fpexcept.strict") #0
@@ -214,6 +328,34 @@ define <8 x i32> @test_v8f32_ole_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmple_oqps %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_ole_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"ole",
                                                metadata !"fpexcept.strict") #0
@@ -257,6 +399,34 @@ define <8 x i32> @test_v8f32_one_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpneq_oqps %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_one_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"one",
                                                metadata !"fpexcept.strict") #0
@@ -300,6 +470,34 @@ define <8 x i32> @test_v8f32_ord_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpordps %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_ord_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"ord",
                                                metadata !"fpexcept.strict") #0
@@ -343,6 +541,34 @@ define <8 x i32> @test_v8f32_ueq_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpeq_uqps %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_ueq_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"ueq",
                                                metadata !"fpexcept.strict") #0
@@ -386,6 +612,34 @@ define <8 x i32> @test_v8f32_ugt_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpnle_uqps %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_ugt_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"ugt",
                                                metadata !"fpexcept.strict") #0
@@ -429,6 +683,34 @@ define <8 x i32> @test_v8f32_uge_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpnlt_uqps %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_uge_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"uge",
                                                metadata !"fpexcept.strict") #0
@@ -473,6 +755,34 @@ define <8 x i32> @test_v8f32_ult_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpnle_uqps %ymm2, %ymm3, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_ult_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"ult",
                                                metadata !"fpexcept.strict") #0
@@ -517,6 +827,34 @@ define <8 x i32> @test_v8f32_ule_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpnlt_uqps %ymm2, %ymm3, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_ule_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"ule",
                                                metadata !"fpexcept.strict") #0
@@ -560,6 +898,34 @@ define <8 x i32> @test_v8f32_une_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpneqps %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_une_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"une",
                                                metadata !"fpexcept.strict") #0
@@ -603,6 +969,34 @@ define <8 x i32> @test_v8f32_uno_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpunordps %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_uno_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"uno",
                                                metadata !"fpexcept.strict") #0
@@ -646,6 +1040,34 @@ define <4 x i64> @test_v4f64_oeq_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpeqpd %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_oeq_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"oeq",
                                                metadata !"fpexcept.strict") #0
@@ -690,6 +1112,34 @@ define <4 x i64> @test_v4f64_ogt_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmplt_oqpd %ymm2, %ymm3, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_ogt_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"ogt",
                                                metadata !"fpexcept.strict") #0
@@ -734,6 +1184,34 @@ define <4 x i64> @test_v4f64_oge_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmple_oqpd %ymm2, %ymm3, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_oge_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"oge",
                                                metadata !"fpexcept.strict") #0
@@ -777,6 +1255,34 @@ define <4 x i64> @test_v4f64_olt_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmplt_oqpd %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_olt_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"olt",
                                                metadata !"fpexcept.strict") #0
@@ -820,6 +1326,34 @@ define <4 x i64> @test_v4f64_ole_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmple_oqpd %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_ole_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"ole",
                                                metadata !"fpexcept.strict") #0
@@ -863,6 +1397,34 @@ define <4 x i64> @test_v4f64_one_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpneq_oqpd %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_one_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"one",
                                                metadata !"fpexcept.strict") #0
@@ -906,6 +1468,34 @@ define <4 x i64> @test_v4f64_ord_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpordpd %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_ord_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"ord",
                                                metadata !"fpexcept.strict") #0
@@ -949,6 +1539,34 @@ define <4 x i64> @test_v4f64_ueq_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpeq_uqpd %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_ueq_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"ueq",
                                                metadata !"fpexcept.strict") #0
@@ -992,6 +1610,34 @@ define <4 x i64> @test_v4f64_ugt_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpnle_uqpd %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_ugt_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"ugt",
                                                metadata !"fpexcept.strict") #0
@@ -1035,6 +1681,34 @@ define <4 x i64> @test_v4f64_uge_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpnlt_uqpd %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_uge_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"uge",
                                                metadata !"fpexcept.strict") #0
@@ -1079,6 +1753,34 @@ define <4 x i64> @test_v4f64_ult_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpnle_uqpd %ymm2, %ymm3, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_ult_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"ult",
                                                metadata !"fpexcept.strict") #0
@@ -1123,6 +1825,34 @@ define <4 x i64> @test_v4f64_ule_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpnlt_uqpd %ymm2, %ymm3, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_ule_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"ule",
                                                metadata !"fpexcept.strict") #0
@@ -1166,6 +1896,34 @@ define <4 x i64> @test_v4f64_une_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpneqpd %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_une_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"une",
                                                metadata !"fpexcept.strict") #0
@@ -1209,6 +1967,34 @@ define <4 x i64> @test_v4f64_uno_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpunordpd %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_uno_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"uno",
                                                metadata !"fpexcept.strict") #0
@@ -1252,6 +2038,34 @@ define <8 x i32> @test_v8f32_oeq_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpeq_osps %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_oeq_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"oeq",
                                                metadata !"fpexcept.strict") #0
@@ -1296,6 +2110,34 @@ define <8 x i32> @test_v8f32_ogt_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpltps %ymm2, %ymm3, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_ogt_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"ogt",
                                                metadata !"fpexcept.strict") #0
@@ -1340,6 +2182,34 @@ define <8 x i32> @test_v8f32_oge_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpleps %ymm2, %ymm3, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_oge_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"oge",
                                                metadata !"fpexcept.strict") #0
@@ -1383,6 +2253,34 @@ define <8 x i32> @test_v8f32_olt_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpltps %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_olt_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"olt",
                                                metadata !"fpexcept.strict") #0
@@ -1426,6 +2324,34 @@ define <8 x i32> @test_v8f32_ole_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpleps %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_ole_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"ole",
                                                metadata !"fpexcept.strict") #0
@@ -1469,6 +2395,34 @@ define <8 x i32> @test_v8f32_one_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpneq_osps %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_one_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"one",
                                                metadata !"fpexcept.strict") #0
@@ -1512,6 +2466,34 @@ define <8 x i32> @test_v8f32_ord_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpord_sps %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_ord_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"ord",
                                                metadata !"fpexcept.strict") #0
@@ -1555,6 +2537,34 @@ define <8 x i32> @test_v8f32_ueq_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpeq_usps %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_ueq_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"ueq",
                                                metadata !"fpexcept.strict") #0
@@ -1598,6 +2608,34 @@ define <8 x i32> @test_v8f32_ugt_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpnleps %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_ugt_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"ugt",
                                                metadata !"fpexcept.strict") #0
@@ -1641,6 +2679,34 @@ define <8 x i32> @test_v8f32_uge_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpnltps %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_uge_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"uge",
                                                metadata !"fpexcept.strict") #0
@@ -1685,6 +2751,34 @@ define <8 x i32> @test_v8f32_ult_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpnleps %ymm2, %ymm3, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_ult_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"ult",
                                                metadata !"fpexcept.strict") #0
@@ -1729,6 +2823,34 @@ define <8 x i32> @test_v8f32_ule_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpnltps %ymm2, %ymm3, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_ule_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"ule",
                                                metadata !"fpexcept.strict") #0
@@ -1772,6 +2894,34 @@ define <8 x i32> @test_v8f32_une_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpneq_usps %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_une_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"une",
                                                metadata !"fpexcept.strict") #0
@@ -1815,6 +2965,34 @@ define <8 x i32> @test_v8f32_uno_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1,
 ; AVX512-64-NEXT:    vcmpunord_sps %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v8f32_uno_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(
                                                <8 x float> %f1, <8 x float> %f2, metadata !"uno",
                                                metadata !"fpexcept.strict") #0
@@ -1858,6 +3036,34 @@ define <4 x i64> @test_v4f64_oeq_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpeq_ospd %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_oeq_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"oeq",
                                                metadata !"fpexcept.strict") #0
@@ -1902,6 +3108,34 @@ define <4 x i64> @test_v4f64_ogt_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpltpd %ymm2, %ymm3, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_ogt_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"ogt",
                                                metadata !"fpexcept.strict") #0
@@ -1946,6 +3180,34 @@ define <4 x i64> @test_v4f64_oge_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmplepd %ymm2, %ymm3, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_oge_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"oge",
                                                metadata !"fpexcept.strict") #0
@@ -1989,6 +3251,34 @@ define <4 x i64> @test_v4f64_olt_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpltpd %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_olt_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"olt",
                                                metadata !"fpexcept.strict") #0
@@ -2032,6 +3322,34 @@ define <4 x i64> @test_v4f64_ole_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmplepd %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_ole_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"ole",
                                                metadata !"fpexcept.strict") #0
@@ -2075,6 +3393,34 @@ define <4 x i64> @test_v4f64_one_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpneq_ospd %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_one_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"one",
                                                metadata !"fpexcept.strict") #0
@@ -2118,6 +3464,34 @@ define <4 x i64> @test_v4f64_ord_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpord_spd %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_ord_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"ord",
                                                metadata !"fpexcept.strict") #0
@@ -2161,6 +3535,34 @@ define <4 x i64> @test_v4f64_ueq_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpeq_uspd %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_ueq_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"ueq",
                                                metadata !"fpexcept.strict") #0
@@ -2204,6 +3606,34 @@ define <4 x i64> @test_v4f64_ugt_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpnlepd %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_ugt_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"ugt",
                                                metadata !"fpexcept.strict") #0
@@ -2247,6 +3677,34 @@ define <4 x i64> @test_v4f64_uge_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpnltpd %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_uge_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"uge",
                                                metadata !"fpexcept.strict") #0
@@ -2291,6 +3749,34 @@ define <4 x i64> @test_v4f64_ult_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpnlepd %ymm2, %ymm3, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_ult_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"ult",
                                                metadata !"fpexcept.strict") #0
@@ -2335,6 +3821,34 @@ define <4 x i64> @test_v4f64_ule_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpnltpd %ymm2, %ymm3, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_ule_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"ule",
                                                metadata !"fpexcept.strict") #0
@@ -2378,6 +3892,34 @@ define <4 x i64> @test_v4f64_une_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpneq_uspd %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_une_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"une",
                                                metadata !"fpexcept.strict") #0
@@ -2421,6 +3963,34 @@ define <4 x i64> @test_v4f64_uno_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1,
 ; AVX512-64-NEXT:    vcmpunord_spd %ymm3, %ymm2, %k1
 ; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v4f64_uno_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    retl
+;
+; 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:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0
+; AVX512F-64-NEXT:    retq
   %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(
                                                <4 x double> %f1, <4 x double> %f2, metadata !"uno",
                                                metadata !"fpexcept.strict") #0

diff  --git a/llvm/test/CodeGen/X86/vec-strict-cmp-sub128.ll b/llvm/test/CodeGen/X86/vec-strict-cmp-sub128.ll
index 6dbac0e8ff6b..1858a6f4e273 100644
--- a/llvm/test/CodeGen/X86/vec-strict-cmp-sub128.ll
+++ b/llvm/test/CodeGen/X86/vec-strict-cmp-sub128.ll
@@ -5,6 +5,8 @@
 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx -O3 | FileCheck %s --check-prefixes=CHECK,AVX,AVX-64
 ; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512f -mattr=+avx512vl -O3 | FileCheck %s --check-prefixes=CHECK,AVX512-32
 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f -mattr=+avx512vl -O3 | FileCheck %s --check-prefixes=CHECK,AVX512-64
+; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512f -mattr=+avx512f -O3 | FileCheck %s --check-prefixes=CHECK,AVX512F-32
+; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f -mattr=+avx512f -O3 | FileCheck %s --check-prefixes=CHECK,AVX512F-64
 
 define <2 x i32> @test_v2f32_ogt_s(<2 x i32> %a, <2 x i32> %b, <2 x float> %f1, <2 x float> %f2) #0 {
 ; SSE-32-LABEL: test_v2f32_ogt_s:
@@ -137,6 +139,61 @@ define <2 x i32> @test_v2f32_ogt_s(<2 x i32> %a, <2 x i32> %b, <2 x float> %f1,
 ; AVX512-64-NEXT:    korw %k1, %k0, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f32_ogt_s:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    movw $-3, %ax
+; AVX512F-32-NEXT:    kmovw %eax, %k0
+; AVX512F-32-NEXT:    vcomiss %xmm3, %xmm2
+; AVX512F-32-NEXT:    seta %al
+; AVX512F-32-NEXT:    andl $1, %eax
+; AVX512F-32-NEXT:    kmovw %eax, %k1
+; AVX512F-32-NEXT:    kandw %k0, %k1, %k0
+; AVX512F-32-NEXT:    vmovshdup {{.*#+}} xmm3 = xmm3[1,1,3,3]
+; AVX512F-32-NEXT:    vmovshdup {{.*#+}} xmm2 = xmm2[1,1,3,3]
+; AVX512F-32-NEXT:    vcomiss %xmm3, %xmm2
+; AVX512F-32-NEXT:    seta %al
+; AVX512F-32-NEXT:    kmovw %eax, %k1
+; AVX512F-32-NEXT:    kshiftlw $15, %k1, %k1
+; AVX512F-32-NEXT:    kshiftrw $14, %k1, %k1
+; AVX512F-32-NEXT:    korw %k1, %k0, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f32_ogt_s:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    movw $-3, %ax
+; AVX512F-64-NEXT:    kmovw %eax, %k0
+; AVX512F-64-NEXT:    vcomiss %xmm3, %xmm2
+; AVX512F-64-NEXT:    seta %al
+; AVX512F-64-NEXT:    andl $1, %eax
+; AVX512F-64-NEXT:    kmovw %eax, %k1
+; AVX512F-64-NEXT:    kandw %k0, %k1, %k0
+; AVX512F-64-NEXT:    vmovshdup {{.*#+}} xmm3 = xmm3[1,1,3,3]
+; AVX512F-64-NEXT:    vmovshdup {{.*#+}} xmm2 = xmm2[1,1,3,3]
+; AVX512F-64-NEXT:    vcomiss %xmm3, %xmm2
+; AVX512F-64-NEXT:    seta %al
+; AVX512F-64-NEXT:    kmovw %eax, %k1
+; AVX512F-64-NEXT:    kshiftlw $15, %k1, %k1
+; AVX512F-64-NEXT:    kshiftrw $14, %k1, %k1
+; AVX512F-64-NEXT:    korw %k1, %k0, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(
                                                <2 x float> %f1, <2 x float> %f2, metadata !"ogt",
                                                metadata !"fpexcept.strict") #0
@@ -295,6 +352,73 @@ define <2 x i32> @test_v2f32_oeq_q(<2 x i32> %a, <2 x i32> %b, <2 x float> %f1,
 ; AVX512-64-NEXT:    korw %k0, %k1, %k1
 ; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}
 ; AVX512-64-NEXT:    retq
+;
+; AVX512F-32-LABEL: test_v2f32_oeq_q:
+; AVX512F-32:       # %bb.0:
+; AVX512F-32-NEXT:    pushl %ebp
+; AVX512F-32-NEXT:    movl %esp, %ebp
+; AVX512F-32-NEXT:    andl $-16, %esp
+; AVX512F-32-NEXT:    subl $16, %esp
+; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3
+; AVX512F-32-NEXT:    vmovshdup {{.*#+}} xmm4 = xmm3[1,1,3,3]
+; AVX512F-32-NEXT:    vmovshdup {{.*#+}} xmm5 = xmm2[1,1,3,3]
+; AVX512F-32-NEXT:    vucomiss %xmm4, %xmm5
+; AVX512F-32-NEXT:    setnp %al
+; AVX512F-32-NEXT:    sete %cl
+; AVX512F-32-NEXT:    testb %al, %cl
+; AVX512F-32-NEXT:    setne %al
+; AVX512F-32-NEXT:    kmovw %eax, %k0
+; AVX512F-32-NEXT:    kshiftlw $15, %k0, %k0
+; AVX512F-32-NEXT:    kshiftrw $14, %k0, %k0
+; AVX512F-32-NEXT:    vucomiss %xmm3, %xmm2
+; AVX512F-32-NEXT:    setnp %al
+; AVX512F-32-NEXT:    sete %cl
+; AVX512F-32-NEXT:    testb %al, %cl
+; AVX512F-32-NEXT:    setne %al
+; AVX512F-32-NEXT:    andl $1, %eax
+; AVX512F-32-NEXT:    kmovw %eax, %k1
+; AVX512F-32-NEXT:    movw $-3, %ax
+; AVX512F-32-NEXT:    kmovw %eax, %k2
+; AVX512F-32-NEXT:    kandw %k2, %k1, %k1
+; AVX512F-32-NEXT:    korw %k0, %k1, %k1
+; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-32-NEXT:    movl %ebp, %esp
+; AVX512F-32-NEXT:    popl %ebp
+; AVX512F-32-NEXT:    vzeroupper
+; AVX512F-32-NEXT:    retl
+;
+; AVX512F-64-LABEL: test_v2f32_oeq_q:
+; AVX512F-64:       # %bb.0:
+; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0
+; AVX512F-64-NEXT:    vmovshdup {{.*#+}} xmm4 = xmm3[1,1,3,3]
+; AVX512F-64-NEXT:    vmovshdup {{.*#+}} xmm5 = xmm2[1,1,3,3]
+; AVX512F-64-NEXT:    vucomiss %xmm4, %xmm5
+; AVX512F-64-NEXT:    setnp %al
+; AVX512F-64-NEXT:    sete %cl
+; AVX512F-64-NEXT:    testb %al, %cl
+; AVX512F-64-NEXT:    setne %al
+; AVX512F-64-NEXT:    kmovw %eax, %k0
+; AVX512F-64-NEXT:    kshiftlw $15, %k0, %k0
+; AVX512F-64-NEXT:    kshiftrw $14, %k0, %k0
+; AVX512F-64-NEXT:    vucomiss %xmm3, %xmm2
+; AVX512F-64-NEXT:    setnp %al
+; AVX512F-64-NEXT:    sete %cl
+; AVX512F-64-NEXT:    testb %al, %cl
+; AVX512F-64-NEXT:    setne %al
+; AVX512F-64-NEXT:    andl $1, %eax
+; AVX512F-64-NEXT:    kmovw %eax, %k1
+; AVX512F-64-NEXT:    movw $-3, %ax
+; AVX512F-64-NEXT:    kmovw %eax, %k2
+; AVX512F-64-NEXT:    kandw %k2, %k1, %k1
+; AVX512F-64-NEXT:    korw %k0, %k1, %k1
+; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}
+; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0
+; AVX512F-64-NEXT:    vzeroupper
+; AVX512F-64-NEXT:    retq
   %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(
                                                <2 x float> %f1, <2 x float> %f2, metadata !"oeq",
                                                metadata !"fpexcept.strict") #0


        


More information about the llvm-commits mailing list