[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