brintos

brintos / llvm-project-archived public Read only

0
0
Text · 229.1 KiB · 93a692c Raw
6193 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+sse2 -O3 | FileCheck %s --check-prefixes=SSE-323; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 -O3 | FileCheck %s --check-prefixes=SSE-644; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx -O3 | FileCheck %s --check-prefixes=AVX-325; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx -O3 | FileCheck %s --check-prefixes=AVX-646; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512f -mattr=+avx512vl -O3 | FileCheck %s --check-prefixes=AVX512-327; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f -mattr=+avx512vl -O3 | FileCheck %s --check-prefixes=AVX512-648; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512f -O3 | FileCheck %s --check-prefixes=AVX512F-329; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f -O3 | FileCheck %s --check-prefixes=AVX512F-6410 11define <4 x i32> @test_v4f32_oeq_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {12; SSE-32-LABEL: test_v4f32_oeq_q:13; SSE-32:       # %bb.0:14; SSE-32-NEXT:    pushl %ebp15; SSE-32-NEXT:    movl %esp, %ebp16; SSE-32-NEXT:    andl $-16, %esp17; SSE-32-NEXT:    subl $16, %esp18; SSE-32-NEXT:    cmpeqps 8(%ebp), %xmm219; SSE-32-NEXT:    andps %xmm2, %xmm020; SSE-32-NEXT:    andnps %xmm1, %xmm221; SSE-32-NEXT:    orps %xmm2, %xmm022; SSE-32-NEXT:    movl %ebp, %esp23; SSE-32-NEXT:    popl %ebp24; SSE-32-NEXT:    retl25;26; SSE-64-LABEL: test_v4f32_oeq_q:27; SSE-64:       # %bb.0:28; SSE-64-NEXT:    cmpeqps %xmm3, %xmm229; SSE-64-NEXT:    andps %xmm2, %xmm030; SSE-64-NEXT:    andnps %xmm1, %xmm231; SSE-64-NEXT:    orps %xmm2, %xmm032; SSE-64-NEXT:    retq33;34; AVX-32-LABEL: test_v4f32_oeq_q:35; AVX-32:       # %bb.0:36; AVX-32-NEXT:    pushl %ebp37; AVX-32-NEXT:    movl %esp, %ebp38; AVX-32-NEXT:    andl $-16, %esp39; AVX-32-NEXT:    subl $16, %esp40; AVX-32-NEXT:    vcmpeqps 8(%ebp), %xmm2, %xmm241; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm042; AVX-32-NEXT:    movl %ebp, %esp43; AVX-32-NEXT:    popl %ebp44; AVX-32-NEXT:    retl45;46; AVX-64-LABEL: test_v4f32_oeq_q:47; AVX-64:       # %bb.0:48; AVX-64-NEXT:    vcmpeqps %xmm3, %xmm2, %xmm249; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm050; AVX-64-NEXT:    retq51;52; AVX512-32-LABEL: test_v4f32_oeq_q:53; AVX512-32:       # %bb.0:54; AVX512-32-NEXT:    pushl %ebp55; AVX512-32-NEXT:    movl %esp, %ebp56; AVX512-32-NEXT:    andl $-16, %esp57; AVX512-32-NEXT:    subl $16, %esp58; AVX512-32-NEXT:    vcmpeqps 8(%ebp), %xmm2, %k159; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}60; AVX512-32-NEXT:    movl %ebp, %esp61; AVX512-32-NEXT:    popl %ebp62; AVX512-32-NEXT:    retl63;64; AVX512-64-LABEL: test_v4f32_oeq_q:65; AVX512-64:       # %bb.0:66; AVX512-64-NEXT:    vcmpeqps %xmm3, %xmm2, %k167; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}68; AVX512-64-NEXT:    retq69;70; AVX512F-32-LABEL: test_v4f32_oeq_q:71; AVX512F-32:       # %bb.0:72; AVX512F-32-NEXT:    pushl %ebp73; AVX512F-32-NEXT:    movl %esp, %ebp74; AVX512F-32-NEXT:    andl $-16, %esp75; AVX512F-32-NEXT:    subl $16, %esp76; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm177; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm078; AVX512F-32-NEXT:    vcmpeqps 8(%ebp), %xmm2, %xmm279; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k180; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}81; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm082; AVX512F-32-NEXT:    movl %ebp, %esp83; AVX512F-32-NEXT:    popl %ebp84; AVX512F-32-NEXT:    vzeroupper85; AVX512F-32-NEXT:    retl86;87; AVX512F-64-LABEL: test_v4f32_oeq_q:88; AVX512F-64:       # %bb.0:89; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm190; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm091; AVX512F-64-NEXT:    vcmpeqps %xmm3, %xmm2, %xmm292; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k193; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}94; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm095; AVX512F-64-NEXT:    vzeroupper96; AVX512F-64-NEXT:    retq97  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(98                                               <4 x float> %f1, <4 x float> %f2, metadata !"oeq",99                                               metadata !"fpexcept.strict") #0100  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b101  ret <4 x i32> %res102}103 104define <4 x i32> @test_v4f32_ogt_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {105; SSE-32-LABEL: test_v4f32_ogt_q:106; SSE-32:       # %bb.0:107; SSE-32-NEXT:    pushl %ebp108; SSE-32-NEXT:    movl %esp, %ebp109; SSE-32-NEXT:    andl $-16, %esp110; SSE-32-NEXT:    subl $16, %esp111; SSE-32-NEXT:    movaps 8(%ebp), %xmm3112; SSE-32-NEXT:    movaps %xmm3, %xmm4113; SSE-32-NEXT:    shufps {{.*#+}} xmm4 = xmm4[3,3],xmm3[3,3]114; SSE-32-NEXT:    movaps %xmm2, %xmm5115; SSE-32-NEXT:    shufps {{.*#+}} xmm5 = xmm5[3,3],xmm2[3,3]116; SSE-32-NEXT:    xorl %eax, %eax117; SSE-32-NEXT:    ucomiss %xmm4, %xmm5118; SSE-32-NEXT:    movl $-1, %ecx119; SSE-32-NEXT:    movl $0, %edx120; SSE-32-NEXT:    cmoval %ecx, %edx121; SSE-32-NEXT:    movd %edx, %xmm5122; SSE-32-NEXT:    movaps %xmm3, %xmm4123; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm3[1]124; SSE-32-NEXT:    movaps %xmm2, %xmm6125; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm2[1]126; SSE-32-NEXT:    ucomiss %xmm4, %xmm6127; SSE-32-NEXT:    movl $0, %edx128; SSE-32-NEXT:    cmoval %ecx, %edx129; SSE-32-NEXT:    movd %edx, %xmm4130; SSE-32-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]131; SSE-32-NEXT:    ucomiss %xmm3, %xmm2132; SSE-32-NEXT:    movl $0, %edx133; SSE-32-NEXT:    cmoval %ecx, %edx134; SSE-32-NEXT:    movd %edx, %xmm5135; SSE-32-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]136; SSE-32-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]137; SSE-32-NEXT:    ucomiss %xmm3, %xmm2138; SSE-32-NEXT:    cmoval %ecx, %eax139; SSE-32-NEXT:    movd %eax, %xmm2140; SSE-32-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]141; SSE-32-NEXT:    punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm4[0]142; SSE-32-NEXT:    pand %xmm5, %xmm0143; SSE-32-NEXT:    pandn %xmm1, %xmm5144; SSE-32-NEXT:    por %xmm5, %xmm0145; SSE-32-NEXT:    movl %ebp, %esp146; SSE-32-NEXT:    popl %ebp147; SSE-32-NEXT:    retl148;149; SSE-64-LABEL: test_v4f32_ogt_q:150; SSE-64:       # %bb.0:151; SSE-64-NEXT:    movaps %xmm3, %xmm4152; SSE-64-NEXT:    shufps {{.*#+}} xmm4 = xmm4[3,3],xmm3[3,3]153; SSE-64-NEXT:    movaps %xmm2, %xmm5154; SSE-64-NEXT:    shufps {{.*#+}} xmm5 = xmm5[3,3],xmm2[3,3]155; SSE-64-NEXT:    xorl %eax, %eax156; SSE-64-NEXT:    ucomiss %xmm4, %xmm5157; SSE-64-NEXT:    movl $-1, %ecx158; SSE-64-NEXT:    movl $0, %edx159; SSE-64-NEXT:    cmoval %ecx, %edx160; SSE-64-NEXT:    movd %edx, %xmm4161; SSE-64-NEXT:    movaps %xmm3, %xmm5162; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm3[1]163; SSE-64-NEXT:    movaps %xmm2, %xmm6164; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm2[1]165; SSE-64-NEXT:    ucomiss %xmm5, %xmm6166; SSE-64-NEXT:    movl $0, %edx167; SSE-64-NEXT:    cmoval %ecx, %edx168; SSE-64-NEXT:    movd %edx, %xmm5169; SSE-64-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]170; SSE-64-NEXT:    ucomiss %xmm3, %xmm2171; SSE-64-NEXT:    movl $0, %edx172; SSE-64-NEXT:    cmoval %ecx, %edx173; SSE-64-NEXT:    movd %edx, %xmm4174; SSE-64-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]175; SSE-64-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]176; SSE-64-NEXT:    ucomiss %xmm3, %xmm2177; SSE-64-NEXT:    cmoval %ecx, %eax178; SSE-64-NEXT:    movd %eax, %xmm2179; SSE-64-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]180; SSE-64-NEXT:    punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]181; SSE-64-NEXT:    pand %xmm4, %xmm0182; SSE-64-NEXT:    pandn %xmm1, %xmm4183; SSE-64-NEXT:    por %xmm4, %xmm0184; SSE-64-NEXT:    retq185;186; AVX-32-LABEL: test_v4f32_ogt_q:187; AVX-32:       # %bb.0:188; AVX-32-NEXT:    pushl %ebp189; AVX-32-NEXT:    movl %esp, %ebp190; AVX-32-NEXT:    andl $-16, %esp191; AVX-32-NEXT:    subl $16, %esp192; AVX-32-NEXT:    vmovaps 8(%ebp), %xmm3193; AVX-32-NEXT:    vcmplt_oqps %xmm2, %xmm3, %xmm2194; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm0195; AVX-32-NEXT:    movl %ebp, %esp196; AVX-32-NEXT:    popl %ebp197; AVX-32-NEXT:    retl198;199; AVX-64-LABEL: test_v4f32_ogt_q:200; AVX-64:       # %bb.0:201; AVX-64-NEXT:    vcmplt_oqps %xmm2, %xmm3, %xmm2202; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm0203; AVX-64-NEXT:    retq204;205; AVX512-32-LABEL: test_v4f32_ogt_q:206; AVX512-32:       # %bb.0:207; AVX512-32-NEXT:    pushl %ebp208; AVX512-32-NEXT:    movl %esp, %ebp209; AVX512-32-NEXT:    andl $-16, %esp210; AVX512-32-NEXT:    subl $16, %esp211; AVX512-32-NEXT:    vcmpgt_oqps 8(%ebp), %xmm2, %k1212; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}213; AVX512-32-NEXT:    movl %ebp, %esp214; AVX512-32-NEXT:    popl %ebp215; AVX512-32-NEXT:    retl216;217; AVX512-64-LABEL: test_v4f32_ogt_q:218; AVX512-64:       # %bb.0:219; AVX512-64-NEXT:    vcmplt_oqps %xmm2, %xmm3, %k1220; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}221; AVX512-64-NEXT:    retq222;223; AVX512F-32-LABEL: test_v4f32_ogt_q:224; AVX512F-32:       # %bb.0:225; AVX512F-32-NEXT:    pushl %ebp226; AVX512F-32-NEXT:    movl %esp, %ebp227; AVX512F-32-NEXT:    andl $-16, %esp228; AVX512F-32-NEXT:    subl $16, %esp229; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1230; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0231; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3232; AVX512F-32-NEXT:    vcmplt_oqps %xmm2, %xmm3, %xmm2233; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k1234; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}235; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0236; AVX512F-32-NEXT:    movl %ebp, %esp237; AVX512F-32-NEXT:    popl %ebp238; AVX512F-32-NEXT:    vzeroupper239; AVX512F-32-NEXT:    retl240;241; AVX512F-64-LABEL: test_v4f32_ogt_q:242; AVX512F-64:       # %bb.0:243; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1244; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0245; AVX512F-64-NEXT:    vcmplt_oqps %xmm2, %xmm3, %xmm2246; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k1247; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}248; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0249; AVX512F-64-NEXT:    vzeroupper250; AVX512F-64-NEXT:    retq251  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(252                                               <4 x float> %f1, <4 x float> %f2, metadata !"ogt",253                                               metadata !"fpexcept.strict") #0254  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b255  ret <4 x i32> %res256}257 258define <4 x i32> @test_v4f32_oge_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {259; SSE-32-LABEL: test_v4f32_oge_q:260; SSE-32:       # %bb.0:261; SSE-32-NEXT:    pushl %ebp262; SSE-32-NEXT:    movl %esp, %ebp263; SSE-32-NEXT:    andl $-16, %esp264; SSE-32-NEXT:    subl $16, %esp265; SSE-32-NEXT:    movaps 8(%ebp), %xmm3266; SSE-32-NEXT:    movaps %xmm3, %xmm4267; SSE-32-NEXT:    shufps {{.*#+}} xmm4 = xmm4[3,3],xmm3[3,3]268; SSE-32-NEXT:    movaps %xmm2, %xmm5269; SSE-32-NEXT:    shufps {{.*#+}} xmm5 = xmm5[3,3],xmm2[3,3]270; SSE-32-NEXT:    xorl %eax, %eax271; SSE-32-NEXT:    ucomiss %xmm4, %xmm5272; SSE-32-NEXT:    movl $-1, %ecx273; SSE-32-NEXT:    movl $0, %edx274; SSE-32-NEXT:    cmovael %ecx, %edx275; SSE-32-NEXT:    movd %edx, %xmm5276; SSE-32-NEXT:    movaps %xmm3, %xmm4277; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm3[1]278; SSE-32-NEXT:    movaps %xmm2, %xmm6279; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm2[1]280; SSE-32-NEXT:    ucomiss %xmm4, %xmm6281; SSE-32-NEXT:    movl $0, %edx282; SSE-32-NEXT:    cmovael %ecx, %edx283; SSE-32-NEXT:    movd %edx, %xmm4284; SSE-32-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]285; SSE-32-NEXT:    ucomiss %xmm3, %xmm2286; SSE-32-NEXT:    movl $0, %edx287; SSE-32-NEXT:    cmovael %ecx, %edx288; SSE-32-NEXT:    movd %edx, %xmm5289; SSE-32-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]290; SSE-32-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]291; SSE-32-NEXT:    ucomiss %xmm3, %xmm2292; SSE-32-NEXT:    cmovael %ecx, %eax293; SSE-32-NEXT:    movd %eax, %xmm2294; SSE-32-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]295; SSE-32-NEXT:    punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm4[0]296; SSE-32-NEXT:    pand %xmm5, %xmm0297; SSE-32-NEXT:    pandn %xmm1, %xmm5298; SSE-32-NEXT:    por %xmm5, %xmm0299; SSE-32-NEXT:    movl %ebp, %esp300; SSE-32-NEXT:    popl %ebp301; SSE-32-NEXT:    retl302;303; SSE-64-LABEL: test_v4f32_oge_q:304; SSE-64:       # %bb.0:305; SSE-64-NEXT:    movaps %xmm3, %xmm4306; SSE-64-NEXT:    shufps {{.*#+}} xmm4 = xmm4[3,3],xmm3[3,3]307; SSE-64-NEXT:    movaps %xmm2, %xmm5308; SSE-64-NEXT:    shufps {{.*#+}} xmm5 = xmm5[3,3],xmm2[3,3]309; SSE-64-NEXT:    xorl %eax, %eax310; SSE-64-NEXT:    ucomiss %xmm4, %xmm5311; SSE-64-NEXT:    movl $-1, %ecx312; SSE-64-NEXT:    movl $0, %edx313; SSE-64-NEXT:    cmovael %ecx, %edx314; SSE-64-NEXT:    movd %edx, %xmm4315; SSE-64-NEXT:    movaps %xmm3, %xmm5316; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm3[1]317; SSE-64-NEXT:    movaps %xmm2, %xmm6318; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm2[1]319; SSE-64-NEXT:    ucomiss %xmm5, %xmm6320; SSE-64-NEXT:    movl $0, %edx321; SSE-64-NEXT:    cmovael %ecx, %edx322; SSE-64-NEXT:    movd %edx, %xmm5323; SSE-64-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]324; SSE-64-NEXT:    ucomiss %xmm3, %xmm2325; SSE-64-NEXT:    movl $0, %edx326; SSE-64-NEXT:    cmovael %ecx, %edx327; SSE-64-NEXT:    movd %edx, %xmm4328; SSE-64-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]329; SSE-64-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]330; SSE-64-NEXT:    ucomiss %xmm3, %xmm2331; SSE-64-NEXT:    cmovael %ecx, %eax332; SSE-64-NEXT:    movd %eax, %xmm2333; SSE-64-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]334; SSE-64-NEXT:    punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]335; SSE-64-NEXT:    pand %xmm4, %xmm0336; SSE-64-NEXT:    pandn %xmm1, %xmm4337; SSE-64-NEXT:    por %xmm4, %xmm0338; SSE-64-NEXT:    retq339;340; AVX-32-LABEL: test_v4f32_oge_q:341; AVX-32:       # %bb.0:342; AVX-32-NEXT:    pushl %ebp343; AVX-32-NEXT:    movl %esp, %ebp344; AVX-32-NEXT:    andl $-16, %esp345; AVX-32-NEXT:    subl $16, %esp346; AVX-32-NEXT:    vmovaps 8(%ebp), %xmm3347; AVX-32-NEXT:    vcmple_oqps %xmm2, %xmm3, %xmm2348; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm0349; AVX-32-NEXT:    movl %ebp, %esp350; AVX-32-NEXT:    popl %ebp351; AVX-32-NEXT:    retl352;353; AVX-64-LABEL: test_v4f32_oge_q:354; AVX-64:       # %bb.0:355; AVX-64-NEXT:    vcmple_oqps %xmm2, %xmm3, %xmm2356; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm0357; AVX-64-NEXT:    retq358;359; AVX512-32-LABEL: test_v4f32_oge_q:360; AVX512-32:       # %bb.0:361; AVX512-32-NEXT:    pushl %ebp362; AVX512-32-NEXT:    movl %esp, %ebp363; AVX512-32-NEXT:    andl $-16, %esp364; AVX512-32-NEXT:    subl $16, %esp365; AVX512-32-NEXT:    vcmpge_oqps 8(%ebp), %xmm2, %k1366; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}367; AVX512-32-NEXT:    movl %ebp, %esp368; AVX512-32-NEXT:    popl %ebp369; AVX512-32-NEXT:    retl370;371; AVX512-64-LABEL: test_v4f32_oge_q:372; AVX512-64:       # %bb.0:373; AVX512-64-NEXT:    vcmple_oqps %xmm2, %xmm3, %k1374; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}375; AVX512-64-NEXT:    retq376;377; AVX512F-32-LABEL: test_v4f32_oge_q:378; AVX512F-32:       # %bb.0:379; AVX512F-32-NEXT:    pushl %ebp380; AVX512F-32-NEXT:    movl %esp, %ebp381; AVX512F-32-NEXT:    andl $-16, %esp382; AVX512F-32-NEXT:    subl $16, %esp383; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1384; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0385; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm3386; AVX512F-32-NEXT:    vcmple_oqps %xmm2, %xmm3, %xmm2387; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k1388; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}389; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0390; AVX512F-32-NEXT:    movl %ebp, %esp391; AVX512F-32-NEXT:    popl %ebp392; AVX512F-32-NEXT:    vzeroupper393; AVX512F-32-NEXT:    retl394;395; AVX512F-64-LABEL: test_v4f32_oge_q:396; AVX512F-64:       # %bb.0:397; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1398; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0399; AVX512F-64-NEXT:    vcmple_oqps %xmm2, %xmm3, %xmm2400; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k1401; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}402; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0403; AVX512F-64-NEXT:    vzeroupper404; AVX512F-64-NEXT:    retq405  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(406                                               <4 x float> %f1, <4 x float> %f2, metadata !"oge",407                                               metadata !"fpexcept.strict") #0408  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b409  ret <4 x i32> %res410}411 412define <4 x i32> @test_v4f32_olt_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {413; SSE-32-LABEL: test_v4f32_olt_q:414; SSE-32:       # %bb.0:415; SSE-32-NEXT:    pushl %ebp416; SSE-32-NEXT:    movl %esp, %ebp417; SSE-32-NEXT:    andl $-16, %esp418; SSE-32-NEXT:    subl $16, %esp419; SSE-32-NEXT:    movaps 8(%ebp), %xmm3420; SSE-32-NEXT:    movaps %xmm2, %xmm4421; SSE-32-NEXT:    shufps {{.*#+}} xmm4 = xmm4[3,3],xmm2[3,3]422; SSE-32-NEXT:    movaps %xmm3, %xmm5423; SSE-32-NEXT:    shufps {{.*#+}} xmm5 = xmm5[3,3],xmm3[3,3]424; SSE-32-NEXT:    xorl %eax, %eax425; SSE-32-NEXT:    ucomiss %xmm4, %xmm5426; SSE-32-NEXT:    movl $-1, %ecx427; SSE-32-NEXT:    movl $0, %edx428; SSE-32-NEXT:    cmoval %ecx, %edx429; SSE-32-NEXT:    movd %edx, %xmm5430; SSE-32-NEXT:    movaps %xmm2, %xmm4431; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]432; SSE-32-NEXT:    movaps %xmm3, %xmm6433; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm3[1]434; SSE-32-NEXT:    ucomiss %xmm4, %xmm6435; SSE-32-NEXT:    movl $0, %edx436; SSE-32-NEXT:    cmoval %ecx, %edx437; SSE-32-NEXT:    movd %edx, %xmm4438; SSE-32-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]439; SSE-32-NEXT:    ucomiss %xmm2, %xmm3440; SSE-32-NEXT:    movl $0, %edx441; SSE-32-NEXT:    cmoval %ecx, %edx442; SSE-32-NEXT:    movd %edx, %xmm5443; SSE-32-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]444; SSE-32-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]445; SSE-32-NEXT:    ucomiss %xmm2, %xmm3446; SSE-32-NEXT:    cmoval %ecx, %eax447; SSE-32-NEXT:    movd %eax, %xmm2448; SSE-32-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]449; SSE-32-NEXT:    punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm4[0]450; SSE-32-NEXT:    pand %xmm5, %xmm0451; SSE-32-NEXT:    pandn %xmm1, %xmm5452; SSE-32-NEXT:    por %xmm5, %xmm0453; SSE-32-NEXT:    movl %ebp, %esp454; SSE-32-NEXT:    popl %ebp455; SSE-32-NEXT:    retl456;457; SSE-64-LABEL: test_v4f32_olt_q:458; SSE-64:       # %bb.0:459; SSE-64-NEXT:    movaps %xmm2, %xmm4460; SSE-64-NEXT:    shufps {{.*#+}} xmm4 = xmm4[3,3],xmm2[3,3]461; SSE-64-NEXT:    movaps %xmm3, %xmm5462; SSE-64-NEXT:    shufps {{.*#+}} xmm5 = xmm5[3,3],xmm3[3,3]463; SSE-64-NEXT:    xorl %eax, %eax464; SSE-64-NEXT:    ucomiss %xmm4, %xmm5465; SSE-64-NEXT:    movl $-1, %ecx466; SSE-64-NEXT:    movl $0, %edx467; SSE-64-NEXT:    cmoval %ecx, %edx468; SSE-64-NEXT:    movd %edx, %xmm4469; SSE-64-NEXT:    movaps %xmm2, %xmm5470; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm2[1]471; SSE-64-NEXT:    movaps %xmm3, %xmm6472; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm3[1]473; SSE-64-NEXT:    ucomiss %xmm5, %xmm6474; SSE-64-NEXT:    movl $0, %edx475; SSE-64-NEXT:    cmoval %ecx, %edx476; SSE-64-NEXT:    movd %edx, %xmm5477; SSE-64-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]478; SSE-64-NEXT:    ucomiss %xmm2, %xmm3479; SSE-64-NEXT:    movl $0, %edx480; SSE-64-NEXT:    cmoval %ecx, %edx481; SSE-64-NEXT:    movd %edx, %xmm4482; SSE-64-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]483; SSE-64-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]484; SSE-64-NEXT:    ucomiss %xmm2, %xmm3485; SSE-64-NEXT:    cmoval %ecx, %eax486; SSE-64-NEXT:    movd %eax, %xmm2487; SSE-64-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]488; SSE-64-NEXT:    punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]489; SSE-64-NEXT:    pand %xmm4, %xmm0490; SSE-64-NEXT:    pandn %xmm1, %xmm4491; SSE-64-NEXT:    por %xmm4, %xmm0492; SSE-64-NEXT:    retq493;494; AVX-32-LABEL: test_v4f32_olt_q:495; AVX-32:       # %bb.0:496; AVX-32-NEXT:    pushl %ebp497; AVX-32-NEXT:    movl %esp, %ebp498; AVX-32-NEXT:    andl $-16, %esp499; AVX-32-NEXT:    subl $16, %esp500; AVX-32-NEXT:    vcmplt_oqps 8(%ebp), %xmm2, %xmm2501; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm0502; AVX-32-NEXT:    movl %ebp, %esp503; AVX-32-NEXT:    popl %ebp504; AVX-32-NEXT:    retl505;506; AVX-64-LABEL: test_v4f32_olt_q:507; AVX-64:       # %bb.0:508; AVX-64-NEXT:    vcmplt_oqps %xmm3, %xmm2, %xmm2509; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm0510; AVX-64-NEXT:    retq511;512; AVX512-32-LABEL: test_v4f32_olt_q:513; AVX512-32:       # %bb.0:514; AVX512-32-NEXT:    pushl %ebp515; AVX512-32-NEXT:    movl %esp, %ebp516; AVX512-32-NEXT:    andl $-16, %esp517; AVX512-32-NEXT:    subl $16, %esp518; AVX512-32-NEXT:    vcmplt_oqps 8(%ebp), %xmm2, %k1519; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}520; AVX512-32-NEXT:    movl %ebp, %esp521; AVX512-32-NEXT:    popl %ebp522; AVX512-32-NEXT:    retl523;524; AVX512-64-LABEL: test_v4f32_olt_q:525; AVX512-64:       # %bb.0:526; AVX512-64-NEXT:    vcmplt_oqps %xmm3, %xmm2, %k1527; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}528; AVX512-64-NEXT:    retq529;530; AVX512F-32-LABEL: test_v4f32_olt_q:531; AVX512F-32:       # %bb.0:532; AVX512F-32-NEXT:    pushl %ebp533; AVX512F-32-NEXT:    movl %esp, %ebp534; AVX512F-32-NEXT:    andl $-16, %esp535; AVX512F-32-NEXT:    subl $16, %esp536; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1537; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0538; AVX512F-32-NEXT:    vcmplt_oqps 8(%ebp), %xmm2, %xmm2539; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k1540; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}541; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0542; AVX512F-32-NEXT:    movl %ebp, %esp543; AVX512F-32-NEXT:    popl %ebp544; AVX512F-32-NEXT:    vzeroupper545; AVX512F-32-NEXT:    retl546;547; AVX512F-64-LABEL: test_v4f32_olt_q:548; AVX512F-64:       # %bb.0:549; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1550; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0551; AVX512F-64-NEXT:    vcmplt_oqps %xmm3, %xmm2, %xmm2552; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k1553; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}554; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0555; AVX512F-64-NEXT:    vzeroupper556; AVX512F-64-NEXT:    retq557  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(558                                               <4 x float> %f1, <4 x float> %f2, metadata !"olt",559                                               metadata !"fpexcept.strict") #0560  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b561  ret <4 x i32> %res562}563 564define <4 x i32> @test_v4f32_ole_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {565; SSE-32-LABEL: test_v4f32_ole_q:566; SSE-32:       # %bb.0:567; SSE-32-NEXT:    pushl %ebp568; SSE-32-NEXT:    movl %esp, %ebp569; SSE-32-NEXT:    andl $-16, %esp570; SSE-32-NEXT:    subl $16, %esp571; SSE-32-NEXT:    movaps 8(%ebp), %xmm3572; SSE-32-NEXT:    movaps %xmm2, %xmm4573; SSE-32-NEXT:    shufps {{.*#+}} xmm4 = xmm4[3,3],xmm2[3,3]574; SSE-32-NEXT:    movaps %xmm3, %xmm5575; SSE-32-NEXT:    shufps {{.*#+}} xmm5 = xmm5[3,3],xmm3[3,3]576; SSE-32-NEXT:    xorl %eax, %eax577; SSE-32-NEXT:    ucomiss %xmm4, %xmm5578; SSE-32-NEXT:    movl $-1, %ecx579; SSE-32-NEXT:    movl $0, %edx580; SSE-32-NEXT:    cmovael %ecx, %edx581; SSE-32-NEXT:    movd %edx, %xmm5582; SSE-32-NEXT:    movaps %xmm2, %xmm4583; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]584; SSE-32-NEXT:    movaps %xmm3, %xmm6585; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm3[1]586; SSE-32-NEXT:    ucomiss %xmm4, %xmm6587; SSE-32-NEXT:    movl $0, %edx588; SSE-32-NEXT:    cmovael %ecx, %edx589; SSE-32-NEXT:    movd %edx, %xmm4590; SSE-32-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]591; SSE-32-NEXT:    ucomiss %xmm2, %xmm3592; SSE-32-NEXT:    movl $0, %edx593; SSE-32-NEXT:    cmovael %ecx, %edx594; SSE-32-NEXT:    movd %edx, %xmm5595; SSE-32-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]596; SSE-32-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]597; SSE-32-NEXT:    ucomiss %xmm2, %xmm3598; SSE-32-NEXT:    cmovael %ecx, %eax599; SSE-32-NEXT:    movd %eax, %xmm2600; SSE-32-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]601; SSE-32-NEXT:    punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm4[0]602; SSE-32-NEXT:    pand %xmm5, %xmm0603; SSE-32-NEXT:    pandn %xmm1, %xmm5604; SSE-32-NEXT:    por %xmm5, %xmm0605; SSE-32-NEXT:    movl %ebp, %esp606; SSE-32-NEXT:    popl %ebp607; SSE-32-NEXT:    retl608;609; SSE-64-LABEL: test_v4f32_ole_q:610; SSE-64:       # %bb.0:611; SSE-64-NEXT:    movaps %xmm2, %xmm4612; SSE-64-NEXT:    shufps {{.*#+}} xmm4 = xmm4[3,3],xmm2[3,3]613; SSE-64-NEXT:    movaps %xmm3, %xmm5614; SSE-64-NEXT:    shufps {{.*#+}} xmm5 = xmm5[3,3],xmm3[3,3]615; SSE-64-NEXT:    xorl %eax, %eax616; SSE-64-NEXT:    ucomiss %xmm4, %xmm5617; SSE-64-NEXT:    movl $-1, %ecx618; SSE-64-NEXT:    movl $0, %edx619; SSE-64-NEXT:    cmovael %ecx, %edx620; SSE-64-NEXT:    movd %edx, %xmm4621; SSE-64-NEXT:    movaps %xmm2, %xmm5622; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm2[1]623; SSE-64-NEXT:    movaps %xmm3, %xmm6624; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm3[1]625; SSE-64-NEXT:    ucomiss %xmm5, %xmm6626; SSE-64-NEXT:    movl $0, %edx627; SSE-64-NEXT:    cmovael %ecx, %edx628; SSE-64-NEXT:    movd %edx, %xmm5629; SSE-64-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]630; SSE-64-NEXT:    ucomiss %xmm2, %xmm3631; SSE-64-NEXT:    movl $0, %edx632; SSE-64-NEXT:    cmovael %ecx, %edx633; SSE-64-NEXT:    movd %edx, %xmm4634; SSE-64-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]635; SSE-64-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]636; SSE-64-NEXT:    ucomiss %xmm2, %xmm3637; SSE-64-NEXT:    cmovael %ecx, %eax638; SSE-64-NEXT:    movd %eax, %xmm2639; SSE-64-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]640; SSE-64-NEXT:    punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]641; SSE-64-NEXT:    pand %xmm4, %xmm0642; SSE-64-NEXT:    pandn %xmm1, %xmm4643; SSE-64-NEXT:    por %xmm4, %xmm0644; SSE-64-NEXT:    retq645;646; AVX-32-LABEL: test_v4f32_ole_q:647; AVX-32:       # %bb.0:648; AVX-32-NEXT:    pushl %ebp649; AVX-32-NEXT:    movl %esp, %ebp650; AVX-32-NEXT:    andl $-16, %esp651; AVX-32-NEXT:    subl $16, %esp652; AVX-32-NEXT:    vcmple_oqps 8(%ebp), %xmm2, %xmm2653; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm0654; AVX-32-NEXT:    movl %ebp, %esp655; AVX-32-NEXT:    popl %ebp656; AVX-32-NEXT:    retl657;658; AVX-64-LABEL: test_v4f32_ole_q:659; AVX-64:       # %bb.0:660; AVX-64-NEXT:    vcmple_oqps %xmm3, %xmm2, %xmm2661; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm0662; AVX-64-NEXT:    retq663;664; AVX512-32-LABEL: test_v4f32_ole_q:665; AVX512-32:       # %bb.0:666; AVX512-32-NEXT:    pushl %ebp667; AVX512-32-NEXT:    movl %esp, %ebp668; AVX512-32-NEXT:    andl $-16, %esp669; AVX512-32-NEXT:    subl $16, %esp670; AVX512-32-NEXT:    vcmple_oqps 8(%ebp), %xmm2, %k1671; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}672; AVX512-32-NEXT:    movl %ebp, %esp673; AVX512-32-NEXT:    popl %ebp674; AVX512-32-NEXT:    retl675;676; AVX512-64-LABEL: test_v4f32_ole_q:677; AVX512-64:       # %bb.0:678; AVX512-64-NEXT:    vcmple_oqps %xmm3, %xmm2, %k1679; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}680; AVX512-64-NEXT:    retq681;682; AVX512F-32-LABEL: test_v4f32_ole_q:683; AVX512F-32:       # %bb.0:684; AVX512F-32-NEXT:    pushl %ebp685; AVX512F-32-NEXT:    movl %esp, %ebp686; AVX512F-32-NEXT:    andl $-16, %esp687; AVX512F-32-NEXT:    subl $16, %esp688; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1689; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0690; AVX512F-32-NEXT:    vcmple_oqps 8(%ebp), %xmm2, %xmm2691; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k1692; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}693; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0694; AVX512F-32-NEXT:    movl %ebp, %esp695; AVX512F-32-NEXT:    popl %ebp696; AVX512F-32-NEXT:    vzeroupper697; AVX512F-32-NEXT:    retl698;699; AVX512F-64-LABEL: test_v4f32_ole_q:700; AVX512F-64:       # %bb.0:701; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1702; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0703; AVX512F-64-NEXT:    vcmple_oqps %xmm3, %xmm2, %xmm2704; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k1705; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}706; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0707; AVX512F-64-NEXT:    vzeroupper708; AVX512F-64-NEXT:    retq709  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(710                                               <4 x float> %f1, <4 x float> %f2, metadata !"ole",711                                               metadata !"fpexcept.strict") #0712  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b713  ret <4 x i32> %res714}715 716define <4 x i32> @test_v4f32_one_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {717; SSE-32-LABEL: test_v4f32_one_q:718; SSE-32:       # %bb.0:719; SSE-32-NEXT:    pushl %ebp720; SSE-32-NEXT:    movl %esp, %ebp721; SSE-32-NEXT:    andl $-16, %esp722; SSE-32-NEXT:    subl $16, %esp723; SSE-32-NEXT:    movaps 8(%ebp), %xmm3724; SSE-32-NEXT:    movaps %xmm2, %xmm4725; SSE-32-NEXT:    cmpneqps %xmm3, %xmm4726; SSE-32-NEXT:    cmpordps %xmm2, %xmm3727; SSE-32-NEXT:    andps %xmm4, %xmm3728; SSE-32-NEXT:    andps %xmm3, %xmm0729; SSE-32-NEXT:    andnps %xmm1, %xmm3730; SSE-32-NEXT:    orps %xmm3, %xmm0731; SSE-32-NEXT:    movl %ebp, %esp732; SSE-32-NEXT:    popl %ebp733; SSE-32-NEXT:    retl734;735; SSE-64-LABEL: test_v4f32_one_q:736; SSE-64:       # %bb.0:737; SSE-64-NEXT:    movaps %xmm2, %xmm4738; SSE-64-NEXT:    cmpneqps %xmm3, %xmm4739; SSE-64-NEXT:    cmpordps %xmm3, %xmm2740; SSE-64-NEXT:    andps %xmm2, %xmm4741; SSE-64-NEXT:    andps %xmm4, %xmm0742; SSE-64-NEXT:    andnps %xmm1, %xmm4743; SSE-64-NEXT:    orps %xmm4, %xmm0744; SSE-64-NEXT:    retq745;746; AVX-32-LABEL: test_v4f32_one_q:747; AVX-32:       # %bb.0:748; AVX-32-NEXT:    pushl %ebp749; AVX-32-NEXT:    movl %esp, %ebp750; AVX-32-NEXT:    andl $-16, %esp751; AVX-32-NEXT:    subl $16, %esp752; AVX-32-NEXT:    vcmpneq_oqps 8(%ebp), %xmm2, %xmm2753; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm0754; AVX-32-NEXT:    movl %ebp, %esp755; AVX-32-NEXT:    popl %ebp756; AVX-32-NEXT:    retl757;758; AVX-64-LABEL: test_v4f32_one_q:759; AVX-64:       # %bb.0:760; AVX-64-NEXT:    vcmpneq_oqps %xmm3, %xmm2, %xmm2761; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm0762; AVX-64-NEXT:    retq763;764; AVX512-32-LABEL: test_v4f32_one_q:765; AVX512-32:       # %bb.0:766; AVX512-32-NEXT:    pushl %ebp767; AVX512-32-NEXT:    movl %esp, %ebp768; AVX512-32-NEXT:    andl $-16, %esp769; AVX512-32-NEXT:    subl $16, %esp770; AVX512-32-NEXT:    vcmpneq_oqps 8(%ebp), %xmm2, %k1771; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}772; AVX512-32-NEXT:    movl %ebp, %esp773; AVX512-32-NEXT:    popl %ebp774; AVX512-32-NEXT:    retl775;776; AVX512-64-LABEL: test_v4f32_one_q:777; AVX512-64:       # %bb.0:778; AVX512-64-NEXT:    vcmpneq_oqps %xmm3, %xmm2, %k1779; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}780; AVX512-64-NEXT:    retq781;782; AVX512F-32-LABEL: test_v4f32_one_q:783; AVX512F-32:       # %bb.0:784; AVX512F-32-NEXT:    pushl %ebp785; AVX512F-32-NEXT:    movl %esp, %ebp786; AVX512F-32-NEXT:    andl $-16, %esp787; AVX512F-32-NEXT:    subl $16, %esp788; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1789; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0790; AVX512F-32-NEXT:    vcmpneq_oqps 8(%ebp), %xmm2, %xmm2791; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k1792; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}793; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0794; AVX512F-32-NEXT:    movl %ebp, %esp795; AVX512F-32-NEXT:    popl %ebp796; AVX512F-32-NEXT:    vzeroupper797; AVX512F-32-NEXT:    retl798;799; AVX512F-64-LABEL: test_v4f32_one_q:800; AVX512F-64:       # %bb.0:801; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1802; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0803; AVX512F-64-NEXT:    vcmpneq_oqps %xmm3, %xmm2, %xmm2804; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k1805; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}806; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0807; AVX512F-64-NEXT:    vzeroupper808; AVX512F-64-NEXT:    retq809  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(810                                               <4 x float> %f1, <4 x float> %f2, metadata !"one",811                                               metadata !"fpexcept.strict") #0812  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b813  ret <4 x i32> %res814}815 816define <4 x i32> @test_v4f32_ord_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {817; SSE-32-LABEL: test_v4f32_ord_q:818; SSE-32:       # %bb.0:819; SSE-32-NEXT:    pushl %ebp820; SSE-32-NEXT:    movl %esp, %ebp821; SSE-32-NEXT:    andl $-16, %esp822; SSE-32-NEXT:    subl $16, %esp823; SSE-32-NEXT:    cmpordps 8(%ebp), %xmm2824; SSE-32-NEXT:    andps %xmm2, %xmm0825; SSE-32-NEXT:    andnps %xmm1, %xmm2826; SSE-32-NEXT:    orps %xmm2, %xmm0827; SSE-32-NEXT:    movl %ebp, %esp828; SSE-32-NEXT:    popl %ebp829; SSE-32-NEXT:    retl830;831; SSE-64-LABEL: test_v4f32_ord_q:832; SSE-64:       # %bb.0:833; SSE-64-NEXT:    cmpordps %xmm3, %xmm2834; SSE-64-NEXT:    andps %xmm2, %xmm0835; SSE-64-NEXT:    andnps %xmm1, %xmm2836; SSE-64-NEXT:    orps %xmm2, %xmm0837; SSE-64-NEXT:    retq838;839; AVX-32-LABEL: test_v4f32_ord_q:840; AVX-32:       # %bb.0:841; AVX-32-NEXT:    pushl %ebp842; AVX-32-NEXT:    movl %esp, %ebp843; AVX-32-NEXT:    andl $-16, %esp844; AVX-32-NEXT:    subl $16, %esp845; AVX-32-NEXT:    vcmpordps 8(%ebp), %xmm2, %xmm2846; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm0847; AVX-32-NEXT:    movl %ebp, %esp848; AVX-32-NEXT:    popl %ebp849; AVX-32-NEXT:    retl850;851; AVX-64-LABEL: test_v4f32_ord_q:852; AVX-64:       # %bb.0:853; AVX-64-NEXT:    vcmpordps %xmm3, %xmm2, %xmm2854; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm0855; AVX-64-NEXT:    retq856;857; AVX512-32-LABEL: test_v4f32_ord_q:858; AVX512-32:       # %bb.0:859; AVX512-32-NEXT:    pushl %ebp860; AVX512-32-NEXT:    movl %esp, %ebp861; AVX512-32-NEXT:    andl $-16, %esp862; AVX512-32-NEXT:    subl $16, %esp863; AVX512-32-NEXT:    vcmpordps 8(%ebp), %xmm2, %k1864; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}865; AVX512-32-NEXT:    movl %ebp, %esp866; AVX512-32-NEXT:    popl %ebp867; AVX512-32-NEXT:    retl868;869; AVX512-64-LABEL: test_v4f32_ord_q:870; AVX512-64:       # %bb.0:871; AVX512-64-NEXT:    vcmpordps %xmm3, %xmm2, %k1872; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}873; AVX512-64-NEXT:    retq874;875; AVX512F-32-LABEL: test_v4f32_ord_q:876; AVX512F-32:       # %bb.0:877; AVX512F-32-NEXT:    pushl %ebp878; AVX512F-32-NEXT:    movl %esp, %ebp879; AVX512F-32-NEXT:    andl $-16, %esp880; AVX512F-32-NEXT:    subl $16, %esp881; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1882; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0883; AVX512F-32-NEXT:    vcmpordps 8(%ebp), %xmm2, %xmm2884; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k1885; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}886; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0887; AVX512F-32-NEXT:    movl %ebp, %esp888; AVX512F-32-NEXT:    popl %ebp889; AVX512F-32-NEXT:    vzeroupper890; AVX512F-32-NEXT:    retl891;892; AVX512F-64-LABEL: test_v4f32_ord_q:893; AVX512F-64:       # %bb.0:894; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1895; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0896; AVX512F-64-NEXT:    vcmpordps %xmm3, %xmm2, %xmm2897; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k1898; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}899; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0900; AVX512F-64-NEXT:    vzeroupper901; AVX512F-64-NEXT:    retq902  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(903                                               <4 x float> %f1, <4 x float> %f2, metadata !"ord",904                                               metadata !"fpexcept.strict") #0905  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b906  ret <4 x i32> %res907}908 909define <4 x i32> @test_v4f32_ueq_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {910; SSE-32-LABEL: test_v4f32_ueq_q:911; SSE-32:       # %bb.0:912; SSE-32-NEXT:    pushl %ebp913; SSE-32-NEXT:    movl %esp, %ebp914; SSE-32-NEXT:    andl $-16, %esp915; SSE-32-NEXT:    subl $16, %esp916; SSE-32-NEXT:    movaps 8(%ebp), %xmm3917; SSE-32-NEXT:    movaps %xmm2, %xmm4918; SSE-32-NEXT:    cmpeqps %xmm3, %xmm4919; SSE-32-NEXT:    cmpunordps %xmm2, %xmm3920; SSE-32-NEXT:    orps %xmm4, %xmm3921; SSE-32-NEXT:    andps %xmm3, %xmm0922; SSE-32-NEXT:    andnps %xmm1, %xmm3923; SSE-32-NEXT:    orps %xmm3, %xmm0924; SSE-32-NEXT:    movl %ebp, %esp925; SSE-32-NEXT:    popl %ebp926; SSE-32-NEXT:    retl927;928; SSE-64-LABEL: test_v4f32_ueq_q:929; SSE-64:       # %bb.0:930; SSE-64-NEXT:    movaps %xmm2, %xmm4931; SSE-64-NEXT:    cmpeqps %xmm3, %xmm4932; SSE-64-NEXT:    cmpunordps %xmm3, %xmm2933; SSE-64-NEXT:    orps %xmm2, %xmm4934; SSE-64-NEXT:    andps %xmm4, %xmm0935; SSE-64-NEXT:    andnps %xmm1, %xmm4936; SSE-64-NEXT:    orps %xmm4, %xmm0937; SSE-64-NEXT:    retq938;939; AVX-32-LABEL: test_v4f32_ueq_q:940; AVX-32:       # %bb.0:941; AVX-32-NEXT:    pushl %ebp942; AVX-32-NEXT:    movl %esp, %ebp943; AVX-32-NEXT:    andl $-16, %esp944; AVX-32-NEXT:    subl $16, %esp945; AVX-32-NEXT:    vcmpeq_uqps 8(%ebp), %xmm2, %xmm2946; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm0947; AVX-32-NEXT:    movl %ebp, %esp948; AVX-32-NEXT:    popl %ebp949; AVX-32-NEXT:    retl950;951; AVX-64-LABEL: test_v4f32_ueq_q:952; AVX-64:       # %bb.0:953; AVX-64-NEXT:    vcmpeq_uqps %xmm3, %xmm2, %xmm2954; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm0955; AVX-64-NEXT:    retq956;957; AVX512-32-LABEL: test_v4f32_ueq_q:958; AVX512-32:       # %bb.0:959; AVX512-32-NEXT:    pushl %ebp960; AVX512-32-NEXT:    movl %esp, %ebp961; AVX512-32-NEXT:    andl $-16, %esp962; AVX512-32-NEXT:    subl $16, %esp963; AVX512-32-NEXT:    vcmpeq_uqps 8(%ebp), %xmm2, %k1964; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}965; AVX512-32-NEXT:    movl %ebp, %esp966; AVX512-32-NEXT:    popl %ebp967; AVX512-32-NEXT:    retl968;969; AVX512-64-LABEL: test_v4f32_ueq_q:970; AVX512-64:       # %bb.0:971; AVX512-64-NEXT:    vcmpeq_uqps %xmm3, %xmm2, %k1972; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}973; AVX512-64-NEXT:    retq974;975; AVX512F-32-LABEL: test_v4f32_ueq_q:976; AVX512F-32:       # %bb.0:977; AVX512F-32-NEXT:    pushl %ebp978; AVX512F-32-NEXT:    movl %esp, %ebp979; AVX512F-32-NEXT:    andl $-16, %esp980; AVX512F-32-NEXT:    subl $16, %esp981; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1982; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0983; AVX512F-32-NEXT:    vcmpeq_uqps 8(%ebp), %xmm2, %xmm2984; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k1985; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}986; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0987; AVX512F-32-NEXT:    movl %ebp, %esp988; AVX512F-32-NEXT:    popl %ebp989; AVX512F-32-NEXT:    vzeroupper990; AVX512F-32-NEXT:    retl991;992; AVX512F-64-LABEL: test_v4f32_ueq_q:993; AVX512F-64:       # %bb.0:994; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1995; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0996; AVX512F-64-NEXT:    vcmpeq_uqps %xmm3, %xmm2, %xmm2997; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k1998; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}999; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01000; AVX512F-64-NEXT:    vzeroupper1001; AVX512F-64-NEXT:    retq1002  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(1003                                               <4 x float> %f1, <4 x float> %f2, metadata !"ueq",1004                                               metadata !"fpexcept.strict") #01005  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b1006  ret <4 x i32> %res1007}1008 1009define <4 x i32> @test_v4f32_ugt_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {1010; SSE-32-LABEL: test_v4f32_ugt_q:1011; SSE-32:       # %bb.0:1012; SSE-32-NEXT:    pushl %ebp1013; SSE-32-NEXT:    movl %esp, %ebp1014; SSE-32-NEXT:    andl $-16, %esp1015; SSE-32-NEXT:    subl $16, %esp1016; SSE-32-NEXT:    movaps 8(%ebp), %xmm31017; SSE-32-NEXT:    movaps %xmm2, %xmm41018; SSE-32-NEXT:    shufps {{.*#+}} xmm4 = xmm4[3,3],xmm2[3,3]1019; SSE-32-NEXT:    movaps %xmm3, %xmm51020; SSE-32-NEXT:    shufps {{.*#+}} xmm5 = xmm5[3,3],xmm3[3,3]1021; SSE-32-NEXT:    xorl %eax, %eax1022; SSE-32-NEXT:    ucomiss %xmm4, %xmm51023; SSE-32-NEXT:    movl $-1, %ecx1024; SSE-32-NEXT:    movl $0, %edx1025; SSE-32-NEXT:    cmovbl %ecx, %edx1026; SSE-32-NEXT:    movd %edx, %xmm51027; SSE-32-NEXT:    movaps %xmm2, %xmm41028; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]1029; SSE-32-NEXT:    movaps %xmm3, %xmm61030; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm3[1]1031; SSE-32-NEXT:    ucomiss %xmm4, %xmm61032; SSE-32-NEXT:    movl $0, %edx1033; SSE-32-NEXT:    cmovbl %ecx, %edx1034; SSE-32-NEXT:    movd %edx, %xmm41035; SSE-32-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]1036; SSE-32-NEXT:    ucomiss %xmm2, %xmm31037; SSE-32-NEXT:    movl $0, %edx1038; SSE-32-NEXT:    cmovbl %ecx, %edx1039; SSE-32-NEXT:    movd %edx, %xmm51040; SSE-32-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]1041; SSE-32-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]1042; SSE-32-NEXT:    ucomiss %xmm2, %xmm31043; SSE-32-NEXT:    cmovbl %ecx, %eax1044; SSE-32-NEXT:    movd %eax, %xmm21045; SSE-32-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]1046; SSE-32-NEXT:    punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm4[0]1047; SSE-32-NEXT:    pand %xmm5, %xmm01048; SSE-32-NEXT:    pandn %xmm1, %xmm51049; SSE-32-NEXT:    por %xmm5, %xmm01050; SSE-32-NEXT:    movl %ebp, %esp1051; SSE-32-NEXT:    popl %ebp1052; SSE-32-NEXT:    retl1053;1054; SSE-64-LABEL: test_v4f32_ugt_q:1055; SSE-64:       # %bb.0:1056; SSE-64-NEXT:    movaps %xmm2, %xmm41057; SSE-64-NEXT:    shufps {{.*#+}} xmm4 = xmm4[3,3],xmm2[3,3]1058; SSE-64-NEXT:    movaps %xmm3, %xmm51059; SSE-64-NEXT:    shufps {{.*#+}} xmm5 = xmm5[3,3],xmm3[3,3]1060; SSE-64-NEXT:    xorl %eax, %eax1061; SSE-64-NEXT:    ucomiss %xmm4, %xmm51062; SSE-64-NEXT:    movl $-1, %ecx1063; SSE-64-NEXT:    movl $0, %edx1064; SSE-64-NEXT:    cmovbl %ecx, %edx1065; SSE-64-NEXT:    movd %edx, %xmm41066; SSE-64-NEXT:    movaps %xmm2, %xmm51067; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm2[1]1068; SSE-64-NEXT:    movaps %xmm3, %xmm61069; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm3[1]1070; SSE-64-NEXT:    ucomiss %xmm5, %xmm61071; SSE-64-NEXT:    movl $0, %edx1072; SSE-64-NEXT:    cmovbl %ecx, %edx1073; SSE-64-NEXT:    movd %edx, %xmm51074; SSE-64-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]1075; SSE-64-NEXT:    ucomiss %xmm2, %xmm31076; SSE-64-NEXT:    movl $0, %edx1077; SSE-64-NEXT:    cmovbl %ecx, %edx1078; SSE-64-NEXT:    movd %edx, %xmm41079; SSE-64-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]1080; SSE-64-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]1081; SSE-64-NEXT:    ucomiss %xmm2, %xmm31082; SSE-64-NEXT:    cmovbl %ecx, %eax1083; SSE-64-NEXT:    movd %eax, %xmm21084; SSE-64-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]1085; SSE-64-NEXT:    punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]1086; SSE-64-NEXT:    pand %xmm4, %xmm01087; SSE-64-NEXT:    pandn %xmm1, %xmm41088; SSE-64-NEXT:    por %xmm4, %xmm01089; SSE-64-NEXT:    retq1090;1091; AVX-32-LABEL: test_v4f32_ugt_q:1092; AVX-32:       # %bb.0:1093; AVX-32-NEXT:    pushl %ebp1094; AVX-32-NEXT:    movl %esp, %ebp1095; AVX-32-NEXT:    andl $-16, %esp1096; AVX-32-NEXT:    subl $16, %esp1097; AVX-32-NEXT:    vcmpnle_uqps 8(%ebp), %xmm2, %xmm21098; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm01099; AVX-32-NEXT:    movl %ebp, %esp1100; AVX-32-NEXT:    popl %ebp1101; AVX-32-NEXT:    retl1102;1103; AVX-64-LABEL: test_v4f32_ugt_q:1104; AVX-64:       # %bb.0:1105; AVX-64-NEXT:    vcmpnle_uqps %xmm3, %xmm2, %xmm21106; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm01107; AVX-64-NEXT:    retq1108;1109; AVX512-32-LABEL: test_v4f32_ugt_q:1110; AVX512-32:       # %bb.0:1111; AVX512-32-NEXT:    pushl %ebp1112; AVX512-32-NEXT:    movl %esp, %ebp1113; AVX512-32-NEXT:    andl $-16, %esp1114; AVX512-32-NEXT:    subl $16, %esp1115; AVX512-32-NEXT:    vcmpnle_uqps 8(%ebp), %xmm2, %k11116; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}1117; AVX512-32-NEXT:    movl %ebp, %esp1118; AVX512-32-NEXT:    popl %ebp1119; AVX512-32-NEXT:    retl1120;1121; AVX512-64-LABEL: test_v4f32_ugt_q:1122; AVX512-64:       # %bb.0:1123; AVX512-64-NEXT:    vcmpnle_uqps %xmm3, %xmm2, %k11124; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}1125; AVX512-64-NEXT:    retq1126;1127; AVX512F-32-LABEL: test_v4f32_ugt_q:1128; AVX512F-32:       # %bb.0:1129; AVX512F-32-NEXT:    pushl %ebp1130; AVX512F-32-NEXT:    movl %esp, %ebp1131; AVX512F-32-NEXT:    andl $-16, %esp1132; AVX512F-32-NEXT:    subl $16, %esp1133; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11134; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm01135; AVX512F-32-NEXT:    vcmpnle_uqps 8(%ebp), %xmm2, %xmm21136; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k11137; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}1138; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01139; AVX512F-32-NEXT:    movl %ebp, %esp1140; AVX512F-32-NEXT:    popl %ebp1141; AVX512F-32-NEXT:    vzeroupper1142; AVX512F-32-NEXT:    retl1143;1144; AVX512F-64-LABEL: test_v4f32_ugt_q:1145; AVX512F-64:       # %bb.0:1146; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11147; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm01148; AVX512F-64-NEXT:    vcmpnle_uqps %xmm3, %xmm2, %xmm21149; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k11150; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}1151; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01152; AVX512F-64-NEXT:    vzeroupper1153; AVX512F-64-NEXT:    retq1154  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(1155                                               <4 x float> %f1, <4 x float> %f2, metadata !"ugt",1156                                               metadata !"fpexcept.strict") #01157  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b1158  ret <4 x i32> %res1159}1160 1161define <4 x i32> @test_v4f32_uge_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {1162; SSE-32-LABEL: test_v4f32_uge_q:1163; SSE-32:       # %bb.0:1164; SSE-32-NEXT:    pushl %ebp1165; SSE-32-NEXT:    movl %esp, %ebp1166; SSE-32-NEXT:    andl $-16, %esp1167; SSE-32-NEXT:    subl $16, %esp1168; SSE-32-NEXT:    movaps 8(%ebp), %xmm31169; SSE-32-NEXT:    movaps %xmm2, %xmm41170; SSE-32-NEXT:    shufps {{.*#+}} xmm4 = xmm4[3,3],xmm2[3,3]1171; SSE-32-NEXT:    movaps %xmm3, %xmm51172; SSE-32-NEXT:    shufps {{.*#+}} xmm5 = xmm5[3,3],xmm3[3,3]1173; SSE-32-NEXT:    xorl %eax, %eax1174; SSE-32-NEXT:    ucomiss %xmm4, %xmm51175; SSE-32-NEXT:    movl $-1, %ecx1176; SSE-32-NEXT:    movl $0, %edx1177; SSE-32-NEXT:    cmovbel %ecx, %edx1178; SSE-32-NEXT:    movd %edx, %xmm51179; SSE-32-NEXT:    movaps %xmm2, %xmm41180; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]1181; SSE-32-NEXT:    movaps %xmm3, %xmm61182; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm3[1]1183; SSE-32-NEXT:    ucomiss %xmm4, %xmm61184; SSE-32-NEXT:    movl $0, %edx1185; SSE-32-NEXT:    cmovbel %ecx, %edx1186; SSE-32-NEXT:    movd %edx, %xmm41187; SSE-32-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]1188; SSE-32-NEXT:    ucomiss %xmm2, %xmm31189; SSE-32-NEXT:    movl $0, %edx1190; SSE-32-NEXT:    cmovbel %ecx, %edx1191; SSE-32-NEXT:    movd %edx, %xmm51192; SSE-32-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]1193; SSE-32-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]1194; SSE-32-NEXT:    ucomiss %xmm2, %xmm31195; SSE-32-NEXT:    cmovbel %ecx, %eax1196; SSE-32-NEXT:    movd %eax, %xmm21197; SSE-32-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]1198; SSE-32-NEXT:    punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm4[0]1199; SSE-32-NEXT:    pand %xmm5, %xmm01200; SSE-32-NEXT:    pandn %xmm1, %xmm51201; SSE-32-NEXT:    por %xmm5, %xmm01202; SSE-32-NEXT:    movl %ebp, %esp1203; SSE-32-NEXT:    popl %ebp1204; SSE-32-NEXT:    retl1205;1206; SSE-64-LABEL: test_v4f32_uge_q:1207; SSE-64:       # %bb.0:1208; SSE-64-NEXT:    movaps %xmm2, %xmm41209; SSE-64-NEXT:    shufps {{.*#+}} xmm4 = xmm4[3,3],xmm2[3,3]1210; SSE-64-NEXT:    movaps %xmm3, %xmm51211; SSE-64-NEXT:    shufps {{.*#+}} xmm5 = xmm5[3,3],xmm3[3,3]1212; SSE-64-NEXT:    xorl %eax, %eax1213; SSE-64-NEXT:    ucomiss %xmm4, %xmm51214; SSE-64-NEXT:    movl $-1, %ecx1215; SSE-64-NEXT:    movl $0, %edx1216; SSE-64-NEXT:    cmovbel %ecx, %edx1217; SSE-64-NEXT:    movd %edx, %xmm41218; SSE-64-NEXT:    movaps %xmm2, %xmm51219; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm2[1]1220; SSE-64-NEXT:    movaps %xmm3, %xmm61221; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm3[1]1222; SSE-64-NEXT:    ucomiss %xmm5, %xmm61223; SSE-64-NEXT:    movl $0, %edx1224; SSE-64-NEXT:    cmovbel %ecx, %edx1225; SSE-64-NEXT:    movd %edx, %xmm51226; SSE-64-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]1227; SSE-64-NEXT:    ucomiss %xmm2, %xmm31228; SSE-64-NEXT:    movl $0, %edx1229; SSE-64-NEXT:    cmovbel %ecx, %edx1230; SSE-64-NEXT:    movd %edx, %xmm41231; SSE-64-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]1232; SSE-64-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]1233; SSE-64-NEXT:    ucomiss %xmm2, %xmm31234; SSE-64-NEXT:    cmovbel %ecx, %eax1235; SSE-64-NEXT:    movd %eax, %xmm21236; SSE-64-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]1237; SSE-64-NEXT:    punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]1238; SSE-64-NEXT:    pand %xmm4, %xmm01239; SSE-64-NEXT:    pandn %xmm1, %xmm41240; SSE-64-NEXT:    por %xmm4, %xmm01241; SSE-64-NEXT:    retq1242;1243; AVX-32-LABEL: test_v4f32_uge_q:1244; AVX-32:       # %bb.0:1245; AVX-32-NEXT:    pushl %ebp1246; AVX-32-NEXT:    movl %esp, %ebp1247; AVX-32-NEXT:    andl $-16, %esp1248; AVX-32-NEXT:    subl $16, %esp1249; AVX-32-NEXT:    vcmpnlt_uqps 8(%ebp), %xmm2, %xmm21250; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm01251; AVX-32-NEXT:    movl %ebp, %esp1252; AVX-32-NEXT:    popl %ebp1253; AVX-32-NEXT:    retl1254;1255; AVX-64-LABEL: test_v4f32_uge_q:1256; AVX-64:       # %bb.0:1257; AVX-64-NEXT:    vcmpnlt_uqps %xmm3, %xmm2, %xmm21258; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm01259; AVX-64-NEXT:    retq1260;1261; AVX512-32-LABEL: test_v4f32_uge_q:1262; AVX512-32:       # %bb.0:1263; AVX512-32-NEXT:    pushl %ebp1264; AVX512-32-NEXT:    movl %esp, %ebp1265; AVX512-32-NEXT:    andl $-16, %esp1266; AVX512-32-NEXT:    subl $16, %esp1267; AVX512-32-NEXT:    vcmpnlt_uqps 8(%ebp), %xmm2, %k11268; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}1269; AVX512-32-NEXT:    movl %ebp, %esp1270; AVX512-32-NEXT:    popl %ebp1271; AVX512-32-NEXT:    retl1272;1273; AVX512-64-LABEL: test_v4f32_uge_q:1274; AVX512-64:       # %bb.0:1275; AVX512-64-NEXT:    vcmpnlt_uqps %xmm3, %xmm2, %k11276; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}1277; AVX512-64-NEXT:    retq1278;1279; AVX512F-32-LABEL: test_v4f32_uge_q:1280; AVX512F-32:       # %bb.0:1281; AVX512F-32-NEXT:    pushl %ebp1282; AVX512F-32-NEXT:    movl %esp, %ebp1283; AVX512F-32-NEXT:    andl $-16, %esp1284; AVX512F-32-NEXT:    subl $16, %esp1285; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11286; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm01287; AVX512F-32-NEXT:    vcmpnlt_uqps 8(%ebp), %xmm2, %xmm21288; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k11289; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}1290; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01291; AVX512F-32-NEXT:    movl %ebp, %esp1292; AVX512F-32-NEXT:    popl %ebp1293; AVX512F-32-NEXT:    vzeroupper1294; AVX512F-32-NEXT:    retl1295;1296; AVX512F-64-LABEL: test_v4f32_uge_q:1297; AVX512F-64:       # %bb.0:1298; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11299; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm01300; AVX512F-64-NEXT:    vcmpnlt_uqps %xmm3, %xmm2, %xmm21301; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k11302; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}1303; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01304; AVX512F-64-NEXT:    vzeroupper1305; AVX512F-64-NEXT:    retq1306  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(1307                                               <4 x float> %f1, <4 x float> %f2, metadata !"uge",1308                                               metadata !"fpexcept.strict") #01309  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b1310  ret <4 x i32> %res1311}1312 1313define <4 x i32> @test_v4f32_ult_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {1314; SSE-32-LABEL: test_v4f32_ult_q:1315; SSE-32:       # %bb.0:1316; SSE-32-NEXT:    pushl %ebp1317; SSE-32-NEXT:    movl %esp, %ebp1318; SSE-32-NEXT:    andl $-16, %esp1319; SSE-32-NEXT:    subl $16, %esp1320; SSE-32-NEXT:    movaps 8(%ebp), %xmm31321; SSE-32-NEXT:    movaps %xmm3, %xmm41322; SSE-32-NEXT:    shufps {{.*#+}} xmm4 = xmm4[3,3],xmm3[3,3]1323; SSE-32-NEXT:    movaps %xmm2, %xmm51324; SSE-32-NEXT:    shufps {{.*#+}} xmm5 = xmm5[3,3],xmm2[3,3]1325; SSE-32-NEXT:    xorl %eax, %eax1326; SSE-32-NEXT:    ucomiss %xmm4, %xmm51327; SSE-32-NEXT:    movl $-1, %ecx1328; SSE-32-NEXT:    movl $0, %edx1329; SSE-32-NEXT:    cmovbl %ecx, %edx1330; SSE-32-NEXT:    movd %edx, %xmm51331; SSE-32-NEXT:    movaps %xmm3, %xmm41332; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm3[1]1333; SSE-32-NEXT:    movaps %xmm2, %xmm61334; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm2[1]1335; SSE-32-NEXT:    ucomiss %xmm4, %xmm61336; SSE-32-NEXT:    movl $0, %edx1337; SSE-32-NEXT:    cmovbl %ecx, %edx1338; SSE-32-NEXT:    movd %edx, %xmm41339; SSE-32-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]1340; SSE-32-NEXT:    ucomiss %xmm3, %xmm21341; SSE-32-NEXT:    movl $0, %edx1342; SSE-32-NEXT:    cmovbl %ecx, %edx1343; SSE-32-NEXT:    movd %edx, %xmm51344; SSE-32-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]1345; SSE-32-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]1346; SSE-32-NEXT:    ucomiss %xmm3, %xmm21347; SSE-32-NEXT:    cmovbl %ecx, %eax1348; SSE-32-NEXT:    movd %eax, %xmm21349; SSE-32-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]1350; SSE-32-NEXT:    punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm4[0]1351; SSE-32-NEXT:    pand %xmm5, %xmm01352; SSE-32-NEXT:    pandn %xmm1, %xmm51353; SSE-32-NEXT:    por %xmm5, %xmm01354; SSE-32-NEXT:    movl %ebp, %esp1355; SSE-32-NEXT:    popl %ebp1356; SSE-32-NEXT:    retl1357;1358; SSE-64-LABEL: test_v4f32_ult_q:1359; SSE-64:       # %bb.0:1360; SSE-64-NEXT:    movaps %xmm3, %xmm41361; SSE-64-NEXT:    shufps {{.*#+}} xmm4 = xmm4[3,3],xmm3[3,3]1362; SSE-64-NEXT:    movaps %xmm2, %xmm51363; SSE-64-NEXT:    shufps {{.*#+}} xmm5 = xmm5[3,3],xmm2[3,3]1364; SSE-64-NEXT:    xorl %eax, %eax1365; SSE-64-NEXT:    ucomiss %xmm4, %xmm51366; SSE-64-NEXT:    movl $-1, %ecx1367; SSE-64-NEXT:    movl $0, %edx1368; SSE-64-NEXT:    cmovbl %ecx, %edx1369; SSE-64-NEXT:    movd %edx, %xmm41370; SSE-64-NEXT:    movaps %xmm3, %xmm51371; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm3[1]1372; SSE-64-NEXT:    movaps %xmm2, %xmm61373; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm2[1]1374; SSE-64-NEXT:    ucomiss %xmm5, %xmm61375; SSE-64-NEXT:    movl $0, %edx1376; SSE-64-NEXT:    cmovbl %ecx, %edx1377; SSE-64-NEXT:    movd %edx, %xmm51378; SSE-64-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]1379; SSE-64-NEXT:    ucomiss %xmm3, %xmm21380; SSE-64-NEXT:    movl $0, %edx1381; SSE-64-NEXT:    cmovbl %ecx, %edx1382; SSE-64-NEXT:    movd %edx, %xmm41383; SSE-64-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]1384; SSE-64-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]1385; SSE-64-NEXT:    ucomiss %xmm3, %xmm21386; SSE-64-NEXT:    cmovbl %ecx, %eax1387; SSE-64-NEXT:    movd %eax, %xmm21388; SSE-64-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]1389; SSE-64-NEXT:    punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]1390; SSE-64-NEXT:    pand %xmm4, %xmm01391; SSE-64-NEXT:    pandn %xmm1, %xmm41392; SSE-64-NEXT:    por %xmm4, %xmm01393; SSE-64-NEXT:    retq1394;1395; AVX-32-LABEL: test_v4f32_ult_q:1396; AVX-32:       # %bb.0:1397; AVX-32-NEXT:    pushl %ebp1398; AVX-32-NEXT:    movl %esp, %ebp1399; AVX-32-NEXT:    andl $-16, %esp1400; AVX-32-NEXT:    subl $16, %esp1401; AVX-32-NEXT:    vmovaps 8(%ebp), %xmm31402; AVX-32-NEXT:    vcmpnle_uqps %xmm2, %xmm3, %xmm21403; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm01404; AVX-32-NEXT:    movl %ebp, %esp1405; AVX-32-NEXT:    popl %ebp1406; AVX-32-NEXT:    retl1407;1408; AVX-64-LABEL: test_v4f32_ult_q:1409; AVX-64:       # %bb.0:1410; AVX-64-NEXT:    vcmpnle_uqps %xmm2, %xmm3, %xmm21411; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm01412; AVX-64-NEXT:    retq1413;1414; AVX512-32-LABEL: test_v4f32_ult_q:1415; AVX512-32:       # %bb.0:1416; AVX512-32-NEXT:    pushl %ebp1417; AVX512-32-NEXT:    movl %esp, %ebp1418; AVX512-32-NEXT:    andl $-16, %esp1419; AVX512-32-NEXT:    subl $16, %esp1420; AVX512-32-NEXT:    vcmpnge_uqps 8(%ebp), %xmm2, %k11421; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}1422; AVX512-32-NEXT:    movl %ebp, %esp1423; AVX512-32-NEXT:    popl %ebp1424; AVX512-32-NEXT:    retl1425;1426; AVX512-64-LABEL: test_v4f32_ult_q:1427; AVX512-64:       # %bb.0:1428; AVX512-64-NEXT:    vcmpnle_uqps %xmm2, %xmm3, %k11429; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}1430; AVX512-64-NEXT:    retq1431;1432; AVX512F-32-LABEL: test_v4f32_ult_q:1433; AVX512F-32:       # %bb.0:1434; AVX512F-32-NEXT:    pushl %ebp1435; AVX512F-32-NEXT:    movl %esp, %ebp1436; AVX512F-32-NEXT:    andl $-16, %esp1437; AVX512F-32-NEXT:    subl $16, %esp1438; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11439; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm01440; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm31441; AVX512F-32-NEXT:    vcmpnle_uqps %xmm2, %xmm3, %xmm21442; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k11443; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}1444; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01445; AVX512F-32-NEXT:    movl %ebp, %esp1446; AVX512F-32-NEXT:    popl %ebp1447; AVX512F-32-NEXT:    vzeroupper1448; AVX512F-32-NEXT:    retl1449;1450; AVX512F-64-LABEL: test_v4f32_ult_q:1451; AVX512F-64:       # %bb.0:1452; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11453; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm01454; AVX512F-64-NEXT:    vcmpnle_uqps %xmm2, %xmm3, %xmm21455; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k11456; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}1457; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01458; AVX512F-64-NEXT:    vzeroupper1459; AVX512F-64-NEXT:    retq1460  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(1461                                               <4 x float> %f1, <4 x float> %f2, metadata !"ult",1462                                               metadata !"fpexcept.strict") #01463  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b1464  ret <4 x i32> %res1465}1466 1467define <4 x i32> @test_v4f32_ule_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {1468; SSE-32-LABEL: test_v4f32_ule_q:1469; SSE-32:       # %bb.0:1470; SSE-32-NEXT:    pushl %ebp1471; SSE-32-NEXT:    movl %esp, %ebp1472; SSE-32-NEXT:    andl $-16, %esp1473; SSE-32-NEXT:    subl $16, %esp1474; SSE-32-NEXT:    movaps 8(%ebp), %xmm31475; SSE-32-NEXT:    movaps %xmm3, %xmm41476; SSE-32-NEXT:    shufps {{.*#+}} xmm4 = xmm4[3,3],xmm3[3,3]1477; SSE-32-NEXT:    movaps %xmm2, %xmm51478; SSE-32-NEXT:    shufps {{.*#+}} xmm5 = xmm5[3,3],xmm2[3,3]1479; SSE-32-NEXT:    xorl %eax, %eax1480; SSE-32-NEXT:    ucomiss %xmm4, %xmm51481; SSE-32-NEXT:    movl $-1, %ecx1482; SSE-32-NEXT:    movl $0, %edx1483; SSE-32-NEXT:    cmovbel %ecx, %edx1484; SSE-32-NEXT:    movd %edx, %xmm51485; SSE-32-NEXT:    movaps %xmm3, %xmm41486; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm3[1]1487; SSE-32-NEXT:    movaps %xmm2, %xmm61488; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm2[1]1489; SSE-32-NEXT:    ucomiss %xmm4, %xmm61490; SSE-32-NEXT:    movl $0, %edx1491; SSE-32-NEXT:    cmovbel %ecx, %edx1492; SSE-32-NEXT:    movd %edx, %xmm41493; SSE-32-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]1494; SSE-32-NEXT:    ucomiss %xmm3, %xmm21495; SSE-32-NEXT:    movl $0, %edx1496; SSE-32-NEXT:    cmovbel %ecx, %edx1497; SSE-32-NEXT:    movd %edx, %xmm51498; SSE-32-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]1499; SSE-32-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]1500; SSE-32-NEXT:    ucomiss %xmm3, %xmm21501; SSE-32-NEXT:    cmovbel %ecx, %eax1502; SSE-32-NEXT:    movd %eax, %xmm21503; SSE-32-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]1504; SSE-32-NEXT:    punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm4[0]1505; SSE-32-NEXT:    pand %xmm5, %xmm01506; SSE-32-NEXT:    pandn %xmm1, %xmm51507; SSE-32-NEXT:    por %xmm5, %xmm01508; SSE-32-NEXT:    movl %ebp, %esp1509; SSE-32-NEXT:    popl %ebp1510; SSE-32-NEXT:    retl1511;1512; SSE-64-LABEL: test_v4f32_ule_q:1513; SSE-64:       # %bb.0:1514; SSE-64-NEXT:    movaps %xmm3, %xmm41515; SSE-64-NEXT:    shufps {{.*#+}} xmm4 = xmm4[3,3],xmm3[3,3]1516; SSE-64-NEXT:    movaps %xmm2, %xmm51517; SSE-64-NEXT:    shufps {{.*#+}} xmm5 = xmm5[3,3],xmm2[3,3]1518; SSE-64-NEXT:    xorl %eax, %eax1519; SSE-64-NEXT:    ucomiss %xmm4, %xmm51520; SSE-64-NEXT:    movl $-1, %ecx1521; SSE-64-NEXT:    movl $0, %edx1522; SSE-64-NEXT:    cmovbel %ecx, %edx1523; SSE-64-NEXT:    movd %edx, %xmm41524; SSE-64-NEXT:    movaps %xmm3, %xmm51525; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm3[1]1526; SSE-64-NEXT:    movaps %xmm2, %xmm61527; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm2[1]1528; SSE-64-NEXT:    ucomiss %xmm5, %xmm61529; SSE-64-NEXT:    movl $0, %edx1530; SSE-64-NEXT:    cmovbel %ecx, %edx1531; SSE-64-NEXT:    movd %edx, %xmm51532; SSE-64-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]1533; SSE-64-NEXT:    ucomiss %xmm3, %xmm21534; SSE-64-NEXT:    movl $0, %edx1535; SSE-64-NEXT:    cmovbel %ecx, %edx1536; SSE-64-NEXT:    movd %edx, %xmm41537; SSE-64-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]1538; SSE-64-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]1539; SSE-64-NEXT:    ucomiss %xmm3, %xmm21540; SSE-64-NEXT:    cmovbel %ecx, %eax1541; SSE-64-NEXT:    movd %eax, %xmm21542; SSE-64-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]1543; SSE-64-NEXT:    punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]1544; SSE-64-NEXT:    pand %xmm4, %xmm01545; SSE-64-NEXT:    pandn %xmm1, %xmm41546; SSE-64-NEXT:    por %xmm4, %xmm01547; SSE-64-NEXT:    retq1548;1549; AVX-32-LABEL: test_v4f32_ule_q:1550; AVX-32:       # %bb.0:1551; AVX-32-NEXT:    pushl %ebp1552; AVX-32-NEXT:    movl %esp, %ebp1553; AVX-32-NEXT:    andl $-16, %esp1554; AVX-32-NEXT:    subl $16, %esp1555; AVX-32-NEXT:    vmovaps 8(%ebp), %xmm31556; AVX-32-NEXT:    vcmpnlt_uqps %xmm2, %xmm3, %xmm21557; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm01558; AVX-32-NEXT:    movl %ebp, %esp1559; AVX-32-NEXT:    popl %ebp1560; AVX-32-NEXT:    retl1561;1562; AVX-64-LABEL: test_v4f32_ule_q:1563; AVX-64:       # %bb.0:1564; AVX-64-NEXT:    vcmpnlt_uqps %xmm2, %xmm3, %xmm21565; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm01566; AVX-64-NEXT:    retq1567;1568; AVX512-32-LABEL: test_v4f32_ule_q:1569; AVX512-32:       # %bb.0:1570; AVX512-32-NEXT:    pushl %ebp1571; AVX512-32-NEXT:    movl %esp, %ebp1572; AVX512-32-NEXT:    andl $-16, %esp1573; AVX512-32-NEXT:    subl $16, %esp1574; AVX512-32-NEXT:    vcmpngt_uqps 8(%ebp), %xmm2, %k11575; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}1576; AVX512-32-NEXT:    movl %ebp, %esp1577; AVX512-32-NEXT:    popl %ebp1578; AVX512-32-NEXT:    retl1579;1580; AVX512-64-LABEL: test_v4f32_ule_q:1581; AVX512-64:       # %bb.0:1582; AVX512-64-NEXT:    vcmpnlt_uqps %xmm2, %xmm3, %k11583; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}1584; AVX512-64-NEXT:    retq1585;1586; AVX512F-32-LABEL: test_v4f32_ule_q:1587; AVX512F-32:       # %bb.0:1588; AVX512F-32-NEXT:    pushl %ebp1589; AVX512F-32-NEXT:    movl %esp, %ebp1590; AVX512F-32-NEXT:    andl $-16, %esp1591; AVX512F-32-NEXT:    subl $16, %esp1592; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11593; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm01594; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm31595; AVX512F-32-NEXT:    vcmpnlt_uqps %xmm2, %xmm3, %xmm21596; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k11597; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}1598; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01599; AVX512F-32-NEXT:    movl %ebp, %esp1600; AVX512F-32-NEXT:    popl %ebp1601; AVX512F-32-NEXT:    vzeroupper1602; AVX512F-32-NEXT:    retl1603;1604; AVX512F-64-LABEL: test_v4f32_ule_q:1605; AVX512F-64:       # %bb.0:1606; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11607; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm01608; AVX512F-64-NEXT:    vcmpnlt_uqps %xmm2, %xmm3, %xmm21609; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k11610; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}1611; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01612; AVX512F-64-NEXT:    vzeroupper1613; AVX512F-64-NEXT:    retq1614  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(1615                                               <4 x float> %f1, <4 x float> %f2, metadata !"ule",1616                                               metadata !"fpexcept.strict") #01617  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b1618  ret <4 x i32> %res1619}1620 1621define <4 x i32> @test_v4f32_une_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {1622; SSE-32-LABEL: test_v4f32_une_q:1623; SSE-32:       # %bb.0:1624; SSE-32-NEXT:    pushl %ebp1625; SSE-32-NEXT:    movl %esp, %ebp1626; SSE-32-NEXT:    andl $-16, %esp1627; SSE-32-NEXT:    subl $16, %esp1628; SSE-32-NEXT:    cmpneqps 8(%ebp), %xmm21629; SSE-32-NEXT:    andps %xmm2, %xmm01630; SSE-32-NEXT:    andnps %xmm1, %xmm21631; SSE-32-NEXT:    orps %xmm2, %xmm01632; SSE-32-NEXT:    movl %ebp, %esp1633; SSE-32-NEXT:    popl %ebp1634; SSE-32-NEXT:    retl1635;1636; SSE-64-LABEL: test_v4f32_une_q:1637; SSE-64:       # %bb.0:1638; SSE-64-NEXT:    cmpneqps %xmm3, %xmm21639; SSE-64-NEXT:    andps %xmm2, %xmm01640; SSE-64-NEXT:    andnps %xmm1, %xmm21641; SSE-64-NEXT:    orps %xmm2, %xmm01642; SSE-64-NEXT:    retq1643;1644; AVX-32-LABEL: test_v4f32_une_q:1645; AVX-32:       # %bb.0:1646; AVX-32-NEXT:    pushl %ebp1647; AVX-32-NEXT:    movl %esp, %ebp1648; AVX-32-NEXT:    andl $-16, %esp1649; AVX-32-NEXT:    subl $16, %esp1650; AVX-32-NEXT:    vcmpneqps 8(%ebp), %xmm2, %xmm21651; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm01652; AVX-32-NEXT:    movl %ebp, %esp1653; AVX-32-NEXT:    popl %ebp1654; AVX-32-NEXT:    retl1655;1656; AVX-64-LABEL: test_v4f32_une_q:1657; AVX-64:       # %bb.0:1658; AVX-64-NEXT:    vcmpneqps %xmm3, %xmm2, %xmm21659; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm01660; AVX-64-NEXT:    retq1661;1662; AVX512-32-LABEL: test_v4f32_une_q:1663; AVX512-32:       # %bb.0:1664; AVX512-32-NEXT:    pushl %ebp1665; AVX512-32-NEXT:    movl %esp, %ebp1666; AVX512-32-NEXT:    andl $-16, %esp1667; AVX512-32-NEXT:    subl $16, %esp1668; AVX512-32-NEXT:    vcmpneqps 8(%ebp), %xmm2, %k11669; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}1670; AVX512-32-NEXT:    movl %ebp, %esp1671; AVX512-32-NEXT:    popl %ebp1672; AVX512-32-NEXT:    retl1673;1674; AVX512-64-LABEL: test_v4f32_une_q:1675; AVX512-64:       # %bb.0:1676; AVX512-64-NEXT:    vcmpneqps %xmm3, %xmm2, %k11677; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}1678; AVX512-64-NEXT:    retq1679;1680; AVX512F-32-LABEL: test_v4f32_une_q:1681; AVX512F-32:       # %bb.0:1682; AVX512F-32-NEXT:    pushl %ebp1683; AVX512F-32-NEXT:    movl %esp, %ebp1684; AVX512F-32-NEXT:    andl $-16, %esp1685; AVX512F-32-NEXT:    subl $16, %esp1686; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11687; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm01688; AVX512F-32-NEXT:    vcmpneqps 8(%ebp), %xmm2, %xmm21689; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k11690; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}1691; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01692; AVX512F-32-NEXT:    movl %ebp, %esp1693; AVX512F-32-NEXT:    popl %ebp1694; AVX512F-32-NEXT:    vzeroupper1695; AVX512F-32-NEXT:    retl1696;1697; AVX512F-64-LABEL: test_v4f32_une_q:1698; AVX512F-64:       # %bb.0:1699; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11700; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm01701; AVX512F-64-NEXT:    vcmpneqps %xmm3, %xmm2, %xmm21702; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k11703; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}1704; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01705; AVX512F-64-NEXT:    vzeroupper1706; AVX512F-64-NEXT:    retq1707  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(1708                                               <4 x float> %f1, <4 x float> %f2, metadata !"une",1709                                               metadata !"fpexcept.strict") #01710  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b1711  ret <4 x i32> %res1712}1713 1714define <4 x i32> @test_v4f32_uno_q(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {1715; SSE-32-LABEL: test_v4f32_uno_q:1716; SSE-32:       # %bb.0:1717; SSE-32-NEXT:    pushl %ebp1718; SSE-32-NEXT:    movl %esp, %ebp1719; SSE-32-NEXT:    andl $-16, %esp1720; SSE-32-NEXT:    subl $16, %esp1721; SSE-32-NEXT:    cmpunordps 8(%ebp), %xmm21722; SSE-32-NEXT:    andps %xmm2, %xmm01723; SSE-32-NEXT:    andnps %xmm1, %xmm21724; SSE-32-NEXT:    orps %xmm2, %xmm01725; SSE-32-NEXT:    movl %ebp, %esp1726; SSE-32-NEXT:    popl %ebp1727; SSE-32-NEXT:    retl1728;1729; SSE-64-LABEL: test_v4f32_uno_q:1730; SSE-64:       # %bb.0:1731; SSE-64-NEXT:    cmpunordps %xmm3, %xmm21732; SSE-64-NEXT:    andps %xmm2, %xmm01733; SSE-64-NEXT:    andnps %xmm1, %xmm21734; SSE-64-NEXT:    orps %xmm2, %xmm01735; SSE-64-NEXT:    retq1736;1737; AVX-32-LABEL: test_v4f32_uno_q:1738; AVX-32:       # %bb.0:1739; AVX-32-NEXT:    pushl %ebp1740; AVX-32-NEXT:    movl %esp, %ebp1741; AVX-32-NEXT:    andl $-16, %esp1742; AVX-32-NEXT:    subl $16, %esp1743; AVX-32-NEXT:    vcmpunordps 8(%ebp), %xmm2, %xmm21744; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm01745; AVX-32-NEXT:    movl %ebp, %esp1746; AVX-32-NEXT:    popl %ebp1747; AVX-32-NEXT:    retl1748;1749; AVX-64-LABEL: test_v4f32_uno_q:1750; AVX-64:       # %bb.0:1751; AVX-64-NEXT:    vcmpunordps %xmm3, %xmm2, %xmm21752; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm01753; AVX-64-NEXT:    retq1754;1755; AVX512-32-LABEL: test_v4f32_uno_q:1756; AVX512-32:       # %bb.0:1757; AVX512-32-NEXT:    pushl %ebp1758; AVX512-32-NEXT:    movl %esp, %ebp1759; AVX512-32-NEXT:    andl $-16, %esp1760; AVX512-32-NEXT:    subl $16, %esp1761; AVX512-32-NEXT:    vcmpunordps 8(%ebp), %xmm2, %k11762; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}1763; AVX512-32-NEXT:    movl %ebp, %esp1764; AVX512-32-NEXT:    popl %ebp1765; AVX512-32-NEXT:    retl1766;1767; AVX512-64-LABEL: test_v4f32_uno_q:1768; AVX512-64:       # %bb.0:1769; AVX512-64-NEXT:    vcmpunordps %xmm3, %xmm2, %k11770; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}1771; AVX512-64-NEXT:    retq1772;1773; AVX512F-32-LABEL: test_v4f32_uno_q:1774; AVX512F-32:       # %bb.0:1775; AVX512F-32-NEXT:    pushl %ebp1776; AVX512F-32-NEXT:    movl %esp, %ebp1777; AVX512F-32-NEXT:    andl $-16, %esp1778; AVX512F-32-NEXT:    subl $16, %esp1779; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11780; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm01781; AVX512F-32-NEXT:    vcmpunordps 8(%ebp), %xmm2, %xmm21782; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k11783; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}1784; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01785; AVX512F-32-NEXT:    movl %ebp, %esp1786; AVX512F-32-NEXT:    popl %ebp1787; AVX512F-32-NEXT:    vzeroupper1788; AVX512F-32-NEXT:    retl1789;1790; AVX512F-64-LABEL: test_v4f32_uno_q:1791; AVX512F-64:       # %bb.0:1792; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11793; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm01794; AVX512F-64-NEXT:    vcmpunordps %xmm3, %xmm2, %xmm21795; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k11796; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}1797; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01798; AVX512F-64-NEXT:    vzeroupper1799; AVX512F-64-NEXT:    retq1800  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(1801                                               <4 x float> %f1, <4 x float> %f2, metadata !"uno",1802                                               metadata !"fpexcept.strict") #01803  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b1804  ret <4 x i32> %res1805}1806 1807define <2 x i64> @test_v2f64_oeq_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {1808; SSE-32-LABEL: test_v2f64_oeq_q:1809; SSE-32:       # %bb.0:1810; SSE-32-NEXT:    pushl %ebp1811; SSE-32-NEXT:    movl %esp, %ebp1812; SSE-32-NEXT:    andl $-16, %esp1813; SSE-32-NEXT:    subl $16, %esp1814; SSE-32-NEXT:    cmpeqpd 8(%ebp), %xmm21815; SSE-32-NEXT:    andpd %xmm2, %xmm01816; SSE-32-NEXT:    andnpd %xmm1, %xmm21817; SSE-32-NEXT:    orpd %xmm2, %xmm01818; SSE-32-NEXT:    movl %ebp, %esp1819; SSE-32-NEXT:    popl %ebp1820; SSE-32-NEXT:    retl1821;1822; SSE-64-LABEL: test_v2f64_oeq_q:1823; SSE-64:       # %bb.0:1824; SSE-64-NEXT:    cmpeqpd %xmm3, %xmm21825; SSE-64-NEXT:    andpd %xmm2, %xmm01826; SSE-64-NEXT:    andnpd %xmm1, %xmm21827; SSE-64-NEXT:    orpd %xmm2, %xmm01828; SSE-64-NEXT:    retq1829;1830; AVX-32-LABEL: test_v2f64_oeq_q:1831; AVX-32:       # %bb.0:1832; AVX-32-NEXT:    pushl %ebp1833; AVX-32-NEXT:    movl %esp, %ebp1834; AVX-32-NEXT:    andl $-16, %esp1835; AVX-32-NEXT:    subl $16, %esp1836; AVX-32-NEXT:    vcmpeqpd 8(%ebp), %xmm2, %xmm21837; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm01838; AVX-32-NEXT:    movl %ebp, %esp1839; AVX-32-NEXT:    popl %ebp1840; AVX-32-NEXT:    retl1841;1842; AVX-64-LABEL: test_v2f64_oeq_q:1843; AVX-64:       # %bb.0:1844; AVX-64-NEXT:    vcmpeqpd %xmm3, %xmm2, %xmm21845; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm01846; AVX-64-NEXT:    retq1847;1848; AVX512-32-LABEL: test_v2f64_oeq_q:1849; AVX512-32:       # %bb.0:1850; AVX512-32-NEXT:    pushl %ebp1851; AVX512-32-NEXT:    movl %esp, %ebp1852; AVX512-32-NEXT:    andl $-16, %esp1853; AVX512-32-NEXT:    subl $16, %esp1854; AVX512-32-NEXT:    vcmpeqpd 8(%ebp), %xmm2, %k11855; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}1856; AVX512-32-NEXT:    movl %ebp, %esp1857; AVX512-32-NEXT:    popl %ebp1858; AVX512-32-NEXT:    retl1859;1860; AVX512-64-LABEL: test_v2f64_oeq_q:1861; AVX512-64:       # %bb.0:1862; AVX512-64-NEXT:    vcmpeqpd %xmm3, %xmm2, %k11863; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}1864; AVX512-64-NEXT:    retq1865;1866; AVX512F-32-LABEL: test_v2f64_oeq_q:1867; AVX512F-32:       # %bb.0:1868; AVX512F-32-NEXT:    pushl %ebp1869; AVX512F-32-NEXT:    movl %esp, %ebp1870; AVX512F-32-NEXT:    andl $-16, %esp1871; AVX512F-32-NEXT:    subl $16, %esp1872; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11873; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm01874; AVX512F-32-NEXT:    vcmpeqpd 8(%ebp), %xmm2, %xmm21875; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k11876; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1877; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01878; AVX512F-32-NEXT:    movl %ebp, %esp1879; AVX512F-32-NEXT:    popl %ebp1880; AVX512F-32-NEXT:    vzeroupper1881; AVX512F-32-NEXT:    retl1882;1883; AVX512F-64-LABEL: test_v2f64_oeq_q:1884; AVX512F-64:       # %bb.0:1885; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11886; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm01887; AVX512F-64-NEXT:    vcmpeqpd %xmm3, %xmm2, %xmm21888; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k11889; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1890; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01891; AVX512F-64-NEXT:    vzeroupper1892; AVX512F-64-NEXT:    retq1893  %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(1894                                               <2 x double> %f1, <2 x double> %f2, metadata !"oeq",1895                                               metadata !"fpexcept.strict") #01896  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b1897  ret <2 x i64> %res1898}1899 1900define <2 x i64> @test_v2f64_ogt_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {1901; SSE-32-LABEL: test_v2f64_ogt_q:1902; SSE-32:       # %bb.0:1903; SSE-32-NEXT:    pushl %ebp1904; SSE-32-NEXT:    movl %esp, %ebp1905; SSE-32-NEXT:    andl $-16, %esp1906; SSE-32-NEXT:    subl $16, %esp1907; SSE-32-NEXT:    movapd 8(%ebp), %xmm41908; SSE-32-NEXT:    xorl %eax, %eax1909; SSE-32-NEXT:    ucomisd %xmm4, %xmm21910; SSE-32-NEXT:    movl $-1, %ecx1911; SSE-32-NEXT:    movl $0, %edx1912; SSE-32-NEXT:    cmoval %ecx, %edx1913; SSE-32-NEXT:    movd %edx, %xmm31914; SSE-32-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,0,0,0]1915; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm4 = xmm4[1,1]1916; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1,1]1917; SSE-32-NEXT:    ucomisd %xmm4, %xmm21918; SSE-32-NEXT:    cmoval %ecx, %eax1919; SSE-32-NEXT:    movd %eax, %xmm21920; SSE-32-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,0,0]1921; SSE-32-NEXT:    punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0]1922; SSE-32-NEXT:    pand %xmm3, %xmm01923; SSE-32-NEXT:    pandn %xmm1, %xmm31924; SSE-32-NEXT:    por %xmm3, %xmm01925; SSE-32-NEXT:    movl %ebp, %esp1926; SSE-32-NEXT:    popl %ebp1927; SSE-32-NEXT:    retl1928;1929; SSE-64-LABEL: test_v2f64_ogt_q:1930; SSE-64:       # %bb.0:1931; SSE-64-NEXT:    xorl %eax, %eax1932; SSE-64-NEXT:    ucomisd %xmm3, %xmm21933; SSE-64-NEXT:    movq $-1, %rcx1934; SSE-64-NEXT:    movl $0, %edx1935; SSE-64-NEXT:    cmovaq %rcx, %rdx1936; SSE-64-NEXT:    movq %rdx, %xmm41937; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm3 = xmm3[1,1]1938; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1,1]1939; SSE-64-NEXT:    ucomisd %xmm3, %xmm21940; SSE-64-NEXT:    cmovaq %rcx, %rax1941; SSE-64-NEXT:    movq %rax, %xmm21942; SSE-64-NEXT:    punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm2[0]1943; SSE-64-NEXT:    pand %xmm4, %xmm01944; SSE-64-NEXT:    pandn %xmm1, %xmm41945; SSE-64-NEXT:    por %xmm4, %xmm01946; SSE-64-NEXT:    retq1947;1948; AVX-32-LABEL: test_v2f64_ogt_q:1949; AVX-32:       # %bb.0:1950; AVX-32-NEXT:    pushl %ebp1951; AVX-32-NEXT:    movl %esp, %ebp1952; AVX-32-NEXT:    andl $-16, %esp1953; AVX-32-NEXT:    subl $16, %esp1954; AVX-32-NEXT:    vmovapd 8(%ebp), %xmm31955; AVX-32-NEXT:    vcmplt_oqpd %xmm2, %xmm3, %xmm21956; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm01957; AVX-32-NEXT:    movl %ebp, %esp1958; AVX-32-NEXT:    popl %ebp1959; AVX-32-NEXT:    retl1960;1961; AVX-64-LABEL: test_v2f64_ogt_q:1962; AVX-64:       # %bb.0:1963; AVX-64-NEXT:    vcmplt_oqpd %xmm2, %xmm3, %xmm21964; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm01965; AVX-64-NEXT:    retq1966;1967; AVX512-32-LABEL: test_v2f64_ogt_q:1968; AVX512-32:       # %bb.0:1969; AVX512-32-NEXT:    pushl %ebp1970; AVX512-32-NEXT:    movl %esp, %ebp1971; AVX512-32-NEXT:    andl $-16, %esp1972; AVX512-32-NEXT:    subl $16, %esp1973; AVX512-32-NEXT:    vcmpgt_oqpd 8(%ebp), %xmm2, %k11974; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}1975; AVX512-32-NEXT:    movl %ebp, %esp1976; AVX512-32-NEXT:    popl %ebp1977; AVX512-32-NEXT:    retl1978;1979; AVX512-64-LABEL: test_v2f64_ogt_q:1980; AVX512-64:       # %bb.0:1981; AVX512-64-NEXT:    vcmplt_oqpd %xmm2, %xmm3, %k11982; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}1983; AVX512-64-NEXT:    retq1984;1985; AVX512F-32-LABEL: test_v2f64_ogt_q:1986; AVX512F-32:       # %bb.0:1987; AVX512F-32-NEXT:    pushl %ebp1988; AVX512F-32-NEXT:    movl %esp, %ebp1989; AVX512F-32-NEXT:    andl $-16, %esp1990; AVX512F-32-NEXT:    subl $16, %esp1991; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11992; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm01993; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm31994; AVX512F-32-NEXT:    vcmplt_oqpd %xmm2, %xmm3, %xmm21995; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k11996; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1997; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01998; AVX512F-32-NEXT:    movl %ebp, %esp1999; AVX512F-32-NEXT:    popl %ebp2000; AVX512F-32-NEXT:    vzeroupper2001; AVX512F-32-NEXT:    retl2002;2003; AVX512F-64-LABEL: test_v2f64_ogt_q:2004; AVX512F-64:       # %bb.0:2005; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12006; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02007; AVX512F-64-NEXT:    vcmplt_oqpd %xmm2, %xmm3, %xmm22008; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k12009; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}2010; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm02011; AVX512F-64-NEXT:    vzeroupper2012; AVX512F-64-NEXT:    retq2013  %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(2014                                               <2 x double> %f1, <2 x double> %f2, metadata !"ogt",2015                                               metadata !"fpexcept.strict") #02016  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b2017  ret <2 x i64> %res2018}2019 2020define <2 x i64> @test_v2f64_oge_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {2021; SSE-32-LABEL: test_v2f64_oge_q:2022; SSE-32:       # %bb.0:2023; SSE-32-NEXT:    pushl %ebp2024; SSE-32-NEXT:    movl %esp, %ebp2025; SSE-32-NEXT:    andl $-16, %esp2026; SSE-32-NEXT:    subl $16, %esp2027; SSE-32-NEXT:    movapd 8(%ebp), %xmm42028; SSE-32-NEXT:    xorl %eax, %eax2029; SSE-32-NEXT:    ucomisd %xmm4, %xmm22030; SSE-32-NEXT:    movl $-1, %ecx2031; SSE-32-NEXT:    movl $0, %edx2032; SSE-32-NEXT:    cmovael %ecx, %edx2033; SSE-32-NEXT:    movd %edx, %xmm32034; SSE-32-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,0,0,0]2035; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm4 = xmm4[1,1]2036; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1,1]2037; SSE-32-NEXT:    ucomisd %xmm4, %xmm22038; SSE-32-NEXT:    cmovael %ecx, %eax2039; SSE-32-NEXT:    movd %eax, %xmm22040; SSE-32-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,0,0]2041; SSE-32-NEXT:    punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0]2042; SSE-32-NEXT:    pand %xmm3, %xmm02043; SSE-32-NEXT:    pandn %xmm1, %xmm32044; SSE-32-NEXT:    por %xmm3, %xmm02045; SSE-32-NEXT:    movl %ebp, %esp2046; SSE-32-NEXT:    popl %ebp2047; SSE-32-NEXT:    retl2048;2049; SSE-64-LABEL: test_v2f64_oge_q:2050; SSE-64:       # %bb.0:2051; SSE-64-NEXT:    xorl %eax, %eax2052; SSE-64-NEXT:    ucomisd %xmm3, %xmm22053; SSE-64-NEXT:    movq $-1, %rcx2054; SSE-64-NEXT:    movl $0, %edx2055; SSE-64-NEXT:    cmovaeq %rcx, %rdx2056; SSE-64-NEXT:    movq %rdx, %xmm42057; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm3 = xmm3[1,1]2058; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1,1]2059; SSE-64-NEXT:    ucomisd %xmm3, %xmm22060; SSE-64-NEXT:    cmovaeq %rcx, %rax2061; SSE-64-NEXT:    movq %rax, %xmm22062; SSE-64-NEXT:    punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm2[0]2063; SSE-64-NEXT:    pand %xmm4, %xmm02064; SSE-64-NEXT:    pandn %xmm1, %xmm42065; SSE-64-NEXT:    por %xmm4, %xmm02066; SSE-64-NEXT:    retq2067;2068; AVX-32-LABEL: test_v2f64_oge_q:2069; AVX-32:       # %bb.0:2070; AVX-32-NEXT:    pushl %ebp2071; AVX-32-NEXT:    movl %esp, %ebp2072; AVX-32-NEXT:    andl $-16, %esp2073; AVX-32-NEXT:    subl $16, %esp2074; AVX-32-NEXT:    vmovapd 8(%ebp), %xmm32075; AVX-32-NEXT:    vcmple_oqpd %xmm2, %xmm3, %xmm22076; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm02077; AVX-32-NEXT:    movl %ebp, %esp2078; AVX-32-NEXT:    popl %ebp2079; AVX-32-NEXT:    retl2080;2081; AVX-64-LABEL: test_v2f64_oge_q:2082; AVX-64:       # %bb.0:2083; AVX-64-NEXT:    vcmple_oqpd %xmm2, %xmm3, %xmm22084; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm02085; AVX-64-NEXT:    retq2086;2087; AVX512-32-LABEL: test_v2f64_oge_q:2088; AVX512-32:       # %bb.0:2089; AVX512-32-NEXT:    pushl %ebp2090; AVX512-32-NEXT:    movl %esp, %ebp2091; AVX512-32-NEXT:    andl $-16, %esp2092; AVX512-32-NEXT:    subl $16, %esp2093; AVX512-32-NEXT:    vcmpge_oqpd 8(%ebp), %xmm2, %k12094; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}2095; AVX512-32-NEXT:    movl %ebp, %esp2096; AVX512-32-NEXT:    popl %ebp2097; AVX512-32-NEXT:    retl2098;2099; AVX512-64-LABEL: test_v2f64_oge_q:2100; AVX512-64:       # %bb.0:2101; AVX512-64-NEXT:    vcmple_oqpd %xmm2, %xmm3, %k12102; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}2103; AVX512-64-NEXT:    retq2104;2105; AVX512F-32-LABEL: test_v2f64_oge_q:2106; AVX512F-32:       # %bb.0:2107; AVX512F-32-NEXT:    pushl %ebp2108; AVX512F-32-NEXT:    movl %esp, %ebp2109; AVX512F-32-NEXT:    andl $-16, %esp2110; AVX512F-32-NEXT:    subl $16, %esp2111; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12112; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02113; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm32114; AVX512F-32-NEXT:    vcmple_oqpd %xmm2, %xmm3, %xmm22115; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k12116; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}2117; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm02118; AVX512F-32-NEXT:    movl %ebp, %esp2119; AVX512F-32-NEXT:    popl %ebp2120; AVX512F-32-NEXT:    vzeroupper2121; AVX512F-32-NEXT:    retl2122;2123; AVX512F-64-LABEL: test_v2f64_oge_q:2124; AVX512F-64:       # %bb.0:2125; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12126; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02127; AVX512F-64-NEXT:    vcmple_oqpd %xmm2, %xmm3, %xmm22128; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k12129; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}2130; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm02131; AVX512F-64-NEXT:    vzeroupper2132; AVX512F-64-NEXT:    retq2133  %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(2134                                               <2 x double> %f1, <2 x double> %f2, metadata !"oge",2135                                               metadata !"fpexcept.strict") #02136  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b2137  ret <2 x i64> %res2138}2139 2140define <2 x i64> @test_v2f64_olt_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {2141; SSE-32-LABEL: test_v2f64_olt_q:2142; SSE-32:       # %bb.0:2143; SSE-32-NEXT:    pushl %ebp2144; SSE-32-NEXT:    movl %esp, %ebp2145; SSE-32-NEXT:    andl $-16, %esp2146; SSE-32-NEXT:    subl $16, %esp2147; SSE-32-NEXT:    movapd 8(%ebp), %xmm42148; SSE-32-NEXT:    xorl %eax, %eax2149; SSE-32-NEXT:    ucomisd %xmm2, %xmm42150; SSE-32-NEXT:    movl $-1, %ecx2151; SSE-32-NEXT:    movl $0, %edx2152; SSE-32-NEXT:    cmoval %ecx, %edx2153; SSE-32-NEXT:    movd %edx, %xmm32154; SSE-32-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,0,0,0]2155; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1,1]2156; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm4 = xmm4[1,1]2157; SSE-32-NEXT:    ucomisd %xmm2, %xmm42158; SSE-32-NEXT:    cmoval %ecx, %eax2159; SSE-32-NEXT:    movd %eax, %xmm22160; SSE-32-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,0,0]2161; SSE-32-NEXT:    punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0]2162; SSE-32-NEXT:    pand %xmm3, %xmm02163; SSE-32-NEXT:    pandn %xmm1, %xmm32164; SSE-32-NEXT:    por %xmm3, %xmm02165; SSE-32-NEXT:    movl %ebp, %esp2166; SSE-32-NEXT:    popl %ebp2167; SSE-32-NEXT:    retl2168;2169; SSE-64-LABEL: test_v2f64_olt_q:2170; SSE-64:       # %bb.0:2171; SSE-64-NEXT:    xorl %eax, %eax2172; SSE-64-NEXT:    ucomisd %xmm2, %xmm32173; SSE-64-NEXT:    movq $-1, %rcx2174; SSE-64-NEXT:    movl $0, %edx2175; SSE-64-NEXT:    cmovaq %rcx, %rdx2176; SSE-64-NEXT:    movq %rdx, %xmm42177; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1,1]2178; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm3 = xmm3[1,1]2179; SSE-64-NEXT:    ucomisd %xmm2, %xmm32180; SSE-64-NEXT:    cmovaq %rcx, %rax2181; SSE-64-NEXT:    movq %rax, %xmm22182; SSE-64-NEXT:    punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm2[0]2183; SSE-64-NEXT:    pand %xmm4, %xmm02184; SSE-64-NEXT:    pandn %xmm1, %xmm42185; SSE-64-NEXT:    por %xmm4, %xmm02186; SSE-64-NEXT:    retq2187;2188; AVX-32-LABEL: test_v2f64_olt_q:2189; AVX-32:       # %bb.0:2190; AVX-32-NEXT:    pushl %ebp2191; AVX-32-NEXT:    movl %esp, %ebp2192; AVX-32-NEXT:    andl $-16, %esp2193; AVX-32-NEXT:    subl $16, %esp2194; AVX-32-NEXT:    vcmplt_oqpd 8(%ebp), %xmm2, %xmm22195; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm02196; AVX-32-NEXT:    movl %ebp, %esp2197; AVX-32-NEXT:    popl %ebp2198; AVX-32-NEXT:    retl2199;2200; AVX-64-LABEL: test_v2f64_olt_q:2201; AVX-64:       # %bb.0:2202; AVX-64-NEXT:    vcmplt_oqpd %xmm3, %xmm2, %xmm22203; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm02204; AVX-64-NEXT:    retq2205;2206; AVX512-32-LABEL: test_v2f64_olt_q:2207; AVX512-32:       # %bb.0:2208; AVX512-32-NEXT:    pushl %ebp2209; AVX512-32-NEXT:    movl %esp, %ebp2210; AVX512-32-NEXT:    andl $-16, %esp2211; AVX512-32-NEXT:    subl $16, %esp2212; AVX512-32-NEXT:    vcmplt_oqpd 8(%ebp), %xmm2, %k12213; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}2214; AVX512-32-NEXT:    movl %ebp, %esp2215; AVX512-32-NEXT:    popl %ebp2216; AVX512-32-NEXT:    retl2217;2218; AVX512-64-LABEL: test_v2f64_olt_q:2219; AVX512-64:       # %bb.0:2220; AVX512-64-NEXT:    vcmplt_oqpd %xmm3, %xmm2, %k12221; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}2222; AVX512-64-NEXT:    retq2223;2224; AVX512F-32-LABEL: test_v2f64_olt_q:2225; AVX512F-32:       # %bb.0:2226; AVX512F-32-NEXT:    pushl %ebp2227; AVX512F-32-NEXT:    movl %esp, %ebp2228; AVX512F-32-NEXT:    andl $-16, %esp2229; AVX512F-32-NEXT:    subl $16, %esp2230; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12231; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02232; AVX512F-32-NEXT:    vcmplt_oqpd 8(%ebp), %xmm2, %xmm22233; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k12234; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}2235; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm02236; AVX512F-32-NEXT:    movl %ebp, %esp2237; AVX512F-32-NEXT:    popl %ebp2238; AVX512F-32-NEXT:    vzeroupper2239; AVX512F-32-NEXT:    retl2240;2241; AVX512F-64-LABEL: test_v2f64_olt_q:2242; AVX512F-64:       # %bb.0:2243; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12244; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02245; AVX512F-64-NEXT:    vcmplt_oqpd %xmm3, %xmm2, %xmm22246; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k12247; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}2248; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm02249; AVX512F-64-NEXT:    vzeroupper2250; AVX512F-64-NEXT:    retq2251  %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(2252                                               <2 x double> %f1, <2 x double> %f2, metadata !"olt",2253                                               metadata !"fpexcept.strict") #02254  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b2255  ret <2 x i64> %res2256}2257 2258define <2 x i64> @test_v2f64_ole_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {2259; SSE-32-LABEL: test_v2f64_ole_q:2260; SSE-32:       # %bb.0:2261; SSE-32-NEXT:    pushl %ebp2262; SSE-32-NEXT:    movl %esp, %ebp2263; SSE-32-NEXT:    andl $-16, %esp2264; SSE-32-NEXT:    subl $16, %esp2265; SSE-32-NEXT:    movapd 8(%ebp), %xmm42266; SSE-32-NEXT:    xorl %eax, %eax2267; SSE-32-NEXT:    ucomisd %xmm2, %xmm42268; SSE-32-NEXT:    movl $-1, %ecx2269; SSE-32-NEXT:    movl $0, %edx2270; SSE-32-NEXT:    cmovael %ecx, %edx2271; SSE-32-NEXT:    movd %edx, %xmm32272; SSE-32-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,0,0,0]2273; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1,1]2274; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm4 = xmm4[1,1]2275; SSE-32-NEXT:    ucomisd %xmm2, %xmm42276; SSE-32-NEXT:    cmovael %ecx, %eax2277; SSE-32-NEXT:    movd %eax, %xmm22278; SSE-32-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,0,0]2279; SSE-32-NEXT:    punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0]2280; SSE-32-NEXT:    pand %xmm3, %xmm02281; SSE-32-NEXT:    pandn %xmm1, %xmm32282; SSE-32-NEXT:    por %xmm3, %xmm02283; SSE-32-NEXT:    movl %ebp, %esp2284; SSE-32-NEXT:    popl %ebp2285; SSE-32-NEXT:    retl2286;2287; SSE-64-LABEL: test_v2f64_ole_q:2288; SSE-64:       # %bb.0:2289; SSE-64-NEXT:    xorl %eax, %eax2290; SSE-64-NEXT:    ucomisd %xmm2, %xmm32291; SSE-64-NEXT:    movq $-1, %rcx2292; SSE-64-NEXT:    movl $0, %edx2293; SSE-64-NEXT:    cmovaeq %rcx, %rdx2294; SSE-64-NEXT:    movq %rdx, %xmm42295; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1,1]2296; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm3 = xmm3[1,1]2297; SSE-64-NEXT:    ucomisd %xmm2, %xmm32298; SSE-64-NEXT:    cmovaeq %rcx, %rax2299; SSE-64-NEXT:    movq %rax, %xmm22300; SSE-64-NEXT:    punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm2[0]2301; SSE-64-NEXT:    pand %xmm4, %xmm02302; SSE-64-NEXT:    pandn %xmm1, %xmm42303; SSE-64-NEXT:    por %xmm4, %xmm02304; SSE-64-NEXT:    retq2305;2306; AVX-32-LABEL: test_v2f64_ole_q:2307; AVX-32:       # %bb.0:2308; AVX-32-NEXT:    pushl %ebp2309; AVX-32-NEXT:    movl %esp, %ebp2310; AVX-32-NEXT:    andl $-16, %esp2311; AVX-32-NEXT:    subl $16, %esp2312; AVX-32-NEXT:    vcmple_oqpd 8(%ebp), %xmm2, %xmm22313; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm02314; AVX-32-NEXT:    movl %ebp, %esp2315; AVX-32-NEXT:    popl %ebp2316; AVX-32-NEXT:    retl2317;2318; AVX-64-LABEL: test_v2f64_ole_q:2319; AVX-64:       # %bb.0:2320; AVX-64-NEXT:    vcmple_oqpd %xmm3, %xmm2, %xmm22321; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm02322; AVX-64-NEXT:    retq2323;2324; AVX512-32-LABEL: test_v2f64_ole_q:2325; AVX512-32:       # %bb.0:2326; AVX512-32-NEXT:    pushl %ebp2327; AVX512-32-NEXT:    movl %esp, %ebp2328; AVX512-32-NEXT:    andl $-16, %esp2329; AVX512-32-NEXT:    subl $16, %esp2330; AVX512-32-NEXT:    vcmple_oqpd 8(%ebp), %xmm2, %k12331; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}2332; AVX512-32-NEXT:    movl %ebp, %esp2333; AVX512-32-NEXT:    popl %ebp2334; AVX512-32-NEXT:    retl2335;2336; AVX512-64-LABEL: test_v2f64_ole_q:2337; AVX512-64:       # %bb.0:2338; AVX512-64-NEXT:    vcmple_oqpd %xmm3, %xmm2, %k12339; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}2340; AVX512-64-NEXT:    retq2341;2342; AVX512F-32-LABEL: test_v2f64_ole_q:2343; AVX512F-32:       # %bb.0:2344; AVX512F-32-NEXT:    pushl %ebp2345; AVX512F-32-NEXT:    movl %esp, %ebp2346; AVX512F-32-NEXT:    andl $-16, %esp2347; AVX512F-32-NEXT:    subl $16, %esp2348; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12349; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02350; AVX512F-32-NEXT:    vcmple_oqpd 8(%ebp), %xmm2, %xmm22351; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k12352; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}2353; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm02354; AVX512F-32-NEXT:    movl %ebp, %esp2355; AVX512F-32-NEXT:    popl %ebp2356; AVX512F-32-NEXT:    vzeroupper2357; AVX512F-32-NEXT:    retl2358;2359; AVX512F-64-LABEL: test_v2f64_ole_q:2360; AVX512F-64:       # %bb.0:2361; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12362; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02363; AVX512F-64-NEXT:    vcmple_oqpd %xmm3, %xmm2, %xmm22364; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k12365; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}2366; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm02367; AVX512F-64-NEXT:    vzeroupper2368; AVX512F-64-NEXT:    retq2369  %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(2370                                               <2 x double> %f1, <2 x double> %f2, metadata !"ole",2371                                               metadata !"fpexcept.strict") #02372  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b2373  ret <2 x i64> %res2374}2375 2376define <2 x i64> @test_v2f64_one_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {2377; SSE-32-LABEL: test_v2f64_one_q:2378; SSE-32:       # %bb.0:2379; SSE-32-NEXT:    pushl %ebp2380; SSE-32-NEXT:    movl %esp, %ebp2381; SSE-32-NEXT:    andl $-16, %esp2382; SSE-32-NEXT:    subl $16, %esp2383; SSE-32-NEXT:    movapd 8(%ebp), %xmm32384; SSE-32-NEXT:    movapd %xmm2, %xmm42385; SSE-32-NEXT:    cmpneqpd %xmm3, %xmm42386; SSE-32-NEXT:    cmpordpd %xmm2, %xmm32387; SSE-32-NEXT:    andpd %xmm4, %xmm32388; SSE-32-NEXT:    andpd %xmm3, %xmm02389; SSE-32-NEXT:    andnpd %xmm1, %xmm32390; SSE-32-NEXT:    orpd %xmm3, %xmm02391; SSE-32-NEXT:    movl %ebp, %esp2392; SSE-32-NEXT:    popl %ebp2393; SSE-32-NEXT:    retl2394;2395; SSE-64-LABEL: test_v2f64_one_q:2396; SSE-64:       # %bb.0:2397; SSE-64-NEXT:    movapd %xmm2, %xmm42398; SSE-64-NEXT:    cmpneqpd %xmm3, %xmm42399; SSE-64-NEXT:    cmpordpd %xmm3, %xmm22400; SSE-64-NEXT:    andpd %xmm2, %xmm42401; SSE-64-NEXT:    andpd %xmm4, %xmm02402; SSE-64-NEXT:    andnpd %xmm1, %xmm42403; SSE-64-NEXT:    orpd %xmm4, %xmm02404; SSE-64-NEXT:    retq2405;2406; AVX-32-LABEL: test_v2f64_one_q:2407; AVX-32:       # %bb.0:2408; AVX-32-NEXT:    pushl %ebp2409; AVX-32-NEXT:    movl %esp, %ebp2410; AVX-32-NEXT:    andl $-16, %esp2411; AVX-32-NEXT:    subl $16, %esp2412; AVX-32-NEXT:    vcmpneq_oqpd 8(%ebp), %xmm2, %xmm22413; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm02414; AVX-32-NEXT:    movl %ebp, %esp2415; AVX-32-NEXT:    popl %ebp2416; AVX-32-NEXT:    retl2417;2418; AVX-64-LABEL: test_v2f64_one_q:2419; AVX-64:       # %bb.0:2420; AVX-64-NEXT:    vcmpneq_oqpd %xmm3, %xmm2, %xmm22421; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm02422; AVX-64-NEXT:    retq2423;2424; AVX512-32-LABEL: test_v2f64_one_q:2425; AVX512-32:       # %bb.0:2426; AVX512-32-NEXT:    pushl %ebp2427; AVX512-32-NEXT:    movl %esp, %ebp2428; AVX512-32-NEXT:    andl $-16, %esp2429; AVX512-32-NEXT:    subl $16, %esp2430; AVX512-32-NEXT:    vcmpneq_oqpd 8(%ebp), %xmm2, %k12431; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}2432; AVX512-32-NEXT:    movl %ebp, %esp2433; AVX512-32-NEXT:    popl %ebp2434; AVX512-32-NEXT:    retl2435;2436; AVX512-64-LABEL: test_v2f64_one_q:2437; AVX512-64:       # %bb.0:2438; AVX512-64-NEXT:    vcmpneq_oqpd %xmm3, %xmm2, %k12439; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}2440; AVX512-64-NEXT:    retq2441;2442; AVX512F-32-LABEL: test_v2f64_one_q:2443; AVX512F-32:       # %bb.0:2444; AVX512F-32-NEXT:    pushl %ebp2445; AVX512F-32-NEXT:    movl %esp, %ebp2446; AVX512F-32-NEXT:    andl $-16, %esp2447; AVX512F-32-NEXT:    subl $16, %esp2448; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12449; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02450; AVX512F-32-NEXT:    vcmpneq_oqpd 8(%ebp), %xmm2, %xmm22451; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k12452; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}2453; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm02454; AVX512F-32-NEXT:    movl %ebp, %esp2455; AVX512F-32-NEXT:    popl %ebp2456; AVX512F-32-NEXT:    vzeroupper2457; AVX512F-32-NEXT:    retl2458;2459; AVX512F-64-LABEL: test_v2f64_one_q:2460; AVX512F-64:       # %bb.0:2461; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12462; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02463; AVX512F-64-NEXT:    vcmpneq_oqpd %xmm3, %xmm2, %xmm22464; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k12465; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}2466; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm02467; AVX512F-64-NEXT:    vzeroupper2468; AVX512F-64-NEXT:    retq2469  %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(2470                                               <2 x double> %f1, <2 x double> %f2, metadata !"one",2471                                               metadata !"fpexcept.strict") #02472  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b2473  ret <2 x i64> %res2474}2475 2476define <2 x i64> @test_v2f64_ord_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {2477; SSE-32-LABEL: test_v2f64_ord_q:2478; SSE-32:       # %bb.0:2479; SSE-32-NEXT:    pushl %ebp2480; SSE-32-NEXT:    movl %esp, %ebp2481; SSE-32-NEXT:    andl $-16, %esp2482; SSE-32-NEXT:    subl $16, %esp2483; SSE-32-NEXT:    cmpordpd 8(%ebp), %xmm22484; SSE-32-NEXT:    andpd %xmm2, %xmm02485; SSE-32-NEXT:    andnpd %xmm1, %xmm22486; SSE-32-NEXT:    orpd %xmm2, %xmm02487; SSE-32-NEXT:    movl %ebp, %esp2488; SSE-32-NEXT:    popl %ebp2489; SSE-32-NEXT:    retl2490;2491; SSE-64-LABEL: test_v2f64_ord_q:2492; SSE-64:       # %bb.0:2493; SSE-64-NEXT:    cmpordpd %xmm3, %xmm22494; SSE-64-NEXT:    andpd %xmm2, %xmm02495; SSE-64-NEXT:    andnpd %xmm1, %xmm22496; SSE-64-NEXT:    orpd %xmm2, %xmm02497; SSE-64-NEXT:    retq2498;2499; AVX-32-LABEL: test_v2f64_ord_q:2500; AVX-32:       # %bb.0:2501; AVX-32-NEXT:    pushl %ebp2502; AVX-32-NEXT:    movl %esp, %ebp2503; AVX-32-NEXT:    andl $-16, %esp2504; AVX-32-NEXT:    subl $16, %esp2505; AVX-32-NEXT:    vcmpordpd 8(%ebp), %xmm2, %xmm22506; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm02507; AVX-32-NEXT:    movl %ebp, %esp2508; AVX-32-NEXT:    popl %ebp2509; AVX-32-NEXT:    retl2510;2511; AVX-64-LABEL: test_v2f64_ord_q:2512; AVX-64:       # %bb.0:2513; AVX-64-NEXT:    vcmpordpd %xmm3, %xmm2, %xmm22514; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm02515; AVX-64-NEXT:    retq2516;2517; AVX512-32-LABEL: test_v2f64_ord_q:2518; AVX512-32:       # %bb.0:2519; AVX512-32-NEXT:    pushl %ebp2520; AVX512-32-NEXT:    movl %esp, %ebp2521; AVX512-32-NEXT:    andl $-16, %esp2522; AVX512-32-NEXT:    subl $16, %esp2523; AVX512-32-NEXT:    vcmpordpd 8(%ebp), %xmm2, %k12524; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}2525; AVX512-32-NEXT:    movl %ebp, %esp2526; AVX512-32-NEXT:    popl %ebp2527; AVX512-32-NEXT:    retl2528;2529; AVX512-64-LABEL: test_v2f64_ord_q:2530; AVX512-64:       # %bb.0:2531; AVX512-64-NEXT:    vcmpordpd %xmm3, %xmm2, %k12532; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}2533; AVX512-64-NEXT:    retq2534;2535; AVX512F-32-LABEL: test_v2f64_ord_q:2536; AVX512F-32:       # %bb.0:2537; AVX512F-32-NEXT:    pushl %ebp2538; AVX512F-32-NEXT:    movl %esp, %ebp2539; AVX512F-32-NEXT:    andl $-16, %esp2540; AVX512F-32-NEXT:    subl $16, %esp2541; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12542; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02543; AVX512F-32-NEXT:    vcmpordpd 8(%ebp), %xmm2, %xmm22544; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k12545; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}2546; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm02547; AVX512F-32-NEXT:    movl %ebp, %esp2548; AVX512F-32-NEXT:    popl %ebp2549; AVX512F-32-NEXT:    vzeroupper2550; AVX512F-32-NEXT:    retl2551;2552; AVX512F-64-LABEL: test_v2f64_ord_q:2553; AVX512F-64:       # %bb.0:2554; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12555; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02556; AVX512F-64-NEXT:    vcmpordpd %xmm3, %xmm2, %xmm22557; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k12558; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}2559; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm02560; AVX512F-64-NEXT:    vzeroupper2561; AVX512F-64-NEXT:    retq2562  %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(2563                                               <2 x double> %f1, <2 x double> %f2, metadata !"ord",2564                                               metadata !"fpexcept.strict") #02565  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b2566  ret <2 x i64> %res2567}2568 2569define <2 x i64> @test_v2f64_ueq_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {2570; SSE-32-LABEL: test_v2f64_ueq_q:2571; SSE-32:       # %bb.0:2572; SSE-32-NEXT:    pushl %ebp2573; SSE-32-NEXT:    movl %esp, %ebp2574; SSE-32-NEXT:    andl $-16, %esp2575; SSE-32-NEXT:    subl $16, %esp2576; SSE-32-NEXT:    movapd 8(%ebp), %xmm32577; SSE-32-NEXT:    movapd %xmm2, %xmm42578; SSE-32-NEXT:    cmpeqpd %xmm3, %xmm42579; SSE-32-NEXT:    cmpunordpd %xmm2, %xmm32580; SSE-32-NEXT:    orpd %xmm4, %xmm32581; SSE-32-NEXT:    andpd %xmm3, %xmm02582; SSE-32-NEXT:    andnpd %xmm1, %xmm32583; SSE-32-NEXT:    orpd %xmm3, %xmm02584; SSE-32-NEXT:    movl %ebp, %esp2585; SSE-32-NEXT:    popl %ebp2586; SSE-32-NEXT:    retl2587;2588; SSE-64-LABEL: test_v2f64_ueq_q:2589; SSE-64:       # %bb.0:2590; SSE-64-NEXT:    movapd %xmm2, %xmm42591; SSE-64-NEXT:    cmpeqpd %xmm3, %xmm42592; SSE-64-NEXT:    cmpunordpd %xmm3, %xmm22593; SSE-64-NEXT:    orpd %xmm2, %xmm42594; SSE-64-NEXT:    andpd %xmm4, %xmm02595; SSE-64-NEXT:    andnpd %xmm1, %xmm42596; SSE-64-NEXT:    orpd %xmm4, %xmm02597; SSE-64-NEXT:    retq2598;2599; AVX-32-LABEL: test_v2f64_ueq_q:2600; AVX-32:       # %bb.0:2601; AVX-32-NEXT:    pushl %ebp2602; AVX-32-NEXT:    movl %esp, %ebp2603; AVX-32-NEXT:    andl $-16, %esp2604; AVX-32-NEXT:    subl $16, %esp2605; AVX-32-NEXT:    vcmpeq_uqpd 8(%ebp), %xmm2, %xmm22606; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm02607; AVX-32-NEXT:    movl %ebp, %esp2608; AVX-32-NEXT:    popl %ebp2609; AVX-32-NEXT:    retl2610;2611; AVX-64-LABEL: test_v2f64_ueq_q:2612; AVX-64:       # %bb.0:2613; AVX-64-NEXT:    vcmpeq_uqpd %xmm3, %xmm2, %xmm22614; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm02615; AVX-64-NEXT:    retq2616;2617; AVX512-32-LABEL: test_v2f64_ueq_q:2618; AVX512-32:       # %bb.0:2619; AVX512-32-NEXT:    pushl %ebp2620; AVX512-32-NEXT:    movl %esp, %ebp2621; AVX512-32-NEXT:    andl $-16, %esp2622; AVX512-32-NEXT:    subl $16, %esp2623; AVX512-32-NEXT:    vcmpeq_uqpd 8(%ebp), %xmm2, %k12624; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}2625; AVX512-32-NEXT:    movl %ebp, %esp2626; AVX512-32-NEXT:    popl %ebp2627; AVX512-32-NEXT:    retl2628;2629; AVX512-64-LABEL: test_v2f64_ueq_q:2630; AVX512-64:       # %bb.0:2631; AVX512-64-NEXT:    vcmpeq_uqpd %xmm3, %xmm2, %k12632; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}2633; AVX512-64-NEXT:    retq2634;2635; AVX512F-32-LABEL: test_v2f64_ueq_q:2636; AVX512F-32:       # %bb.0:2637; AVX512F-32-NEXT:    pushl %ebp2638; AVX512F-32-NEXT:    movl %esp, %ebp2639; AVX512F-32-NEXT:    andl $-16, %esp2640; AVX512F-32-NEXT:    subl $16, %esp2641; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12642; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02643; AVX512F-32-NEXT:    vcmpeq_uqpd 8(%ebp), %xmm2, %xmm22644; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k12645; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}2646; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm02647; AVX512F-32-NEXT:    movl %ebp, %esp2648; AVX512F-32-NEXT:    popl %ebp2649; AVX512F-32-NEXT:    vzeroupper2650; AVX512F-32-NEXT:    retl2651;2652; AVX512F-64-LABEL: test_v2f64_ueq_q:2653; AVX512F-64:       # %bb.0:2654; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12655; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02656; AVX512F-64-NEXT:    vcmpeq_uqpd %xmm3, %xmm2, %xmm22657; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k12658; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}2659; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm02660; AVX512F-64-NEXT:    vzeroupper2661; AVX512F-64-NEXT:    retq2662  %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(2663                                               <2 x double> %f1, <2 x double> %f2, metadata !"ueq",2664                                               metadata !"fpexcept.strict") #02665  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b2666  ret <2 x i64> %res2667}2668 2669define <2 x i64> @test_v2f64_ugt_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {2670; SSE-32-LABEL: test_v2f64_ugt_q:2671; SSE-32:       # %bb.0:2672; SSE-32-NEXT:    pushl %ebp2673; SSE-32-NEXT:    movl %esp, %ebp2674; SSE-32-NEXT:    andl $-16, %esp2675; SSE-32-NEXT:    subl $16, %esp2676; SSE-32-NEXT:    movapd 8(%ebp), %xmm42677; SSE-32-NEXT:    xorl %eax, %eax2678; SSE-32-NEXT:    ucomisd %xmm2, %xmm42679; SSE-32-NEXT:    movl $-1, %ecx2680; SSE-32-NEXT:    movl $0, %edx2681; SSE-32-NEXT:    cmovbl %ecx, %edx2682; SSE-32-NEXT:    movd %edx, %xmm32683; SSE-32-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,0,0,0]2684; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1,1]2685; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm4 = xmm4[1,1]2686; SSE-32-NEXT:    ucomisd %xmm2, %xmm42687; SSE-32-NEXT:    cmovbl %ecx, %eax2688; SSE-32-NEXT:    movd %eax, %xmm22689; SSE-32-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,0,0]2690; SSE-32-NEXT:    punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0]2691; SSE-32-NEXT:    pand %xmm3, %xmm02692; SSE-32-NEXT:    pandn %xmm1, %xmm32693; SSE-32-NEXT:    por %xmm3, %xmm02694; SSE-32-NEXT:    movl %ebp, %esp2695; SSE-32-NEXT:    popl %ebp2696; SSE-32-NEXT:    retl2697;2698; SSE-64-LABEL: test_v2f64_ugt_q:2699; SSE-64:       # %bb.0:2700; SSE-64-NEXT:    xorl %eax, %eax2701; SSE-64-NEXT:    ucomisd %xmm2, %xmm32702; SSE-64-NEXT:    movq $-1, %rcx2703; SSE-64-NEXT:    movl $0, %edx2704; SSE-64-NEXT:    cmovbq %rcx, %rdx2705; SSE-64-NEXT:    movq %rdx, %xmm42706; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1,1]2707; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm3 = xmm3[1,1]2708; SSE-64-NEXT:    ucomisd %xmm2, %xmm32709; SSE-64-NEXT:    cmovbq %rcx, %rax2710; SSE-64-NEXT:    movq %rax, %xmm22711; SSE-64-NEXT:    punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm2[0]2712; SSE-64-NEXT:    pand %xmm4, %xmm02713; SSE-64-NEXT:    pandn %xmm1, %xmm42714; SSE-64-NEXT:    por %xmm4, %xmm02715; SSE-64-NEXT:    retq2716;2717; AVX-32-LABEL: test_v2f64_ugt_q:2718; AVX-32:       # %bb.0:2719; AVX-32-NEXT:    pushl %ebp2720; AVX-32-NEXT:    movl %esp, %ebp2721; AVX-32-NEXT:    andl $-16, %esp2722; AVX-32-NEXT:    subl $16, %esp2723; AVX-32-NEXT:    vcmpnle_uqpd 8(%ebp), %xmm2, %xmm22724; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm02725; AVX-32-NEXT:    movl %ebp, %esp2726; AVX-32-NEXT:    popl %ebp2727; AVX-32-NEXT:    retl2728;2729; AVX-64-LABEL: test_v2f64_ugt_q:2730; AVX-64:       # %bb.0:2731; AVX-64-NEXT:    vcmpnle_uqpd %xmm3, %xmm2, %xmm22732; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm02733; AVX-64-NEXT:    retq2734;2735; AVX512-32-LABEL: test_v2f64_ugt_q:2736; AVX512-32:       # %bb.0:2737; AVX512-32-NEXT:    pushl %ebp2738; AVX512-32-NEXT:    movl %esp, %ebp2739; AVX512-32-NEXT:    andl $-16, %esp2740; AVX512-32-NEXT:    subl $16, %esp2741; AVX512-32-NEXT:    vcmpnle_uqpd 8(%ebp), %xmm2, %k12742; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}2743; AVX512-32-NEXT:    movl %ebp, %esp2744; AVX512-32-NEXT:    popl %ebp2745; AVX512-32-NEXT:    retl2746;2747; AVX512-64-LABEL: test_v2f64_ugt_q:2748; AVX512-64:       # %bb.0:2749; AVX512-64-NEXT:    vcmpnle_uqpd %xmm3, %xmm2, %k12750; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}2751; AVX512-64-NEXT:    retq2752;2753; AVX512F-32-LABEL: test_v2f64_ugt_q:2754; AVX512F-32:       # %bb.0:2755; AVX512F-32-NEXT:    pushl %ebp2756; AVX512F-32-NEXT:    movl %esp, %ebp2757; AVX512F-32-NEXT:    andl $-16, %esp2758; AVX512F-32-NEXT:    subl $16, %esp2759; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12760; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02761; AVX512F-32-NEXT:    vcmpnle_uqpd 8(%ebp), %xmm2, %xmm22762; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k12763; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}2764; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm02765; AVX512F-32-NEXT:    movl %ebp, %esp2766; AVX512F-32-NEXT:    popl %ebp2767; AVX512F-32-NEXT:    vzeroupper2768; AVX512F-32-NEXT:    retl2769;2770; AVX512F-64-LABEL: test_v2f64_ugt_q:2771; AVX512F-64:       # %bb.0:2772; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12773; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02774; AVX512F-64-NEXT:    vcmpnle_uqpd %xmm3, %xmm2, %xmm22775; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k12776; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}2777; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm02778; AVX512F-64-NEXT:    vzeroupper2779; AVX512F-64-NEXT:    retq2780  %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(2781                                               <2 x double> %f1, <2 x double> %f2, metadata !"ugt",2782                                               metadata !"fpexcept.strict") #02783  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b2784  ret <2 x i64> %res2785}2786 2787define <2 x i64> @test_v2f64_uge_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {2788; SSE-32-LABEL: test_v2f64_uge_q:2789; SSE-32:       # %bb.0:2790; SSE-32-NEXT:    pushl %ebp2791; SSE-32-NEXT:    movl %esp, %ebp2792; SSE-32-NEXT:    andl $-16, %esp2793; SSE-32-NEXT:    subl $16, %esp2794; SSE-32-NEXT:    movapd 8(%ebp), %xmm42795; SSE-32-NEXT:    xorl %eax, %eax2796; SSE-32-NEXT:    ucomisd %xmm2, %xmm42797; SSE-32-NEXT:    movl $-1, %ecx2798; SSE-32-NEXT:    movl $0, %edx2799; SSE-32-NEXT:    cmovbel %ecx, %edx2800; SSE-32-NEXT:    movd %edx, %xmm32801; SSE-32-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,0,0,0]2802; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1,1]2803; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm4 = xmm4[1,1]2804; SSE-32-NEXT:    ucomisd %xmm2, %xmm42805; SSE-32-NEXT:    cmovbel %ecx, %eax2806; SSE-32-NEXT:    movd %eax, %xmm22807; SSE-32-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,0,0]2808; SSE-32-NEXT:    punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0]2809; SSE-32-NEXT:    pand %xmm3, %xmm02810; SSE-32-NEXT:    pandn %xmm1, %xmm32811; SSE-32-NEXT:    por %xmm3, %xmm02812; SSE-32-NEXT:    movl %ebp, %esp2813; SSE-32-NEXT:    popl %ebp2814; SSE-32-NEXT:    retl2815;2816; SSE-64-LABEL: test_v2f64_uge_q:2817; SSE-64:       # %bb.0:2818; SSE-64-NEXT:    xorl %eax, %eax2819; SSE-64-NEXT:    ucomisd %xmm2, %xmm32820; SSE-64-NEXT:    movq $-1, %rcx2821; SSE-64-NEXT:    movl $0, %edx2822; SSE-64-NEXT:    cmovbeq %rcx, %rdx2823; SSE-64-NEXT:    movq %rdx, %xmm42824; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1,1]2825; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm3 = xmm3[1,1]2826; SSE-64-NEXT:    ucomisd %xmm2, %xmm32827; SSE-64-NEXT:    cmovbeq %rcx, %rax2828; SSE-64-NEXT:    movq %rax, %xmm22829; SSE-64-NEXT:    punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm2[0]2830; SSE-64-NEXT:    pand %xmm4, %xmm02831; SSE-64-NEXT:    pandn %xmm1, %xmm42832; SSE-64-NEXT:    por %xmm4, %xmm02833; SSE-64-NEXT:    retq2834;2835; AVX-32-LABEL: test_v2f64_uge_q:2836; AVX-32:       # %bb.0:2837; AVX-32-NEXT:    pushl %ebp2838; AVX-32-NEXT:    movl %esp, %ebp2839; AVX-32-NEXT:    andl $-16, %esp2840; AVX-32-NEXT:    subl $16, %esp2841; AVX-32-NEXT:    vcmpnlt_uqpd 8(%ebp), %xmm2, %xmm22842; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm02843; AVX-32-NEXT:    movl %ebp, %esp2844; AVX-32-NEXT:    popl %ebp2845; AVX-32-NEXT:    retl2846;2847; AVX-64-LABEL: test_v2f64_uge_q:2848; AVX-64:       # %bb.0:2849; AVX-64-NEXT:    vcmpnlt_uqpd %xmm3, %xmm2, %xmm22850; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm02851; AVX-64-NEXT:    retq2852;2853; AVX512-32-LABEL: test_v2f64_uge_q:2854; AVX512-32:       # %bb.0:2855; AVX512-32-NEXT:    pushl %ebp2856; AVX512-32-NEXT:    movl %esp, %ebp2857; AVX512-32-NEXT:    andl $-16, %esp2858; AVX512-32-NEXT:    subl $16, %esp2859; AVX512-32-NEXT:    vcmpnlt_uqpd 8(%ebp), %xmm2, %k12860; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}2861; AVX512-32-NEXT:    movl %ebp, %esp2862; AVX512-32-NEXT:    popl %ebp2863; AVX512-32-NEXT:    retl2864;2865; AVX512-64-LABEL: test_v2f64_uge_q:2866; AVX512-64:       # %bb.0:2867; AVX512-64-NEXT:    vcmpnlt_uqpd %xmm3, %xmm2, %k12868; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}2869; AVX512-64-NEXT:    retq2870;2871; AVX512F-32-LABEL: test_v2f64_uge_q:2872; AVX512F-32:       # %bb.0:2873; AVX512F-32-NEXT:    pushl %ebp2874; AVX512F-32-NEXT:    movl %esp, %ebp2875; AVX512F-32-NEXT:    andl $-16, %esp2876; AVX512F-32-NEXT:    subl $16, %esp2877; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12878; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02879; AVX512F-32-NEXT:    vcmpnlt_uqpd 8(%ebp), %xmm2, %xmm22880; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k12881; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}2882; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm02883; AVX512F-32-NEXT:    movl %ebp, %esp2884; AVX512F-32-NEXT:    popl %ebp2885; AVX512F-32-NEXT:    vzeroupper2886; AVX512F-32-NEXT:    retl2887;2888; AVX512F-64-LABEL: test_v2f64_uge_q:2889; AVX512F-64:       # %bb.0:2890; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12891; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02892; AVX512F-64-NEXT:    vcmpnlt_uqpd %xmm3, %xmm2, %xmm22893; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k12894; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}2895; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm02896; AVX512F-64-NEXT:    vzeroupper2897; AVX512F-64-NEXT:    retq2898  %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(2899                                               <2 x double> %f1, <2 x double> %f2, metadata !"uge",2900                                               metadata !"fpexcept.strict") #02901  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b2902  ret <2 x i64> %res2903}2904 2905define <2 x i64> @test_v2f64_ult_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {2906; SSE-32-LABEL: test_v2f64_ult_q:2907; SSE-32:       # %bb.0:2908; SSE-32-NEXT:    pushl %ebp2909; SSE-32-NEXT:    movl %esp, %ebp2910; SSE-32-NEXT:    andl $-16, %esp2911; SSE-32-NEXT:    subl $16, %esp2912; SSE-32-NEXT:    movapd 8(%ebp), %xmm42913; SSE-32-NEXT:    xorl %eax, %eax2914; SSE-32-NEXT:    ucomisd %xmm4, %xmm22915; SSE-32-NEXT:    movl $-1, %ecx2916; SSE-32-NEXT:    movl $0, %edx2917; SSE-32-NEXT:    cmovbl %ecx, %edx2918; SSE-32-NEXT:    movd %edx, %xmm32919; SSE-32-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,0,0,0]2920; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm4 = xmm4[1,1]2921; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1,1]2922; SSE-32-NEXT:    ucomisd %xmm4, %xmm22923; SSE-32-NEXT:    cmovbl %ecx, %eax2924; SSE-32-NEXT:    movd %eax, %xmm22925; SSE-32-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,0,0]2926; SSE-32-NEXT:    punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0]2927; SSE-32-NEXT:    pand %xmm3, %xmm02928; SSE-32-NEXT:    pandn %xmm1, %xmm32929; SSE-32-NEXT:    por %xmm3, %xmm02930; SSE-32-NEXT:    movl %ebp, %esp2931; SSE-32-NEXT:    popl %ebp2932; SSE-32-NEXT:    retl2933;2934; SSE-64-LABEL: test_v2f64_ult_q:2935; SSE-64:       # %bb.0:2936; SSE-64-NEXT:    xorl %eax, %eax2937; SSE-64-NEXT:    ucomisd %xmm3, %xmm22938; SSE-64-NEXT:    movq $-1, %rcx2939; SSE-64-NEXT:    movl $0, %edx2940; SSE-64-NEXT:    cmovbq %rcx, %rdx2941; SSE-64-NEXT:    movq %rdx, %xmm42942; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm3 = xmm3[1,1]2943; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1,1]2944; SSE-64-NEXT:    ucomisd %xmm3, %xmm22945; SSE-64-NEXT:    cmovbq %rcx, %rax2946; SSE-64-NEXT:    movq %rax, %xmm22947; SSE-64-NEXT:    punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm2[0]2948; SSE-64-NEXT:    pand %xmm4, %xmm02949; SSE-64-NEXT:    pandn %xmm1, %xmm42950; SSE-64-NEXT:    por %xmm4, %xmm02951; SSE-64-NEXT:    retq2952;2953; AVX-32-LABEL: test_v2f64_ult_q:2954; AVX-32:       # %bb.0:2955; AVX-32-NEXT:    pushl %ebp2956; AVX-32-NEXT:    movl %esp, %ebp2957; AVX-32-NEXT:    andl $-16, %esp2958; AVX-32-NEXT:    subl $16, %esp2959; AVX-32-NEXT:    vmovapd 8(%ebp), %xmm32960; AVX-32-NEXT:    vcmpnle_uqpd %xmm2, %xmm3, %xmm22961; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm02962; AVX-32-NEXT:    movl %ebp, %esp2963; AVX-32-NEXT:    popl %ebp2964; AVX-32-NEXT:    retl2965;2966; AVX-64-LABEL: test_v2f64_ult_q:2967; AVX-64:       # %bb.0:2968; AVX-64-NEXT:    vcmpnle_uqpd %xmm2, %xmm3, %xmm22969; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm02970; AVX-64-NEXT:    retq2971;2972; AVX512-32-LABEL: test_v2f64_ult_q:2973; AVX512-32:       # %bb.0:2974; AVX512-32-NEXT:    pushl %ebp2975; AVX512-32-NEXT:    movl %esp, %ebp2976; AVX512-32-NEXT:    andl $-16, %esp2977; AVX512-32-NEXT:    subl $16, %esp2978; AVX512-32-NEXT:    vcmpnge_uqpd 8(%ebp), %xmm2, %k12979; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}2980; AVX512-32-NEXT:    movl %ebp, %esp2981; AVX512-32-NEXT:    popl %ebp2982; AVX512-32-NEXT:    retl2983;2984; AVX512-64-LABEL: test_v2f64_ult_q:2985; AVX512-64:       # %bb.0:2986; AVX512-64-NEXT:    vcmpnle_uqpd %xmm2, %xmm3, %k12987; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}2988; AVX512-64-NEXT:    retq2989;2990; AVX512F-32-LABEL: test_v2f64_ult_q:2991; AVX512F-32:       # %bb.0:2992; AVX512F-32-NEXT:    pushl %ebp2993; AVX512F-32-NEXT:    movl %esp, %ebp2994; AVX512F-32-NEXT:    andl $-16, %esp2995; AVX512F-32-NEXT:    subl $16, %esp2996; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm12997; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm02998; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm32999; AVX512F-32-NEXT:    vcmpnle_uqpd %xmm2, %xmm3, %xmm23000; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k13001; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3002; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm03003; AVX512F-32-NEXT:    movl %ebp, %esp3004; AVX512F-32-NEXT:    popl %ebp3005; AVX512F-32-NEXT:    vzeroupper3006; AVX512F-32-NEXT:    retl3007;3008; AVX512F-64-LABEL: test_v2f64_ult_q:3009; AVX512F-64:       # %bb.0:3010; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13011; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03012; AVX512F-64-NEXT:    vcmpnle_uqpd %xmm2, %xmm3, %xmm23013; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k13014; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3015; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm03016; AVX512F-64-NEXT:    vzeroupper3017; AVX512F-64-NEXT:    retq3018  %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(3019                                               <2 x double> %f1, <2 x double> %f2, metadata !"ult",3020                                               metadata !"fpexcept.strict") #03021  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b3022  ret <2 x i64> %res3023}3024 3025define <2 x i64> @test_v2f64_ule_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {3026; SSE-32-LABEL: test_v2f64_ule_q:3027; SSE-32:       # %bb.0:3028; SSE-32-NEXT:    pushl %ebp3029; SSE-32-NEXT:    movl %esp, %ebp3030; SSE-32-NEXT:    andl $-16, %esp3031; SSE-32-NEXT:    subl $16, %esp3032; SSE-32-NEXT:    movapd 8(%ebp), %xmm43033; SSE-32-NEXT:    xorl %eax, %eax3034; SSE-32-NEXT:    ucomisd %xmm4, %xmm23035; SSE-32-NEXT:    movl $-1, %ecx3036; SSE-32-NEXT:    movl $0, %edx3037; SSE-32-NEXT:    cmovbel %ecx, %edx3038; SSE-32-NEXT:    movd %edx, %xmm33039; SSE-32-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,0,0,0]3040; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm4 = xmm4[1,1]3041; SSE-32-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1,1]3042; SSE-32-NEXT:    ucomisd %xmm4, %xmm23043; SSE-32-NEXT:    cmovbel %ecx, %eax3044; SSE-32-NEXT:    movd %eax, %xmm23045; SSE-32-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,0,0]3046; SSE-32-NEXT:    punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0]3047; SSE-32-NEXT:    pand %xmm3, %xmm03048; SSE-32-NEXT:    pandn %xmm1, %xmm33049; SSE-32-NEXT:    por %xmm3, %xmm03050; SSE-32-NEXT:    movl %ebp, %esp3051; SSE-32-NEXT:    popl %ebp3052; SSE-32-NEXT:    retl3053;3054; SSE-64-LABEL: test_v2f64_ule_q:3055; SSE-64:       # %bb.0:3056; SSE-64-NEXT:    xorl %eax, %eax3057; SSE-64-NEXT:    ucomisd %xmm3, %xmm23058; SSE-64-NEXT:    movq $-1, %rcx3059; SSE-64-NEXT:    movl $0, %edx3060; SSE-64-NEXT:    cmovbeq %rcx, %rdx3061; SSE-64-NEXT:    movq %rdx, %xmm43062; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm3 = xmm3[1,1]3063; SSE-64-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1,1]3064; SSE-64-NEXT:    ucomisd %xmm3, %xmm23065; SSE-64-NEXT:    cmovbeq %rcx, %rax3066; SSE-64-NEXT:    movq %rax, %xmm23067; SSE-64-NEXT:    punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm2[0]3068; SSE-64-NEXT:    pand %xmm4, %xmm03069; SSE-64-NEXT:    pandn %xmm1, %xmm43070; SSE-64-NEXT:    por %xmm4, %xmm03071; SSE-64-NEXT:    retq3072;3073; AVX-32-LABEL: test_v2f64_ule_q:3074; AVX-32:       # %bb.0:3075; AVX-32-NEXT:    pushl %ebp3076; AVX-32-NEXT:    movl %esp, %ebp3077; AVX-32-NEXT:    andl $-16, %esp3078; AVX-32-NEXT:    subl $16, %esp3079; AVX-32-NEXT:    vmovapd 8(%ebp), %xmm33080; AVX-32-NEXT:    vcmpnlt_uqpd %xmm2, %xmm3, %xmm23081; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm03082; AVX-32-NEXT:    movl %ebp, %esp3083; AVX-32-NEXT:    popl %ebp3084; AVX-32-NEXT:    retl3085;3086; AVX-64-LABEL: test_v2f64_ule_q:3087; AVX-64:       # %bb.0:3088; AVX-64-NEXT:    vcmpnlt_uqpd %xmm2, %xmm3, %xmm23089; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm03090; AVX-64-NEXT:    retq3091;3092; AVX512-32-LABEL: test_v2f64_ule_q:3093; AVX512-32:       # %bb.0:3094; AVX512-32-NEXT:    pushl %ebp3095; AVX512-32-NEXT:    movl %esp, %ebp3096; AVX512-32-NEXT:    andl $-16, %esp3097; AVX512-32-NEXT:    subl $16, %esp3098; AVX512-32-NEXT:    vcmpngt_uqpd 8(%ebp), %xmm2, %k13099; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}3100; AVX512-32-NEXT:    movl %ebp, %esp3101; AVX512-32-NEXT:    popl %ebp3102; AVX512-32-NEXT:    retl3103;3104; AVX512-64-LABEL: test_v2f64_ule_q:3105; AVX512-64:       # %bb.0:3106; AVX512-64-NEXT:    vcmpnlt_uqpd %xmm2, %xmm3, %k13107; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}3108; AVX512-64-NEXT:    retq3109;3110; AVX512F-32-LABEL: test_v2f64_ule_q:3111; AVX512F-32:       # %bb.0:3112; AVX512F-32-NEXT:    pushl %ebp3113; AVX512F-32-NEXT:    movl %esp, %ebp3114; AVX512F-32-NEXT:    andl $-16, %esp3115; AVX512F-32-NEXT:    subl $16, %esp3116; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13117; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03118; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm33119; AVX512F-32-NEXT:    vcmpnlt_uqpd %xmm2, %xmm3, %xmm23120; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k13121; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3122; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm03123; AVX512F-32-NEXT:    movl %ebp, %esp3124; AVX512F-32-NEXT:    popl %ebp3125; AVX512F-32-NEXT:    vzeroupper3126; AVX512F-32-NEXT:    retl3127;3128; AVX512F-64-LABEL: test_v2f64_ule_q:3129; AVX512F-64:       # %bb.0:3130; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13131; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03132; AVX512F-64-NEXT:    vcmpnlt_uqpd %xmm2, %xmm3, %xmm23133; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k13134; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3135; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm03136; AVX512F-64-NEXT:    vzeroupper3137; AVX512F-64-NEXT:    retq3138  %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(3139                                               <2 x double> %f1, <2 x double> %f2, metadata !"ule",3140                                               metadata !"fpexcept.strict") #03141  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b3142  ret <2 x i64> %res3143}3144 3145define <2 x i64> @test_v2f64_une_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {3146; SSE-32-LABEL: test_v2f64_une_q:3147; SSE-32:       # %bb.0:3148; SSE-32-NEXT:    pushl %ebp3149; SSE-32-NEXT:    movl %esp, %ebp3150; SSE-32-NEXT:    andl $-16, %esp3151; SSE-32-NEXT:    subl $16, %esp3152; SSE-32-NEXT:    cmpneqpd 8(%ebp), %xmm23153; SSE-32-NEXT:    andpd %xmm2, %xmm03154; SSE-32-NEXT:    andnpd %xmm1, %xmm23155; SSE-32-NEXT:    orpd %xmm2, %xmm03156; SSE-32-NEXT:    movl %ebp, %esp3157; SSE-32-NEXT:    popl %ebp3158; SSE-32-NEXT:    retl3159;3160; SSE-64-LABEL: test_v2f64_une_q:3161; SSE-64:       # %bb.0:3162; SSE-64-NEXT:    cmpneqpd %xmm3, %xmm23163; SSE-64-NEXT:    andpd %xmm2, %xmm03164; SSE-64-NEXT:    andnpd %xmm1, %xmm23165; SSE-64-NEXT:    orpd %xmm2, %xmm03166; SSE-64-NEXT:    retq3167;3168; AVX-32-LABEL: test_v2f64_une_q:3169; AVX-32:       # %bb.0:3170; AVX-32-NEXT:    pushl %ebp3171; AVX-32-NEXT:    movl %esp, %ebp3172; AVX-32-NEXT:    andl $-16, %esp3173; AVX-32-NEXT:    subl $16, %esp3174; AVX-32-NEXT:    vcmpneqpd 8(%ebp), %xmm2, %xmm23175; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm03176; AVX-32-NEXT:    movl %ebp, %esp3177; AVX-32-NEXT:    popl %ebp3178; AVX-32-NEXT:    retl3179;3180; AVX-64-LABEL: test_v2f64_une_q:3181; AVX-64:       # %bb.0:3182; AVX-64-NEXT:    vcmpneqpd %xmm3, %xmm2, %xmm23183; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm03184; AVX-64-NEXT:    retq3185;3186; AVX512-32-LABEL: test_v2f64_une_q:3187; AVX512-32:       # %bb.0:3188; AVX512-32-NEXT:    pushl %ebp3189; AVX512-32-NEXT:    movl %esp, %ebp3190; AVX512-32-NEXT:    andl $-16, %esp3191; AVX512-32-NEXT:    subl $16, %esp3192; AVX512-32-NEXT:    vcmpneqpd 8(%ebp), %xmm2, %k13193; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}3194; AVX512-32-NEXT:    movl %ebp, %esp3195; AVX512-32-NEXT:    popl %ebp3196; AVX512-32-NEXT:    retl3197;3198; AVX512-64-LABEL: test_v2f64_une_q:3199; AVX512-64:       # %bb.0:3200; AVX512-64-NEXT:    vcmpneqpd %xmm3, %xmm2, %k13201; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}3202; AVX512-64-NEXT:    retq3203;3204; AVX512F-32-LABEL: test_v2f64_une_q:3205; AVX512F-32:       # %bb.0:3206; AVX512F-32-NEXT:    pushl %ebp3207; AVX512F-32-NEXT:    movl %esp, %ebp3208; AVX512F-32-NEXT:    andl $-16, %esp3209; AVX512F-32-NEXT:    subl $16, %esp3210; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13211; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03212; AVX512F-32-NEXT:    vcmpneqpd 8(%ebp), %xmm2, %xmm23213; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k13214; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3215; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm03216; AVX512F-32-NEXT:    movl %ebp, %esp3217; AVX512F-32-NEXT:    popl %ebp3218; AVX512F-32-NEXT:    vzeroupper3219; AVX512F-32-NEXT:    retl3220;3221; AVX512F-64-LABEL: test_v2f64_une_q:3222; AVX512F-64:       # %bb.0:3223; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13224; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03225; AVX512F-64-NEXT:    vcmpneqpd %xmm3, %xmm2, %xmm23226; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k13227; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3228; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm03229; AVX512F-64-NEXT:    vzeroupper3230; AVX512F-64-NEXT:    retq3231  %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(3232                                               <2 x double> %f1, <2 x double> %f2, metadata !"une",3233                                               metadata !"fpexcept.strict") #03234  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b3235  ret <2 x i64> %res3236}3237 3238define <2 x i64> @test_v2f64_uno_q(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {3239; SSE-32-LABEL: test_v2f64_uno_q:3240; SSE-32:       # %bb.0:3241; SSE-32-NEXT:    pushl %ebp3242; SSE-32-NEXT:    movl %esp, %ebp3243; SSE-32-NEXT:    andl $-16, %esp3244; SSE-32-NEXT:    subl $16, %esp3245; SSE-32-NEXT:    cmpunordpd 8(%ebp), %xmm23246; SSE-32-NEXT:    andpd %xmm2, %xmm03247; SSE-32-NEXT:    andnpd %xmm1, %xmm23248; SSE-32-NEXT:    orpd %xmm2, %xmm03249; SSE-32-NEXT:    movl %ebp, %esp3250; SSE-32-NEXT:    popl %ebp3251; SSE-32-NEXT:    retl3252;3253; SSE-64-LABEL: test_v2f64_uno_q:3254; SSE-64:       # %bb.0:3255; SSE-64-NEXT:    cmpunordpd %xmm3, %xmm23256; SSE-64-NEXT:    andpd %xmm2, %xmm03257; SSE-64-NEXT:    andnpd %xmm1, %xmm23258; SSE-64-NEXT:    orpd %xmm2, %xmm03259; SSE-64-NEXT:    retq3260;3261; AVX-32-LABEL: test_v2f64_uno_q:3262; AVX-32:       # %bb.0:3263; AVX-32-NEXT:    pushl %ebp3264; AVX-32-NEXT:    movl %esp, %ebp3265; AVX-32-NEXT:    andl $-16, %esp3266; AVX-32-NEXT:    subl $16, %esp3267; AVX-32-NEXT:    vcmpunordpd 8(%ebp), %xmm2, %xmm23268; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm03269; AVX-32-NEXT:    movl %ebp, %esp3270; AVX-32-NEXT:    popl %ebp3271; AVX-32-NEXT:    retl3272;3273; AVX-64-LABEL: test_v2f64_uno_q:3274; AVX-64:       # %bb.0:3275; AVX-64-NEXT:    vcmpunordpd %xmm3, %xmm2, %xmm23276; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm03277; AVX-64-NEXT:    retq3278;3279; AVX512-32-LABEL: test_v2f64_uno_q:3280; AVX512-32:       # %bb.0:3281; AVX512-32-NEXT:    pushl %ebp3282; AVX512-32-NEXT:    movl %esp, %ebp3283; AVX512-32-NEXT:    andl $-16, %esp3284; AVX512-32-NEXT:    subl $16, %esp3285; AVX512-32-NEXT:    vcmpunordpd 8(%ebp), %xmm2, %k13286; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}3287; AVX512-32-NEXT:    movl %ebp, %esp3288; AVX512-32-NEXT:    popl %ebp3289; AVX512-32-NEXT:    retl3290;3291; AVX512-64-LABEL: test_v2f64_uno_q:3292; AVX512-64:       # %bb.0:3293; AVX512-64-NEXT:    vcmpunordpd %xmm3, %xmm2, %k13294; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}3295; AVX512-64-NEXT:    retq3296;3297; AVX512F-32-LABEL: test_v2f64_uno_q:3298; AVX512F-32:       # %bb.0:3299; AVX512F-32-NEXT:    pushl %ebp3300; AVX512F-32-NEXT:    movl %esp, %ebp3301; AVX512F-32-NEXT:    andl $-16, %esp3302; AVX512F-32-NEXT:    subl $16, %esp3303; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13304; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03305; AVX512F-32-NEXT:    vcmpunordpd 8(%ebp), %xmm2, %xmm23306; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k13307; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3308; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm03309; AVX512F-32-NEXT:    movl %ebp, %esp3310; AVX512F-32-NEXT:    popl %ebp3311; AVX512F-32-NEXT:    vzeroupper3312; AVX512F-32-NEXT:    retl3313;3314; AVX512F-64-LABEL: test_v2f64_uno_q:3315; AVX512F-64:       # %bb.0:3316; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13317; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03318; AVX512F-64-NEXT:    vcmpunordpd %xmm3, %xmm2, %xmm23319; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k13320; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3321; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm03322; AVX512F-64-NEXT:    vzeroupper3323; AVX512F-64-NEXT:    retq3324  %cond = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(3325                                               <2 x double> %f1, <2 x double> %f2, metadata !"uno",3326                                               metadata !"fpexcept.strict") #03327  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b3328  ret <2 x i64> %res3329}3330 3331define <4 x i32> @test_v4f32_oeq_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {3332; SSE-32-LABEL: test_v4f32_oeq_s:3333; SSE-32:       # %bb.0:3334; SSE-32-NEXT:    pushl %ebp3335; SSE-32-NEXT:    movl %esp, %ebp3336; SSE-32-NEXT:    andl $-16, %esp3337; SSE-32-NEXT:    subl $16, %esp3338; SSE-32-NEXT:    movaps 8(%ebp), %xmm33339; SSE-32-NEXT:    movaps %xmm2, %xmm43340; SSE-32-NEXT:    cmpltps %xmm3, %xmm43341; SSE-32-NEXT:    cmpeqps %xmm2, %xmm33342; SSE-32-NEXT:    andps %xmm3, %xmm03343; SSE-32-NEXT:    andnps %xmm1, %xmm33344; SSE-32-NEXT:    orps %xmm3, %xmm03345; SSE-32-NEXT:    movl %ebp, %esp3346; SSE-32-NEXT:    popl %ebp3347; SSE-32-NEXT:    retl3348;3349; SSE-64-LABEL: test_v4f32_oeq_s:3350; SSE-64:       # %bb.0:3351; SSE-64-NEXT:    movaps %xmm2, %xmm43352; SSE-64-NEXT:    cmpltps %xmm3, %xmm43353; SSE-64-NEXT:    cmpeqps %xmm3, %xmm23354; SSE-64-NEXT:    andps %xmm2, %xmm03355; SSE-64-NEXT:    andnps %xmm1, %xmm23356; SSE-64-NEXT:    orps %xmm2, %xmm03357; SSE-64-NEXT:    retq3358;3359; AVX-32-LABEL: test_v4f32_oeq_s:3360; AVX-32:       # %bb.0:3361; AVX-32-NEXT:    pushl %ebp3362; AVX-32-NEXT:    movl %esp, %ebp3363; AVX-32-NEXT:    andl $-16, %esp3364; AVX-32-NEXT:    subl $16, %esp3365; AVX-32-NEXT:    vcmpeq_osps 8(%ebp), %xmm2, %xmm23366; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm03367; AVX-32-NEXT:    movl %ebp, %esp3368; AVX-32-NEXT:    popl %ebp3369; AVX-32-NEXT:    retl3370;3371; AVX-64-LABEL: test_v4f32_oeq_s:3372; AVX-64:       # %bb.0:3373; AVX-64-NEXT:    vcmpeq_osps %xmm3, %xmm2, %xmm23374; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm03375; AVX-64-NEXT:    retq3376;3377; AVX512-32-LABEL: test_v4f32_oeq_s:3378; AVX512-32:       # %bb.0:3379; AVX512-32-NEXT:    pushl %ebp3380; AVX512-32-NEXT:    movl %esp, %ebp3381; AVX512-32-NEXT:    andl $-16, %esp3382; AVX512-32-NEXT:    subl $16, %esp3383; AVX512-32-NEXT:    vcmpeq_osps 8(%ebp), %xmm2, %k13384; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}3385; AVX512-32-NEXT:    movl %ebp, %esp3386; AVX512-32-NEXT:    popl %ebp3387; AVX512-32-NEXT:    retl3388;3389; AVX512-64-LABEL: test_v4f32_oeq_s:3390; AVX512-64:       # %bb.0:3391; AVX512-64-NEXT:    vcmpeq_osps %xmm3, %xmm2, %k13392; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}3393; AVX512-64-NEXT:    retq3394;3395; AVX512F-32-LABEL: test_v4f32_oeq_s:3396; AVX512F-32:       # %bb.0:3397; AVX512F-32-NEXT:    pushl %ebp3398; AVX512F-32-NEXT:    movl %esp, %ebp3399; AVX512F-32-NEXT:    andl $-16, %esp3400; AVX512F-32-NEXT:    subl $16, %esp3401; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13402; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03403; AVX512F-32-NEXT:    vcmpeq_osps 8(%ebp), %xmm2, %xmm23404; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k13405; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}3406; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm03407; AVX512F-32-NEXT:    movl %ebp, %esp3408; AVX512F-32-NEXT:    popl %ebp3409; AVX512F-32-NEXT:    vzeroupper3410; AVX512F-32-NEXT:    retl3411;3412; AVX512F-64-LABEL: test_v4f32_oeq_s:3413; AVX512F-64:       # %bb.0:3414; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13415; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03416; AVX512F-64-NEXT:    vcmpeq_osps %xmm3, %xmm2, %xmm23417; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k13418; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}3419; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm03420; AVX512F-64-NEXT:    vzeroupper3421; AVX512F-64-NEXT:    retq3422  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(3423                                               <4 x float> %f1, <4 x float> %f2, metadata !"oeq",3424                                               metadata !"fpexcept.strict") #03425  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b3426  ret <4 x i32> %res3427}3428 3429define <4 x i32> @test_v4f32_ogt_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {3430; SSE-32-LABEL: test_v4f32_ogt_s:3431; SSE-32:       # %bb.0:3432; SSE-32-NEXT:    pushl %ebp3433; SSE-32-NEXT:    movl %esp, %ebp3434; SSE-32-NEXT:    andl $-16, %esp3435; SSE-32-NEXT:    subl $16, %esp3436; SSE-32-NEXT:    movaps 8(%ebp), %xmm33437; SSE-32-NEXT:    cmpltps %xmm2, %xmm33438; SSE-32-NEXT:    andps %xmm3, %xmm03439; SSE-32-NEXT:    andnps %xmm1, %xmm33440; SSE-32-NEXT:    orps %xmm3, %xmm03441; SSE-32-NEXT:    movl %ebp, %esp3442; SSE-32-NEXT:    popl %ebp3443; SSE-32-NEXT:    retl3444;3445; SSE-64-LABEL: test_v4f32_ogt_s:3446; SSE-64:       # %bb.0:3447; SSE-64-NEXT:    cmpltps %xmm2, %xmm33448; SSE-64-NEXT:    andps %xmm3, %xmm03449; SSE-64-NEXT:    andnps %xmm1, %xmm33450; SSE-64-NEXT:    orps %xmm3, %xmm03451; SSE-64-NEXT:    retq3452;3453; AVX-32-LABEL: test_v4f32_ogt_s:3454; AVX-32:       # %bb.0:3455; AVX-32-NEXT:    pushl %ebp3456; AVX-32-NEXT:    movl %esp, %ebp3457; AVX-32-NEXT:    andl $-16, %esp3458; AVX-32-NEXT:    subl $16, %esp3459; AVX-32-NEXT:    vmovaps 8(%ebp), %xmm33460; AVX-32-NEXT:    vcmpltps %xmm2, %xmm3, %xmm23461; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm03462; AVX-32-NEXT:    movl %ebp, %esp3463; AVX-32-NEXT:    popl %ebp3464; AVX-32-NEXT:    retl3465;3466; AVX-64-LABEL: test_v4f32_ogt_s:3467; AVX-64:       # %bb.0:3468; AVX-64-NEXT:    vcmpltps %xmm2, %xmm3, %xmm23469; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm03470; AVX-64-NEXT:    retq3471;3472; AVX512-32-LABEL: test_v4f32_ogt_s:3473; AVX512-32:       # %bb.0:3474; AVX512-32-NEXT:    pushl %ebp3475; AVX512-32-NEXT:    movl %esp, %ebp3476; AVX512-32-NEXT:    andl $-16, %esp3477; AVX512-32-NEXT:    subl $16, %esp3478; AVX512-32-NEXT:    vcmpgtps 8(%ebp), %xmm2, %k13479; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}3480; AVX512-32-NEXT:    movl %ebp, %esp3481; AVX512-32-NEXT:    popl %ebp3482; AVX512-32-NEXT:    retl3483;3484; AVX512-64-LABEL: test_v4f32_ogt_s:3485; AVX512-64:       # %bb.0:3486; AVX512-64-NEXT:    vcmpltps %xmm2, %xmm3, %k13487; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}3488; AVX512-64-NEXT:    retq3489;3490; AVX512F-32-LABEL: test_v4f32_ogt_s:3491; AVX512F-32:       # %bb.0:3492; AVX512F-32-NEXT:    pushl %ebp3493; AVX512F-32-NEXT:    movl %esp, %ebp3494; AVX512F-32-NEXT:    andl $-16, %esp3495; AVX512F-32-NEXT:    subl $16, %esp3496; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13497; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03498; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm33499; AVX512F-32-NEXT:    vcmpltps %xmm2, %xmm3, %xmm23500; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k13501; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}3502; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm03503; AVX512F-32-NEXT:    movl %ebp, %esp3504; AVX512F-32-NEXT:    popl %ebp3505; AVX512F-32-NEXT:    vzeroupper3506; AVX512F-32-NEXT:    retl3507;3508; AVX512F-64-LABEL: test_v4f32_ogt_s:3509; AVX512F-64:       # %bb.0:3510; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13511; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03512; AVX512F-64-NEXT:    vcmpltps %xmm2, %xmm3, %xmm23513; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k13514; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}3515; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm03516; AVX512F-64-NEXT:    vzeroupper3517; AVX512F-64-NEXT:    retq3518  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(3519                                               <4 x float> %f1, <4 x float> %f2, metadata !"ogt",3520                                               metadata !"fpexcept.strict") #03521  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b3522  ret <4 x i32> %res3523}3524 3525define <4 x i32> @test_v4f32_oge_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {3526; SSE-32-LABEL: test_v4f32_oge_s:3527; SSE-32:       # %bb.0:3528; SSE-32-NEXT:    pushl %ebp3529; SSE-32-NEXT:    movl %esp, %ebp3530; SSE-32-NEXT:    andl $-16, %esp3531; SSE-32-NEXT:    subl $16, %esp3532; SSE-32-NEXT:    movaps 8(%ebp), %xmm33533; SSE-32-NEXT:    cmpleps %xmm2, %xmm33534; SSE-32-NEXT:    andps %xmm3, %xmm03535; SSE-32-NEXT:    andnps %xmm1, %xmm33536; SSE-32-NEXT:    orps %xmm3, %xmm03537; SSE-32-NEXT:    movl %ebp, %esp3538; SSE-32-NEXT:    popl %ebp3539; SSE-32-NEXT:    retl3540;3541; SSE-64-LABEL: test_v4f32_oge_s:3542; SSE-64:       # %bb.0:3543; SSE-64-NEXT:    cmpleps %xmm2, %xmm33544; SSE-64-NEXT:    andps %xmm3, %xmm03545; SSE-64-NEXT:    andnps %xmm1, %xmm33546; SSE-64-NEXT:    orps %xmm3, %xmm03547; SSE-64-NEXT:    retq3548;3549; AVX-32-LABEL: test_v4f32_oge_s:3550; AVX-32:       # %bb.0:3551; AVX-32-NEXT:    pushl %ebp3552; AVX-32-NEXT:    movl %esp, %ebp3553; AVX-32-NEXT:    andl $-16, %esp3554; AVX-32-NEXT:    subl $16, %esp3555; AVX-32-NEXT:    vmovaps 8(%ebp), %xmm33556; AVX-32-NEXT:    vcmpleps %xmm2, %xmm3, %xmm23557; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm03558; AVX-32-NEXT:    movl %ebp, %esp3559; AVX-32-NEXT:    popl %ebp3560; AVX-32-NEXT:    retl3561;3562; AVX-64-LABEL: test_v4f32_oge_s:3563; AVX-64:       # %bb.0:3564; AVX-64-NEXT:    vcmpleps %xmm2, %xmm3, %xmm23565; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm03566; AVX-64-NEXT:    retq3567;3568; AVX512-32-LABEL: test_v4f32_oge_s:3569; AVX512-32:       # %bb.0:3570; AVX512-32-NEXT:    pushl %ebp3571; AVX512-32-NEXT:    movl %esp, %ebp3572; AVX512-32-NEXT:    andl $-16, %esp3573; AVX512-32-NEXT:    subl $16, %esp3574; AVX512-32-NEXT:    vcmpgeps 8(%ebp), %xmm2, %k13575; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}3576; AVX512-32-NEXT:    movl %ebp, %esp3577; AVX512-32-NEXT:    popl %ebp3578; AVX512-32-NEXT:    retl3579;3580; AVX512-64-LABEL: test_v4f32_oge_s:3581; AVX512-64:       # %bb.0:3582; AVX512-64-NEXT:    vcmpleps %xmm2, %xmm3, %k13583; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}3584; AVX512-64-NEXT:    retq3585;3586; AVX512F-32-LABEL: test_v4f32_oge_s:3587; AVX512F-32:       # %bb.0:3588; AVX512F-32-NEXT:    pushl %ebp3589; AVX512F-32-NEXT:    movl %esp, %ebp3590; AVX512F-32-NEXT:    andl $-16, %esp3591; AVX512F-32-NEXT:    subl $16, %esp3592; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13593; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03594; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm33595; AVX512F-32-NEXT:    vcmpleps %xmm2, %xmm3, %xmm23596; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k13597; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}3598; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm03599; AVX512F-32-NEXT:    movl %ebp, %esp3600; AVX512F-32-NEXT:    popl %ebp3601; AVX512F-32-NEXT:    vzeroupper3602; AVX512F-32-NEXT:    retl3603;3604; AVX512F-64-LABEL: test_v4f32_oge_s:3605; AVX512F-64:       # %bb.0:3606; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13607; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03608; AVX512F-64-NEXT:    vcmpleps %xmm2, %xmm3, %xmm23609; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k13610; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}3611; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm03612; AVX512F-64-NEXT:    vzeroupper3613; AVX512F-64-NEXT:    retq3614  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(3615                                               <4 x float> %f1, <4 x float> %f2, metadata !"oge",3616                                               metadata !"fpexcept.strict") #03617  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b3618  ret <4 x i32> %res3619}3620 3621define <4 x i32> @test_v4f32_olt_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {3622; SSE-32-LABEL: test_v4f32_olt_s:3623; SSE-32:       # %bb.0:3624; SSE-32-NEXT:    pushl %ebp3625; SSE-32-NEXT:    movl %esp, %ebp3626; SSE-32-NEXT:    andl $-16, %esp3627; SSE-32-NEXT:    subl $16, %esp3628; SSE-32-NEXT:    cmpltps 8(%ebp), %xmm23629; SSE-32-NEXT:    andps %xmm2, %xmm03630; SSE-32-NEXT:    andnps %xmm1, %xmm23631; SSE-32-NEXT:    orps %xmm2, %xmm03632; SSE-32-NEXT:    movl %ebp, %esp3633; SSE-32-NEXT:    popl %ebp3634; SSE-32-NEXT:    retl3635;3636; SSE-64-LABEL: test_v4f32_olt_s:3637; SSE-64:       # %bb.0:3638; SSE-64-NEXT:    cmpltps %xmm3, %xmm23639; SSE-64-NEXT:    andps %xmm2, %xmm03640; SSE-64-NEXT:    andnps %xmm1, %xmm23641; SSE-64-NEXT:    orps %xmm2, %xmm03642; SSE-64-NEXT:    retq3643;3644; AVX-32-LABEL: test_v4f32_olt_s:3645; AVX-32:       # %bb.0:3646; AVX-32-NEXT:    pushl %ebp3647; AVX-32-NEXT:    movl %esp, %ebp3648; AVX-32-NEXT:    andl $-16, %esp3649; AVX-32-NEXT:    subl $16, %esp3650; AVX-32-NEXT:    vcmpltps 8(%ebp), %xmm2, %xmm23651; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm03652; AVX-32-NEXT:    movl %ebp, %esp3653; AVX-32-NEXT:    popl %ebp3654; AVX-32-NEXT:    retl3655;3656; AVX-64-LABEL: test_v4f32_olt_s:3657; AVX-64:       # %bb.0:3658; AVX-64-NEXT:    vcmpltps %xmm3, %xmm2, %xmm23659; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm03660; AVX-64-NEXT:    retq3661;3662; AVX512-32-LABEL: test_v4f32_olt_s:3663; AVX512-32:       # %bb.0:3664; AVX512-32-NEXT:    pushl %ebp3665; AVX512-32-NEXT:    movl %esp, %ebp3666; AVX512-32-NEXT:    andl $-16, %esp3667; AVX512-32-NEXT:    subl $16, %esp3668; AVX512-32-NEXT:    vcmpltps 8(%ebp), %xmm2, %k13669; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}3670; AVX512-32-NEXT:    movl %ebp, %esp3671; AVX512-32-NEXT:    popl %ebp3672; AVX512-32-NEXT:    retl3673;3674; AVX512-64-LABEL: test_v4f32_olt_s:3675; AVX512-64:       # %bb.0:3676; AVX512-64-NEXT:    vcmpltps %xmm3, %xmm2, %k13677; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}3678; AVX512-64-NEXT:    retq3679;3680; AVX512F-32-LABEL: test_v4f32_olt_s:3681; AVX512F-32:       # %bb.0:3682; AVX512F-32-NEXT:    pushl %ebp3683; AVX512F-32-NEXT:    movl %esp, %ebp3684; AVX512F-32-NEXT:    andl $-16, %esp3685; AVX512F-32-NEXT:    subl $16, %esp3686; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13687; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03688; AVX512F-32-NEXT:    vcmpltps 8(%ebp), %xmm2, %xmm23689; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k13690; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}3691; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm03692; AVX512F-32-NEXT:    movl %ebp, %esp3693; AVX512F-32-NEXT:    popl %ebp3694; AVX512F-32-NEXT:    vzeroupper3695; AVX512F-32-NEXT:    retl3696;3697; AVX512F-64-LABEL: test_v4f32_olt_s:3698; AVX512F-64:       # %bb.0:3699; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13700; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03701; AVX512F-64-NEXT:    vcmpltps %xmm3, %xmm2, %xmm23702; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k13703; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}3704; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm03705; AVX512F-64-NEXT:    vzeroupper3706; AVX512F-64-NEXT:    retq3707  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(3708                                               <4 x float> %f1, <4 x float> %f2, metadata !"olt",3709                                               metadata !"fpexcept.strict") #03710  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b3711  ret <4 x i32> %res3712}3713 3714define <4 x i32> @test_v4f32_ole_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {3715; SSE-32-LABEL: test_v4f32_ole_s:3716; SSE-32:       # %bb.0:3717; SSE-32-NEXT:    pushl %ebp3718; SSE-32-NEXT:    movl %esp, %ebp3719; SSE-32-NEXT:    andl $-16, %esp3720; SSE-32-NEXT:    subl $16, %esp3721; SSE-32-NEXT:    cmpleps 8(%ebp), %xmm23722; SSE-32-NEXT:    andps %xmm2, %xmm03723; SSE-32-NEXT:    andnps %xmm1, %xmm23724; SSE-32-NEXT:    orps %xmm2, %xmm03725; SSE-32-NEXT:    movl %ebp, %esp3726; SSE-32-NEXT:    popl %ebp3727; SSE-32-NEXT:    retl3728;3729; SSE-64-LABEL: test_v4f32_ole_s:3730; SSE-64:       # %bb.0:3731; SSE-64-NEXT:    cmpleps %xmm3, %xmm23732; SSE-64-NEXT:    andps %xmm2, %xmm03733; SSE-64-NEXT:    andnps %xmm1, %xmm23734; SSE-64-NEXT:    orps %xmm2, %xmm03735; SSE-64-NEXT:    retq3736;3737; AVX-32-LABEL: test_v4f32_ole_s:3738; AVX-32:       # %bb.0:3739; AVX-32-NEXT:    pushl %ebp3740; AVX-32-NEXT:    movl %esp, %ebp3741; AVX-32-NEXT:    andl $-16, %esp3742; AVX-32-NEXT:    subl $16, %esp3743; AVX-32-NEXT:    vcmpleps 8(%ebp), %xmm2, %xmm23744; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm03745; AVX-32-NEXT:    movl %ebp, %esp3746; AVX-32-NEXT:    popl %ebp3747; AVX-32-NEXT:    retl3748;3749; AVX-64-LABEL: test_v4f32_ole_s:3750; AVX-64:       # %bb.0:3751; AVX-64-NEXT:    vcmpleps %xmm3, %xmm2, %xmm23752; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm03753; AVX-64-NEXT:    retq3754;3755; AVX512-32-LABEL: test_v4f32_ole_s:3756; AVX512-32:       # %bb.0:3757; AVX512-32-NEXT:    pushl %ebp3758; AVX512-32-NEXT:    movl %esp, %ebp3759; AVX512-32-NEXT:    andl $-16, %esp3760; AVX512-32-NEXT:    subl $16, %esp3761; AVX512-32-NEXT:    vcmpleps 8(%ebp), %xmm2, %k13762; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}3763; AVX512-32-NEXT:    movl %ebp, %esp3764; AVX512-32-NEXT:    popl %ebp3765; AVX512-32-NEXT:    retl3766;3767; AVX512-64-LABEL: test_v4f32_ole_s:3768; AVX512-64:       # %bb.0:3769; AVX512-64-NEXT:    vcmpleps %xmm3, %xmm2, %k13770; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}3771; AVX512-64-NEXT:    retq3772;3773; AVX512F-32-LABEL: test_v4f32_ole_s:3774; AVX512F-32:       # %bb.0:3775; AVX512F-32-NEXT:    pushl %ebp3776; AVX512F-32-NEXT:    movl %esp, %ebp3777; AVX512F-32-NEXT:    andl $-16, %esp3778; AVX512F-32-NEXT:    subl $16, %esp3779; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13780; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03781; AVX512F-32-NEXT:    vcmpleps 8(%ebp), %xmm2, %xmm23782; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k13783; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}3784; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm03785; AVX512F-32-NEXT:    movl %ebp, %esp3786; AVX512F-32-NEXT:    popl %ebp3787; AVX512F-32-NEXT:    vzeroupper3788; AVX512F-32-NEXT:    retl3789;3790; AVX512F-64-LABEL: test_v4f32_ole_s:3791; AVX512F-64:       # %bb.0:3792; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13793; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03794; AVX512F-64-NEXT:    vcmpleps %xmm3, %xmm2, %xmm23795; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k13796; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}3797; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm03798; AVX512F-64-NEXT:    vzeroupper3799; AVX512F-64-NEXT:    retq3800  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(3801                                               <4 x float> %f1, <4 x float> %f2, metadata !"ole",3802                                               metadata !"fpexcept.strict") #03803  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b3804  ret <4 x i32> %res3805}3806 3807define <4 x i32> @test_v4f32_one_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {3808; SSE-32-LABEL: test_v4f32_one_s:3809; SSE-32:       # %bb.0:3810; SSE-32-NEXT:    pushl %ebp3811; SSE-32-NEXT:    movl %esp, %ebp3812; SSE-32-NEXT:    andl $-16, %esp3813; SSE-32-NEXT:    subl $16, %esp3814; SSE-32-NEXT:    movaps 8(%ebp), %xmm33815; SSE-32-NEXT:    movaps %xmm2, %xmm43816; SSE-32-NEXT:    cmpltps %xmm3, %xmm43817; SSE-32-NEXT:    movaps %xmm2, %xmm43818; SSE-32-NEXT:    cmpneqps %xmm3, %xmm43819; SSE-32-NEXT:    cmpordps %xmm2, %xmm33820; SSE-32-NEXT:    andps %xmm4, %xmm33821; SSE-32-NEXT:    andps %xmm3, %xmm03822; SSE-32-NEXT:    andnps %xmm1, %xmm33823; SSE-32-NEXT:    orps %xmm3, %xmm03824; SSE-32-NEXT:    movl %ebp, %esp3825; SSE-32-NEXT:    popl %ebp3826; SSE-32-NEXT:    retl3827;3828; SSE-64-LABEL: test_v4f32_one_s:3829; SSE-64:       # %bb.0:3830; SSE-64-NEXT:    movaps %xmm2, %xmm43831; SSE-64-NEXT:    cmpltps %xmm3, %xmm43832; SSE-64-NEXT:    movaps %xmm2, %xmm43833; SSE-64-NEXT:    cmpneqps %xmm3, %xmm43834; SSE-64-NEXT:    cmpordps %xmm3, %xmm23835; SSE-64-NEXT:    andps %xmm2, %xmm43836; SSE-64-NEXT:    andps %xmm4, %xmm03837; SSE-64-NEXT:    andnps %xmm1, %xmm43838; SSE-64-NEXT:    orps %xmm4, %xmm03839; SSE-64-NEXT:    retq3840;3841; AVX-32-LABEL: test_v4f32_one_s:3842; AVX-32:       # %bb.0:3843; AVX-32-NEXT:    pushl %ebp3844; AVX-32-NEXT:    movl %esp, %ebp3845; AVX-32-NEXT:    andl $-16, %esp3846; AVX-32-NEXT:    subl $16, %esp3847; AVX-32-NEXT:    vcmpneq_osps 8(%ebp), %xmm2, %xmm23848; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm03849; AVX-32-NEXT:    movl %ebp, %esp3850; AVX-32-NEXT:    popl %ebp3851; AVX-32-NEXT:    retl3852;3853; AVX-64-LABEL: test_v4f32_one_s:3854; AVX-64:       # %bb.0:3855; AVX-64-NEXT:    vcmpneq_osps %xmm3, %xmm2, %xmm23856; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm03857; AVX-64-NEXT:    retq3858;3859; AVX512-32-LABEL: test_v4f32_one_s:3860; AVX512-32:       # %bb.0:3861; AVX512-32-NEXT:    pushl %ebp3862; AVX512-32-NEXT:    movl %esp, %ebp3863; AVX512-32-NEXT:    andl $-16, %esp3864; AVX512-32-NEXT:    subl $16, %esp3865; AVX512-32-NEXT:    vcmpneq_osps 8(%ebp), %xmm2, %k13866; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}3867; AVX512-32-NEXT:    movl %ebp, %esp3868; AVX512-32-NEXT:    popl %ebp3869; AVX512-32-NEXT:    retl3870;3871; AVX512-64-LABEL: test_v4f32_one_s:3872; AVX512-64:       # %bb.0:3873; AVX512-64-NEXT:    vcmpneq_osps %xmm3, %xmm2, %k13874; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}3875; AVX512-64-NEXT:    retq3876;3877; AVX512F-32-LABEL: test_v4f32_one_s:3878; AVX512F-32:       # %bb.0:3879; AVX512F-32-NEXT:    pushl %ebp3880; AVX512F-32-NEXT:    movl %esp, %ebp3881; AVX512F-32-NEXT:    andl $-16, %esp3882; AVX512F-32-NEXT:    subl $16, %esp3883; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13884; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03885; AVX512F-32-NEXT:    vcmpneq_osps 8(%ebp), %xmm2, %xmm23886; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k13887; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}3888; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm03889; AVX512F-32-NEXT:    movl %ebp, %esp3890; AVX512F-32-NEXT:    popl %ebp3891; AVX512F-32-NEXT:    vzeroupper3892; AVX512F-32-NEXT:    retl3893;3894; AVX512F-64-LABEL: test_v4f32_one_s:3895; AVX512F-64:       # %bb.0:3896; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13897; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03898; AVX512F-64-NEXT:    vcmpneq_osps %xmm3, %xmm2, %xmm23899; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k13900; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}3901; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm03902; AVX512F-64-NEXT:    vzeroupper3903; AVX512F-64-NEXT:    retq3904  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(3905                                               <4 x float> %f1, <4 x float> %f2, metadata !"one",3906                                               metadata !"fpexcept.strict") #03907  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b3908  ret <4 x i32> %res3909}3910 3911define <4 x i32> @test_v4f32_ord_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {3912; SSE-32-LABEL: test_v4f32_ord_s:3913; SSE-32:       # %bb.0:3914; SSE-32-NEXT:    pushl %ebp3915; SSE-32-NEXT:    movl %esp, %ebp3916; SSE-32-NEXT:    andl $-16, %esp3917; SSE-32-NEXT:    subl $16, %esp3918; SSE-32-NEXT:    movaps 8(%ebp), %xmm33919; SSE-32-NEXT:    movaps %xmm2, %xmm43920; SSE-32-NEXT:    cmpltps %xmm3, %xmm43921; SSE-32-NEXT:    cmpordps %xmm2, %xmm33922; SSE-32-NEXT:    andps %xmm3, %xmm03923; SSE-32-NEXT:    andnps %xmm1, %xmm33924; SSE-32-NEXT:    orps %xmm3, %xmm03925; SSE-32-NEXT:    movl %ebp, %esp3926; SSE-32-NEXT:    popl %ebp3927; SSE-32-NEXT:    retl3928;3929; SSE-64-LABEL: test_v4f32_ord_s:3930; SSE-64:       # %bb.0:3931; SSE-64-NEXT:    movaps %xmm2, %xmm43932; SSE-64-NEXT:    cmpltps %xmm3, %xmm43933; SSE-64-NEXT:    cmpordps %xmm3, %xmm23934; SSE-64-NEXT:    andps %xmm2, %xmm03935; SSE-64-NEXT:    andnps %xmm1, %xmm23936; SSE-64-NEXT:    orps %xmm2, %xmm03937; SSE-64-NEXT:    retq3938;3939; AVX-32-LABEL: test_v4f32_ord_s:3940; AVX-32:       # %bb.0:3941; AVX-32-NEXT:    pushl %ebp3942; AVX-32-NEXT:    movl %esp, %ebp3943; AVX-32-NEXT:    andl $-16, %esp3944; AVX-32-NEXT:    subl $16, %esp3945; AVX-32-NEXT:    vcmpord_sps 8(%ebp), %xmm2, %xmm23946; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm03947; AVX-32-NEXT:    movl %ebp, %esp3948; AVX-32-NEXT:    popl %ebp3949; AVX-32-NEXT:    retl3950;3951; AVX-64-LABEL: test_v4f32_ord_s:3952; AVX-64:       # %bb.0:3953; AVX-64-NEXT:    vcmpord_sps %xmm3, %xmm2, %xmm23954; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm03955; AVX-64-NEXT:    retq3956;3957; AVX512-32-LABEL: test_v4f32_ord_s:3958; AVX512-32:       # %bb.0:3959; AVX512-32-NEXT:    pushl %ebp3960; AVX512-32-NEXT:    movl %esp, %ebp3961; AVX512-32-NEXT:    andl $-16, %esp3962; AVX512-32-NEXT:    subl $16, %esp3963; AVX512-32-NEXT:    vcmpord_sps 8(%ebp), %xmm2, %k13964; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}3965; AVX512-32-NEXT:    movl %ebp, %esp3966; AVX512-32-NEXT:    popl %ebp3967; AVX512-32-NEXT:    retl3968;3969; AVX512-64-LABEL: test_v4f32_ord_s:3970; AVX512-64:       # %bb.0:3971; AVX512-64-NEXT:    vcmpord_sps %xmm3, %xmm2, %k13972; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}3973; AVX512-64-NEXT:    retq3974;3975; AVX512F-32-LABEL: test_v4f32_ord_s:3976; AVX512F-32:       # %bb.0:3977; AVX512F-32-NEXT:    pushl %ebp3978; AVX512F-32-NEXT:    movl %esp, %ebp3979; AVX512F-32-NEXT:    andl $-16, %esp3980; AVX512F-32-NEXT:    subl $16, %esp3981; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13982; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03983; AVX512F-32-NEXT:    vcmpord_sps 8(%ebp), %xmm2, %xmm23984; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k13985; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}3986; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm03987; AVX512F-32-NEXT:    movl %ebp, %esp3988; AVX512F-32-NEXT:    popl %ebp3989; AVX512F-32-NEXT:    vzeroupper3990; AVX512F-32-NEXT:    retl3991;3992; AVX512F-64-LABEL: test_v4f32_ord_s:3993; AVX512F-64:       # %bb.0:3994; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm13995; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm03996; AVX512F-64-NEXT:    vcmpord_sps %xmm3, %xmm2, %xmm23997; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k13998; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}3999; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm04000; AVX512F-64-NEXT:    vzeroupper4001; AVX512F-64-NEXT:    retq4002  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(4003                                               <4 x float> %f1, <4 x float> %f2, metadata !"ord",4004                                               metadata !"fpexcept.strict") #04005  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b4006  ret <4 x i32> %res4007}4008 4009define <4 x i32> @test_v4f32_ueq_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {4010; SSE-32-LABEL: test_v4f32_ueq_s:4011; SSE-32:       # %bb.0:4012; SSE-32-NEXT:    pushl %ebp4013; SSE-32-NEXT:    movl %esp, %ebp4014; SSE-32-NEXT:    andl $-16, %esp4015; SSE-32-NEXT:    subl $16, %esp4016; SSE-32-NEXT:    movaps 8(%ebp), %xmm34017; SSE-32-NEXT:    movaps %xmm2, %xmm44018; SSE-32-NEXT:    cmpltps %xmm3, %xmm44019; SSE-32-NEXT:    movaps %xmm2, %xmm44020; SSE-32-NEXT:    cmpeqps %xmm3, %xmm44021; SSE-32-NEXT:    cmpunordps %xmm2, %xmm34022; SSE-32-NEXT:    orps %xmm4, %xmm34023; SSE-32-NEXT:    andps %xmm3, %xmm04024; SSE-32-NEXT:    andnps %xmm1, %xmm34025; SSE-32-NEXT:    orps %xmm3, %xmm04026; SSE-32-NEXT:    movl %ebp, %esp4027; SSE-32-NEXT:    popl %ebp4028; SSE-32-NEXT:    retl4029;4030; SSE-64-LABEL: test_v4f32_ueq_s:4031; SSE-64:       # %bb.0:4032; SSE-64-NEXT:    movaps %xmm2, %xmm44033; SSE-64-NEXT:    cmpltps %xmm3, %xmm44034; SSE-64-NEXT:    movaps %xmm2, %xmm44035; SSE-64-NEXT:    cmpeqps %xmm3, %xmm44036; SSE-64-NEXT:    cmpunordps %xmm3, %xmm24037; SSE-64-NEXT:    orps %xmm2, %xmm44038; SSE-64-NEXT:    andps %xmm4, %xmm04039; SSE-64-NEXT:    andnps %xmm1, %xmm44040; SSE-64-NEXT:    orps %xmm4, %xmm04041; SSE-64-NEXT:    retq4042;4043; AVX-32-LABEL: test_v4f32_ueq_s:4044; AVX-32:       # %bb.0:4045; AVX-32-NEXT:    pushl %ebp4046; AVX-32-NEXT:    movl %esp, %ebp4047; AVX-32-NEXT:    andl $-16, %esp4048; AVX-32-NEXT:    subl $16, %esp4049; AVX-32-NEXT:    vcmpeq_usps 8(%ebp), %xmm2, %xmm24050; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm04051; AVX-32-NEXT:    movl %ebp, %esp4052; AVX-32-NEXT:    popl %ebp4053; AVX-32-NEXT:    retl4054;4055; AVX-64-LABEL: test_v4f32_ueq_s:4056; AVX-64:       # %bb.0:4057; AVX-64-NEXT:    vcmpeq_usps %xmm3, %xmm2, %xmm24058; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm04059; AVX-64-NEXT:    retq4060;4061; AVX512-32-LABEL: test_v4f32_ueq_s:4062; AVX512-32:       # %bb.0:4063; AVX512-32-NEXT:    pushl %ebp4064; AVX512-32-NEXT:    movl %esp, %ebp4065; AVX512-32-NEXT:    andl $-16, %esp4066; AVX512-32-NEXT:    subl $16, %esp4067; AVX512-32-NEXT:    vcmpeq_usps 8(%ebp), %xmm2, %k14068; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}4069; AVX512-32-NEXT:    movl %ebp, %esp4070; AVX512-32-NEXT:    popl %ebp4071; AVX512-32-NEXT:    retl4072;4073; AVX512-64-LABEL: test_v4f32_ueq_s:4074; AVX512-64:       # %bb.0:4075; AVX512-64-NEXT:    vcmpeq_usps %xmm3, %xmm2, %k14076; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}4077; AVX512-64-NEXT:    retq4078;4079; AVX512F-32-LABEL: test_v4f32_ueq_s:4080; AVX512F-32:       # %bb.0:4081; AVX512F-32-NEXT:    pushl %ebp4082; AVX512F-32-NEXT:    movl %esp, %ebp4083; AVX512F-32-NEXT:    andl $-16, %esp4084; AVX512F-32-NEXT:    subl $16, %esp4085; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm14086; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm04087; AVX512F-32-NEXT:    vcmpeq_usps 8(%ebp), %xmm2, %xmm24088; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k14089; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}4090; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm04091; AVX512F-32-NEXT:    movl %ebp, %esp4092; AVX512F-32-NEXT:    popl %ebp4093; AVX512F-32-NEXT:    vzeroupper4094; AVX512F-32-NEXT:    retl4095;4096; AVX512F-64-LABEL: test_v4f32_ueq_s:4097; AVX512F-64:       # %bb.0:4098; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm14099; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm04100; AVX512F-64-NEXT:    vcmpeq_usps %xmm3, %xmm2, %xmm24101; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k14102; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}4103; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm04104; AVX512F-64-NEXT:    vzeroupper4105; AVX512F-64-NEXT:    retq4106  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(4107                                               <4 x float> %f1, <4 x float> %f2, metadata !"ueq",4108                                               metadata !"fpexcept.strict") #04109  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b4110  ret <4 x i32> %res4111}4112 4113define <4 x i32> @test_v4f32_ugt_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {4114; SSE-32-LABEL: test_v4f32_ugt_s:4115; SSE-32:       # %bb.0:4116; SSE-32-NEXT:    pushl %ebp4117; SSE-32-NEXT:    movl %esp, %ebp4118; SSE-32-NEXT:    andl $-16, %esp4119; SSE-32-NEXT:    subl $16, %esp4120; SSE-32-NEXT:    cmpnleps 8(%ebp), %xmm24121; SSE-32-NEXT:    andps %xmm2, %xmm04122; SSE-32-NEXT:    andnps %xmm1, %xmm24123; SSE-32-NEXT:    orps %xmm2, %xmm04124; SSE-32-NEXT:    movl %ebp, %esp4125; SSE-32-NEXT:    popl %ebp4126; SSE-32-NEXT:    retl4127;4128; SSE-64-LABEL: test_v4f32_ugt_s:4129; SSE-64:       # %bb.0:4130; SSE-64-NEXT:    cmpnleps %xmm3, %xmm24131; SSE-64-NEXT:    andps %xmm2, %xmm04132; SSE-64-NEXT:    andnps %xmm1, %xmm24133; SSE-64-NEXT:    orps %xmm2, %xmm04134; SSE-64-NEXT:    retq4135;4136; AVX-32-LABEL: test_v4f32_ugt_s:4137; AVX-32:       # %bb.0:4138; AVX-32-NEXT:    pushl %ebp4139; AVX-32-NEXT:    movl %esp, %ebp4140; AVX-32-NEXT:    andl $-16, %esp4141; AVX-32-NEXT:    subl $16, %esp4142; AVX-32-NEXT:    vcmpnleps 8(%ebp), %xmm2, %xmm24143; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm04144; AVX-32-NEXT:    movl %ebp, %esp4145; AVX-32-NEXT:    popl %ebp4146; AVX-32-NEXT:    retl4147;4148; AVX-64-LABEL: test_v4f32_ugt_s:4149; AVX-64:       # %bb.0:4150; AVX-64-NEXT:    vcmpnleps %xmm3, %xmm2, %xmm24151; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm04152; AVX-64-NEXT:    retq4153;4154; AVX512-32-LABEL: test_v4f32_ugt_s:4155; AVX512-32:       # %bb.0:4156; AVX512-32-NEXT:    pushl %ebp4157; AVX512-32-NEXT:    movl %esp, %ebp4158; AVX512-32-NEXT:    andl $-16, %esp4159; AVX512-32-NEXT:    subl $16, %esp4160; AVX512-32-NEXT:    vcmpnleps 8(%ebp), %xmm2, %k14161; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}4162; AVX512-32-NEXT:    movl %ebp, %esp4163; AVX512-32-NEXT:    popl %ebp4164; AVX512-32-NEXT:    retl4165;4166; AVX512-64-LABEL: test_v4f32_ugt_s:4167; AVX512-64:       # %bb.0:4168; AVX512-64-NEXT:    vcmpnleps %xmm3, %xmm2, %k14169; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}4170; AVX512-64-NEXT:    retq4171;4172; AVX512F-32-LABEL: test_v4f32_ugt_s:4173; AVX512F-32:       # %bb.0:4174; AVX512F-32-NEXT:    pushl %ebp4175; AVX512F-32-NEXT:    movl %esp, %ebp4176; AVX512F-32-NEXT:    andl $-16, %esp4177; AVX512F-32-NEXT:    subl $16, %esp4178; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm14179; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm04180; AVX512F-32-NEXT:    vcmpnleps 8(%ebp), %xmm2, %xmm24181; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k14182; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}4183; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm04184; AVX512F-32-NEXT:    movl %ebp, %esp4185; AVX512F-32-NEXT:    popl %ebp4186; AVX512F-32-NEXT:    vzeroupper4187; AVX512F-32-NEXT:    retl4188;4189; AVX512F-64-LABEL: test_v4f32_ugt_s:4190; AVX512F-64:       # %bb.0:4191; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm14192; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm04193; AVX512F-64-NEXT:    vcmpnleps %xmm3, %xmm2, %xmm24194; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k14195; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}4196; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm04197; AVX512F-64-NEXT:    vzeroupper4198; AVX512F-64-NEXT:    retq4199  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(4200                                               <4 x float> %f1, <4 x float> %f2, metadata !"ugt",4201                                               metadata !"fpexcept.strict") #04202  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b4203  ret <4 x i32> %res4204}4205 4206define <4 x i32> @test_v4f32_uge_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {4207; SSE-32-LABEL: test_v4f32_uge_s:4208; SSE-32:       # %bb.0:4209; SSE-32-NEXT:    pushl %ebp4210; SSE-32-NEXT:    movl %esp, %ebp4211; SSE-32-NEXT:    andl $-16, %esp4212; SSE-32-NEXT:    subl $16, %esp4213; SSE-32-NEXT:    cmpnltps 8(%ebp), %xmm24214; SSE-32-NEXT:    andps %xmm2, %xmm04215; SSE-32-NEXT:    andnps %xmm1, %xmm24216; SSE-32-NEXT:    orps %xmm2, %xmm04217; SSE-32-NEXT:    movl %ebp, %esp4218; SSE-32-NEXT:    popl %ebp4219; SSE-32-NEXT:    retl4220;4221; SSE-64-LABEL: test_v4f32_uge_s:4222; SSE-64:       # %bb.0:4223; SSE-64-NEXT:    cmpnltps %xmm3, %xmm24224; SSE-64-NEXT:    andps %xmm2, %xmm04225; SSE-64-NEXT:    andnps %xmm1, %xmm24226; SSE-64-NEXT:    orps %xmm2, %xmm04227; SSE-64-NEXT:    retq4228;4229; AVX-32-LABEL: test_v4f32_uge_s:4230; AVX-32:       # %bb.0:4231; AVX-32-NEXT:    pushl %ebp4232; AVX-32-NEXT:    movl %esp, %ebp4233; AVX-32-NEXT:    andl $-16, %esp4234; AVX-32-NEXT:    subl $16, %esp4235; AVX-32-NEXT:    vcmpnltps 8(%ebp), %xmm2, %xmm24236; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm04237; AVX-32-NEXT:    movl %ebp, %esp4238; AVX-32-NEXT:    popl %ebp4239; AVX-32-NEXT:    retl4240;4241; AVX-64-LABEL: test_v4f32_uge_s:4242; AVX-64:       # %bb.0:4243; AVX-64-NEXT:    vcmpnltps %xmm3, %xmm2, %xmm24244; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm04245; AVX-64-NEXT:    retq4246;4247; AVX512-32-LABEL: test_v4f32_uge_s:4248; AVX512-32:       # %bb.0:4249; AVX512-32-NEXT:    pushl %ebp4250; AVX512-32-NEXT:    movl %esp, %ebp4251; AVX512-32-NEXT:    andl $-16, %esp4252; AVX512-32-NEXT:    subl $16, %esp4253; AVX512-32-NEXT:    vcmpnltps 8(%ebp), %xmm2, %k14254; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}4255; AVX512-32-NEXT:    movl %ebp, %esp4256; AVX512-32-NEXT:    popl %ebp4257; AVX512-32-NEXT:    retl4258;4259; AVX512-64-LABEL: test_v4f32_uge_s:4260; AVX512-64:       # %bb.0:4261; AVX512-64-NEXT:    vcmpnltps %xmm3, %xmm2, %k14262; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}4263; AVX512-64-NEXT:    retq4264;4265; AVX512F-32-LABEL: test_v4f32_uge_s:4266; AVX512F-32:       # %bb.0:4267; AVX512F-32-NEXT:    pushl %ebp4268; AVX512F-32-NEXT:    movl %esp, %ebp4269; AVX512F-32-NEXT:    andl $-16, %esp4270; AVX512F-32-NEXT:    subl $16, %esp4271; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm14272; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm04273; AVX512F-32-NEXT:    vcmpnltps 8(%ebp), %xmm2, %xmm24274; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k14275; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}4276; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm04277; AVX512F-32-NEXT:    movl %ebp, %esp4278; AVX512F-32-NEXT:    popl %ebp4279; AVX512F-32-NEXT:    vzeroupper4280; AVX512F-32-NEXT:    retl4281;4282; AVX512F-64-LABEL: test_v4f32_uge_s:4283; AVX512F-64:       # %bb.0:4284; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm14285; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm04286; AVX512F-64-NEXT:    vcmpnltps %xmm3, %xmm2, %xmm24287; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k14288; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}4289; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm04290; AVX512F-64-NEXT:    vzeroupper4291; AVX512F-64-NEXT:    retq4292  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(4293                                               <4 x float> %f1, <4 x float> %f2, metadata !"uge",4294                                               metadata !"fpexcept.strict") #04295  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b4296  ret <4 x i32> %res4297}4298 4299define <4 x i32> @test_v4f32_ult_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {4300; SSE-32-LABEL: test_v4f32_ult_s:4301; SSE-32:       # %bb.0:4302; SSE-32-NEXT:    pushl %ebp4303; SSE-32-NEXT:    movl %esp, %ebp4304; SSE-32-NEXT:    andl $-16, %esp4305; SSE-32-NEXT:    subl $16, %esp4306; SSE-32-NEXT:    movaps 8(%ebp), %xmm34307; SSE-32-NEXT:    cmpnleps %xmm2, %xmm34308; SSE-32-NEXT:    andps %xmm3, %xmm04309; SSE-32-NEXT:    andnps %xmm1, %xmm34310; SSE-32-NEXT:    orps %xmm3, %xmm04311; SSE-32-NEXT:    movl %ebp, %esp4312; SSE-32-NEXT:    popl %ebp4313; SSE-32-NEXT:    retl4314;4315; SSE-64-LABEL: test_v4f32_ult_s:4316; SSE-64:       # %bb.0:4317; SSE-64-NEXT:    cmpnleps %xmm2, %xmm34318; SSE-64-NEXT:    andps %xmm3, %xmm04319; SSE-64-NEXT:    andnps %xmm1, %xmm34320; SSE-64-NEXT:    orps %xmm3, %xmm04321; SSE-64-NEXT:    retq4322;4323; AVX-32-LABEL: test_v4f32_ult_s:4324; AVX-32:       # %bb.0:4325; AVX-32-NEXT:    pushl %ebp4326; AVX-32-NEXT:    movl %esp, %ebp4327; AVX-32-NEXT:    andl $-16, %esp4328; AVX-32-NEXT:    subl $16, %esp4329; AVX-32-NEXT:    vmovaps 8(%ebp), %xmm34330; AVX-32-NEXT:    vcmpnleps %xmm2, %xmm3, %xmm24331; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm04332; AVX-32-NEXT:    movl %ebp, %esp4333; AVX-32-NEXT:    popl %ebp4334; AVX-32-NEXT:    retl4335;4336; AVX-64-LABEL: test_v4f32_ult_s:4337; AVX-64:       # %bb.0:4338; AVX-64-NEXT:    vcmpnleps %xmm2, %xmm3, %xmm24339; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm04340; AVX-64-NEXT:    retq4341;4342; AVX512-32-LABEL: test_v4f32_ult_s:4343; AVX512-32:       # %bb.0:4344; AVX512-32-NEXT:    pushl %ebp4345; AVX512-32-NEXT:    movl %esp, %ebp4346; AVX512-32-NEXT:    andl $-16, %esp4347; AVX512-32-NEXT:    subl $16, %esp4348; AVX512-32-NEXT:    vcmpngeps 8(%ebp), %xmm2, %k14349; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}4350; AVX512-32-NEXT:    movl %ebp, %esp4351; AVX512-32-NEXT:    popl %ebp4352; AVX512-32-NEXT:    retl4353;4354; AVX512-64-LABEL: test_v4f32_ult_s:4355; AVX512-64:       # %bb.0:4356; AVX512-64-NEXT:    vcmpnleps %xmm2, %xmm3, %k14357; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}4358; AVX512-64-NEXT:    retq4359;4360; AVX512F-32-LABEL: test_v4f32_ult_s:4361; AVX512F-32:       # %bb.0:4362; AVX512F-32-NEXT:    pushl %ebp4363; AVX512F-32-NEXT:    movl %esp, %ebp4364; AVX512F-32-NEXT:    andl $-16, %esp4365; AVX512F-32-NEXT:    subl $16, %esp4366; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm14367; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm04368; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm34369; AVX512F-32-NEXT:    vcmpnleps %xmm2, %xmm3, %xmm24370; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k14371; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}4372; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm04373; AVX512F-32-NEXT:    movl %ebp, %esp4374; AVX512F-32-NEXT:    popl %ebp4375; AVX512F-32-NEXT:    vzeroupper4376; AVX512F-32-NEXT:    retl4377;4378; AVX512F-64-LABEL: test_v4f32_ult_s:4379; AVX512F-64:       # %bb.0:4380; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm14381; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm04382; AVX512F-64-NEXT:    vcmpnleps %xmm2, %xmm3, %xmm24383; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k14384; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}4385; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm04386; AVX512F-64-NEXT:    vzeroupper4387; AVX512F-64-NEXT:    retq4388  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(4389                                               <4 x float> %f1, <4 x float> %f2, metadata !"ult",4390                                               metadata !"fpexcept.strict") #04391  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b4392  ret <4 x i32> %res4393}4394 4395define <4 x i32> @test_v4f32_ule_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {4396; SSE-32-LABEL: test_v4f32_ule_s:4397; SSE-32:       # %bb.0:4398; SSE-32-NEXT:    pushl %ebp4399; SSE-32-NEXT:    movl %esp, %ebp4400; SSE-32-NEXT:    andl $-16, %esp4401; SSE-32-NEXT:    subl $16, %esp4402; SSE-32-NEXT:    movaps 8(%ebp), %xmm34403; SSE-32-NEXT:    cmpnltps %xmm2, %xmm34404; SSE-32-NEXT:    andps %xmm3, %xmm04405; SSE-32-NEXT:    andnps %xmm1, %xmm34406; SSE-32-NEXT:    orps %xmm3, %xmm04407; SSE-32-NEXT:    movl %ebp, %esp4408; SSE-32-NEXT:    popl %ebp4409; SSE-32-NEXT:    retl4410;4411; SSE-64-LABEL: test_v4f32_ule_s:4412; SSE-64:       # %bb.0:4413; SSE-64-NEXT:    cmpnltps %xmm2, %xmm34414; SSE-64-NEXT:    andps %xmm3, %xmm04415; SSE-64-NEXT:    andnps %xmm1, %xmm34416; SSE-64-NEXT:    orps %xmm3, %xmm04417; SSE-64-NEXT:    retq4418;4419; AVX-32-LABEL: test_v4f32_ule_s:4420; AVX-32:       # %bb.0:4421; AVX-32-NEXT:    pushl %ebp4422; AVX-32-NEXT:    movl %esp, %ebp4423; AVX-32-NEXT:    andl $-16, %esp4424; AVX-32-NEXT:    subl $16, %esp4425; AVX-32-NEXT:    vmovaps 8(%ebp), %xmm34426; AVX-32-NEXT:    vcmpnltps %xmm2, %xmm3, %xmm24427; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm04428; AVX-32-NEXT:    movl %ebp, %esp4429; AVX-32-NEXT:    popl %ebp4430; AVX-32-NEXT:    retl4431;4432; AVX-64-LABEL: test_v4f32_ule_s:4433; AVX-64:       # %bb.0:4434; AVX-64-NEXT:    vcmpnltps %xmm2, %xmm3, %xmm24435; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm04436; AVX-64-NEXT:    retq4437;4438; AVX512-32-LABEL: test_v4f32_ule_s:4439; AVX512-32:       # %bb.0:4440; AVX512-32-NEXT:    pushl %ebp4441; AVX512-32-NEXT:    movl %esp, %ebp4442; AVX512-32-NEXT:    andl $-16, %esp4443; AVX512-32-NEXT:    subl $16, %esp4444; AVX512-32-NEXT:    vcmpngtps 8(%ebp), %xmm2, %k14445; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}4446; AVX512-32-NEXT:    movl %ebp, %esp4447; AVX512-32-NEXT:    popl %ebp4448; AVX512-32-NEXT:    retl4449;4450; AVX512-64-LABEL: test_v4f32_ule_s:4451; AVX512-64:       # %bb.0:4452; AVX512-64-NEXT:    vcmpnltps %xmm2, %xmm3, %k14453; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}4454; AVX512-64-NEXT:    retq4455;4456; AVX512F-32-LABEL: test_v4f32_ule_s:4457; AVX512F-32:       # %bb.0:4458; AVX512F-32-NEXT:    pushl %ebp4459; AVX512F-32-NEXT:    movl %esp, %ebp4460; AVX512F-32-NEXT:    andl $-16, %esp4461; AVX512F-32-NEXT:    subl $16, %esp4462; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm14463; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm04464; AVX512F-32-NEXT:    vmovaps 8(%ebp), %xmm34465; AVX512F-32-NEXT:    vcmpnltps %xmm2, %xmm3, %xmm24466; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k14467; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}4468; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm04469; AVX512F-32-NEXT:    movl %ebp, %esp4470; AVX512F-32-NEXT:    popl %ebp4471; AVX512F-32-NEXT:    vzeroupper4472; AVX512F-32-NEXT:    retl4473;4474; AVX512F-64-LABEL: test_v4f32_ule_s:4475; AVX512F-64:       # %bb.0:4476; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm14477; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm04478; AVX512F-64-NEXT:    vcmpnltps %xmm2, %xmm3, %xmm24479; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k14480; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}4481; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm04482; AVX512F-64-NEXT:    vzeroupper4483; AVX512F-64-NEXT:    retq4484  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(4485                                               <4 x float> %f1, <4 x float> %f2, metadata !"ule",4486                                               metadata !"fpexcept.strict") #04487  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b4488  ret <4 x i32> %res4489}4490 4491define <4 x i32> @test_v4f32_une_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {4492; SSE-32-LABEL: test_v4f32_une_s:4493; SSE-32:       # %bb.0:4494; SSE-32-NEXT:    pushl %ebp4495; SSE-32-NEXT:    movl %esp, %ebp4496; SSE-32-NEXT:    andl $-16, %esp4497; SSE-32-NEXT:    subl $16, %esp4498; SSE-32-NEXT:    movaps 8(%ebp), %xmm34499; SSE-32-NEXT:    movaps %xmm2, %xmm44500; SSE-32-NEXT:    cmpltps %xmm3, %xmm44501; SSE-32-NEXT:    cmpneqps %xmm2, %xmm34502; SSE-32-NEXT:    andps %xmm3, %xmm04503; SSE-32-NEXT:    andnps %xmm1, %xmm34504; SSE-32-NEXT:    orps %xmm3, %xmm04505; SSE-32-NEXT:    movl %ebp, %esp4506; SSE-32-NEXT:    popl %ebp4507; SSE-32-NEXT:    retl4508;4509; SSE-64-LABEL: test_v4f32_une_s:4510; SSE-64:       # %bb.0:4511; SSE-64-NEXT:    movaps %xmm2, %xmm44512; SSE-64-NEXT:    cmpltps %xmm3, %xmm44513; SSE-64-NEXT:    cmpneqps %xmm3, %xmm24514; SSE-64-NEXT:    andps %xmm2, %xmm04515; SSE-64-NEXT:    andnps %xmm1, %xmm24516; SSE-64-NEXT:    orps %xmm2, %xmm04517; SSE-64-NEXT:    retq4518;4519; AVX-32-LABEL: test_v4f32_une_s:4520; AVX-32:       # %bb.0:4521; AVX-32-NEXT:    pushl %ebp4522; AVX-32-NEXT:    movl %esp, %ebp4523; AVX-32-NEXT:    andl $-16, %esp4524; AVX-32-NEXT:    subl $16, %esp4525; AVX-32-NEXT:    vcmpneq_usps 8(%ebp), %xmm2, %xmm24526; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm04527; AVX-32-NEXT:    movl %ebp, %esp4528; AVX-32-NEXT:    popl %ebp4529; AVX-32-NEXT:    retl4530;4531; AVX-64-LABEL: test_v4f32_une_s:4532; AVX-64:       # %bb.0:4533; AVX-64-NEXT:    vcmpneq_usps %xmm3, %xmm2, %xmm24534; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm04535; AVX-64-NEXT:    retq4536;4537; AVX512-32-LABEL: test_v4f32_une_s:4538; AVX512-32:       # %bb.0:4539; AVX512-32-NEXT:    pushl %ebp4540; AVX512-32-NEXT:    movl %esp, %ebp4541; AVX512-32-NEXT:    andl $-16, %esp4542; AVX512-32-NEXT:    subl $16, %esp4543; AVX512-32-NEXT:    vcmpneq_usps 8(%ebp), %xmm2, %k14544; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}4545; AVX512-32-NEXT:    movl %ebp, %esp4546; AVX512-32-NEXT:    popl %ebp4547; AVX512-32-NEXT:    retl4548;4549; AVX512-64-LABEL: test_v4f32_une_s:4550; AVX512-64:       # %bb.0:4551; AVX512-64-NEXT:    vcmpneq_usps %xmm3, %xmm2, %k14552; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}4553; AVX512-64-NEXT:    retq4554;4555; AVX512F-32-LABEL: test_v4f32_une_s:4556; AVX512F-32:       # %bb.0:4557; AVX512F-32-NEXT:    pushl %ebp4558; AVX512F-32-NEXT:    movl %esp, %ebp4559; AVX512F-32-NEXT:    andl $-16, %esp4560; AVX512F-32-NEXT:    subl $16, %esp4561; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm14562; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm04563; AVX512F-32-NEXT:    vcmpneq_usps 8(%ebp), %xmm2, %xmm24564; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k14565; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}4566; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm04567; AVX512F-32-NEXT:    movl %ebp, %esp4568; AVX512F-32-NEXT:    popl %ebp4569; AVX512F-32-NEXT:    vzeroupper4570; AVX512F-32-NEXT:    retl4571;4572; AVX512F-64-LABEL: test_v4f32_une_s:4573; AVX512F-64:       # %bb.0:4574; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm14575; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm04576; AVX512F-64-NEXT:    vcmpneq_usps %xmm3, %xmm2, %xmm24577; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k14578; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}4579; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm04580; AVX512F-64-NEXT:    vzeroupper4581; AVX512F-64-NEXT:    retq4582  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(4583                                               <4 x float> %f1, <4 x float> %f2, metadata !"une",4584                                               metadata !"fpexcept.strict") #04585  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b4586  ret <4 x i32> %res4587}4588 4589define <4 x i32> @test_v4f32_uno_s(<4 x i32> %a, <4 x i32> %b, <4 x float> %f1, <4 x float> %f2) #0 {4590; SSE-32-LABEL: test_v4f32_uno_s:4591; SSE-32:       # %bb.0:4592; SSE-32-NEXT:    pushl %ebp4593; SSE-32-NEXT:    movl %esp, %ebp4594; SSE-32-NEXT:    andl $-16, %esp4595; SSE-32-NEXT:    subl $16, %esp4596; SSE-32-NEXT:    movaps 8(%ebp), %xmm34597; SSE-32-NEXT:    movaps %xmm2, %xmm44598; SSE-32-NEXT:    cmpltps %xmm3, %xmm44599; SSE-32-NEXT:    cmpunordps %xmm2, %xmm34600; SSE-32-NEXT:    andps %xmm3, %xmm04601; SSE-32-NEXT:    andnps %xmm1, %xmm34602; SSE-32-NEXT:    orps %xmm3, %xmm04603; SSE-32-NEXT:    movl %ebp, %esp4604; SSE-32-NEXT:    popl %ebp4605; SSE-32-NEXT:    retl4606;4607; SSE-64-LABEL: test_v4f32_uno_s:4608; SSE-64:       # %bb.0:4609; SSE-64-NEXT:    movaps %xmm2, %xmm44610; SSE-64-NEXT:    cmpltps %xmm3, %xmm44611; SSE-64-NEXT:    cmpunordps %xmm3, %xmm24612; SSE-64-NEXT:    andps %xmm2, %xmm04613; SSE-64-NEXT:    andnps %xmm1, %xmm24614; SSE-64-NEXT:    orps %xmm2, %xmm04615; SSE-64-NEXT:    retq4616;4617; AVX-32-LABEL: test_v4f32_uno_s:4618; AVX-32:       # %bb.0:4619; AVX-32-NEXT:    pushl %ebp4620; AVX-32-NEXT:    movl %esp, %ebp4621; AVX-32-NEXT:    andl $-16, %esp4622; AVX-32-NEXT:    subl $16, %esp4623; AVX-32-NEXT:    vcmpunord_sps 8(%ebp), %xmm2, %xmm24624; AVX-32-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm04625; AVX-32-NEXT:    movl %ebp, %esp4626; AVX-32-NEXT:    popl %ebp4627; AVX-32-NEXT:    retl4628;4629; AVX-64-LABEL: test_v4f32_uno_s:4630; AVX-64:       # %bb.0:4631; AVX-64-NEXT:    vcmpunord_sps %xmm3, %xmm2, %xmm24632; AVX-64-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm04633; AVX-64-NEXT:    retq4634;4635; AVX512-32-LABEL: test_v4f32_uno_s:4636; AVX512-32:       # %bb.0:4637; AVX512-32-NEXT:    pushl %ebp4638; AVX512-32-NEXT:    movl %esp, %ebp4639; AVX512-32-NEXT:    andl $-16, %esp4640; AVX512-32-NEXT:    subl $16, %esp4641; AVX512-32-NEXT:    vcmpunord_sps 8(%ebp), %xmm2, %k14642; AVX512-32-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}4643; AVX512-32-NEXT:    movl %ebp, %esp4644; AVX512-32-NEXT:    popl %ebp4645; AVX512-32-NEXT:    retl4646;4647; AVX512-64-LABEL: test_v4f32_uno_s:4648; AVX512-64:       # %bb.0:4649; AVX512-64-NEXT:    vcmpunord_sps %xmm3, %xmm2, %k14650; AVX512-64-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}4651; AVX512-64-NEXT:    retq4652;4653; AVX512F-32-LABEL: test_v4f32_uno_s:4654; AVX512F-32:       # %bb.0:4655; AVX512F-32-NEXT:    pushl %ebp4656; AVX512F-32-NEXT:    movl %esp, %ebp4657; AVX512F-32-NEXT:    andl $-16, %esp4658; AVX512F-32-NEXT:    subl $16, %esp4659; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm14660; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm04661; AVX512F-32-NEXT:    vcmpunord_sps 8(%ebp), %xmm2, %xmm24662; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k14663; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}4664; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm04665; AVX512F-32-NEXT:    movl %ebp, %esp4666; AVX512F-32-NEXT:    popl %ebp4667; AVX512F-32-NEXT:    vzeroupper4668; AVX512F-32-NEXT:    retl4669;4670; AVX512F-64-LABEL: test_v4f32_uno_s:4671; AVX512F-64:       # %bb.0:4672; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm14673; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm04674; AVX512F-64-NEXT:    vcmpunord_sps %xmm3, %xmm2, %xmm24675; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k14676; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}4677; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm04678; AVX512F-64-NEXT:    vzeroupper4679; AVX512F-64-NEXT:    retq4680  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(4681                                               <4 x float> %f1, <4 x float> %f2, metadata !"uno",4682                                               metadata !"fpexcept.strict") #04683  %res = select <4 x i1> %cond, <4 x i32> %a, <4 x i32> %b4684  ret <4 x i32> %res4685}4686 4687define <2 x i64> @test_v2f64_oeq_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {4688; SSE-32-LABEL: test_v2f64_oeq_s:4689; SSE-32:       # %bb.0:4690; SSE-32-NEXT:    pushl %ebp4691; SSE-32-NEXT:    movl %esp, %ebp4692; SSE-32-NEXT:    andl $-16, %esp4693; SSE-32-NEXT:    subl $16, %esp4694; SSE-32-NEXT:    movapd 8(%ebp), %xmm34695; SSE-32-NEXT:    movapd %xmm2, %xmm44696; SSE-32-NEXT:    cmpltpd %xmm3, %xmm44697; SSE-32-NEXT:    cmpeqpd %xmm2, %xmm34698; SSE-32-NEXT:    andpd %xmm3, %xmm04699; SSE-32-NEXT:    andnpd %xmm1, %xmm34700; SSE-32-NEXT:    orpd %xmm3, %xmm04701; SSE-32-NEXT:    movl %ebp, %esp4702; SSE-32-NEXT:    popl %ebp4703; SSE-32-NEXT:    retl4704;4705; SSE-64-LABEL: test_v2f64_oeq_s:4706; SSE-64:       # %bb.0:4707; SSE-64-NEXT:    movapd %xmm2, %xmm44708; SSE-64-NEXT:    cmpltpd %xmm3, %xmm44709; SSE-64-NEXT:    cmpeqpd %xmm3, %xmm24710; SSE-64-NEXT:    andpd %xmm2, %xmm04711; SSE-64-NEXT:    andnpd %xmm1, %xmm24712; SSE-64-NEXT:    orpd %xmm2, %xmm04713; SSE-64-NEXT:    retq4714;4715; AVX-32-LABEL: test_v2f64_oeq_s:4716; AVX-32:       # %bb.0:4717; AVX-32-NEXT:    pushl %ebp4718; AVX-32-NEXT:    movl %esp, %ebp4719; AVX-32-NEXT:    andl $-16, %esp4720; AVX-32-NEXT:    subl $16, %esp4721; AVX-32-NEXT:    vcmpeq_ospd 8(%ebp), %xmm2, %xmm24722; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm04723; AVX-32-NEXT:    movl %ebp, %esp4724; AVX-32-NEXT:    popl %ebp4725; AVX-32-NEXT:    retl4726;4727; AVX-64-LABEL: test_v2f64_oeq_s:4728; AVX-64:       # %bb.0:4729; AVX-64-NEXT:    vcmpeq_ospd %xmm3, %xmm2, %xmm24730; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm04731; AVX-64-NEXT:    retq4732;4733; AVX512-32-LABEL: test_v2f64_oeq_s:4734; AVX512-32:       # %bb.0:4735; AVX512-32-NEXT:    pushl %ebp4736; AVX512-32-NEXT:    movl %esp, %ebp4737; AVX512-32-NEXT:    andl $-16, %esp4738; AVX512-32-NEXT:    subl $16, %esp4739; AVX512-32-NEXT:    vcmpeq_ospd 8(%ebp), %xmm2, %k14740; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}4741; AVX512-32-NEXT:    movl %ebp, %esp4742; AVX512-32-NEXT:    popl %ebp4743; AVX512-32-NEXT:    retl4744;4745; AVX512-64-LABEL: test_v2f64_oeq_s:4746; AVX512-64:       # %bb.0:4747; AVX512-64-NEXT:    vcmpeq_ospd %xmm3, %xmm2, %k14748; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}4749; AVX512-64-NEXT:    retq4750;4751; AVX512F-32-LABEL: test_v2f64_oeq_s:4752; AVX512F-32:       # %bb.0:4753; AVX512F-32-NEXT:    pushl %ebp4754; AVX512F-32-NEXT:    movl %esp, %ebp4755; AVX512F-32-NEXT:    andl $-16, %esp4756; AVX512F-32-NEXT:    subl $16, %esp4757; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm14758; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm04759; AVX512F-32-NEXT:    vcmpeq_ospd 8(%ebp), %xmm2, %xmm24760; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k14761; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}4762; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm04763; AVX512F-32-NEXT:    movl %ebp, %esp4764; AVX512F-32-NEXT:    popl %ebp4765; AVX512F-32-NEXT:    vzeroupper4766; AVX512F-32-NEXT:    retl4767;4768; AVX512F-64-LABEL: test_v2f64_oeq_s:4769; AVX512F-64:       # %bb.0:4770; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm14771; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm04772; AVX512F-64-NEXT:    vcmpeq_ospd %xmm3, %xmm2, %xmm24773; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k14774; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}4775; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm04776; AVX512F-64-NEXT:    vzeroupper4777; AVX512F-64-NEXT:    retq4778  %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(4779                                               <2 x double> %f1, <2 x double> %f2, metadata !"oeq",4780                                               metadata !"fpexcept.strict") #04781  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b4782  ret <2 x i64> %res4783}4784 4785define <2 x i64> @test_v2f64_ogt_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {4786; SSE-32-LABEL: test_v2f64_ogt_s:4787; SSE-32:       # %bb.0:4788; SSE-32-NEXT:    pushl %ebp4789; SSE-32-NEXT:    movl %esp, %ebp4790; SSE-32-NEXT:    andl $-16, %esp4791; SSE-32-NEXT:    subl $16, %esp4792; SSE-32-NEXT:    movapd 8(%ebp), %xmm34793; SSE-32-NEXT:    cmpltpd %xmm2, %xmm34794; SSE-32-NEXT:    andpd %xmm3, %xmm04795; SSE-32-NEXT:    andnpd %xmm1, %xmm34796; SSE-32-NEXT:    orpd %xmm3, %xmm04797; SSE-32-NEXT:    movl %ebp, %esp4798; SSE-32-NEXT:    popl %ebp4799; SSE-32-NEXT:    retl4800;4801; SSE-64-LABEL: test_v2f64_ogt_s:4802; SSE-64:       # %bb.0:4803; SSE-64-NEXT:    cmpltpd %xmm2, %xmm34804; SSE-64-NEXT:    andpd %xmm3, %xmm04805; SSE-64-NEXT:    andnpd %xmm1, %xmm34806; SSE-64-NEXT:    orpd %xmm3, %xmm04807; SSE-64-NEXT:    retq4808;4809; AVX-32-LABEL: test_v2f64_ogt_s:4810; AVX-32:       # %bb.0:4811; AVX-32-NEXT:    pushl %ebp4812; AVX-32-NEXT:    movl %esp, %ebp4813; AVX-32-NEXT:    andl $-16, %esp4814; AVX-32-NEXT:    subl $16, %esp4815; AVX-32-NEXT:    vmovapd 8(%ebp), %xmm34816; AVX-32-NEXT:    vcmpltpd %xmm2, %xmm3, %xmm24817; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm04818; AVX-32-NEXT:    movl %ebp, %esp4819; AVX-32-NEXT:    popl %ebp4820; AVX-32-NEXT:    retl4821;4822; AVX-64-LABEL: test_v2f64_ogt_s:4823; AVX-64:       # %bb.0:4824; AVX-64-NEXT:    vcmpltpd %xmm2, %xmm3, %xmm24825; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm04826; AVX-64-NEXT:    retq4827;4828; AVX512-32-LABEL: test_v2f64_ogt_s:4829; AVX512-32:       # %bb.0:4830; AVX512-32-NEXT:    pushl %ebp4831; AVX512-32-NEXT:    movl %esp, %ebp4832; AVX512-32-NEXT:    andl $-16, %esp4833; AVX512-32-NEXT:    subl $16, %esp4834; AVX512-32-NEXT:    vcmpgtpd 8(%ebp), %xmm2, %k14835; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}4836; AVX512-32-NEXT:    movl %ebp, %esp4837; AVX512-32-NEXT:    popl %ebp4838; AVX512-32-NEXT:    retl4839;4840; AVX512-64-LABEL: test_v2f64_ogt_s:4841; AVX512-64:       # %bb.0:4842; AVX512-64-NEXT:    vcmpltpd %xmm2, %xmm3, %k14843; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}4844; AVX512-64-NEXT:    retq4845;4846; AVX512F-32-LABEL: test_v2f64_ogt_s:4847; AVX512F-32:       # %bb.0:4848; AVX512F-32-NEXT:    pushl %ebp4849; AVX512F-32-NEXT:    movl %esp, %ebp4850; AVX512F-32-NEXT:    andl $-16, %esp4851; AVX512F-32-NEXT:    subl $16, %esp4852; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm14853; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm04854; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm34855; AVX512F-32-NEXT:    vcmpltpd %xmm2, %xmm3, %xmm24856; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k14857; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}4858; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm04859; AVX512F-32-NEXT:    movl %ebp, %esp4860; AVX512F-32-NEXT:    popl %ebp4861; AVX512F-32-NEXT:    vzeroupper4862; AVX512F-32-NEXT:    retl4863;4864; AVX512F-64-LABEL: test_v2f64_ogt_s:4865; AVX512F-64:       # %bb.0:4866; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm14867; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm04868; AVX512F-64-NEXT:    vcmpltpd %xmm2, %xmm3, %xmm24869; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k14870; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}4871; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm04872; AVX512F-64-NEXT:    vzeroupper4873; AVX512F-64-NEXT:    retq4874  %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(4875                                               <2 x double> %f1, <2 x double> %f2, metadata !"ogt",4876                                               metadata !"fpexcept.strict") #04877  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b4878  ret <2 x i64> %res4879}4880 4881define <2 x i64> @test_v2f64_oge_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {4882; SSE-32-LABEL: test_v2f64_oge_s:4883; SSE-32:       # %bb.0:4884; SSE-32-NEXT:    pushl %ebp4885; SSE-32-NEXT:    movl %esp, %ebp4886; SSE-32-NEXT:    andl $-16, %esp4887; SSE-32-NEXT:    subl $16, %esp4888; SSE-32-NEXT:    movapd 8(%ebp), %xmm34889; SSE-32-NEXT:    cmplepd %xmm2, %xmm34890; SSE-32-NEXT:    andpd %xmm3, %xmm04891; SSE-32-NEXT:    andnpd %xmm1, %xmm34892; SSE-32-NEXT:    orpd %xmm3, %xmm04893; SSE-32-NEXT:    movl %ebp, %esp4894; SSE-32-NEXT:    popl %ebp4895; SSE-32-NEXT:    retl4896;4897; SSE-64-LABEL: test_v2f64_oge_s:4898; SSE-64:       # %bb.0:4899; SSE-64-NEXT:    cmplepd %xmm2, %xmm34900; SSE-64-NEXT:    andpd %xmm3, %xmm04901; SSE-64-NEXT:    andnpd %xmm1, %xmm34902; SSE-64-NEXT:    orpd %xmm3, %xmm04903; SSE-64-NEXT:    retq4904;4905; AVX-32-LABEL: test_v2f64_oge_s:4906; AVX-32:       # %bb.0:4907; AVX-32-NEXT:    pushl %ebp4908; AVX-32-NEXT:    movl %esp, %ebp4909; AVX-32-NEXT:    andl $-16, %esp4910; AVX-32-NEXT:    subl $16, %esp4911; AVX-32-NEXT:    vmovapd 8(%ebp), %xmm34912; AVX-32-NEXT:    vcmplepd %xmm2, %xmm3, %xmm24913; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm04914; AVX-32-NEXT:    movl %ebp, %esp4915; AVX-32-NEXT:    popl %ebp4916; AVX-32-NEXT:    retl4917;4918; AVX-64-LABEL: test_v2f64_oge_s:4919; AVX-64:       # %bb.0:4920; AVX-64-NEXT:    vcmplepd %xmm2, %xmm3, %xmm24921; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm04922; AVX-64-NEXT:    retq4923;4924; AVX512-32-LABEL: test_v2f64_oge_s:4925; AVX512-32:       # %bb.0:4926; AVX512-32-NEXT:    pushl %ebp4927; AVX512-32-NEXT:    movl %esp, %ebp4928; AVX512-32-NEXT:    andl $-16, %esp4929; AVX512-32-NEXT:    subl $16, %esp4930; AVX512-32-NEXT:    vcmpgepd 8(%ebp), %xmm2, %k14931; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}4932; AVX512-32-NEXT:    movl %ebp, %esp4933; AVX512-32-NEXT:    popl %ebp4934; AVX512-32-NEXT:    retl4935;4936; AVX512-64-LABEL: test_v2f64_oge_s:4937; AVX512-64:       # %bb.0:4938; AVX512-64-NEXT:    vcmplepd %xmm2, %xmm3, %k14939; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}4940; AVX512-64-NEXT:    retq4941;4942; AVX512F-32-LABEL: test_v2f64_oge_s:4943; AVX512F-32:       # %bb.0:4944; AVX512F-32-NEXT:    pushl %ebp4945; AVX512F-32-NEXT:    movl %esp, %ebp4946; AVX512F-32-NEXT:    andl $-16, %esp4947; AVX512F-32-NEXT:    subl $16, %esp4948; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm14949; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm04950; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm34951; AVX512F-32-NEXT:    vcmplepd %xmm2, %xmm3, %xmm24952; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k14953; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}4954; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm04955; AVX512F-32-NEXT:    movl %ebp, %esp4956; AVX512F-32-NEXT:    popl %ebp4957; AVX512F-32-NEXT:    vzeroupper4958; AVX512F-32-NEXT:    retl4959;4960; AVX512F-64-LABEL: test_v2f64_oge_s:4961; AVX512F-64:       # %bb.0:4962; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm14963; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm04964; AVX512F-64-NEXT:    vcmplepd %xmm2, %xmm3, %xmm24965; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k14966; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}4967; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm04968; AVX512F-64-NEXT:    vzeroupper4969; AVX512F-64-NEXT:    retq4970  %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(4971                                               <2 x double> %f1, <2 x double> %f2, metadata !"oge",4972                                               metadata !"fpexcept.strict") #04973  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b4974  ret <2 x i64> %res4975}4976 4977define <2 x i64> @test_v2f64_olt_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {4978; SSE-32-LABEL: test_v2f64_olt_s:4979; SSE-32:       # %bb.0:4980; SSE-32-NEXT:    pushl %ebp4981; SSE-32-NEXT:    movl %esp, %ebp4982; SSE-32-NEXT:    andl $-16, %esp4983; SSE-32-NEXT:    subl $16, %esp4984; SSE-32-NEXT:    cmpltpd 8(%ebp), %xmm24985; SSE-32-NEXT:    andpd %xmm2, %xmm04986; SSE-32-NEXT:    andnpd %xmm1, %xmm24987; SSE-32-NEXT:    orpd %xmm2, %xmm04988; SSE-32-NEXT:    movl %ebp, %esp4989; SSE-32-NEXT:    popl %ebp4990; SSE-32-NEXT:    retl4991;4992; SSE-64-LABEL: test_v2f64_olt_s:4993; SSE-64:       # %bb.0:4994; SSE-64-NEXT:    cmpltpd %xmm3, %xmm24995; SSE-64-NEXT:    andpd %xmm2, %xmm04996; SSE-64-NEXT:    andnpd %xmm1, %xmm24997; SSE-64-NEXT:    orpd %xmm2, %xmm04998; SSE-64-NEXT:    retq4999;5000; AVX-32-LABEL: test_v2f64_olt_s:5001; AVX-32:       # %bb.0:5002; AVX-32-NEXT:    pushl %ebp5003; AVX-32-NEXT:    movl %esp, %ebp5004; AVX-32-NEXT:    andl $-16, %esp5005; AVX-32-NEXT:    subl $16, %esp5006; AVX-32-NEXT:    vcmpltpd 8(%ebp), %xmm2, %xmm25007; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05008; AVX-32-NEXT:    movl %ebp, %esp5009; AVX-32-NEXT:    popl %ebp5010; AVX-32-NEXT:    retl5011;5012; AVX-64-LABEL: test_v2f64_olt_s:5013; AVX-64:       # %bb.0:5014; AVX-64-NEXT:    vcmpltpd %xmm3, %xmm2, %xmm25015; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05016; AVX-64-NEXT:    retq5017;5018; AVX512-32-LABEL: test_v2f64_olt_s:5019; AVX512-32:       # %bb.0:5020; AVX512-32-NEXT:    pushl %ebp5021; AVX512-32-NEXT:    movl %esp, %ebp5022; AVX512-32-NEXT:    andl $-16, %esp5023; AVX512-32-NEXT:    subl $16, %esp5024; AVX512-32-NEXT:    vcmpltpd 8(%ebp), %xmm2, %k15025; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}5026; AVX512-32-NEXT:    movl %ebp, %esp5027; AVX512-32-NEXT:    popl %ebp5028; AVX512-32-NEXT:    retl5029;5030; AVX512-64-LABEL: test_v2f64_olt_s:5031; AVX512-64:       # %bb.0:5032; AVX512-64-NEXT:    vcmpltpd %xmm3, %xmm2, %k15033; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}5034; AVX512-64-NEXT:    retq5035;5036; AVX512F-32-LABEL: test_v2f64_olt_s:5037; AVX512F-32:       # %bb.0:5038; AVX512F-32-NEXT:    pushl %ebp5039; AVX512F-32-NEXT:    movl %esp, %ebp5040; AVX512F-32-NEXT:    andl $-16, %esp5041; AVX512F-32-NEXT:    subl $16, %esp5042; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15043; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm05044; AVX512F-32-NEXT:    vcmpltpd 8(%ebp), %xmm2, %xmm25045; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k15046; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}5047; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm05048; AVX512F-32-NEXT:    movl %ebp, %esp5049; AVX512F-32-NEXT:    popl %ebp5050; AVX512F-32-NEXT:    vzeroupper5051; AVX512F-32-NEXT:    retl5052;5053; AVX512F-64-LABEL: test_v2f64_olt_s:5054; AVX512F-64:       # %bb.0:5055; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15056; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm05057; AVX512F-64-NEXT:    vcmpltpd %xmm3, %xmm2, %xmm25058; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k15059; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}5060; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm05061; AVX512F-64-NEXT:    vzeroupper5062; AVX512F-64-NEXT:    retq5063  %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(5064                                               <2 x double> %f1, <2 x double> %f2, metadata !"olt",5065                                               metadata !"fpexcept.strict") #05066  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b5067  ret <2 x i64> %res5068}5069 5070define <2 x i64> @test_v2f64_ole_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {5071; SSE-32-LABEL: test_v2f64_ole_s:5072; SSE-32:       # %bb.0:5073; SSE-32-NEXT:    pushl %ebp5074; SSE-32-NEXT:    movl %esp, %ebp5075; SSE-32-NEXT:    andl $-16, %esp5076; SSE-32-NEXT:    subl $16, %esp5077; SSE-32-NEXT:    cmplepd 8(%ebp), %xmm25078; SSE-32-NEXT:    andpd %xmm2, %xmm05079; SSE-32-NEXT:    andnpd %xmm1, %xmm25080; SSE-32-NEXT:    orpd %xmm2, %xmm05081; SSE-32-NEXT:    movl %ebp, %esp5082; SSE-32-NEXT:    popl %ebp5083; SSE-32-NEXT:    retl5084;5085; SSE-64-LABEL: test_v2f64_ole_s:5086; SSE-64:       # %bb.0:5087; SSE-64-NEXT:    cmplepd %xmm3, %xmm25088; SSE-64-NEXT:    andpd %xmm2, %xmm05089; SSE-64-NEXT:    andnpd %xmm1, %xmm25090; SSE-64-NEXT:    orpd %xmm2, %xmm05091; SSE-64-NEXT:    retq5092;5093; AVX-32-LABEL: test_v2f64_ole_s:5094; AVX-32:       # %bb.0:5095; AVX-32-NEXT:    pushl %ebp5096; AVX-32-NEXT:    movl %esp, %ebp5097; AVX-32-NEXT:    andl $-16, %esp5098; AVX-32-NEXT:    subl $16, %esp5099; AVX-32-NEXT:    vcmplepd 8(%ebp), %xmm2, %xmm25100; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05101; AVX-32-NEXT:    movl %ebp, %esp5102; AVX-32-NEXT:    popl %ebp5103; AVX-32-NEXT:    retl5104;5105; AVX-64-LABEL: test_v2f64_ole_s:5106; AVX-64:       # %bb.0:5107; AVX-64-NEXT:    vcmplepd %xmm3, %xmm2, %xmm25108; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05109; AVX-64-NEXT:    retq5110;5111; AVX512-32-LABEL: test_v2f64_ole_s:5112; AVX512-32:       # %bb.0:5113; AVX512-32-NEXT:    pushl %ebp5114; AVX512-32-NEXT:    movl %esp, %ebp5115; AVX512-32-NEXT:    andl $-16, %esp5116; AVX512-32-NEXT:    subl $16, %esp5117; AVX512-32-NEXT:    vcmplepd 8(%ebp), %xmm2, %k15118; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}5119; AVX512-32-NEXT:    movl %ebp, %esp5120; AVX512-32-NEXT:    popl %ebp5121; AVX512-32-NEXT:    retl5122;5123; AVX512-64-LABEL: test_v2f64_ole_s:5124; AVX512-64:       # %bb.0:5125; AVX512-64-NEXT:    vcmplepd %xmm3, %xmm2, %k15126; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}5127; AVX512-64-NEXT:    retq5128;5129; AVX512F-32-LABEL: test_v2f64_ole_s:5130; AVX512F-32:       # %bb.0:5131; AVX512F-32-NEXT:    pushl %ebp5132; AVX512F-32-NEXT:    movl %esp, %ebp5133; AVX512F-32-NEXT:    andl $-16, %esp5134; AVX512F-32-NEXT:    subl $16, %esp5135; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15136; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm05137; AVX512F-32-NEXT:    vcmplepd 8(%ebp), %xmm2, %xmm25138; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k15139; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}5140; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm05141; AVX512F-32-NEXT:    movl %ebp, %esp5142; AVX512F-32-NEXT:    popl %ebp5143; AVX512F-32-NEXT:    vzeroupper5144; AVX512F-32-NEXT:    retl5145;5146; AVX512F-64-LABEL: test_v2f64_ole_s:5147; AVX512F-64:       # %bb.0:5148; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15149; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm05150; AVX512F-64-NEXT:    vcmplepd %xmm3, %xmm2, %xmm25151; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k15152; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}5153; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm05154; AVX512F-64-NEXT:    vzeroupper5155; AVX512F-64-NEXT:    retq5156  %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(5157                                               <2 x double> %f1, <2 x double> %f2, metadata !"ole",5158                                               metadata !"fpexcept.strict") #05159  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b5160  ret <2 x i64> %res5161}5162 5163define <2 x i64> @test_v2f64_one_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {5164; SSE-32-LABEL: test_v2f64_one_s:5165; SSE-32:       # %bb.0:5166; SSE-32-NEXT:    pushl %ebp5167; SSE-32-NEXT:    movl %esp, %ebp5168; SSE-32-NEXT:    andl $-16, %esp5169; SSE-32-NEXT:    subl $16, %esp5170; SSE-32-NEXT:    movapd 8(%ebp), %xmm35171; SSE-32-NEXT:    movapd %xmm2, %xmm45172; SSE-32-NEXT:    cmpltpd %xmm3, %xmm45173; SSE-32-NEXT:    movapd %xmm2, %xmm45174; SSE-32-NEXT:    cmpneqpd %xmm3, %xmm45175; SSE-32-NEXT:    cmpordpd %xmm2, %xmm35176; SSE-32-NEXT:    andpd %xmm4, %xmm35177; SSE-32-NEXT:    andpd %xmm3, %xmm05178; SSE-32-NEXT:    andnpd %xmm1, %xmm35179; SSE-32-NEXT:    orpd %xmm3, %xmm05180; SSE-32-NEXT:    movl %ebp, %esp5181; SSE-32-NEXT:    popl %ebp5182; SSE-32-NEXT:    retl5183;5184; SSE-64-LABEL: test_v2f64_one_s:5185; SSE-64:       # %bb.0:5186; SSE-64-NEXT:    movapd %xmm2, %xmm45187; SSE-64-NEXT:    cmpltpd %xmm3, %xmm45188; SSE-64-NEXT:    movapd %xmm2, %xmm45189; SSE-64-NEXT:    cmpneqpd %xmm3, %xmm45190; SSE-64-NEXT:    cmpordpd %xmm3, %xmm25191; SSE-64-NEXT:    andpd %xmm2, %xmm45192; SSE-64-NEXT:    andpd %xmm4, %xmm05193; SSE-64-NEXT:    andnpd %xmm1, %xmm45194; SSE-64-NEXT:    orpd %xmm4, %xmm05195; SSE-64-NEXT:    retq5196;5197; AVX-32-LABEL: test_v2f64_one_s:5198; AVX-32:       # %bb.0:5199; AVX-32-NEXT:    pushl %ebp5200; AVX-32-NEXT:    movl %esp, %ebp5201; AVX-32-NEXT:    andl $-16, %esp5202; AVX-32-NEXT:    subl $16, %esp5203; AVX-32-NEXT:    vcmpneq_ospd 8(%ebp), %xmm2, %xmm25204; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05205; AVX-32-NEXT:    movl %ebp, %esp5206; AVX-32-NEXT:    popl %ebp5207; AVX-32-NEXT:    retl5208;5209; AVX-64-LABEL: test_v2f64_one_s:5210; AVX-64:       # %bb.0:5211; AVX-64-NEXT:    vcmpneq_ospd %xmm3, %xmm2, %xmm25212; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05213; AVX-64-NEXT:    retq5214;5215; AVX512-32-LABEL: test_v2f64_one_s:5216; AVX512-32:       # %bb.0:5217; AVX512-32-NEXT:    pushl %ebp5218; AVX512-32-NEXT:    movl %esp, %ebp5219; AVX512-32-NEXT:    andl $-16, %esp5220; AVX512-32-NEXT:    subl $16, %esp5221; AVX512-32-NEXT:    vcmpneq_ospd 8(%ebp), %xmm2, %k15222; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}5223; AVX512-32-NEXT:    movl %ebp, %esp5224; AVX512-32-NEXT:    popl %ebp5225; AVX512-32-NEXT:    retl5226;5227; AVX512-64-LABEL: test_v2f64_one_s:5228; AVX512-64:       # %bb.0:5229; AVX512-64-NEXT:    vcmpneq_ospd %xmm3, %xmm2, %k15230; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}5231; AVX512-64-NEXT:    retq5232;5233; AVX512F-32-LABEL: test_v2f64_one_s:5234; AVX512F-32:       # %bb.0:5235; AVX512F-32-NEXT:    pushl %ebp5236; AVX512F-32-NEXT:    movl %esp, %ebp5237; AVX512F-32-NEXT:    andl $-16, %esp5238; AVX512F-32-NEXT:    subl $16, %esp5239; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15240; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm05241; AVX512F-32-NEXT:    vcmpneq_ospd 8(%ebp), %xmm2, %xmm25242; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k15243; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}5244; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm05245; AVX512F-32-NEXT:    movl %ebp, %esp5246; AVX512F-32-NEXT:    popl %ebp5247; AVX512F-32-NEXT:    vzeroupper5248; AVX512F-32-NEXT:    retl5249;5250; AVX512F-64-LABEL: test_v2f64_one_s:5251; AVX512F-64:       # %bb.0:5252; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15253; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm05254; AVX512F-64-NEXT:    vcmpneq_ospd %xmm3, %xmm2, %xmm25255; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k15256; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}5257; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm05258; AVX512F-64-NEXT:    vzeroupper5259; AVX512F-64-NEXT:    retq5260  %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(5261                                               <2 x double> %f1, <2 x double> %f2, metadata !"one",5262                                               metadata !"fpexcept.strict") #05263  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b5264  ret <2 x i64> %res5265}5266 5267define <2 x i64> @test_v2f64_ord_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {5268; SSE-32-LABEL: test_v2f64_ord_s:5269; SSE-32:       # %bb.0:5270; SSE-32-NEXT:    pushl %ebp5271; SSE-32-NEXT:    movl %esp, %ebp5272; SSE-32-NEXT:    andl $-16, %esp5273; SSE-32-NEXT:    subl $16, %esp5274; SSE-32-NEXT:    movapd 8(%ebp), %xmm35275; SSE-32-NEXT:    movapd %xmm2, %xmm45276; SSE-32-NEXT:    cmpltpd %xmm3, %xmm45277; SSE-32-NEXT:    cmpordpd %xmm2, %xmm35278; SSE-32-NEXT:    andpd %xmm3, %xmm05279; SSE-32-NEXT:    andnpd %xmm1, %xmm35280; SSE-32-NEXT:    orpd %xmm3, %xmm05281; SSE-32-NEXT:    movl %ebp, %esp5282; SSE-32-NEXT:    popl %ebp5283; SSE-32-NEXT:    retl5284;5285; SSE-64-LABEL: test_v2f64_ord_s:5286; SSE-64:       # %bb.0:5287; SSE-64-NEXT:    movapd %xmm2, %xmm45288; SSE-64-NEXT:    cmpltpd %xmm3, %xmm45289; SSE-64-NEXT:    cmpordpd %xmm3, %xmm25290; SSE-64-NEXT:    andpd %xmm2, %xmm05291; SSE-64-NEXT:    andnpd %xmm1, %xmm25292; SSE-64-NEXT:    orpd %xmm2, %xmm05293; SSE-64-NEXT:    retq5294;5295; AVX-32-LABEL: test_v2f64_ord_s:5296; AVX-32:       # %bb.0:5297; AVX-32-NEXT:    pushl %ebp5298; AVX-32-NEXT:    movl %esp, %ebp5299; AVX-32-NEXT:    andl $-16, %esp5300; AVX-32-NEXT:    subl $16, %esp5301; AVX-32-NEXT:    vcmpord_spd 8(%ebp), %xmm2, %xmm25302; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05303; AVX-32-NEXT:    movl %ebp, %esp5304; AVX-32-NEXT:    popl %ebp5305; AVX-32-NEXT:    retl5306;5307; AVX-64-LABEL: test_v2f64_ord_s:5308; AVX-64:       # %bb.0:5309; AVX-64-NEXT:    vcmpord_spd %xmm3, %xmm2, %xmm25310; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05311; AVX-64-NEXT:    retq5312;5313; AVX512-32-LABEL: test_v2f64_ord_s:5314; AVX512-32:       # %bb.0:5315; AVX512-32-NEXT:    pushl %ebp5316; AVX512-32-NEXT:    movl %esp, %ebp5317; AVX512-32-NEXT:    andl $-16, %esp5318; AVX512-32-NEXT:    subl $16, %esp5319; AVX512-32-NEXT:    vcmpord_spd 8(%ebp), %xmm2, %k15320; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}5321; AVX512-32-NEXT:    movl %ebp, %esp5322; AVX512-32-NEXT:    popl %ebp5323; AVX512-32-NEXT:    retl5324;5325; AVX512-64-LABEL: test_v2f64_ord_s:5326; AVX512-64:       # %bb.0:5327; AVX512-64-NEXT:    vcmpord_spd %xmm3, %xmm2, %k15328; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}5329; AVX512-64-NEXT:    retq5330;5331; AVX512F-32-LABEL: test_v2f64_ord_s:5332; AVX512F-32:       # %bb.0:5333; AVX512F-32-NEXT:    pushl %ebp5334; AVX512F-32-NEXT:    movl %esp, %ebp5335; AVX512F-32-NEXT:    andl $-16, %esp5336; AVX512F-32-NEXT:    subl $16, %esp5337; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15338; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm05339; AVX512F-32-NEXT:    vcmpord_spd 8(%ebp), %xmm2, %xmm25340; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k15341; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}5342; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm05343; AVX512F-32-NEXT:    movl %ebp, %esp5344; AVX512F-32-NEXT:    popl %ebp5345; AVX512F-32-NEXT:    vzeroupper5346; AVX512F-32-NEXT:    retl5347;5348; AVX512F-64-LABEL: test_v2f64_ord_s:5349; AVX512F-64:       # %bb.0:5350; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15351; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm05352; AVX512F-64-NEXT:    vcmpord_spd %xmm3, %xmm2, %xmm25353; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k15354; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}5355; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm05356; AVX512F-64-NEXT:    vzeroupper5357; AVX512F-64-NEXT:    retq5358  %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(5359                                               <2 x double> %f1, <2 x double> %f2, metadata !"ord",5360                                               metadata !"fpexcept.strict") #05361  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b5362  ret <2 x i64> %res5363}5364 5365define <2 x i64> @test_v2f64_ueq_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {5366; SSE-32-LABEL: test_v2f64_ueq_s:5367; SSE-32:       # %bb.0:5368; SSE-32-NEXT:    pushl %ebp5369; SSE-32-NEXT:    movl %esp, %ebp5370; SSE-32-NEXT:    andl $-16, %esp5371; SSE-32-NEXT:    subl $16, %esp5372; SSE-32-NEXT:    movapd 8(%ebp), %xmm35373; SSE-32-NEXT:    movapd %xmm2, %xmm45374; SSE-32-NEXT:    cmpltpd %xmm3, %xmm45375; SSE-32-NEXT:    movapd %xmm2, %xmm45376; SSE-32-NEXT:    cmpeqpd %xmm3, %xmm45377; SSE-32-NEXT:    cmpunordpd %xmm2, %xmm35378; SSE-32-NEXT:    orpd %xmm4, %xmm35379; SSE-32-NEXT:    andpd %xmm3, %xmm05380; SSE-32-NEXT:    andnpd %xmm1, %xmm35381; SSE-32-NEXT:    orpd %xmm3, %xmm05382; SSE-32-NEXT:    movl %ebp, %esp5383; SSE-32-NEXT:    popl %ebp5384; SSE-32-NEXT:    retl5385;5386; SSE-64-LABEL: test_v2f64_ueq_s:5387; SSE-64:       # %bb.0:5388; SSE-64-NEXT:    movapd %xmm2, %xmm45389; SSE-64-NEXT:    cmpltpd %xmm3, %xmm45390; SSE-64-NEXT:    movapd %xmm2, %xmm45391; SSE-64-NEXT:    cmpeqpd %xmm3, %xmm45392; SSE-64-NEXT:    cmpunordpd %xmm3, %xmm25393; SSE-64-NEXT:    orpd %xmm2, %xmm45394; SSE-64-NEXT:    andpd %xmm4, %xmm05395; SSE-64-NEXT:    andnpd %xmm1, %xmm45396; SSE-64-NEXT:    orpd %xmm4, %xmm05397; SSE-64-NEXT:    retq5398;5399; AVX-32-LABEL: test_v2f64_ueq_s:5400; AVX-32:       # %bb.0:5401; AVX-32-NEXT:    pushl %ebp5402; AVX-32-NEXT:    movl %esp, %ebp5403; AVX-32-NEXT:    andl $-16, %esp5404; AVX-32-NEXT:    subl $16, %esp5405; AVX-32-NEXT:    vcmpeq_uspd 8(%ebp), %xmm2, %xmm25406; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05407; AVX-32-NEXT:    movl %ebp, %esp5408; AVX-32-NEXT:    popl %ebp5409; AVX-32-NEXT:    retl5410;5411; AVX-64-LABEL: test_v2f64_ueq_s:5412; AVX-64:       # %bb.0:5413; AVX-64-NEXT:    vcmpeq_uspd %xmm3, %xmm2, %xmm25414; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05415; AVX-64-NEXT:    retq5416;5417; AVX512-32-LABEL: test_v2f64_ueq_s:5418; AVX512-32:       # %bb.0:5419; AVX512-32-NEXT:    pushl %ebp5420; AVX512-32-NEXT:    movl %esp, %ebp5421; AVX512-32-NEXT:    andl $-16, %esp5422; AVX512-32-NEXT:    subl $16, %esp5423; AVX512-32-NEXT:    vcmpeq_uspd 8(%ebp), %xmm2, %k15424; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}5425; AVX512-32-NEXT:    movl %ebp, %esp5426; AVX512-32-NEXT:    popl %ebp5427; AVX512-32-NEXT:    retl5428;5429; AVX512-64-LABEL: test_v2f64_ueq_s:5430; AVX512-64:       # %bb.0:5431; AVX512-64-NEXT:    vcmpeq_uspd %xmm3, %xmm2, %k15432; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}5433; AVX512-64-NEXT:    retq5434;5435; AVX512F-32-LABEL: test_v2f64_ueq_s:5436; AVX512F-32:       # %bb.0:5437; AVX512F-32-NEXT:    pushl %ebp5438; AVX512F-32-NEXT:    movl %esp, %ebp5439; AVX512F-32-NEXT:    andl $-16, %esp5440; AVX512F-32-NEXT:    subl $16, %esp5441; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15442; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm05443; AVX512F-32-NEXT:    vcmpeq_uspd 8(%ebp), %xmm2, %xmm25444; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k15445; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}5446; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm05447; AVX512F-32-NEXT:    movl %ebp, %esp5448; AVX512F-32-NEXT:    popl %ebp5449; AVX512F-32-NEXT:    vzeroupper5450; AVX512F-32-NEXT:    retl5451;5452; AVX512F-64-LABEL: test_v2f64_ueq_s:5453; AVX512F-64:       # %bb.0:5454; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15455; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm05456; AVX512F-64-NEXT:    vcmpeq_uspd %xmm3, %xmm2, %xmm25457; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k15458; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}5459; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm05460; AVX512F-64-NEXT:    vzeroupper5461; AVX512F-64-NEXT:    retq5462  %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(5463                                               <2 x double> %f1, <2 x double> %f2, metadata !"ueq",5464                                               metadata !"fpexcept.strict") #05465  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b5466  ret <2 x i64> %res5467}5468 5469define <2 x i64> @test_v2f64_ugt_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {5470; SSE-32-LABEL: test_v2f64_ugt_s:5471; SSE-32:       # %bb.0:5472; SSE-32-NEXT:    pushl %ebp5473; SSE-32-NEXT:    movl %esp, %ebp5474; SSE-32-NEXT:    andl $-16, %esp5475; SSE-32-NEXT:    subl $16, %esp5476; SSE-32-NEXT:    cmpnlepd 8(%ebp), %xmm25477; SSE-32-NEXT:    andpd %xmm2, %xmm05478; SSE-32-NEXT:    andnpd %xmm1, %xmm25479; SSE-32-NEXT:    orpd %xmm2, %xmm05480; SSE-32-NEXT:    movl %ebp, %esp5481; SSE-32-NEXT:    popl %ebp5482; SSE-32-NEXT:    retl5483;5484; SSE-64-LABEL: test_v2f64_ugt_s:5485; SSE-64:       # %bb.0:5486; SSE-64-NEXT:    cmpnlepd %xmm3, %xmm25487; SSE-64-NEXT:    andpd %xmm2, %xmm05488; SSE-64-NEXT:    andnpd %xmm1, %xmm25489; SSE-64-NEXT:    orpd %xmm2, %xmm05490; SSE-64-NEXT:    retq5491;5492; AVX-32-LABEL: test_v2f64_ugt_s:5493; AVX-32:       # %bb.0:5494; AVX-32-NEXT:    pushl %ebp5495; AVX-32-NEXT:    movl %esp, %ebp5496; AVX-32-NEXT:    andl $-16, %esp5497; AVX-32-NEXT:    subl $16, %esp5498; AVX-32-NEXT:    vcmpnlepd 8(%ebp), %xmm2, %xmm25499; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05500; AVX-32-NEXT:    movl %ebp, %esp5501; AVX-32-NEXT:    popl %ebp5502; AVX-32-NEXT:    retl5503;5504; AVX-64-LABEL: test_v2f64_ugt_s:5505; AVX-64:       # %bb.0:5506; AVX-64-NEXT:    vcmpnlepd %xmm3, %xmm2, %xmm25507; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05508; AVX-64-NEXT:    retq5509;5510; AVX512-32-LABEL: test_v2f64_ugt_s:5511; AVX512-32:       # %bb.0:5512; AVX512-32-NEXT:    pushl %ebp5513; AVX512-32-NEXT:    movl %esp, %ebp5514; AVX512-32-NEXT:    andl $-16, %esp5515; AVX512-32-NEXT:    subl $16, %esp5516; AVX512-32-NEXT:    vcmpnlepd 8(%ebp), %xmm2, %k15517; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}5518; AVX512-32-NEXT:    movl %ebp, %esp5519; AVX512-32-NEXT:    popl %ebp5520; AVX512-32-NEXT:    retl5521;5522; AVX512-64-LABEL: test_v2f64_ugt_s:5523; AVX512-64:       # %bb.0:5524; AVX512-64-NEXT:    vcmpnlepd %xmm3, %xmm2, %k15525; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}5526; AVX512-64-NEXT:    retq5527;5528; AVX512F-32-LABEL: test_v2f64_ugt_s:5529; AVX512F-32:       # %bb.0:5530; AVX512F-32-NEXT:    pushl %ebp5531; AVX512F-32-NEXT:    movl %esp, %ebp5532; AVX512F-32-NEXT:    andl $-16, %esp5533; AVX512F-32-NEXT:    subl $16, %esp5534; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15535; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm05536; AVX512F-32-NEXT:    vcmpnlepd 8(%ebp), %xmm2, %xmm25537; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k15538; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}5539; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm05540; AVX512F-32-NEXT:    movl %ebp, %esp5541; AVX512F-32-NEXT:    popl %ebp5542; AVX512F-32-NEXT:    vzeroupper5543; AVX512F-32-NEXT:    retl5544;5545; AVX512F-64-LABEL: test_v2f64_ugt_s:5546; AVX512F-64:       # %bb.0:5547; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15548; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm05549; AVX512F-64-NEXT:    vcmpnlepd %xmm3, %xmm2, %xmm25550; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k15551; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}5552; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm05553; AVX512F-64-NEXT:    vzeroupper5554; AVX512F-64-NEXT:    retq5555  %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(5556                                               <2 x double> %f1, <2 x double> %f2, metadata !"ugt",5557                                               metadata !"fpexcept.strict") #05558  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b5559  ret <2 x i64> %res5560}5561 5562define <2 x i64> @test_v2f64_uge_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {5563; SSE-32-LABEL: test_v2f64_uge_s:5564; SSE-32:       # %bb.0:5565; SSE-32-NEXT:    pushl %ebp5566; SSE-32-NEXT:    movl %esp, %ebp5567; SSE-32-NEXT:    andl $-16, %esp5568; SSE-32-NEXT:    subl $16, %esp5569; SSE-32-NEXT:    cmpnltpd 8(%ebp), %xmm25570; SSE-32-NEXT:    andpd %xmm2, %xmm05571; SSE-32-NEXT:    andnpd %xmm1, %xmm25572; SSE-32-NEXT:    orpd %xmm2, %xmm05573; SSE-32-NEXT:    movl %ebp, %esp5574; SSE-32-NEXT:    popl %ebp5575; SSE-32-NEXT:    retl5576;5577; SSE-64-LABEL: test_v2f64_uge_s:5578; SSE-64:       # %bb.0:5579; SSE-64-NEXT:    cmpnltpd %xmm3, %xmm25580; SSE-64-NEXT:    andpd %xmm2, %xmm05581; SSE-64-NEXT:    andnpd %xmm1, %xmm25582; SSE-64-NEXT:    orpd %xmm2, %xmm05583; SSE-64-NEXT:    retq5584;5585; AVX-32-LABEL: test_v2f64_uge_s:5586; AVX-32:       # %bb.0:5587; AVX-32-NEXT:    pushl %ebp5588; AVX-32-NEXT:    movl %esp, %ebp5589; AVX-32-NEXT:    andl $-16, %esp5590; AVX-32-NEXT:    subl $16, %esp5591; AVX-32-NEXT:    vcmpnltpd 8(%ebp), %xmm2, %xmm25592; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05593; AVX-32-NEXT:    movl %ebp, %esp5594; AVX-32-NEXT:    popl %ebp5595; AVX-32-NEXT:    retl5596;5597; AVX-64-LABEL: test_v2f64_uge_s:5598; AVX-64:       # %bb.0:5599; AVX-64-NEXT:    vcmpnltpd %xmm3, %xmm2, %xmm25600; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05601; AVX-64-NEXT:    retq5602;5603; AVX512-32-LABEL: test_v2f64_uge_s:5604; AVX512-32:       # %bb.0:5605; AVX512-32-NEXT:    pushl %ebp5606; AVX512-32-NEXT:    movl %esp, %ebp5607; AVX512-32-NEXT:    andl $-16, %esp5608; AVX512-32-NEXT:    subl $16, %esp5609; AVX512-32-NEXT:    vcmpnltpd 8(%ebp), %xmm2, %k15610; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}5611; AVX512-32-NEXT:    movl %ebp, %esp5612; AVX512-32-NEXT:    popl %ebp5613; AVX512-32-NEXT:    retl5614;5615; AVX512-64-LABEL: test_v2f64_uge_s:5616; AVX512-64:       # %bb.0:5617; AVX512-64-NEXT:    vcmpnltpd %xmm3, %xmm2, %k15618; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}5619; AVX512-64-NEXT:    retq5620;5621; AVX512F-32-LABEL: test_v2f64_uge_s:5622; AVX512F-32:       # %bb.0:5623; AVX512F-32-NEXT:    pushl %ebp5624; AVX512F-32-NEXT:    movl %esp, %ebp5625; AVX512F-32-NEXT:    andl $-16, %esp5626; AVX512F-32-NEXT:    subl $16, %esp5627; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15628; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm05629; AVX512F-32-NEXT:    vcmpnltpd 8(%ebp), %xmm2, %xmm25630; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k15631; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}5632; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm05633; AVX512F-32-NEXT:    movl %ebp, %esp5634; AVX512F-32-NEXT:    popl %ebp5635; AVX512F-32-NEXT:    vzeroupper5636; AVX512F-32-NEXT:    retl5637;5638; AVX512F-64-LABEL: test_v2f64_uge_s:5639; AVX512F-64:       # %bb.0:5640; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15641; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm05642; AVX512F-64-NEXT:    vcmpnltpd %xmm3, %xmm2, %xmm25643; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k15644; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}5645; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm05646; AVX512F-64-NEXT:    vzeroupper5647; AVX512F-64-NEXT:    retq5648  %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(5649                                               <2 x double> %f1, <2 x double> %f2, metadata !"uge",5650                                               metadata !"fpexcept.strict") #05651  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b5652  ret <2 x i64> %res5653}5654 5655define <2 x i64> @test_v2f64_ult_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {5656; SSE-32-LABEL: test_v2f64_ult_s:5657; SSE-32:       # %bb.0:5658; SSE-32-NEXT:    pushl %ebp5659; SSE-32-NEXT:    movl %esp, %ebp5660; SSE-32-NEXT:    andl $-16, %esp5661; SSE-32-NEXT:    subl $16, %esp5662; SSE-32-NEXT:    movapd 8(%ebp), %xmm35663; SSE-32-NEXT:    cmpnlepd %xmm2, %xmm35664; SSE-32-NEXT:    andpd %xmm3, %xmm05665; SSE-32-NEXT:    andnpd %xmm1, %xmm35666; SSE-32-NEXT:    orpd %xmm3, %xmm05667; SSE-32-NEXT:    movl %ebp, %esp5668; SSE-32-NEXT:    popl %ebp5669; SSE-32-NEXT:    retl5670;5671; SSE-64-LABEL: test_v2f64_ult_s:5672; SSE-64:       # %bb.0:5673; SSE-64-NEXT:    cmpnlepd %xmm2, %xmm35674; SSE-64-NEXT:    andpd %xmm3, %xmm05675; SSE-64-NEXT:    andnpd %xmm1, %xmm35676; SSE-64-NEXT:    orpd %xmm3, %xmm05677; SSE-64-NEXT:    retq5678;5679; AVX-32-LABEL: test_v2f64_ult_s:5680; AVX-32:       # %bb.0:5681; AVX-32-NEXT:    pushl %ebp5682; AVX-32-NEXT:    movl %esp, %ebp5683; AVX-32-NEXT:    andl $-16, %esp5684; AVX-32-NEXT:    subl $16, %esp5685; AVX-32-NEXT:    vmovapd 8(%ebp), %xmm35686; AVX-32-NEXT:    vcmpnlepd %xmm2, %xmm3, %xmm25687; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05688; AVX-32-NEXT:    movl %ebp, %esp5689; AVX-32-NEXT:    popl %ebp5690; AVX-32-NEXT:    retl5691;5692; AVX-64-LABEL: test_v2f64_ult_s:5693; AVX-64:       # %bb.0:5694; AVX-64-NEXT:    vcmpnlepd %xmm2, %xmm3, %xmm25695; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05696; AVX-64-NEXT:    retq5697;5698; AVX512-32-LABEL: test_v2f64_ult_s:5699; AVX512-32:       # %bb.0:5700; AVX512-32-NEXT:    pushl %ebp5701; AVX512-32-NEXT:    movl %esp, %ebp5702; AVX512-32-NEXT:    andl $-16, %esp5703; AVX512-32-NEXT:    subl $16, %esp5704; AVX512-32-NEXT:    vcmpngepd 8(%ebp), %xmm2, %k15705; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}5706; AVX512-32-NEXT:    movl %ebp, %esp5707; AVX512-32-NEXT:    popl %ebp5708; AVX512-32-NEXT:    retl5709;5710; AVX512-64-LABEL: test_v2f64_ult_s:5711; AVX512-64:       # %bb.0:5712; AVX512-64-NEXT:    vcmpnlepd %xmm2, %xmm3, %k15713; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}5714; AVX512-64-NEXT:    retq5715;5716; AVX512F-32-LABEL: test_v2f64_ult_s:5717; AVX512F-32:       # %bb.0:5718; AVX512F-32-NEXT:    pushl %ebp5719; AVX512F-32-NEXT:    movl %esp, %ebp5720; AVX512F-32-NEXT:    andl $-16, %esp5721; AVX512F-32-NEXT:    subl $16, %esp5722; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15723; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm05724; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm35725; AVX512F-32-NEXT:    vcmpnlepd %xmm2, %xmm3, %xmm25726; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k15727; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}5728; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm05729; AVX512F-32-NEXT:    movl %ebp, %esp5730; AVX512F-32-NEXT:    popl %ebp5731; AVX512F-32-NEXT:    vzeroupper5732; AVX512F-32-NEXT:    retl5733;5734; AVX512F-64-LABEL: test_v2f64_ult_s:5735; AVX512F-64:       # %bb.0:5736; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15737; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm05738; AVX512F-64-NEXT:    vcmpnlepd %xmm2, %xmm3, %xmm25739; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k15740; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}5741; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm05742; AVX512F-64-NEXT:    vzeroupper5743; AVX512F-64-NEXT:    retq5744  %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(5745                                               <2 x double> %f1, <2 x double> %f2, metadata !"ult",5746                                               metadata !"fpexcept.strict") #05747  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b5748  ret <2 x i64> %res5749}5750 5751define <2 x i64> @test_v2f64_ule_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {5752; SSE-32-LABEL: test_v2f64_ule_s:5753; SSE-32:       # %bb.0:5754; SSE-32-NEXT:    pushl %ebp5755; SSE-32-NEXT:    movl %esp, %ebp5756; SSE-32-NEXT:    andl $-16, %esp5757; SSE-32-NEXT:    subl $16, %esp5758; SSE-32-NEXT:    movapd 8(%ebp), %xmm35759; SSE-32-NEXT:    cmpnltpd %xmm2, %xmm35760; SSE-32-NEXT:    andpd %xmm3, %xmm05761; SSE-32-NEXT:    andnpd %xmm1, %xmm35762; SSE-32-NEXT:    orpd %xmm3, %xmm05763; SSE-32-NEXT:    movl %ebp, %esp5764; SSE-32-NEXT:    popl %ebp5765; SSE-32-NEXT:    retl5766;5767; SSE-64-LABEL: test_v2f64_ule_s:5768; SSE-64:       # %bb.0:5769; SSE-64-NEXT:    cmpnltpd %xmm2, %xmm35770; SSE-64-NEXT:    andpd %xmm3, %xmm05771; SSE-64-NEXT:    andnpd %xmm1, %xmm35772; SSE-64-NEXT:    orpd %xmm3, %xmm05773; SSE-64-NEXT:    retq5774;5775; AVX-32-LABEL: test_v2f64_ule_s:5776; AVX-32:       # %bb.0:5777; AVX-32-NEXT:    pushl %ebp5778; AVX-32-NEXT:    movl %esp, %ebp5779; AVX-32-NEXT:    andl $-16, %esp5780; AVX-32-NEXT:    subl $16, %esp5781; AVX-32-NEXT:    vmovapd 8(%ebp), %xmm35782; AVX-32-NEXT:    vcmpnltpd %xmm2, %xmm3, %xmm25783; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05784; AVX-32-NEXT:    movl %ebp, %esp5785; AVX-32-NEXT:    popl %ebp5786; AVX-32-NEXT:    retl5787;5788; AVX-64-LABEL: test_v2f64_ule_s:5789; AVX-64:       # %bb.0:5790; AVX-64-NEXT:    vcmpnltpd %xmm2, %xmm3, %xmm25791; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05792; AVX-64-NEXT:    retq5793;5794; AVX512-32-LABEL: test_v2f64_ule_s:5795; AVX512-32:       # %bb.0:5796; AVX512-32-NEXT:    pushl %ebp5797; AVX512-32-NEXT:    movl %esp, %ebp5798; AVX512-32-NEXT:    andl $-16, %esp5799; AVX512-32-NEXT:    subl $16, %esp5800; AVX512-32-NEXT:    vcmpngtpd 8(%ebp), %xmm2, %k15801; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}5802; AVX512-32-NEXT:    movl %ebp, %esp5803; AVX512-32-NEXT:    popl %ebp5804; AVX512-32-NEXT:    retl5805;5806; AVX512-64-LABEL: test_v2f64_ule_s:5807; AVX512-64:       # %bb.0:5808; AVX512-64-NEXT:    vcmpnltpd %xmm2, %xmm3, %k15809; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}5810; AVX512-64-NEXT:    retq5811;5812; AVX512F-32-LABEL: test_v2f64_ule_s:5813; AVX512F-32:       # %bb.0:5814; AVX512F-32-NEXT:    pushl %ebp5815; AVX512F-32-NEXT:    movl %esp, %ebp5816; AVX512F-32-NEXT:    andl $-16, %esp5817; AVX512F-32-NEXT:    subl $16, %esp5818; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15819; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm05820; AVX512F-32-NEXT:    vmovapd 8(%ebp), %xmm35821; AVX512F-32-NEXT:    vcmpnltpd %xmm2, %xmm3, %xmm25822; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k15823; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}5824; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm05825; AVX512F-32-NEXT:    movl %ebp, %esp5826; AVX512F-32-NEXT:    popl %ebp5827; AVX512F-32-NEXT:    vzeroupper5828; AVX512F-32-NEXT:    retl5829;5830; AVX512F-64-LABEL: test_v2f64_ule_s:5831; AVX512F-64:       # %bb.0:5832; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15833; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm05834; AVX512F-64-NEXT:    vcmpnltpd %xmm2, %xmm3, %xmm25835; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k15836; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}5837; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm05838; AVX512F-64-NEXT:    vzeroupper5839; AVX512F-64-NEXT:    retq5840  %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(5841                                               <2 x double> %f1, <2 x double> %f2, metadata !"ule",5842                                               metadata !"fpexcept.strict") #05843  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b5844  ret <2 x i64> %res5845}5846 5847define <2 x i64> @test_v2f64_une_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {5848; SSE-32-LABEL: test_v2f64_une_s:5849; SSE-32:       # %bb.0:5850; SSE-32-NEXT:    pushl %ebp5851; SSE-32-NEXT:    movl %esp, %ebp5852; SSE-32-NEXT:    andl $-16, %esp5853; SSE-32-NEXT:    subl $16, %esp5854; SSE-32-NEXT:    movapd 8(%ebp), %xmm35855; SSE-32-NEXT:    movapd %xmm2, %xmm45856; SSE-32-NEXT:    cmpltpd %xmm3, %xmm45857; SSE-32-NEXT:    cmpneqpd %xmm2, %xmm35858; SSE-32-NEXT:    andpd %xmm3, %xmm05859; SSE-32-NEXT:    andnpd %xmm1, %xmm35860; SSE-32-NEXT:    orpd %xmm3, %xmm05861; SSE-32-NEXT:    movl %ebp, %esp5862; SSE-32-NEXT:    popl %ebp5863; SSE-32-NEXT:    retl5864;5865; SSE-64-LABEL: test_v2f64_une_s:5866; SSE-64:       # %bb.0:5867; SSE-64-NEXT:    movapd %xmm2, %xmm45868; SSE-64-NEXT:    cmpltpd %xmm3, %xmm45869; SSE-64-NEXT:    cmpneqpd %xmm3, %xmm25870; SSE-64-NEXT:    andpd %xmm2, %xmm05871; SSE-64-NEXT:    andnpd %xmm1, %xmm25872; SSE-64-NEXT:    orpd %xmm2, %xmm05873; SSE-64-NEXT:    retq5874;5875; AVX-32-LABEL: test_v2f64_une_s:5876; AVX-32:       # %bb.0:5877; AVX-32-NEXT:    pushl %ebp5878; AVX-32-NEXT:    movl %esp, %ebp5879; AVX-32-NEXT:    andl $-16, %esp5880; AVX-32-NEXT:    subl $16, %esp5881; AVX-32-NEXT:    vcmpneq_uspd 8(%ebp), %xmm2, %xmm25882; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05883; AVX-32-NEXT:    movl %ebp, %esp5884; AVX-32-NEXT:    popl %ebp5885; AVX-32-NEXT:    retl5886;5887; AVX-64-LABEL: test_v2f64_une_s:5888; AVX-64:       # %bb.0:5889; AVX-64-NEXT:    vcmpneq_uspd %xmm3, %xmm2, %xmm25890; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05891; AVX-64-NEXT:    retq5892;5893; AVX512-32-LABEL: test_v2f64_une_s:5894; AVX512-32:       # %bb.0:5895; AVX512-32-NEXT:    pushl %ebp5896; AVX512-32-NEXT:    movl %esp, %ebp5897; AVX512-32-NEXT:    andl $-16, %esp5898; AVX512-32-NEXT:    subl $16, %esp5899; AVX512-32-NEXT:    vcmpneq_uspd 8(%ebp), %xmm2, %k15900; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}5901; AVX512-32-NEXT:    movl %ebp, %esp5902; AVX512-32-NEXT:    popl %ebp5903; AVX512-32-NEXT:    retl5904;5905; AVX512-64-LABEL: test_v2f64_une_s:5906; AVX512-64:       # %bb.0:5907; AVX512-64-NEXT:    vcmpneq_uspd %xmm3, %xmm2, %k15908; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}5909; AVX512-64-NEXT:    retq5910;5911; AVX512F-32-LABEL: test_v2f64_une_s:5912; AVX512F-32:       # %bb.0:5913; AVX512F-32-NEXT:    pushl %ebp5914; AVX512F-32-NEXT:    movl %esp, %ebp5915; AVX512F-32-NEXT:    andl $-16, %esp5916; AVX512F-32-NEXT:    subl $16, %esp5917; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15918; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm05919; AVX512F-32-NEXT:    vcmpneq_uspd 8(%ebp), %xmm2, %xmm25920; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k15921; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}5922; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm05923; AVX512F-32-NEXT:    movl %ebp, %esp5924; AVX512F-32-NEXT:    popl %ebp5925; AVX512F-32-NEXT:    vzeroupper5926; AVX512F-32-NEXT:    retl5927;5928; AVX512F-64-LABEL: test_v2f64_une_s:5929; AVX512F-64:       # %bb.0:5930; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm15931; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm05932; AVX512F-64-NEXT:    vcmpneq_uspd %xmm3, %xmm2, %xmm25933; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k15934; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}5935; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm05936; AVX512F-64-NEXT:    vzeroupper5937; AVX512F-64-NEXT:    retq5938  %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(5939                                               <2 x double> %f1, <2 x double> %f2, metadata !"une",5940                                               metadata !"fpexcept.strict") #05941  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b5942  ret <2 x i64> %res5943}5944 5945define <2 x i64> @test_v2f64_uno_s(<2 x i64> %a, <2 x i64> %b, <2 x double> %f1, <2 x double> %f2) #0 {5946; SSE-32-LABEL: test_v2f64_uno_s:5947; SSE-32:       # %bb.0:5948; SSE-32-NEXT:    pushl %ebp5949; SSE-32-NEXT:    movl %esp, %ebp5950; SSE-32-NEXT:    andl $-16, %esp5951; SSE-32-NEXT:    subl $16, %esp5952; SSE-32-NEXT:    movapd 8(%ebp), %xmm35953; SSE-32-NEXT:    movapd %xmm2, %xmm45954; SSE-32-NEXT:    cmpltpd %xmm3, %xmm45955; SSE-32-NEXT:    cmpunordpd %xmm2, %xmm35956; SSE-32-NEXT:    andpd %xmm3, %xmm05957; SSE-32-NEXT:    andnpd %xmm1, %xmm35958; SSE-32-NEXT:    orpd %xmm3, %xmm05959; SSE-32-NEXT:    movl %ebp, %esp5960; SSE-32-NEXT:    popl %ebp5961; SSE-32-NEXT:    retl5962;5963; SSE-64-LABEL: test_v2f64_uno_s:5964; SSE-64:       # %bb.0:5965; SSE-64-NEXT:    movapd %xmm2, %xmm45966; SSE-64-NEXT:    cmpltpd %xmm3, %xmm45967; SSE-64-NEXT:    cmpunordpd %xmm3, %xmm25968; SSE-64-NEXT:    andpd %xmm2, %xmm05969; SSE-64-NEXT:    andnpd %xmm1, %xmm25970; SSE-64-NEXT:    orpd %xmm2, %xmm05971; SSE-64-NEXT:    retq5972;5973; AVX-32-LABEL: test_v2f64_uno_s:5974; AVX-32:       # %bb.0:5975; AVX-32-NEXT:    pushl %ebp5976; AVX-32-NEXT:    movl %esp, %ebp5977; AVX-32-NEXT:    andl $-16, %esp5978; AVX-32-NEXT:    subl $16, %esp5979; AVX-32-NEXT:    vcmpunord_spd 8(%ebp), %xmm2, %xmm25980; AVX-32-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05981; AVX-32-NEXT:    movl %ebp, %esp5982; AVX-32-NEXT:    popl %ebp5983; AVX-32-NEXT:    retl5984;5985; AVX-64-LABEL: test_v2f64_uno_s:5986; AVX-64:       # %bb.0:5987; AVX-64-NEXT:    vcmpunord_spd %xmm3, %xmm2, %xmm25988; AVX-64-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm05989; AVX-64-NEXT:    retq5990;5991; AVX512-32-LABEL: test_v2f64_uno_s:5992; AVX512-32:       # %bb.0:5993; AVX512-32-NEXT:    pushl %ebp5994; AVX512-32-NEXT:    movl %esp, %ebp5995; AVX512-32-NEXT:    andl $-16, %esp5996; AVX512-32-NEXT:    subl $16, %esp5997; AVX512-32-NEXT:    vcmpunord_spd 8(%ebp), %xmm2, %k15998; AVX512-32-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}5999; AVX512-32-NEXT:    movl %ebp, %esp6000; AVX512-32-NEXT:    popl %ebp6001; AVX512-32-NEXT:    retl6002;6003; AVX512-64-LABEL: test_v2f64_uno_s:6004; AVX512-64:       # %bb.0:6005; AVX512-64-NEXT:    vcmpunord_spd %xmm3, %xmm2, %k16006; AVX512-64-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}6007; AVX512-64-NEXT:    retq6008;6009; AVX512F-32-LABEL: test_v2f64_uno_s:6010; AVX512F-32:       # %bb.0:6011; AVX512F-32-NEXT:    pushl %ebp6012; AVX512F-32-NEXT:    movl %esp, %ebp6013; AVX512F-32-NEXT:    andl $-16, %esp6014; AVX512F-32-NEXT:    subl $16, %esp6015; AVX512F-32-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm16016; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm06017; AVX512F-32-NEXT:    vcmpunord_spd 8(%ebp), %xmm2, %xmm26018; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k16019; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}6020; AVX512F-32-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm06021; AVX512F-32-NEXT:    movl %ebp, %esp6022; AVX512F-32-NEXT:    popl %ebp6023; AVX512F-32-NEXT:    vzeroupper6024; AVX512F-32-NEXT:    retl6025;6026; AVX512F-64-LABEL: test_v2f64_uno_s:6027; AVX512F-64:       # %bb.0:6028; AVX512F-64-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm16029; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm06030; AVX512F-64-NEXT:    vcmpunord_spd %xmm3, %xmm2, %xmm26031; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k16032; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}6033; AVX512F-64-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm06034; AVX512F-64-NEXT:    vzeroupper6035; AVX512F-64-NEXT:    retq6036  %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(6037                                               <2 x double> %f1, <2 x double> %f2, metadata !"uno",6038                                               metadata !"fpexcept.strict") #06039  %res = select <2 x i1> %cond, <2 x i64> %a, <2 x i64> %b6040  ret <2 x i64> %res6041}6042 6043define <2 x double> @test_v4f64_ogt2_s(<2 x double> %a, <2 x double> %b) #0 {6044; SSE-32-LABEL: test_v4f64_ogt2_s:6045; SSE-32:       # %bb.0:6046; SSE-32-NEXT:    maxpd %xmm1, %xmm06047; SSE-32-NEXT:    retl6048;6049; SSE-64-LABEL: test_v4f64_ogt2_s:6050; SSE-64:       # %bb.0:6051; SSE-64-NEXT:    maxpd %xmm1, %xmm06052; SSE-64-NEXT:    retq6053;6054; AVX-32-LABEL: test_v4f64_ogt2_s:6055; AVX-32:       # %bb.0:6056; AVX-32-NEXT:    vmaxpd %xmm1, %xmm0, %xmm06057; AVX-32-NEXT:    retl6058;6059; AVX-64-LABEL: test_v4f64_ogt2_s:6060; AVX-64:       # %bb.0:6061; AVX-64-NEXT:    vmaxpd %xmm1, %xmm0, %xmm06062; AVX-64-NEXT:    retq6063;6064; AVX512-32-LABEL: test_v4f64_ogt2_s:6065; AVX512-32:       # %bb.0:6066; AVX512-32-NEXT:    vmaxpd %xmm1, %xmm0, %xmm06067; AVX512-32-NEXT:    retl6068;6069; AVX512-64-LABEL: test_v4f64_ogt2_s:6070; AVX512-64:       # %bb.0:6071; AVX512-64-NEXT:    vmaxpd %xmm1, %xmm0, %xmm06072; AVX512-64-NEXT:    retq6073;6074; AVX512F-32-LABEL: test_v4f64_ogt2_s:6075; AVX512F-32:       # %bb.0:6076; AVX512F-32-NEXT:    vmaxpd %xmm1, %xmm0, %xmm06077; AVX512F-32-NEXT:    retl6078;6079; AVX512F-64-LABEL: test_v4f64_ogt2_s:6080; AVX512F-64:       # %bb.0:6081; AVX512F-64-NEXT:    vmaxpd %xmm1, %xmm0, %xmm06082; AVX512F-64-NEXT:    retq6083  %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(6084                                               <2 x double> %a, <2 x double> %b, metadata !"ogt",6085                                               metadata !"fpexcept.strict") #06086  %res = select <2 x i1> %cond, <2 x double> %a, <2 x double> %b6087  ret <2 x double> %res6088}6089 6090define <2 x float> @test_v2f32_ogt2_s(<2 x float> %a, <2 x float> %b) #0 {6091; SSE-32-LABEL: test_v2f32_ogt2_s:6092; SSE-32:       # %bb.0:6093; SSE-32-NEXT:    maxps %xmm1, %xmm06094; SSE-32-NEXT:    retl6095;6096; SSE-64-LABEL: test_v2f32_ogt2_s:6097; SSE-64:       # %bb.0:6098; SSE-64-NEXT:    maxps %xmm1, %xmm06099; SSE-64-NEXT:    retq6100;6101; AVX-32-LABEL: test_v2f32_ogt2_s:6102; AVX-32:       # %bb.0:6103; AVX-32-NEXT:    vmaxps %xmm1, %xmm0, %xmm06104; AVX-32-NEXT:    retl6105;6106; AVX-64-LABEL: test_v2f32_ogt2_s:6107; AVX-64:       # %bb.0:6108; AVX-64-NEXT:    vmaxps %xmm1, %xmm0, %xmm06109; AVX-64-NEXT:    retq6110;6111; AVX512-32-LABEL: test_v2f32_ogt2_s:6112; AVX512-32:       # %bb.0:6113; AVX512-32-NEXT:    vmaxps %xmm1, %xmm0, %xmm06114; AVX512-32-NEXT:    retl6115;6116; AVX512-64-LABEL: test_v2f32_ogt2_s:6117; AVX512-64:       # %bb.0:6118; AVX512-64-NEXT:    vmaxps %xmm1, %xmm0, %xmm06119; AVX512-64-NEXT:    retq6120;6121; AVX512F-32-LABEL: test_v2f32_ogt2_s:6122; AVX512F-32:       # %bb.0:6123; AVX512F-32-NEXT:    vmaxps %xmm1, %xmm0, %xmm06124; AVX512F-32-NEXT:    retl6125;6126; AVX512F-64-LABEL: test_v2f32_ogt2_s:6127; AVX512F-64:       # %bb.0:6128; AVX512F-64-NEXT:    vmaxps %xmm1, %xmm0, %xmm06129; AVX512F-64-NEXT:    retq6130  %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(6131                                               <2 x float> %a, <2 x float> %b, metadata !"ogt",6132                                               metadata !"fpexcept.strict")6133  %res = select <2 x i1> %cond, <2 x float> %a, <2 x float> %b6134  ret <2 x float> %res6135}6136 6137define <2 x float> @test_v2f32_ule2_s(<2 x float> %a, <2 x float> %b) #0 {6138; SSE-32-LABEL: test_v2f32_ule2_s:6139; SSE-32:       # %bb.0:6140; SSE-32-NEXT:    minps %xmm0, %xmm16141; SSE-32-NEXT:    movaps %xmm1, %xmm06142; SSE-32-NEXT:    retl6143;6144; SSE-64-LABEL: test_v2f32_ule2_s:6145; SSE-64:       # %bb.0:6146; SSE-64-NEXT:    minps %xmm0, %xmm16147; SSE-64-NEXT:    movaps %xmm1, %xmm06148; SSE-64-NEXT:    retq6149;6150; AVX-32-LABEL: test_v2f32_ule2_s:6151; AVX-32:       # %bb.0:6152; AVX-32-NEXT:    vminps %xmm0, %xmm1, %xmm06153; AVX-32-NEXT:    retl6154;6155; AVX-64-LABEL: test_v2f32_ule2_s:6156; AVX-64:       # %bb.0:6157; AVX-64-NEXT:    vminps %xmm0, %xmm1, %xmm06158; AVX-64-NEXT:    retq6159;6160; AVX512-32-LABEL: test_v2f32_ule2_s:6161; AVX512-32:       # %bb.0:6162; AVX512-32-NEXT:    vminps %xmm0, %xmm1, %xmm06163; AVX512-32-NEXT:    retl6164;6165; AVX512-64-LABEL: test_v2f32_ule2_s:6166; AVX512-64:       # %bb.0:6167; AVX512-64-NEXT:    vminps %xmm0, %xmm1, %xmm06168; AVX512-64-NEXT:    retq6169;6170; AVX512F-32-LABEL: test_v2f32_ule2_s:6171; AVX512F-32:       # %bb.0:6172; AVX512F-32-NEXT:    vminps %xmm0, %xmm1, %xmm06173; AVX512F-32-NEXT:    retl6174;6175; AVX512F-64-LABEL: test_v2f32_ule2_s:6176; AVX512F-64:       # %bb.0:6177; AVX512F-64-NEXT:    vminps %xmm0, %xmm1, %xmm06178; AVX512F-64-NEXT:    retq6179  %cond = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(6180                                               <2 x float> %a, <2 x float> %b, metadata !"ule",6181                                               metadata !"fpexcept.strict")6182  %res = select <2 x i1> %cond, <2 x float> %a, <2 x float> %b6183  ret <2 x float> %res6184}6185 6186attributes #0 = { strictfp nounwind }6187 6188declare <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float>, <4 x float>, metadata, metadata)6189declare <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double>, <2 x double>, metadata, metadata)6190declare <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float>, <2 x float>, metadata, metadata)6191declare <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float>, <4 x float>, metadata, metadata)6192declare <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double>, <2 x double>, metadata, metadata)6193