brintos

brintos / llvm-project-archived public Read only

0
0
Text · 151.6 KiB · aa16c7c Raw
3911 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx -O3 | FileCheck %s --check-prefix=AVX-323; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx -O3 | FileCheck %s --check-prefix=AVX-644; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512f -mattr=+avx512vl -O3 | FileCheck %s --check-prefix=AVX512-325; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f -mattr=+avx512vl -O3 | FileCheck %s --check-prefix=AVX512-646; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512f -O3 | FileCheck %s --check-prefix=AVX512F-327; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f -O3 | FileCheck %s --check-prefix=AVX512F-648 9define <8 x i32> @test_v8f32_oeq_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {10; AVX-32-LABEL: test_v8f32_oeq_q:11; AVX-32:       # %bb.0:12; AVX-32-NEXT:    pushl %ebp13; AVX-32-NEXT:    movl %esp, %ebp14; AVX-32-NEXT:    andl $-32, %esp15; AVX-32-NEXT:    subl $32, %esp16; AVX-32-NEXT:    vcmpeqps 8(%ebp), %ymm2, %ymm217; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm018; AVX-32-NEXT:    movl %ebp, %esp19; AVX-32-NEXT:    popl %ebp20; AVX-32-NEXT:    retl21;22; AVX-64-LABEL: test_v8f32_oeq_q:23; AVX-64:       # %bb.0:24; AVX-64-NEXT:    vcmpeqps %ymm3, %ymm2, %ymm225; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm026; AVX-64-NEXT:    retq27;28; AVX512-32-LABEL: test_v8f32_oeq_q:29; AVX512-32:       # %bb.0:30; AVX512-32-NEXT:    pushl %ebp31; AVX512-32-NEXT:    movl %esp, %ebp32; AVX512-32-NEXT:    andl $-32, %esp33; AVX512-32-NEXT:    subl $32, %esp34; AVX512-32-NEXT:    vcmpeqps 8(%ebp), %ymm2, %k135; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}36; AVX512-32-NEXT:    movl %ebp, %esp37; AVX512-32-NEXT:    popl %ebp38; AVX512-32-NEXT:    retl39;40; AVX512-64-LABEL: test_v8f32_oeq_q:41; AVX512-64:       # %bb.0:42; AVX512-64-NEXT:    vcmpeqps %ymm3, %ymm2, %k143; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}44; AVX512-64-NEXT:    retq45;46; AVX512F-32-LABEL: test_v8f32_oeq_q:47; AVX512F-32:       # %bb.0:48; AVX512F-32-NEXT:    pushl %ebp49; AVX512F-32-NEXT:    movl %esp, %ebp50; AVX512F-32-NEXT:    andl $-32, %esp51; AVX512F-32-NEXT:    subl $32, %esp52; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm153; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm054; AVX512F-32-NEXT:    vcmpeqps 8(%ebp), %ymm2, %ymm255; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k156; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}57; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm058; AVX512F-32-NEXT:    movl %ebp, %esp59; AVX512F-32-NEXT:    popl %ebp60; AVX512F-32-NEXT:    retl61;62; AVX512F-64-LABEL: test_v8f32_oeq_q:63; AVX512F-64:       # %bb.0:64; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm165; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm066; AVX512F-64-NEXT:    vcmpeqps %ymm3, %ymm2, %ymm267; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k168; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}69; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm070; AVX512F-64-NEXT:    retq71  %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(72                                               <8 x float> %f1, <8 x float> %f2, metadata !"oeq",73                                               metadata !"fpexcept.strict") #074  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b75  ret <8 x i32> %res76}77 78define <8 x i32> @test_v8f32_ogt_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {79; AVX-32-LABEL: test_v8f32_ogt_q:80; AVX-32:       # %bb.0:81; AVX-32-NEXT:    pushl %ebp82; AVX-32-NEXT:    movl %esp, %ebp83; AVX-32-NEXT:    andl $-32, %esp84; AVX-32-NEXT:    subl $32, %esp85; AVX-32-NEXT:    vmovaps 8(%ebp), %ymm386; AVX-32-NEXT:    vcmplt_oqps %ymm2, %ymm3, %ymm287; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm088; AVX-32-NEXT:    movl %ebp, %esp89; AVX-32-NEXT:    popl %ebp90; AVX-32-NEXT:    retl91;92; AVX-64-LABEL: test_v8f32_ogt_q:93; AVX-64:       # %bb.0:94; AVX-64-NEXT:    vcmplt_oqps %ymm2, %ymm3, %ymm295; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm096; AVX-64-NEXT:    retq97;98; AVX512-32-LABEL: test_v8f32_ogt_q:99; AVX512-32:       # %bb.0:100; AVX512-32-NEXT:    pushl %ebp101; AVX512-32-NEXT:    movl %esp, %ebp102; AVX512-32-NEXT:    andl $-32, %esp103; AVX512-32-NEXT:    subl $32, %esp104; AVX512-32-NEXT:    vcmpgt_oqps 8(%ebp), %ymm2, %k1105; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}106; AVX512-32-NEXT:    movl %ebp, %esp107; AVX512-32-NEXT:    popl %ebp108; AVX512-32-NEXT:    retl109;110; AVX512-64-LABEL: test_v8f32_ogt_q:111; AVX512-64:       # %bb.0:112; AVX512-64-NEXT:    vcmplt_oqps %ymm2, %ymm3, %k1113; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}114; AVX512-64-NEXT:    retq115;116; AVX512F-32-LABEL: test_v8f32_ogt_q:117; AVX512F-32:       # %bb.0:118; AVX512F-32-NEXT:    pushl %ebp119; AVX512F-32-NEXT:    movl %esp, %ebp120; AVX512F-32-NEXT:    andl $-32, %esp121; AVX512F-32-NEXT:    subl $32, %esp122; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1123; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0124; AVX512F-32-NEXT:    vmovaps 8(%ebp), %ymm3125; AVX512F-32-NEXT:    vcmplt_oqps %ymm2, %ymm3, %ymm2126; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k1127; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}128; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0129; AVX512F-32-NEXT:    movl %ebp, %esp130; AVX512F-32-NEXT:    popl %ebp131; AVX512F-32-NEXT:    retl132;133; AVX512F-64-LABEL: test_v8f32_ogt_q:134; AVX512F-64:       # %bb.0:135; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1136; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0137; AVX512F-64-NEXT:    vcmplt_oqps %ymm2, %ymm3, %ymm2138; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k1139; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}140; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0141; AVX512F-64-NEXT:    retq142  %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(143                                               <8 x float> %f1, <8 x float> %f2, metadata !"ogt",144                                               metadata !"fpexcept.strict") #0145  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b146  ret <8 x i32> %res147}148 149define <8 x i32> @test_v8f32_oge_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {150; AVX-32-LABEL: test_v8f32_oge_q:151; AVX-32:       # %bb.0:152; AVX-32-NEXT:    pushl %ebp153; AVX-32-NEXT:    movl %esp, %ebp154; AVX-32-NEXT:    andl $-32, %esp155; AVX-32-NEXT:    subl $32, %esp156; AVX-32-NEXT:    vmovaps 8(%ebp), %ymm3157; AVX-32-NEXT:    vcmple_oqps %ymm2, %ymm3, %ymm2158; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0159; AVX-32-NEXT:    movl %ebp, %esp160; AVX-32-NEXT:    popl %ebp161; AVX-32-NEXT:    retl162;163; AVX-64-LABEL: test_v8f32_oge_q:164; AVX-64:       # %bb.0:165; AVX-64-NEXT:    vcmple_oqps %ymm2, %ymm3, %ymm2166; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0167; AVX-64-NEXT:    retq168;169; AVX512-32-LABEL: test_v8f32_oge_q:170; AVX512-32:       # %bb.0:171; AVX512-32-NEXT:    pushl %ebp172; AVX512-32-NEXT:    movl %esp, %ebp173; AVX512-32-NEXT:    andl $-32, %esp174; AVX512-32-NEXT:    subl $32, %esp175; AVX512-32-NEXT:    vcmpge_oqps 8(%ebp), %ymm2, %k1176; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}177; AVX512-32-NEXT:    movl %ebp, %esp178; AVX512-32-NEXT:    popl %ebp179; AVX512-32-NEXT:    retl180;181; AVX512-64-LABEL: test_v8f32_oge_q:182; AVX512-64:       # %bb.0:183; AVX512-64-NEXT:    vcmple_oqps %ymm2, %ymm3, %k1184; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}185; AVX512-64-NEXT:    retq186;187; AVX512F-32-LABEL: test_v8f32_oge_q:188; AVX512F-32:       # %bb.0:189; AVX512F-32-NEXT:    pushl %ebp190; AVX512F-32-NEXT:    movl %esp, %ebp191; AVX512F-32-NEXT:    andl $-32, %esp192; AVX512F-32-NEXT:    subl $32, %esp193; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1194; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0195; AVX512F-32-NEXT:    vmovaps 8(%ebp), %ymm3196; AVX512F-32-NEXT:    vcmple_oqps %ymm2, %ymm3, %ymm2197; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k1198; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}199; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0200; AVX512F-32-NEXT:    movl %ebp, %esp201; AVX512F-32-NEXT:    popl %ebp202; AVX512F-32-NEXT:    retl203;204; AVX512F-64-LABEL: test_v8f32_oge_q:205; AVX512F-64:       # %bb.0:206; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1207; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0208; AVX512F-64-NEXT:    vcmple_oqps %ymm2, %ymm3, %ymm2209; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k1210; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}211; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0212; AVX512F-64-NEXT:    retq213  %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(214                                               <8 x float> %f1, <8 x float> %f2, metadata !"oge",215                                               metadata !"fpexcept.strict") #0216  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b217  ret <8 x i32> %res218}219 220define <8 x i32> @test_v8f32_olt_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {221; AVX-32-LABEL: test_v8f32_olt_q:222; AVX-32:       # %bb.0:223; AVX-32-NEXT:    pushl %ebp224; AVX-32-NEXT:    movl %esp, %ebp225; AVX-32-NEXT:    andl $-32, %esp226; AVX-32-NEXT:    subl $32, %esp227; AVX-32-NEXT:    vcmplt_oqps 8(%ebp), %ymm2, %ymm2228; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0229; AVX-32-NEXT:    movl %ebp, %esp230; AVX-32-NEXT:    popl %ebp231; AVX-32-NEXT:    retl232;233; AVX-64-LABEL: test_v8f32_olt_q:234; AVX-64:       # %bb.0:235; AVX-64-NEXT:    vcmplt_oqps %ymm3, %ymm2, %ymm2236; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0237; AVX-64-NEXT:    retq238;239; AVX512-32-LABEL: test_v8f32_olt_q:240; AVX512-32:       # %bb.0:241; AVX512-32-NEXT:    pushl %ebp242; AVX512-32-NEXT:    movl %esp, %ebp243; AVX512-32-NEXT:    andl $-32, %esp244; AVX512-32-NEXT:    subl $32, %esp245; AVX512-32-NEXT:    vcmplt_oqps 8(%ebp), %ymm2, %k1246; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}247; AVX512-32-NEXT:    movl %ebp, %esp248; AVX512-32-NEXT:    popl %ebp249; AVX512-32-NEXT:    retl250;251; AVX512-64-LABEL: test_v8f32_olt_q:252; AVX512-64:       # %bb.0:253; AVX512-64-NEXT:    vcmplt_oqps %ymm3, %ymm2, %k1254; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}255; AVX512-64-NEXT:    retq256;257; AVX512F-32-LABEL: test_v8f32_olt_q:258; AVX512F-32:       # %bb.0:259; AVX512F-32-NEXT:    pushl %ebp260; AVX512F-32-NEXT:    movl %esp, %ebp261; AVX512F-32-NEXT:    andl $-32, %esp262; AVX512F-32-NEXT:    subl $32, %esp263; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1264; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0265; AVX512F-32-NEXT:    vcmplt_oqps 8(%ebp), %ymm2, %ymm2266; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k1267; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}268; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0269; AVX512F-32-NEXT:    movl %ebp, %esp270; AVX512F-32-NEXT:    popl %ebp271; AVX512F-32-NEXT:    retl272;273; AVX512F-64-LABEL: test_v8f32_olt_q:274; AVX512F-64:       # %bb.0:275; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1276; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0277; AVX512F-64-NEXT:    vcmplt_oqps %ymm3, %ymm2, %ymm2278; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k1279; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}280; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0281; AVX512F-64-NEXT:    retq282  %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(283                                               <8 x float> %f1, <8 x float> %f2, metadata !"olt",284                                               metadata !"fpexcept.strict") #0285  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b286  ret <8 x i32> %res287}288 289define <8 x i32> @test_v8f32_ole_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {290; AVX-32-LABEL: test_v8f32_ole_q:291; AVX-32:       # %bb.0:292; AVX-32-NEXT:    pushl %ebp293; AVX-32-NEXT:    movl %esp, %ebp294; AVX-32-NEXT:    andl $-32, %esp295; AVX-32-NEXT:    subl $32, %esp296; AVX-32-NEXT:    vcmple_oqps 8(%ebp), %ymm2, %ymm2297; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0298; AVX-32-NEXT:    movl %ebp, %esp299; AVX-32-NEXT:    popl %ebp300; AVX-32-NEXT:    retl301;302; AVX-64-LABEL: test_v8f32_ole_q:303; AVX-64:       # %bb.0:304; AVX-64-NEXT:    vcmple_oqps %ymm3, %ymm2, %ymm2305; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0306; AVX-64-NEXT:    retq307;308; AVX512-32-LABEL: test_v8f32_ole_q:309; AVX512-32:       # %bb.0:310; AVX512-32-NEXT:    pushl %ebp311; AVX512-32-NEXT:    movl %esp, %ebp312; AVX512-32-NEXT:    andl $-32, %esp313; AVX512-32-NEXT:    subl $32, %esp314; AVX512-32-NEXT:    vcmple_oqps 8(%ebp), %ymm2, %k1315; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}316; AVX512-32-NEXT:    movl %ebp, %esp317; AVX512-32-NEXT:    popl %ebp318; AVX512-32-NEXT:    retl319;320; AVX512-64-LABEL: test_v8f32_ole_q:321; AVX512-64:       # %bb.0:322; AVX512-64-NEXT:    vcmple_oqps %ymm3, %ymm2, %k1323; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}324; AVX512-64-NEXT:    retq325;326; AVX512F-32-LABEL: test_v8f32_ole_q:327; AVX512F-32:       # %bb.0:328; AVX512F-32-NEXT:    pushl %ebp329; AVX512F-32-NEXT:    movl %esp, %ebp330; AVX512F-32-NEXT:    andl $-32, %esp331; AVX512F-32-NEXT:    subl $32, %esp332; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1333; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0334; AVX512F-32-NEXT:    vcmple_oqps 8(%ebp), %ymm2, %ymm2335; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k1336; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}337; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0338; AVX512F-32-NEXT:    movl %ebp, %esp339; AVX512F-32-NEXT:    popl %ebp340; AVX512F-32-NEXT:    retl341;342; AVX512F-64-LABEL: test_v8f32_ole_q:343; AVX512F-64:       # %bb.0:344; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1345; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0346; AVX512F-64-NEXT:    vcmple_oqps %ymm3, %ymm2, %ymm2347; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k1348; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}349; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0350; AVX512F-64-NEXT:    retq351  %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(352                                               <8 x float> %f1, <8 x float> %f2, metadata !"ole",353                                               metadata !"fpexcept.strict") #0354  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b355  ret <8 x i32> %res356}357 358define <8 x i32> @test_v8f32_one_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {359; AVX-32-LABEL: test_v8f32_one_q:360; AVX-32:       # %bb.0:361; AVX-32-NEXT:    pushl %ebp362; AVX-32-NEXT:    movl %esp, %ebp363; AVX-32-NEXT:    andl $-32, %esp364; AVX-32-NEXT:    subl $32, %esp365; AVX-32-NEXT:    vcmpneq_oqps 8(%ebp), %ymm2, %ymm2366; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0367; AVX-32-NEXT:    movl %ebp, %esp368; AVX-32-NEXT:    popl %ebp369; AVX-32-NEXT:    retl370;371; AVX-64-LABEL: test_v8f32_one_q:372; AVX-64:       # %bb.0:373; AVX-64-NEXT:    vcmpneq_oqps %ymm3, %ymm2, %ymm2374; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0375; AVX-64-NEXT:    retq376;377; AVX512-32-LABEL: test_v8f32_one_q:378; AVX512-32:       # %bb.0:379; AVX512-32-NEXT:    pushl %ebp380; AVX512-32-NEXT:    movl %esp, %ebp381; AVX512-32-NEXT:    andl $-32, %esp382; AVX512-32-NEXT:    subl $32, %esp383; AVX512-32-NEXT:    vcmpneq_oqps 8(%ebp), %ymm2, %k1384; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}385; AVX512-32-NEXT:    movl %ebp, %esp386; AVX512-32-NEXT:    popl %ebp387; AVX512-32-NEXT:    retl388;389; AVX512-64-LABEL: test_v8f32_one_q:390; AVX512-64:       # %bb.0:391; AVX512-64-NEXT:    vcmpneq_oqps %ymm3, %ymm2, %k1392; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}393; AVX512-64-NEXT:    retq394;395; AVX512F-32-LABEL: test_v8f32_one_q:396; AVX512F-32:       # %bb.0:397; AVX512F-32-NEXT:    pushl %ebp398; AVX512F-32-NEXT:    movl %esp, %ebp399; AVX512F-32-NEXT:    andl $-32, %esp400; AVX512F-32-NEXT:    subl $32, %esp401; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1402; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0403; AVX512F-32-NEXT:    vcmpneq_oqps 8(%ebp), %ymm2, %ymm2404; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k1405; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}406; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0407; AVX512F-32-NEXT:    movl %ebp, %esp408; AVX512F-32-NEXT:    popl %ebp409; AVX512F-32-NEXT:    retl410;411; AVX512F-64-LABEL: test_v8f32_one_q:412; AVX512F-64:       # %bb.0:413; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1414; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0415; AVX512F-64-NEXT:    vcmpneq_oqps %ymm3, %ymm2, %ymm2416; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k1417; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}418; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0419; AVX512F-64-NEXT:    retq420  %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(421                                               <8 x float> %f1, <8 x float> %f2, metadata !"one",422                                               metadata !"fpexcept.strict") #0423  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b424  ret <8 x i32> %res425}426 427define <8 x i32> @test_v8f32_ord_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {428; AVX-32-LABEL: test_v8f32_ord_q:429; AVX-32:       # %bb.0:430; AVX-32-NEXT:    pushl %ebp431; AVX-32-NEXT:    movl %esp, %ebp432; AVX-32-NEXT:    andl $-32, %esp433; AVX-32-NEXT:    subl $32, %esp434; AVX-32-NEXT:    vcmpordps 8(%ebp), %ymm2, %ymm2435; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0436; AVX-32-NEXT:    movl %ebp, %esp437; AVX-32-NEXT:    popl %ebp438; AVX-32-NEXT:    retl439;440; AVX-64-LABEL: test_v8f32_ord_q:441; AVX-64:       # %bb.0:442; AVX-64-NEXT:    vcmpordps %ymm3, %ymm2, %ymm2443; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0444; AVX-64-NEXT:    retq445;446; AVX512-32-LABEL: test_v8f32_ord_q:447; AVX512-32:       # %bb.0:448; AVX512-32-NEXT:    pushl %ebp449; AVX512-32-NEXT:    movl %esp, %ebp450; AVX512-32-NEXT:    andl $-32, %esp451; AVX512-32-NEXT:    subl $32, %esp452; AVX512-32-NEXT:    vcmpordps 8(%ebp), %ymm2, %k1453; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}454; AVX512-32-NEXT:    movl %ebp, %esp455; AVX512-32-NEXT:    popl %ebp456; AVX512-32-NEXT:    retl457;458; AVX512-64-LABEL: test_v8f32_ord_q:459; AVX512-64:       # %bb.0:460; AVX512-64-NEXT:    vcmpordps %ymm3, %ymm2, %k1461; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}462; AVX512-64-NEXT:    retq463;464; AVX512F-32-LABEL: test_v8f32_ord_q:465; AVX512F-32:       # %bb.0:466; AVX512F-32-NEXT:    pushl %ebp467; AVX512F-32-NEXT:    movl %esp, %ebp468; AVX512F-32-NEXT:    andl $-32, %esp469; AVX512F-32-NEXT:    subl $32, %esp470; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1471; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0472; AVX512F-32-NEXT:    vcmpordps 8(%ebp), %ymm2, %ymm2473; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k1474; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}475; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0476; AVX512F-32-NEXT:    movl %ebp, %esp477; AVX512F-32-NEXT:    popl %ebp478; AVX512F-32-NEXT:    retl479;480; AVX512F-64-LABEL: test_v8f32_ord_q:481; AVX512F-64:       # %bb.0:482; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1483; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0484; AVX512F-64-NEXT:    vcmpordps %ymm3, %ymm2, %ymm2485; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k1486; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}487; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0488; AVX512F-64-NEXT:    retq489  %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(490                                               <8 x float> %f1, <8 x float> %f2, metadata !"ord",491                                               metadata !"fpexcept.strict") #0492  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b493  ret <8 x i32> %res494}495 496define <8 x i32> @test_v8f32_ueq_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {497; AVX-32-LABEL: test_v8f32_ueq_q:498; AVX-32:       # %bb.0:499; AVX-32-NEXT:    pushl %ebp500; AVX-32-NEXT:    movl %esp, %ebp501; AVX-32-NEXT:    andl $-32, %esp502; AVX-32-NEXT:    subl $32, %esp503; AVX-32-NEXT:    vcmpeq_uqps 8(%ebp), %ymm2, %ymm2504; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0505; AVX-32-NEXT:    movl %ebp, %esp506; AVX-32-NEXT:    popl %ebp507; AVX-32-NEXT:    retl508;509; AVX-64-LABEL: test_v8f32_ueq_q:510; AVX-64:       # %bb.0:511; AVX-64-NEXT:    vcmpeq_uqps %ymm3, %ymm2, %ymm2512; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0513; AVX-64-NEXT:    retq514;515; AVX512-32-LABEL: test_v8f32_ueq_q:516; AVX512-32:       # %bb.0:517; AVX512-32-NEXT:    pushl %ebp518; AVX512-32-NEXT:    movl %esp, %ebp519; AVX512-32-NEXT:    andl $-32, %esp520; AVX512-32-NEXT:    subl $32, %esp521; AVX512-32-NEXT:    vcmpeq_uqps 8(%ebp), %ymm2, %k1522; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}523; AVX512-32-NEXT:    movl %ebp, %esp524; AVX512-32-NEXT:    popl %ebp525; AVX512-32-NEXT:    retl526;527; AVX512-64-LABEL: test_v8f32_ueq_q:528; AVX512-64:       # %bb.0:529; AVX512-64-NEXT:    vcmpeq_uqps %ymm3, %ymm2, %k1530; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}531; AVX512-64-NEXT:    retq532;533; AVX512F-32-LABEL: test_v8f32_ueq_q:534; AVX512F-32:       # %bb.0:535; AVX512F-32-NEXT:    pushl %ebp536; AVX512F-32-NEXT:    movl %esp, %ebp537; AVX512F-32-NEXT:    andl $-32, %esp538; AVX512F-32-NEXT:    subl $32, %esp539; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1540; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0541; AVX512F-32-NEXT:    vcmpeq_uqps 8(%ebp), %ymm2, %ymm2542; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k1543; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}544; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0545; AVX512F-32-NEXT:    movl %ebp, %esp546; AVX512F-32-NEXT:    popl %ebp547; AVX512F-32-NEXT:    retl548;549; AVX512F-64-LABEL: test_v8f32_ueq_q:550; AVX512F-64:       # %bb.0:551; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1552; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0553; AVX512F-64-NEXT:    vcmpeq_uqps %ymm3, %ymm2, %ymm2554; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k1555; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}556; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0557; AVX512F-64-NEXT:    retq558  %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(559                                               <8 x float> %f1, <8 x float> %f2, metadata !"ueq",560                                               metadata !"fpexcept.strict") #0561  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b562  ret <8 x i32> %res563}564 565define <8 x i32> @test_v8f32_ugt_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {566; AVX-32-LABEL: test_v8f32_ugt_q:567; AVX-32:       # %bb.0:568; AVX-32-NEXT:    pushl %ebp569; AVX-32-NEXT:    movl %esp, %ebp570; AVX-32-NEXT:    andl $-32, %esp571; AVX-32-NEXT:    subl $32, %esp572; AVX-32-NEXT:    vcmpnle_uqps 8(%ebp), %ymm2, %ymm2573; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0574; AVX-32-NEXT:    movl %ebp, %esp575; AVX-32-NEXT:    popl %ebp576; AVX-32-NEXT:    retl577;578; AVX-64-LABEL: test_v8f32_ugt_q:579; AVX-64:       # %bb.0:580; AVX-64-NEXT:    vcmpnle_uqps %ymm3, %ymm2, %ymm2581; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0582; AVX-64-NEXT:    retq583;584; AVX512-32-LABEL: test_v8f32_ugt_q:585; AVX512-32:       # %bb.0:586; AVX512-32-NEXT:    pushl %ebp587; AVX512-32-NEXT:    movl %esp, %ebp588; AVX512-32-NEXT:    andl $-32, %esp589; AVX512-32-NEXT:    subl $32, %esp590; AVX512-32-NEXT:    vcmpnle_uqps 8(%ebp), %ymm2, %k1591; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}592; AVX512-32-NEXT:    movl %ebp, %esp593; AVX512-32-NEXT:    popl %ebp594; AVX512-32-NEXT:    retl595;596; AVX512-64-LABEL: test_v8f32_ugt_q:597; AVX512-64:       # %bb.0:598; AVX512-64-NEXT:    vcmpnle_uqps %ymm3, %ymm2, %k1599; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}600; AVX512-64-NEXT:    retq601;602; AVX512F-32-LABEL: test_v8f32_ugt_q:603; AVX512F-32:       # %bb.0:604; AVX512F-32-NEXT:    pushl %ebp605; AVX512F-32-NEXT:    movl %esp, %ebp606; AVX512F-32-NEXT:    andl $-32, %esp607; AVX512F-32-NEXT:    subl $32, %esp608; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1609; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0610; AVX512F-32-NEXT:    vcmpnle_uqps 8(%ebp), %ymm2, %ymm2611; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k1612; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}613; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0614; AVX512F-32-NEXT:    movl %ebp, %esp615; AVX512F-32-NEXT:    popl %ebp616; AVX512F-32-NEXT:    retl617;618; AVX512F-64-LABEL: test_v8f32_ugt_q:619; AVX512F-64:       # %bb.0:620; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1621; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0622; AVX512F-64-NEXT:    vcmpnle_uqps %ymm3, %ymm2, %ymm2623; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k1624; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}625; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0626; AVX512F-64-NEXT:    retq627  %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(628                                               <8 x float> %f1, <8 x float> %f2, metadata !"ugt",629                                               metadata !"fpexcept.strict") #0630  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b631  ret <8 x i32> %res632}633 634define <8 x i32> @test_v8f32_uge_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {635; AVX-32-LABEL: test_v8f32_uge_q:636; AVX-32:       # %bb.0:637; AVX-32-NEXT:    pushl %ebp638; AVX-32-NEXT:    movl %esp, %ebp639; AVX-32-NEXT:    andl $-32, %esp640; AVX-32-NEXT:    subl $32, %esp641; AVX-32-NEXT:    vcmpnlt_uqps 8(%ebp), %ymm2, %ymm2642; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0643; AVX-32-NEXT:    movl %ebp, %esp644; AVX-32-NEXT:    popl %ebp645; AVX-32-NEXT:    retl646;647; AVX-64-LABEL: test_v8f32_uge_q:648; AVX-64:       # %bb.0:649; AVX-64-NEXT:    vcmpnlt_uqps %ymm3, %ymm2, %ymm2650; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0651; AVX-64-NEXT:    retq652;653; AVX512-32-LABEL: test_v8f32_uge_q:654; AVX512-32:       # %bb.0:655; AVX512-32-NEXT:    pushl %ebp656; AVX512-32-NEXT:    movl %esp, %ebp657; AVX512-32-NEXT:    andl $-32, %esp658; AVX512-32-NEXT:    subl $32, %esp659; AVX512-32-NEXT:    vcmpnlt_uqps 8(%ebp), %ymm2, %k1660; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}661; AVX512-32-NEXT:    movl %ebp, %esp662; AVX512-32-NEXT:    popl %ebp663; AVX512-32-NEXT:    retl664;665; AVX512-64-LABEL: test_v8f32_uge_q:666; AVX512-64:       # %bb.0:667; AVX512-64-NEXT:    vcmpnlt_uqps %ymm3, %ymm2, %k1668; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}669; AVX512-64-NEXT:    retq670;671; AVX512F-32-LABEL: test_v8f32_uge_q:672; AVX512F-32:       # %bb.0:673; AVX512F-32-NEXT:    pushl %ebp674; AVX512F-32-NEXT:    movl %esp, %ebp675; AVX512F-32-NEXT:    andl $-32, %esp676; AVX512F-32-NEXT:    subl $32, %esp677; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1678; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0679; AVX512F-32-NEXT:    vcmpnlt_uqps 8(%ebp), %ymm2, %ymm2680; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k1681; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}682; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0683; AVX512F-32-NEXT:    movl %ebp, %esp684; AVX512F-32-NEXT:    popl %ebp685; AVX512F-32-NEXT:    retl686;687; AVX512F-64-LABEL: test_v8f32_uge_q:688; AVX512F-64:       # %bb.0:689; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1690; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0691; AVX512F-64-NEXT:    vcmpnlt_uqps %ymm3, %ymm2, %ymm2692; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k1693; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}694; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0695; AVX512F-64-NEXT:    retq696  %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(697                                               <8 x float> %f1, <8 x float> %f2, metadata !"uge",698                                               metadata !"fpexcept.strict") #0699  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b700  ret <8 x i32> %res701}702 703define <8 x i32> @test_v8f32_ult_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {704; AVX-32-LABEL: test_v8f32_ult_q:705; AVX-32:       # %bb.0:706; AVX-32-NEXT:    pushl %ebp707; AVX-32-NEXT:    movl %esp, %ebp708; AVX-32-NEXT:    andl $-32, %esp709; AVX-32-NEXT:    subl $32, %esp710; AVX-32-NEXT:    vmovaps 8(%ebp), %ymm3711; AVX-32-NEXT:    vcmpnle_uqps %ymm2, %ymm3, %ymm2712; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0713; AVX-32-NEXT:    movl %ebp, %esp714; AVX-32-NEXT:    popl %ebp715; AVX-32-NEXT:    retl716;717; AVX-64-LABEL: test_v8f32_ult_q:718; AVX-64:       # %bb.0:719; AVX-64-NEXT:    vcmpnle_uqps %ymm2, %ymm3, %ymm2720; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0721; AVX-64-NEXT:    retq722;723; AVX512-32-LABEL: test_v8f32_ult_q:724; AVX512-32:       # %bb.0:725; AVX512-32-NEXT:    pushl %ebp726; AVX512-32-NEXT:    movl %esp, %ebp727; AVX512-32-NEXT:    andl $-32, %esp728; AVX512-32-NEXT:    subl $32, %esp729; AVX512-32-NEXT:    vcmpnge_uqps 8(%ebp), %ymm2, %k1730; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}731; AVX512-32-NEXT:    movl %ebp, %esp732; AVX512-32-NEXT:    popl %ebp733; AVX512-32-NEXT:    retl734;735; AVX512-64-LABEL: test_v8f32_ult_q:736; AVX512-64:       # %bb.0:737; AVX512-64-NEXT:    vcmpnle_uqps %ymm2, %ymm3, %k1738; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}739; AVX512-64-NEXT:    retq740;741; AVX512F-32-LABEL: test_v8f32_ult_q:742; AVX512F-32:       # %bb.0:743; AVX512F-32-NEXT:    pushl %ebp744; AVX512F-32-NEXT:    movl %esp, %ebp745; AVX512F-32-NEXT:    andl $-32, %esp746; AVX512F-32-NEXT:    subl $32, %esp747; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1748; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0749; AVX512F-32-NEXT:    vmovaps 8(%ebp), %ymm3750; AVX512F-32-NEXT:    vcmpnle_uqps %ymm2, %ymm3, %ymm2751; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k1752; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}753; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0754; AVX512F-32-NEXT:    movl %ebp, %esp755; AVX512F-32-NEXT:    popl %ebp756; AVX512F-32-NEXT:    retl757;758; AVX512F-64-LABEL: test_v8f32_ult_q:759; AVX512F-64:       # %bb.0:760; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1761; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0762; AVX512F-64-NEXT:    vcmpnle_uqps %ymm2, %ymm3, %ymm2763; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k1764; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}765; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0766; AVX512F-64-NEXT:    retq767  %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(768                                               <8 x float> %f1, <8 x float> %f2, metadata !"ult",769                                               metadata !"fpexcept.strict") #0770  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b771  ret <8 x i32> %res772}773 774define <8 x i32> @test_v8f32_ule_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {775; AVX-32-LABEL: test_v8f32_ule_q:776; AVX-32:       # %bb.0:777; AVX-32-NEXT:    pushl %ebp778; AVX-32-NEXT:    movl %esp, %ebp779; AVX-32-NEXT:    andl $-32, %esp780; AVX-32-NEXT:    subl $32, %esp781; AVX-32-NEXT:    vmovaps 8(%ebp), %ymm3782; AVX-32-NEXT:    vcmpnlt_uqps %ymm2, %ymm3, %ymm2783; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0784; AVX-32-NEXT:    movl %ebp, %esp785; AVX-32-NEXT:    popl %ebp786; AVX-32-NEXT:    retl787;788; AVX-64-LABEL: test_v8f32_ule_q:789; AVX-64:       # %bb.0:790; AVX-64-NEXT:    vcmpnlt_uqps %ymm2, %ymm3, %ymm2791; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0792; AVX-64-NEXT:    retq793;794; AVX512-32-LABEL: test_v8f32_ule_q:795; AVX512-32:       # %bb.0:796; AVX512-32-NEXT:    pushl %ebp797; AVX512-32-NEXT:    movl %esp, %ebp798; AVX512-32-NEXT:    andl $-32, %esp799; AVX512-32-NEXT:    subl $32, %esp800; AVX512-32-NEXT:    vcmpngt_uqps 8(%ebp), %ymm2, %k1801; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}802; AVX512-32-NEXT:    movl %ebp, %esp803; AVX512-32-NEXT:    popl %ebp804; AVX512-32-NEXT:    retl805;806; AVX512-64-LABEL: test_v8f32_ule_q:807; AVX512-64:       # %bb.0:808; AVX512-64-NEXT:    vcmpnlt_uqps %ymm2, %ymm3, %k1809; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}810; AVX512-64-NEXT:    retq811;812; AVX512F-32-LABEL: test_v8f32_ule_q:813; AVX512F-32:       # %bb.0:814; AVX512F-32-NEXT:    pushl %ebp815; AVX512F-32-NEXT:    movl %esp, %ebp816; AVX512F-32-NEXT:    andl $-32, %esp817; AVX512F-32-NEXT:    subl $32, %esp818; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1819; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0820; AVX512F-32-NEXT:    vmovaps 8(%ebp), %ymm3821; AVX512F-32-NEXT:    vcmpnlt_uqps %ymm2, %ymm3, %ymm2822; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k1823; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}824; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0825; AVX512F-32-NEXT:    movl %ebp, %esp826; AVX512F-32-NEXT:    popl %ebp827; AVX512F-32-NEXT:    retl828;829; AVX512F-64-LABEL: test_v8f32_ule_q:830; AVX512F-64:       # %bb.0:831; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1832; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0833; AVX512F-64-NEXT:    vcmpnlt_uqps %ymm2, %ymm3, %ymm2834; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k1835; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}836; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0837; AVX512F-64-NEXT:    retq838  %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(839                                               <8 x float> %f1, <8 x float> %f2, metadata !"ule",840                                               metadata !"fpexcept.strict") #0841  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b842  ret <8 x i32> %res843}844 845define <8 x i32> @test_v8f32_une_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {846; AVX-32-LABEL: test_v8f32_une_q:847; AVX-32:       # %bb.0:848; AVX-32-NEXT:    pushl %ebp849; AVX-32-NEXT:    movl %esp, %ebp850; AVX-32-NEXT:    andl $-32, %esp851; AVX-32-NEXT:    subl $32, %esp852; AVX-32-NEXT:    vcmpneqps 8(%ebp), %ymm2, %ymm2853; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0854; AVX-32-NEXT:    movl %ebp, %esp855; AVX-32-NEXT:    popl %ebp856; AVX-32-NEXT:    retl857;858; AVX-64-LABEL: test_v8f32_une_q:859; AVX-64:       # %bb.0:860; AVX-64-NEXT:    vcmpneqps %ymm3, %ymm2, %ymm2861; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0862; AVX-64-NEXT:    retq863;864; AVX512-32-LABEL: test_v8f32_une_q:865; AVX512-32:       # %bb.0:866; AVX512-32-NEXT:    pushl %ebp867; AVX512-32-NEXT:    movl %esp, %ebp868; AVX512-32-NEXT:    andl $-32, %esp869; AVX512-32-NEXT:    subl $32, %esp870; AVX512-32-NEXT:    vcmpneqps 8(%ebp), %ymm2, %k1871; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}872; AVX512-32-NEXT:    movl %ebp, %esp873; AVX512-32-NEXT:    popl %ebp874; AVX512-32-NEXT:    retl875;876; AVX512-64-LABEL: test_v8f32_une_q:877; AVX512-64:       # %bb.0:878; AVX512-64-NEXT:    vcmpneqps %ymm3, %ymm2, %k1879; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}880; AVX512-64-NEXT:    retq881;882; AVX512F-32-LABEL: test_v8f32_une_q:883; AVX512F-32:       # %bb.0:884; AVX512F-32-NEXT:    pushl %ebp885; AVX512F-32-NEXT:    movl %esp, %ebp886; AVX512F-32-NEXT:    andl $-32, %esp887; AVX512F-32-NEXT:    subl $32, %esp888; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1889; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0890; AVX512F-32-NEXT:    vcmpneqps 8(%ebp), %ymm2, %ymm2891; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k1892; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}893; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0894; AVX512F-32-NEXT:    movl %ebp, %esp895; AVX512F-32-NEXT:    popl %ebp896; AVX512F-32-NEXT:    retl897;898; AVX512F-64-LABEL: test_v8f32_une_q:899; AVX512F-64:       # %bb.0:900; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1901; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0902; AVX512F-64-NEXT:    vcmpneqps %ymm3, %ymm2, %ymm2903; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k1904; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}905; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0906; AVX512F-64-NEXT:    retq907  %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(908                                               <8 x float> %f1, <8 x float> %f2, metadata !"une",909                                               metadata !"fpexcept.strict") #0910  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b911  ret <8 x i32> %res912}913 914define <8 x i32> @test_v8f32_uno_q(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {915; AVX-32-LABEL: test_v8f32_uno_q:916; AVX-32:       # %bb.0:917; AVX-32-NEXT:    pushl %ebp918; AVX-32-NEXT:    movl %esp, %ebp919; AVX-32-NEXT:    andl $-32, %esp920; AVX-32-NEXT:    subl $32, %esp921; AVX-32-NEXT:    vcmpunordps 8(%ebp), %ymm2, %ymm2922; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0923; AVX-32-NEXT:    movl %ebp, %esp924; AVX-32-NEXT:    popl %ebp925; AVX-32-NEXT:    retl926;927; AVX-64-LABEL: test_v8f32_uno_q:928; AVX-64:       # %bb.0:929; AVX-64-NEXT:    vcmpunordps %ymm3, %ymm2, %ymm2930; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0931; AVX-64-NEXT:    retq932;933; AVX512-32-LABEL: test_v8f32_uno_q:934; AVX512-32:       # %bb.0:935; AVX512-32-NEXT:    pushl %ebp936; AVX512-32-NEXT:    movl %esp, %ebp937; AVX512-32-NEXT:    andl $-32, %esp938; AVX512-32-NEXT:    subl $32, %esp939; AVX512-32-NEXT:    vcmpunordps 8(%ebp), %ymm2, %k1940; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}941; AVX512-32-NEXT:    movl %ebp, %esp942; AVX512-32-NEXT:    popl %ebp943; AVX512-32-NEXT:    retl944;945; AVX512-64-LABEL: test_v8f32_uno_q:946; AVX512-64:       # %bb.0:947; AVX512-64-NEXT:    vcmpunordps %ymm3, %ymm2, %k1948; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}949; AVX512-64-NEXT:    retq950;951; AVX512F-32-LABEL: test_v8f32_uno_q:952; AVX512F-32:       # %bb.0:953; AVX512F-32-NEXT:    pushl %ebp954; AVX512F-32-NEXT:    movl %esp, %ebp955; AVX512F-32-NEXT:    andl $-32, %esp956; AVX512F-32-NEXT:    subl $32, %esp957; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1958; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0959; AVX512F-32-NEXT:    vcmpunordps 8(%ebp), %ymm2, %ymm2960; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k1961; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}962; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0963; AVX512F-32-NEXT:    movl %ebp, %esp964; AVX512F-32-NEXT:    popl %ebp965; AVX512F-32-NEXT:    retl966;967; AVX512F-64-LABEL: test_v8f32_uno_q:968; AVX512F-64:       # %bb.0:969; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1970; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0971; AVX512F-64-NEXT:    vcmpunordps %ymm3, %ymm2, %ymm2972; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k1973; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}974; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0975; AVX512F-64-NEXT:    retq976  %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(977                                               <8 x float> %f1, <8 x float> %f2, metadata !"uno",978                                               metadata !"fpexcept.strict") #0979  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b980  ret <8 x i32> %res981}982 983define <4 x i64> @test_v4f64_oeq_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {984; AVX-32-LABEL: test_v4f64_oeq_q:985; AVX-32:       # %bb.0:986; AVX-32-NEXT:    pushl %ebp987; AVX-32-NEXT:    movl %esp, %ebp988; AVX-32-NEXT:    andl $-32, %esp989; AVX-32-NEXT:    subl $32, %esp990; AVX-32-NEXT:    vcmpeqpd 8(%ebp), %ymm2, %ymm2991; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm0992; AVX-32-NEXT:    movl %ebp, %esp993; AVX-32-NEXT:    popl %ebp994; AVX-32-NEXT:    retl995;996; AVX-64-LABEL: test_v4f64_oeq_q:997; AVX-64:       # %bb.0:998; AVX-64-NEXT:    vcmpeqpd %ymm3, %ymm2, %ymm2999; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01000; AVX-64-NEXT:    retq1001;1002; AVX512-32-LABEL: test_v4f64_oeq_q:1003; AVX512-32:       # %bb.0:1004; AVX512-32-NEXT:    pushl %ebp1005; AVX512-32-NEXT:    movl %esp, %ebp1006; AVX512-32-NEXT:    andl $-32, %esp1007; AVX512-32-NEXT:    subl $32, %esp1008; AVX512-32-NEXT:    vcmpeqpd 8(%ebp), %ymm2, %k11009; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1010; AVX512-32-NEXT:    movl %ebp, %esp1011; AVX512-32-NEXT:    popl %ebp1012; AVX512-32-NEXT:    retl1013;1014; AVX512-64-LABEL: test_v4f64_oeq_q:1015; AVX512-64:       # %bb.0:1016; AVX512-64-NEXT:    vcmpeqpd %ymm3, %ymm2, %k11017; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1018; AVX512-64-NEXT:    retq1019;1020; AVX512F-32-LABEL: test_v4f64_oeq_q:1021; AVX512F-32:       # %bb.0:1022; AVX512F-32-NEXT:    pushl %ebp1023; AVX512F-32-NEXT:    movl %esp, %ebp1024; AVX512F-32-NEXT:    andl $-32, %esp1025; AVX512F-32-NEXT:    subl $32, %esp1026; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11027; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01028; AVX512F-32-NEXT:    vcmpeqpd 8(%ebp), %ymm2, %ymm21029; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k11030; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1031; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01032; AVX512F-32-NEXT:    movl %ebp, %esp1033; AVX512F-32-NEXT:    popl %ebp1034; AVX512F-32-NEXT:    retl1035;1036; AVX512F-64-LABEL: test_v4f64_oeq_q:1037; AVX512F-64:       # %bb.0:1038; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11039; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01040; AVX512F-64-NEXT:    vcmpeqpd %ymm3, %ymm2, %ymm21041; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k11042; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1043; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01044; AVX512F-64-NEXT:    retq1045  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(1046                                               <4 x double> %f1, <4 x double> %f2, metadata !"oeq",1047                                               metadata !"fpexcept.strict") #01048  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b1049  ret <4 x i64> %res1050}1051 1052define <4 x i64> @test_v4f64_ogt_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {1053; AVX-32-LABEL: test_v4f64_ogt_q:1054; AVX-32:       # %bb.0:1055; AVX-32-NEXT:    pushl %ebp1056; AVX-32-NEXT:    movl %esp, %ebp1057; AVX-32-NEXT:    andl $-32, %esp1058; AVX-32-NEXT:    subl $32, %esp1059; AVX-32-NEXT:    vmovapd 8(%ebp), %ymm31060; AVX-32-NEXT:    vcmplt_oqpd %ymm2, %ymm3, %ymm21061; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01062; AVX-32-NEXT:    movl %ebp, %esp1063; AVX-32-NEXT:    popl %ebp1064; AVX-32-NEXT:    retl1065;1066; AVX-64-LABEL: test_v4f64_ogt_q:1067; AVX-64:       # %bb.0:1068; AVX-64-NEXT:    vcmplt_oqpd %ymm2, %ymm3, %ymm21069; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01070; AVX-64-NEXT:    retq1071;1072; AVX512-32-LABEL: test_v4f64_ogt_q:1073; AVX512-32:       # %bb.0:1074; AVX512-32-NEXT:    pushl %ebp1075; AVX512-32-NEXT:    movl %esp, %ebp1076; AVX512-32-NEXT:    andl $-32, %esp1077; AVX512-32-NEXT:    subl $32, %esp1078; AVX512-32-NEXT:    vcmpgt_oqpd 8(%ebp), %ymm2, %k11079; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1080; AVX512-32-NEXT:    movl %ebp, %esp1081; AVX512-32-NEXT:    popl %ebp1082; AVX512-32-NEXT:    retl1083;1084; AVX512-64-LABEL: test_v4f64_ogt_q:1085; AVX512-64:       # %bb.0:1086; AVX512-64-NEXT:    vcmplt_oqpd %ymm2, %ymm3, %k11087; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1088; AVX512-64-NEXT:    retq1089;1090; AVX512F-32-LABEL: test_v4f64_ogt_q:1091; AVX512F-32:       # %bb.0:1092; AVX512F-32-NEXT:    pushl %ebp1093; AVX512F-32-NEXT:    movl %esp, %ebp1094; AVX512F-32-NEXT:    andl $-32, %esp1095; AVX512F-32-NEXT:    subl $32, %esp1096; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11097; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01098; AVX512F-32-NEXT:    vmovapd 8(%ebp), %ymm31099; AVX512F-32-NEXT:    vcmplt_oqpd %ymm2, %ymm3, %ymm21100; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k11101; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1102; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01103; AVX512F-32-NEXT:    movl %ebp, %esp1104; AVX512F-32-NEXT:    popl %ebp1105; AVX512F-32-NEXT:    retl1106;1107; AVX512F-64-LABEL: test_v4f64_ogt_q:1108; AVX512F-64:       # %bb.0:1109; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11110; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01111; AVX512F-64-NEXT:    vcmplt_oqpd %ymm2, %ymm3, %ymm21112; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k11113; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1114; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01115; AVX512F-64-NEXT:    retq1116  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(1117                                               <4 x double> %f1, <4 x double> %f2, metadata !"ogt",1118                                               metadata !"fpexcept.strict") #01119  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b1120  ret <4 x i64> %res1121}1122 1123define <4 x i64> @test_v4f64_oge_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {1124; AVX-32-LABEL: test_v4f64_oge_q:1125; AVX-32:       # %bb.0:1126; AVX-32-NEXT:    pushl %ebp1127; AVX-32-NEXT:    movl %esp, %ebp1128; AVX-32-NEXT:    andl $-32, %esp1129; AVX-32-NEXT:    subl $32, %esp1130; AVX-32-NEXT:    vmovapd 8(%ebp), %ymm31131; AVX-32-NEXT:    vcmple_oqpd %ymm2, %ymm3, %ymm21132; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01133; AVX-32-NEXT:    movl %ebp, %esp1134; AVX-32-NEXT:    popl %ebp1135; AVX-32-NEXT:    retl1136;1137; AVX-64-LABEL: test_v4f64_oge_q:1138; AVX-64:       # %bb.0:1139; AVX-64-NEXT:    vcmple_oqpd %ymm2, %ymm3, %ymm21140; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01141; AVX-64-NEXT:    retq1142;1143; AVX512-32-LABEL: test_v4f64_oge_q:1144; AVX512-32:       # %bb.0:1145; AVX512-32-NEXT:    pushl %ebp1146; AVX512-32-NEXT:    movl %esp, %ebp1147; AVX512-32-NEXT:    andl $-32, %esp1148; AVX512-32-NEXT:    subl $32, %esp1149; AVX512-32-NEXT:    vcmpge_oqpd 8(%ebp), %ymm2, %k11150; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1151; AVX512-32-NEXT:    movl %ebp, %esp1152; AVX512-32-NEXT:    popl %ebp1153; AVX512-32-NEXT:    retl1154;1155; AVX512-64-LABEL: test_v4f64_oge_q:1156; AVX512-64:       # %bb.0:1157; AVX512-64-NEXT:    vcmple_oqpd %ymm2, %ymm3, %k11158; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1159; AVX512-64-NEXT:    retq1160;1161; AVX512F-32-LABEL: test_v4f64_oge_q:1162; AVX512F-32:       # %bb.0:1163; AVX512F-32-NEXT:    pushl %ebp1164; AVX512F-32-NEXT:    movl %esp, %ebp1165; AVX512F-32-NEXT:    andl $-32, %esp1166; AVX512F-32-NEXT:    subl $32, %esp1167; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11168; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01169; AVX512F-32-NEXT:    vmovapd 8(%ebp), %ymm31170; AVX512F-32-NEXT:    vcmple_oqpd %ymm2, %ymm3, %ymm21171; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k11172; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1173; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01174; AVX512F-32-NEXT:    movl %ebp, %esp1175; AVX512F-32-NEXT:    popl %ebp1176; AVX512F-32-NEXT:    retl1177;1178; AVX512F-64-LABEL: test_v4f64_oge_q:1179; AVX512F-64:       # %bb.0:1180; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11181; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01182; AVX512F-64-NEXT:    vcmple_oqpd %ymm2, %ymm3, %ymm21183; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k11184; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1185; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01186; AVX512F-64-NEXT:    retq1187  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(1188                                               <4 x double> %f1, <4 x double> %f2, metadata !"oge",1189                                               metadata !"fpexcept.strict") #01190  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b1191  ret <4 x i64> %res1192}1193 1194define <4 x i64> @test_v4f64_olt_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {1195; AVX-32-LABEL: test_v4f64_olt_q:1196; AVX-32:       # %bb.0:1197; AVX-32-NEXT:    pushl %ebp1198; AVX-32-NEXT:    movl %esp, %ebp1199; AVX-32-NEXT:    andl $-32, %esp1200; AVX-32-NEXT:    subl $32, %esp1201; AVX-32-NEXT:    vcmplt_oqpd 8(%ebp), %ymm2, %ymm21202; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01203; AVX-32-NEXT:    movl %ebp, %esp1204; AVX-32-NEXT:    popl %ebp1205; AVX-32-NEXT:    retl1206;1207; AVX-64-LABEL: test_v4f64_olt_q:1208; AVX-64:       # %bb.0:1209; AVX-64-NEXT:    vcmplt_oqpd %ymm3, %ymm2, %ymm21210; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01211; AVX-64-NEXT:    retq1212;1213; AVX512-32-LABEL: test_v4f64_olt_q:1214; AVX512-32:       # %bb.0:1215; AVX512-32-NEXT:    pushl %ebp1216; AVX512-32-NEXT:    movl %esp, %ebp1217; AVX512-32-NEXT:    andl $-32, %esp1218; AVX512-32-NEXT:    subl $32, %esp1219; AVX512-32-NEXT:    vcmplt_oqpd 8(%ebp), %ymm2, %k11220; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1221; AVX512-32-NEXT:    movl %ebp, %esp1222; AVX512-32-NEXT:    popl %ebp1223; AVX512-32-NEXT:    retl1224;1225; AVX512-64-LABEL: test_v4f64_olt_q:1226; AVX512-64:       # %bb.0:1227; AVX512-64-NEXT:    vcmplt_oqpd %ymm3, %ymm2, %k11228; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1229; AVX512-64-NEXT:    retq1230;1231; AVX512F-32-LABEL: test_v4f64_olt_q:1232; AVX512F-32:       # %bb.0:1233; AVX512F-32-NEXT:    pushl %ebp1234; AVX512F-32-NEXT:    movl %esp, %ebp1235; AVX512F-32-NEXT:    andl $-32, %esp1236; AVX512F-32-NEXT:    subl $32, %esp1237; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11238; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01239; AVX512F-32-NEXT:    vcmplt_oqpd 8(%ebp), %ymm2, %ymm21240; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k11241; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1242; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01243; AVX512F-32-NEXT:    movl %ebp, %esp1244; AVX512F-32-NEXT:    popl %ebp1245; AVX512F-32-NEXT:    retl1246;1247; AVX512F-64-LABEL: test_v4f64_olt_q:1248; AVX512F-64:       # %bb.0:1249; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11250; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01251; AVX512F-64-NEXT:    vcmplt_oqpd %ymm3, %ymm2, %ymm21252; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k11253; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1254; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01255; AVX512F-64-NEXT:    retq1256  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(1257                                               <4 x double> %f1, <4 x double> %f2, metadata !"olt",1258                                               metadata !"fpexcept.strict") #01259  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b1260  ret <4 x i64> %res1261}1262 1263define <4 x i64> @test_v4f64_ole_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {1264; AVX-32-LABEL: test_v4f64_ole_q:1265; AVX-32:       # %bb.0:1266; AVX-32-NEXT:    pushl %ebp1267; AVX-32-NEXT:    movl %esp, %ebp1268; AVX-32-NEXT:    andl $-32, %esp1269; AVX-32-NEXT:    subl $32, %esp1270; AVX-32-NEXT:    vcmple_oqpd 8(%ebp), %ymm2, %ymm21271; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01272; AVX-32-NEXT:    movl %ebp, %esp1273; AVX-32-NEXT:    popl %ebp1274; AVX-32-NEXT:    retl1275;1276; AVX-64-LABEL: test_v4f64_ole_q:1277; AVX-64:       # %bb.0:1278; AVX-64-NEXT:    vcmple_oqpd %ymm3, %ymm2, %ymm21279; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01280; AVX-64-NEXT:    retq1281;1282; AVX512-32-LABEL: test_v4f64_ole_q:1283; AVX512-32:       # %bb.0:1284; AVX512-32-NEXT:    pushl %ebp1285; AVX512-32-NEXT:    movl %esp, %ebp1286; AVX512-32-NEXT:    andl $-32, %esp1287; AVX512-32-NEXT:    subl $32, %esp1288; AVX512-32-NEXT:    vcmple_oqpd 8(%ebp), %ymm2, %k11289; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1290; AVX512-32-NEXT:    movl %ebp, %esp1291; AVX512-32-NEXT:    popl %ebp1292; AVX512-32-NEXT:    retl1293;1294; AVX512-64-LABEL: test_v4f64_ole_q:1295; AVX512-64:       # %bb.0:1296; AVX512-64-NEXT:    vcmple_oqpd %ymm3, %ymm2, %k11297; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1298; AVX512-64-NEXT:    retq1299;1300; AVX512F-32-LABEL: test_v4f64_ole_q:1301; AVX512F-32:       # %bb.0:1302; AVX512F-32-NEXT:    pushl %ebp1303; AVX512F-32-NEXT:    movl %esp, %ebp1304; AVX512F-32-NEXT:    andl $-32, %esp1305; AVX512F-32-NEXT:    subl $32, %esp1306; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11307; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01308; AVX512F-32-NEXT:    vcmple_oqpd 8(%ebp), %ymm2, %ymm21309; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k11310; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1311; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01312; AVX512F-32-NEXT:    movl %ebp, %esp1313; AVX512F-32-NEXT:    popl %ebp1314; AVX512F-32-NEXT:    retl1315;1316; AVX512F-64-LABEL: test_v4f64_ole_q:1317; AVX512F-64:       # %bb.0:1318; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11319; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01320; AVX512F-64-NEXT:    vcmple_oqpd %ymm3, %ymm2, %ymm21321; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k11322; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1323; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01324; AVX512F-64-NEXT:    retq1325  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(1326                                               <4 x double> %f1, <4 x double> %f2, metadata !"ole",1327                                               metadata !"fpexcept.strict") #01328  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b1329  ret <4 x i64> %res1330}1331 1332define <4 x i64> @test_v4f64_one_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {1333; AVX-32-LABEL: test_v4f64_one_q:1334; AVX-32:       # %bb.0:1335; AVX-32-NEXT:    pushl %ebp1336; AVX-32-NEXT:    movl %esp, %ebp1337; AVX-32-NEXT:    andl $-32, %esp1338; AVX-32-NEXT:    subl $32, %esp1339; AVX-32-NEXT:    vcmpneq_oqpd 8(%ebp), %ymm2, %ymm21340; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01341; AVX-32-NEXT:    movl %ebp, %esp1342; AVX-32-NEXT:    popl %ebp1343; AVX-32-NEXT:    retl1344;1345; AVX-64-LABEL: test_v4f64_one_q:1346; AVX-64:       # %bb.0:1347; AVX-64-NEXT:    vcmpneq_oqpd %ymm3, %ymm2, %ymm21348; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01349; AVX-64-NEXT:    retq1350;1351; AVX512-32-LABEL: test_v4f64_one_q:1352; AVX512-32:       # %bb.0:1353; AVX512-32-NEXT:    pushl %ebp1354; AVX512-32-NEXT:    movl %esp, %ebp1355; AVX512-32-NEXT:    andl $-32, %esp1356; AVX512-32-NEXT:    subl $32, %esp1357; AVX512-32-NEXT:    vcmpneq_oqpd 8(%ebp), %ymm2, %k11358; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1359; AVX512-32-NEXT:    movl %ebp, %esp1360; AVX512-32-NEXT:    popl %ebp1361; AVX512-32-NEXT:    retl1362;1363; AVX512-64-LABEL: test_v4f64_one_q:1364; AVX512-64:       # %bb.0:1365; AVX512-64-NEXT:    vcmpneq_oqpd %ymm3, %ymm2, %k11366; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1367; AVX512-64-NEXT:    retq1368;1369; AVX512F-32-LABEL: test_v4f64_one_q:1370; AVX512F-32:       # %bb.0:1371; AVX512F-32-NEXT:    pushl %ebp1372; AVX512F-32-NEXT:    movl %esp, %ebp1373; AVX512F-32-NEXT:    andl $-32, %esp1374; AVX512F-32-NEXT:    subl $32, %esp1375; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11376; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01377; AVX512F-32-NEXT:    vcmpneq_oqpd 8(%ebp), %ymm2, %ymm21378; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k11379; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1380; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01381; AVX512F-32-NEXT:    movl %ebp, %esp1382; AVX512F-32-NEXT:    popl %ebp1383; AVX512F-32-NEXT:    retl1384;1385; AVX512F-64-LABEL: test_v4f64_one_q:1386; AVX512F-64:       # %bb.0:1387; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11388; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01389; AVX512F-64-NEXT:    vcmpneq_oqpd %ymm3, %ymm2, %ymm21390; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k11391; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1392; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01393; AVX512F-64-NEXT:    retq1394  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(1395                                               <4 x double> %f1, <4 x double> %f2, metadata !"one",1396                                               metadata !"fpexcept.strict") #01397  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b1398  ret <4 x i64> %res1399}1400 1401define <4 x i64> @test_v4f64_ord_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {1402; AVX-32-LABEL: test_v4f64_ord_q:1403; AVX-32:       # %bb.0:1404; AVX-32-NEXT:    pushl %ebp1405; AVX-32-NEXT:    movl %esp, %ebp1406; AVX-32-NEXT:    andl $-32, %esp1407; AVX-32-NEXT:    subl $32, %esp1408; AVX-32-NEXT:    vcmpordpd 8(%ebp), %ymm2, %ymm21409; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01410; AVX-32-NEXT:    movl %ebp, %esp1411; AVX-32-NEXT:    popl %ebp1412; AVX-32-NEXT:    retl1413;1414; AVX-64-LABEL: test_v4f64_ord_q:1415; AVX-64:       # %bb.0:1416; AVX-64-NEXT:    vcmpordpd %ymm3, %ymm2, %ymm21417; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01418; AVX-64-NEXT:    retq1419;1420; AVX512-32-LABEL: test_v4f64_ord_q:1421; AVX512-32:       # %bb.0:1422; AVX512-32-NEXT:    pushl %ebp1423; AVX512-32-NEXT:    movl %esp, %ebp1424; AVX512-32-NEXT:    andl $-32, %esp1425; AVX512-32-NEXT:    subl $32, %esp1426; AVX512-32-NEXT:    vcmpordpd 8(%ebp), %ymm2, %k11427; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1428; AVX512-32-NEXT:    movl %ebp, %esp1429; AVX512-32-NEXT:    popl %ebp1430; AVX512-32-NEXT:    retl1431;1432; AVX512-64-LABEL: test_v4f64_ord_q:1433; AVX512-64:       # %bb.0:1434; AVX512-64-NEXT:    vcmpordpd %ymm3, %ymm2, %k11435; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1436; AVX512-64-NEXT:    retq1437;1438; AVX512F-32-LABEL: test_v4f64_ord_q:1439; AVX512F-32:       # %bb.0:1440; AVX512F-32-NEXT:    pushl %ebp1441; AVX512F-32-NEXT:    movl %esp, %ebp1442; AVX512F-32-NEXT:    andl $-32, %esp1443; AVX512F-32-NEXT:    subl $32, %esp1444; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11445; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01446; AVX512F-32-NEXT:    vcmpordpd 8(%ebp), %ymm2, %ymm21447; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k11448; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1449; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01450; AVX512F-32-NEXT:    movl %ebp, %esp1451; AVX512F-32-NEXT:    popl %ebp1452; AVX512F-32-NEXT:    retl1453;1454; AVX512F-64-LABEL: test_v4f64_ord_q:1455; AVX512F-64:       # %bb.0:1456; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11457; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01458; AVX512F-64-NEXT:    vcmpordpd %ymm3, %ymm2, %ymm21459; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k11460; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1461; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01462; AVX512F-64-NEXT:    retq1463  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(1464                                               <4 x double> %f1, <4 x double> %f2, metadata !"ord",1465                                               metadata !"fpexcept.strict") #01466  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b1467  ret <4 x i64> %res1468}1469 1470define <4 x i64> @test_v4f64_ueq_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {1471; AVX-32-LABEL: test_v4f64_ueq_q:1472; AVX-32:       # %bb.0:1473; AVX-32-NEXT:    pushl %ebp1474; AVX-32-NEXT:    movl %esp, %ebp1475; AVX-32-NEXT:    andl $-32, %esp1476; AVX-32-NEXT:    subl $32, %esp1477; AVX-32-NEXT:    vcmpeq_uqpd 8(%ebp), %ymm2, %ymm21478; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01479; AVX-32-NEXT:    movl %ebp, %esp1480; AVX-32-NEXT:    popl %ebp1481; AVX-32-NEXT:    retl1482;1483; AVX-64-LABEL: test_v4f64_ueq_q:1484; AVX-64:       # %bb.0:1485; AVX-64-NEXT:    vcmpeq_uqpd %ymm3, %ymm2, %ymm21486; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01487; AVX-64-NEXT:    retq1488;1489; AVX512-32-LABEL: test_v4f64_ueq_q:1490; AVX512-32:       # %bb.0:1491; AVX512-32-NEXT:    pushl %ebp1492; AVX512-32-NEXT:    movl %esp, %ebp1493; AVX512-32-NEXT:    andl $-32, %esp1494; AVX512-32-NEXT:    subl $32, %esp1495; AVX512-32-NEXT:    vcmpeq_uqpd 8(%ebp), %ymm2, %k11496; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1497; AVX512-32-NEXT:    movl %ebp, %esp1498; AVX512-32-NEXT:    popl %ebp1499; AVX512-32-NEXT:    retl1500;1501; AVX512-64-LABEL: test_v4f64_ueq_q:1502; AVX512-64:       # %bb.0:1503; AVX512-64-NEXT:    vcmpeq_uqpd %ymm3, %ymm2, %k11504; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1505; AVX512-64-NEXT:    retq1506;1507; AVX512F-32-LABEL: test_v4f64_ueq_q:1508; AVX512F-32:       # %bb.0:1509; AVX512F-32-NEXT:    pushl %ebp1510; AVX512F-32-NEXT:    movl %esp, %ebp1511; AVX512F-32-NEXT:    andl $-32, %esp1512; AVX512F-32-NEXT:    subl $32, %esp1513; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11514; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01515; AVX512F-32-NEXT:    vcmpeq_uqpd 8(%ebp), %ymm2, %ymm21516; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k11517; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1518; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01519; AVX512F-32-NEXT:    movl %ebp, %esp1520; AVX512F-32-NEXT:    popl %ebp1521; AVX512F-32-NEXT:    retl1522;1523; AVX512F-64-LABEL: test_v4f64_ueq_q:1524; AVX512F-64:       # %bb.0:1525; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11526; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01527; AVX512F-64-NEXT:    vcmpeq_uqpd %ymm3, %ymm2, %ymm21528; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k11529; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1530; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01531; AVX512F-64-NEXT:    retq1532  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(1533                                               <4 x double> %f1, <4 x double> %f2, metadata !"ueq",1534                                               metadata !"fpexcept.strict") #01535  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b1536  ret <4 x i64> %res1537}1538 1539define <4 x i64> @test_v4f64_ugt_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {1540; AVX-32-LABEL: test_v4f64_ugt_q:1541; AVX-32:       # %bb.0:1542; AVX-32-NEXT:    pushl %ebp1543; AVX-32-NEXT:    movl %esp, %ebp1544; AVX-32-NEXT:    andl $-32, %esp1545; AVX-32-NEXT:    subl $32, %esp1546; AVX-32-NEXT:    vcmpnle_uqpd 8(%ebp), %ymm2, %ymm21547; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01548; AVX-32-NEXT:    movl %ebp, %esp1549; AVX-32-NEXT:    popl %ebp1550; AVX-32-NEXT:    retl1551;1552; AVX-64-LABEL: test_v4f64_ugt_q:1553; AVX-64:       # %bb.0:1554; AVX-64-NEXT:    vcmpnle_uqpd %ymm3, %ymm2, %ymm21555; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01556; AVX-64-NEXT:    retq1557;1558; AVX512-32-LABEL: test_v4f64_ugt_q:1559; AVX512-32:       # %bb.0:1560; AVX512-32-NEXT:    pushl %ebp1561; AVX512-32-NEXT:    movl %esp, %ebp1562; AVX512-32-NEXT:    andl $-32, %esp1563; AVX512-32-NEXT:    subl $32, %esp1564; AVX512-32-NEXT:    vcmpnle_uqpd 8(%ebp), %ymm2, %k11565; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1566; AVX512-32-NEXT:    movl %ebp, %esp1567; AVX512-32-NEXT:    popl %ebp1568; AVX512-32-NEXT:    retl1569;1570; AVX512-64-LABEL: test_v4f64_ugt_q:1571; AVX512-64:       # %bb.0:1572; AVX512-64-NEXT:    vcmpnle_uqpd %ymm3, %ymm2, %k11573; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1574; AVX512-64-NEXT:    retq1575;1576; AVX512F-32-LABEL: test_v4f64_ugt_q:1577; AVX512F-32:       # %bb.0:1578; AVX512F-32-NEXT:    pushl %ebp1579; AVX512F-32-NEXT:    movl %esp, %ebp1580; AVX512F-32-NEXT:    andl $-32, %esp1581; AVX512F-32-NEXT:    subl $32, %esp1582; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11583; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01584; AVX512F-32-NEXT:    vcmpnle_uqpd 8(%ebp), %ymm2, %ymm21585; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k11586; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1587; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01588; AVX512F-32-NEXT:    movl %ebp, %esp1589; AVX512F-32-NEXT:    popl %ebp1590; AVX512F-32-NEXT:    retl1591;1592; AVX512F-64-LABEL: test_v4f64_ugt_q:1593; AVX512F-64:       # %bb.0:1594; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11595; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01596; AVX512F-64-NEXT:    vcmpnle_uqpd %ymm3, %ymm2, %ymm21597; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k11598; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1599; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01600; AVX512F-64-NEXT:    retq1601  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(1602                                               <4 x double> %f1, <4 x double> %f2, metadata !"ugt",1603                                               metadata !"fpexcept.strict") #01604  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b1605  ret <4 x i64> %res1606}1607 1608define <4 x i64> @test_v4f64_uge_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {1609; AVX-32-LABEL: test_v4f64_uge_q:1610; AVX-32:       # %bb.0:1611; AVX-32-NEXT:    pushl %ebp1612; AVX-32-NEXT:    movl %esp, %ebp1613; AVX-32-NEXT:    andl $-32, %esp1614; AVX-32-NEXT:    subl $32, %esp1615; AVX-32-NEXT:    vcmpnlt_uqpd 8(%ebp), %ymm2, %ymm21616; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01617; AVX-32-NEXT:    movl %ebp, %esp1618; AVX-32-NEXT:    popl %ebp1619; AVX-32-NEXT:    retl1620;1621; AVX-64-LABEL: test_v4f64_uge_q:1622; AVX-64:       # %bb.0:1623; AVX-64-NEXT:    vcmpnlt_uqpd %ymm3, %ymm2, %ymm21624; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01625; AVX-64-NEXT:    retq1626;1627; AVX512-32-LABEL: test_v4f64_uge_q:1628; AVX512-32:       # %bb.0:1629; AVX512-32-NEXT:    pushl %ebp1630; AVX512-32-NEXT:    movl %esp, %ebp1631; AVX512-32-NEXT:    andl $-32, %esp1632; AVX512-32-NEXT:    subl $32, %esp1633; AVX512-32-NEXT:    vcmpnlt_uqpd 8(%ebp), %ymm2, %k11634; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1635; AVX512-32-NEXT:    movl %ebp, %esp1636; AVX512-32-NEXT:    popl %ebp1637; AVX512-32-NEXT:    retl1638;1639; AVX512-64-LABEL: test_v4f64_uge_q:1640; AVX512-64:       # %bb.0:1641; AVX512-64-NEXT:    vcmpnlt_uqpd %ymm3, %ymm2, %k11642; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1643; AVX512-64-NEXT:    retq1644;1645; AVX512F-32-LABEL: test_v4f64_uge_q:1646; AVX512F-32:       # %bb.0:1647; AVX512F-32-NEXT:    pushl %ebp1648; AVX512F-32-NEXT:    movl %esp, %ebp1649; AVX512F-32-NEXT:    andl $-32, %esp1650; AVX512F-32-NEXT:    subl $32, %esp1651; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11652; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01653; AVX512F-32-NEXT:    vcmpnlt_uqpd 8(%ebp), %ymm2, %ymm21654; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k11655; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1656; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01657; AVX512F-32-NEXT:    movl %ebp, %esp1658; AVX512F-32-NEXT:    popl %ebp1659; AVX512F-32-NEXT:    retl1660;1661; AVX512F-64-LABEL: test_v4f64_uge_q:1662; AVX512F-64:       # %bb.0:1663; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11664; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01665; AVX512F-64-NEXT:    vcmpnlt_uqpd %ymm3, %ymm2, %ymm21666; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k11667; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1668; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01669; AVX512F-64-NEXT:    retq1670  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(1671                                               <4 x double> %f1, <4 x double> %f2, metadata !"uge",1672                                               metadata !"fpexcept.strict") #01673  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b1674  ret <4 x i64> %res1675}1676 1677define <4 x i64> @test_v4f64_ult_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {1678; AVX-32-LABEL: test_v4f64_ult_q:1679; AVX-32:       # %bb.0:1680; AVX-32-NEXT:    pushl %ebp1681; AVX-32-NEXT:    movl %esp, %ebp1682; AVX-32-NEXT:    andl $-32, %esp1683; AVX-32-NEXT:    subl $32, %esp1684; AVX-32-NEXT:    vmovapd 8(%ebp), %ymm31685; AVX-32-NEXT:    vcmpnle_uqpd %ymm2, %ymm3, %ymm21686; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01687; AVX-32-NEXT:    movl %ebp, %esp1688; AVX-32-NEXT:    popl %ebp1689; AVX-32-NEXT:    retl1690;1691; AVX-64-LABEL: test_v4f64_ult_q:1692; AVX-64:       # %bb.0:1693; AVX-64-NEXT:    vcmpnle_uqpd %ymm2, %ymm3, %ymm21694; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01695; AVX-64-NEXT:    retq1696;1697; AVX512-32-LABEL: test_v4f64_ult_q:1698; AVX512-32:       # %bb.0:1699; AVX512-32-NEXT:    pushl %ebp1700; AVX512-32-NEXT:    movl %esp, %ebp1701; AVX512-32-NEXT:    andl $-32, %esp1702; AVX512-32-NEXT:    subl $32, %esp1703; AVX512-32-NEXT:    vcmpnge_uqpd 8(%ebp), %ymm2, %k11704; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1705; AVX512-32-NEXT:    movl %ebp, %esp1706; AVX512-32-NEXT:    popl %ebp1707; AVX512-32-NEXT:    retl1708;1709; AVX512-64-LABEL: test_v4f64_ult_q:1710; AVX512-64:       # %bb.0:1711; AVX512-64-NEXT:    vcmpnle_uqpd %ymm2, %ymm3, %k11712; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1713; AVX512-64-NEXT:    retq1714;1715; AVX512F-32-LABEL: test_v4f64_ult_q:1716; AVX512F-32:       # %bb.0:1717; AVX512F-32-NEXT:    pushl %ebp1718; AVX512F-32-NEXT:    movl %esp, %ebp1719; AVX512F-32-NEXT:    andl $-32, %esp1720; AVX512F-32-NEXT:    subl $32, %esp1721; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11722; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01723; AVX512F-32-NEXT:    vmovapd 8(%ebp), %ymm31724; AVX512F-32-NEXT:    vcmpnle_uqpd %ymm2, %ymm3, %ymm21725; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k11726; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1727; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01728; AVX512F-32-NEXT:    movl %ebp, %esp1729; AVX512F-32-NEXT:    popl %ebp1730; AVX512F-32-NEXT:    retl1731;1732; AVX512F-64-LABEL: test_v4f64_ult_q:1733; AVX512F-64:       # %bb.0:1734; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11735; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01736; AVX512F-64-NEXT:    vcmpnle_uqpd %ymm2, %ymm3, %ymm21737; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k11738; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1739; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01740; AVX512F-64-NEXT:    retq1741  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(1742                                               <4 x double> %f1, <4 x double> %f2, metadata !"ult",1743                                               metadata !"fpexcept.strict") #01744  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b1745  ret <4 x i64> %res1746}1747 1748define <4 x i64> @test_v4f64_ule_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {1749; AVX-32-LABEL: test_v4f64_ule_q:1750; AVX-32:       # %bb.0:1751; AVX-32-NEXT:    pushl %ebp1752; AVX-32-NEXT:    movl %esp, %ebp1753; AVX-32-NEXT:    andl $-32, %esp1754; AVX-32-NEXT:    subl $32, %esp1755; AVX-32-NEXT:    vmovapd 8(%ebp), %ymm31756; AVX-32-NEXT:    vcmpnlt_uqpd %ymm2, %ymm3, %ymm21757; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01758; AVX-32-NEXT:    movl %ebp, %esp1759; AVX-32-NEXT:    popl %ebp1760; AVX-32-NEXT:    retl1761;1762; AVX-64-LABEL: test_v4f64_ule_q:1763; AVX-64:       # %bb.0:1764; AVX-64-NEXT:    vcmpnlt_uqpd %ymm2, %ymm3, %ymm21765; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01766; AVX-64-NEXT:    retq1767;1768; AVX512-32-LABEL: test_v4f64_ule_q:1769; AVX512-32:       # %bb.0:1770; AVX512-32-NEXT:    pushl %ebp1771; AVX512-32-NEXT:    movl %esp, %ebp1772; AVX512-32-NEXT:    andl $-32, %esp1773; AVX512-32-NEXT:    subl $32, %esp1774; AVX512-32-NEXT:    vcmpngt_uqpd 8(%ebp), %ymm2, %k11775; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1776; AVX512-32-NEXT:    movl %ebp, %esp1777; AVX512-32-NEXT:    popl %ebp1778; AVX512-32-NEXT:    retl1779;1780; AVX512-64-LABEL: test_v4f64_ule_q:1781; AVX512-64:       # %bb.0:1782; AVX512-64-NEXT:    vcmpnlt_uqpd %ymm2, %ymm3, %k11783; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1784; AVX512-64-NEXT:    retq1785;1786; AVX512F-32-LABEL: test_v4f64_ule_q:1787; AVX512F-32:       # %bb.0:1788; AVX512F-32-NEXT:    pushl %ebp1789; AVX512F-32-NEXT:    movl %esp, %ebp1790; AVX512F-32-NEXT:    andl $-32, %esp1791; AVX512F-32-NEXT:    subl $32, %esp1792; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11793; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01794; AVX512F-32-NEXT:    vmovapd 8(%ebp), %ymm31795; AVX512F-32-NEXT:    vcmpnlt_uqpd %ymm2, %ymm3, %ymm21796; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k11797; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1798; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01799; AVX512F-32-NEXT:    movl %ebp, %esp1800; AVX512F-32-NEXT:    popl %ebp1801; AVX512F-32-NEXT:    retl1802;1803; AVX512F-64-LABEL: test_v4f64_ule_q:1804; AVX512F-64:       # %bb.0:1805; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11806; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01807; AVX512F-64-NEXT:    vcmpnlt_uqpd %ymm2, %ymm3, %ymm21808; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k11809; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1810; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01811; AVX512F-64-NEXT:    retq1812  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(1813                                               <4 x double> %f1, <4 x double> %f2, metadata !"ule",1814                                               metadata !"fpexcept.strict") #01815  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b1816  ret <4 x i64> %res1817}1818 1819define <4 x i64> @test_v4f64_une_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {1820; AVX-32-LABEL: test_v4f64_une_q:1821; AVX-32:       # %bb.0:1822; AVX-32-NEXT:    pushl %ebp1823; AVX-32-NEXT:    movl %esp, %ebp1824; AVX-32-NEXT:    andl $-32, %esp1825; AVX-32-NEXT:    subl $32, %esp1826; AVX-32-NEXT:    vcmpneqpd 8(%ebp), %ymm2, %ymm21827; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01828; AVX-32-NEXT:    movl %ebp, %esp1829; AVX-32-NEXT:    popl %ebp1830; AVX-32-NEXT:    retl1831;1832; AVX-64-LABEL: test_v4f64_une_q:1833; AVX-64:       # %bb.0:1834; AVX-64-NEXT:    vcmpneqpd %ymm3, %ymm2, %ymm21835; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01836; AVX-64-NEXT:    retq1837;1838; AVX512-32-LABEL: test_v4f64_une_q:1839; AVX512-32:       # %bb.0:1840; AVX512-32-NEXT:    pushl %ebp1841; AVX512-32-NEXT:    movl %esp, %ebp1842; AVX512-32-NEXT:    andl $-32, %esp1843; AVX512-32-NEXT:    subl $32, %esp1844; AVX512-32-NEXT:    vcmpneqpd 8(%ebp), %ymm2, %k11845; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1846; AVX512-32-NEXT:    movl %ebp, %esp1847; AVX512-32-NEXT:    popl %ebp1848; AVX512-32-NEXT:    retl1849;1850; AVX512-64-LABEL: test_v4f64_une_q:1851; AVX512-64:       # %bb.0:1852; AVX512-64-NEXT:    vcmpneqpd %ymm3, %ymm2, %k11853; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1854; AVX512-64-NEXT:    retq1855;1856; AVX512F-32-LABEL: test_v4f64_une_q:1857; AVX512F-32:       # %bb.0:1858; AVX512F-32-NEXT:    pushl %ebp1859; AVX512F-32-NEXT:    movl %esp, %ebp1860; AVX512F-32-NEXT:    andl $-32, %esp1861; AVX512F-32-NEXT:    subl $32, %esp1862; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11863; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01864; AVX512F-32-NEXT:    vcmpneqpd 8(%ebp), %ymm2, %ymm21865; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k11866; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1867; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01868; AVX512F-32-NEXT:    movl %ebp, %esp1869; AVX512F-32-NEXT:    popl %ebp1870; AVX512F-32-NEXT:    retl1871;1872; AVX512F-64-LABEL: test_v4f64_une_q:1873; AVX512F-64:       # %bb.0:1874; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11875; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01876; AVX512F-64-NEXT:    vcmpneqpd %ymm3, %ymm2, %ymm21877; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k11878; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1879; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01880; AVX512F-64-NEXT:    retq1881  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(1882                                               <4 x double> %f1, <4 x double> %f2, metadata !"une",1883                                               metadata !"fpexcept.strict") #01884  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b1885  ret <4 x i64> %res1886}1887 1888define <4 x i64> @test_v4f64_uno_q(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {1889; AVX-32-LABEL: test_v4f64_uno_q:1890; AVX-32:       # %bb.0:1891; AVX-32-NEXT:    pushl %ebp1892; AVX-32-NEXT:    movl %esp, %ebp1893; AVX-32-NEXT:    andl $-32, %esp1894; AVX-32-NEXT:    subl $32, %esp1895; AVX-32-NEXT:    vcmpunordpd 8(%ebp), %ymm2, %ymm21896; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01897; AVX-32-NEXT:    movl %ebp, %esp1898; AVX-32-NEXT:    popl %ebp1899; AVX-32-NEXT:    retl1900;1901; AVX-64-LABEL: test_v4f64_uno_q:1902; AVX-64:       # %bb.0:1903; AVX-64-NEXT:    vcmpunordpd %ymm3, %ymm2, %ymm21904; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01905; AVX-64-NEXT:    retq1906;1907; AVX512-32-LABEL: test_v4f64_uno_q:1908; AVX512-32:       # %bb.0:1909; AVX512-32-NEXT:    pushl %ebp1910; AVX512-32-NEXT:    movl %esp, %ebp1911; AVX512-32-NEXT:    andl $-32, %esp1912; AVX512-32-NEXT:    subl $32, %esp1913; AVX512-32-NEXT:    vcmpunordpd 8(%ebp), %ymm2, %k11914; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1915; AVX512-32-NEXT:    movl %ebp, %esp1916; AVX512-32-NEXT:    popl %ebp1917; AVX512-32-NEXT:    retl1918;1919; AVX512-64-LABEL: test_v4f64_uno_q:1920; AVX512-64:       # %bb.0:1921; AVX512-64-NEXT:    vcmpunordpd %ymm3, %ymm2, %k11922; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}1923; AVX512-64-NEXT:    retq1924;1925; AVX512F-32-LABEL: test_v4f64_uno_q:1926; AVX512F-32:       # %bb.0:1927; AVX512F-32-NEXT:    pushl %ebp1928; AVX512F-32-NEXT:    movl %esp, %ebp1929; AVX512F-32-NEXT:    andl $-32, %esp1930; AVX512F-32-NEXT:    subl $32, %esp1931; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11932; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01933; AVX512F-32-NEXT:    vcmpunordpd 8(%ebp), %ymm2, %ymm21934; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k11935; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1936; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01937; AVX512F-32-NEXT:    movl %ebp, %esp1938; AVX512F-32-NEXT:    popl %ebp1939; AVX512F-32-NEXT:    retl1940;1941; AVX512F-64-LABEL: test_v4f64_uno_q:1942; AVX512F-64:       # %bb.0:1943; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11944; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01945; AVX512F-64-NEXT:    vcmpunordpd %ymm3, %ymm2, %ymm21946; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k11947; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1948; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01949; AVX512F-64-NEXT:    retq1950  %cond = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(1951                                               <4 x double> %f1, <4 x double> %f2, metadata !"uno",1952                                               metadata !"fpexcept.strict") #01953  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b1954  ret <4 x i64> %res1955}1956 1957define <8 x i32> @test_v8f32_oeq_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {1958; AVX-32-LABEL: test_v8f32_oeq_s:1959; AVX-32:       # %bb.0:1960; AVX-32-NEXT:    pushl %ebp1961; AVX-32-NEXT:    movl %esp, %ebp1962; AVX-32-NEXT:    andl $-32, %esp1963; AVX-32-NEXT:    subl $32, %esp1964; AVX-32-NEXT:    vcmpeq_osps 8(%ebp), %ymm2, %ymm21965; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm01966; AVX-32-NEXT:    movl %ebp, %esp1967; AVX-32-NEXT:    popl %ebp1968; AVX-32-NEXT:    retl1969;1970; AVX-64-LABEL: test_v8f32_oeq_s:1971; AVX-64:       # %bb.0:1972; AVX-64-NEXT:    vcmpeq_osps %ymm3, %ymm2, %ymm21973; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm01974; AVX-64-NEXT:    retq1975;1976; AVX512-32-LABEL: test_v8f32_oeq_s:1977; AVX512-32:       # %bb.0:1978; AVX512-32-NEXT:    pushl %ebp1979; AVX512-32-NEXT:    movl %esp, %ebp1980; AVX512-32-NEXT:    andl $-32, %esp1981; AVX512-32-NEXT:    subl $32, %esp1982; AVX512-32-NEXT:    vcmpeq_osps 8(%ebp), %ymm2, %k11983; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}1984; AVX512-32-NEXT:    movl %ebp, %esp1985; AVX512-32-NEXT:    popl %ebp1986; AVX512-32-NEXT:    retl1987;1988; AVX512-64-LABEL: test_v8f32_oeq_s:1989; AVX512-64:       # %bb.0:1990; AVX512-64-NEXT:    vcmpeq_osps %ymm3, %ymm2, %k11991; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}1992; AVX512-64-NEXT:    retq1993;1994; AVX512F-32-LABEL: test_v8f32_oeq_s:1995; AVX512F-32:       # %bb.0:1996; AVX512F-32-NEXT:    pushl %ebp1997; AVX512F-32-NEXT:    movl %esp, %ebp1998; AVX512F-32-NEXT:    andl $-32, %esp1999; AVX512F-32-NEXT:    subl $32, %esp2000; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12001; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02002; AVX512F-32-NEXT:    vcmpeq_osps 8(%ebp), %ymm2, %ymm22003; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k12004; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2005; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02006; AVX512F-32-NEXT:    movl %ebp, %esp2007; AVX512F-32-NEXT:    popl %ebp2008; AVX512F-32-NEXT:    retl2009;2010; AVX512F-64-LABEL: test_v8f32_oeq_s:2011; AVX512F-64:       # %bb.0:2012; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12013; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02014; AVX512F-64-NEXT:    vcmpeq_osps %ymm3, %ymm2, %ymm22015; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k12016; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2017; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02018; AVX512F-64-NEXT:    retq2019  %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(2020                                               <8 x float> %f1, <8 x float> %f2, metadata !"oeq",2021                                               metadata !"fpexcept.strict") #02022  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b2023  ret <8 x i32> %res2024}2025 2026define <8 x i32> @test_v8f32_ogt_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {2027; AVX-32-LABEL: test_v8f32_ogt_s:2028; AVX-32:       # %bb.0:2029; AVX-32-NEXT:    pushl %ebp2030; AVX-32-NEXT:    movl %esp, %ebp2031; AVX-32-NEXT:    andl $-32, %esp2032; AVX-32-NEXT:    subl $32, %esp2033; AVX-32-NEXT:    vmovaps 8(%ebp), %ymm32034; AVX-32-NEXT:    vcmpltps %ymm2, %ymm3, %ymm22035; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02036; AVX-32-NEXT:    movl %ebp, %esp2037; AVX-32-NEXT:    popl %ebp2038; AVX-32-NEXT:    retl2039;2040; AVX-64-LABEL: test_v8f32_ogt_s:2041; AVX-64:       # %bb.0:2042; AVX-64-NEXT:    vcmpltps %ymm2, %ymm3, %ymm22043; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02044; AVX-64-NEXT:    retq2045;2046; AVX512-32-LABEL: test_v8f32_ogt_s:2047; AVX512-32:       # %bb.0:2048; AVX512-32-NEXT:    pushl %ebp2049; AVX512-32-NEXT:    movl %esp, %ebp2050; AVX512-32-NEXT:    andl $-32, %esp2051; AVX512-32-NEXT:    subl $32, %esp2052; AVX512-32-NEXT:    vcmpgtps 8(%ebp), %ymm2, %k12053; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2054; AVX512-32-NEXT:    movl %ebp, %esp2055; AVX512-32-NEXT:    popl %ebp2056; AVX512-32-NEXT:    retl2057;2058; AVX512-64-LABEL: test_v8f32_ogt_s:2059; AVX512-64:       # %bb.0:2060; AVX512-64-NEXT:    vcmpltps %ymm2, %ymm3, %k12061; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2062; AVX512-64-NEXT:    retq2063;2064; AVX512F-32-LABEL: test_v8f32_ogt_s:2065; AVX512F-32:       # %bb.0:2066; AVX512F-32-NEXT:    pushl %ebp2067; AVX512F-32-NEXT:    movl %esp, %ebp2068; AVX512F-32-NEXT:    andl $-32, %esp2069; AVX512F-32-NEXT:    subl $32, %esp2070; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12071; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02072; AVX512F-32-NEXT:    vmovaps 8(%ebp), %ymm32073; AVX512F-32-NEXT:    vcmpltps %ymm2, %ymm3, %ymm22074; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k12075; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2076; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02077; AVX512F-32-NEXT:    movl %ebp, %esp2078; AVX512F-32-NEXT:    popl %ebp2079; AVX512F-32-NEXT:    retl2080;2081; AVX512F-64-LABEL: test_v8f32_ogt_s:2082; AVX512F-64:       # %bb.0:2083; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12084; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02085; AVX512F-64-NEXT:    vcmpltps %ymm2, %ymm3, %ymm22086; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k12087; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2088; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02089; AVX512F-64-NEXT:    retq2090  %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(2091                                               <8 x float> %f1, <8 x float> %f2, metadata !"ogt",2092                                               metadata !"fpexcept.strict") #02093  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b2094  ret <8 x i32> %res2095}2096 2097define <8 x i32> @test_v8f32_oge_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {2098; AVX-32-LABEL: test_v8f32_oge_s:2099; AVX-32:       # %bb.0:2100; AVX-32-NEXT:    pushl %ebp2101; AVX-32-NEXT:    movl %esp, %ebp2102; AVX-32-NEXT:    andl $-32, %esp2103; AVX-32-NEXT:    subl $32, %esp2104; AVX-32-NEXT:    vmovaps 8(%ebp), %ymm32105; AVX-32-NEXT:    vcmpleps %ymm2, %ymm3, %ymm22106; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02107; AVX-32-NEXT:    movl %ebp, %esp2108; AVX-32-NEXT:    popl %ebp2109; AVX-32-NEXT:    retl2110;2111; AVX-64-LABEL: test_v8f32_oge_s:2112; AVX-64:       # %bb.0:2113; AVX-64-NEXT:    vcmpleps %ymm2, %ymm3, %ymm22114; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02115; AVX-64-NEXT:    retq2116;2117; AVX512-32-LABEL: test_v8f32_oge_s:2118; AVX512-32:       # %bb.0:2119; AVX512-32-NEXT:    pushl %ebp2120; AVX512-32-NEXT:    movl %esp, %ebp2121; AVX512-32-NEXT:    andl $-32, %esp2122; AVX512-32-NEXT:    subl $32, %esp2123; AVX512-32-NEXT:    vcmpgeps 8(%ebp), %ymm2, %k12124; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2125; AVX512-32-NEXT:    movl %ebp, %esp2126; AVX512-32-NEXT:    popl %ebp2127; AVX512-32-NEXT:    retl2128;2129; AVX512-64-LABEL: test_v8f32_oge_s:2130; AVX512-64:       # %bb.0:2131; AVX512-64-NEXT:    vcmpleps %ymm2, %ymm3, %k12132; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2133; AVX512-64-NEXT:    retq2134;2135; AVX512F-32-LABEL: test_v8f32_oge_s:2136; AVX512F-32:       # %bb.0:2137; AVX512F-32-NEXT:    pushl %ebp2138; AVX512F-32-NEXT:    movl %esp, %ebp2139; AVX512F-32-NEXT:    andl $-32, %esp2140; AVX512F-32-NEXT:    subl $32, %esp2141; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12142; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02143; AVX512F-32-NEXT:    vmovaps 8(%ebp), %ymm32144; AVX512F-32-NEXT:    vcmpleps %ymm2, %ymm3, %ymm22145; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k12146; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2147; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02148; AVX512F-32-NEXT:    movl %ebp, %esp2149; AVX512F-32-NEXT:    popl %ebp2150; AVX512F-32-NEXT:    retl2151;2152; AVX512F-64-LABEL: test_v8f32_oge_s:2153; AVX512F-64:       # %bb.0:2154; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12155; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02156; AVX512F-64-NEXT:    vcmpleps %ymm2, %ymm3, %ymm22157; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k12158; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2159; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02160; AVX512F-64-NEXT:    retq2161  %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(2162                                               <8 x float> %f1, <8 x float> %f2, metadata !"oge",2163                                               metadata !"fpexcept.strict") #02164  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b2165  ret <8 x i32> %res2166}2167 2168define <8 x i32> @test_v8f32_olt_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {2169; AVX-32-LABEL: test_v8f32_olt_s:2170; AVX-32:       # %bb.0:2171; AVX-32-NEXT:    pushl %ebp2172; AVX-32-NEXT:    movl %esp, %ebp2173; AVX-32-NEXT:    andl $-32, %esp2174; AVX-32-NEXT:    subl $32, %esp2175; AVX-32-NEXT:    vcmpltps 8(%ebp), %ymm2, %ymm22176; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02177; AVX-32-NEXT:    movl %ebp, %esp2178; AVX-32-NEXT:    popl %ebp2179; AVX-32-NEXT:    retl2180;2181; AVX-64-LABEL: test_v8f32_olt_s:2182; AVX-64:       # %bb.0:2183; AVX-64-NEXT:    vcmpltps %ymm3, %ymm2, %ymm22184; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02185; AVX-64-NEXT:    retq2186;2187; AVX512-32-LABEL: test_v8f32_olt_s:2188; AVX512-32:       # %bb.0:2189; AVX512-32-NEXT:    pushl %ebp2190; AVX512-32-NEXT:    movl %esp, %ebp2191; AVX512-32-NEXT:    andl $-32, %esp2192; AVX512-32-NEXT:    subl $32, %esp2193; AVX512-32-NEXT:    vcmpltps 8(%ebp), %ymm2, %k12194; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2195; AVX512-32-NEXT:    movl %ebp, %esp2196; AVX512-32-NEXT:    popl %ebp2197; AVX512-32-NEXT:    retl2198;2199; AVX512-64-LABEL: test_v8f32_olt_s:2200; AVX512-64:       # %bb.0:2201; AVX512-64-NEXT:    vcmpltps %ymm3, %ymm2, %k12202; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2203; AVX512-64-NEXT:    retq2204;2205; AVX512F-32-LABEL: test_v8f32_olt_s:2206; AVX512F-32:       # %bb.0:2207; AVX512F-32-NEXT:    pushl %ebp2208; AVX512F-32-NEXT:    movl %esp, %ebp2209; AVX512F-32-NEXT:    andl $-32, %esp2210; AVX512F-32-NEXT:    subl $32, %esp2211; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12212; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02213; AVX512F-32-NEXT:    vcmpltps 8(%ebp), %ymm2, %ymm22214; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k12215; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2216; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02217; AVX512F-32-NEXT:    movl %ebp, %esp2218; AVX512F-32-NEXT:    popl %ebp2219; AVX512F-32-NEXT:    retl2220;2221; AVX512F-64-LABEL: test_v8f32_olt_s:2222; AVX512F-64:       # %bb.0:2223; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12224; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02225; AVX512F-64-NEXT:    vcmpltps %ymm3, %ymm2, %ymm22226; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k12227; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2228; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02229; AVX512F-64-NEXT:    retq2230  %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(2231                                               <8 x float> %f1, <8 x float> %f2, metadata !"olt",2232                                               metadata !"fpexcept.strict") #02233  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b2234  ret <8 x i32> %res2235}2236 2237define <8 x i32> @test_v8f32_ole_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {2238; AVX-32-LABEL: test_v8f32_ole_s:2239; AVX-32:       # %bb.0:2240; AVX-32-NEXT:    pushl %ebp2241; AVX-32-NEXT:    movl %esp, %ebp2242; AVX-32-NEXT:    andl $-32, %esp2243; AVX-32-NEXT:    subl $32, %esp2244; AVX-32-NEXT:    vcmpleps 8(%ebp), %ymm2, %ymm22245; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02246; AVX-32-NEXT:    movl %ebp, %esp2247; AVX-32-NEXT:    popl %ebp2248; AVX-32-NEXT:    retl2249;2250; AVX-64-LABEL: test_v8f32_ole_s:2251; AVX-64:       # %bb.0:2252; AVX-64-NEXT:    vcmpleps %ymm3, %ymm2, %ymm22253; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02254; AVX-64-NEXT:    retq2255;2256; AVX512-32-LABEL: test_v8f32_ole_s:2257; AVX512-32:       # %bb.0:2258; AVX512-32-NEXT:    pushl %ebp2259; AVX512-32-NEXT:    movl %esp, %ebp2260; AVX512-32-NEXT:    andl $-32, %esp2261; AVX512-32-NEXT:    subl $32, %esp2262; AVX512-32-NEXT:    vcmpleps 8(%ebp), %ymm2, %k12263; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2264; AVX512-32-NEXT:    movl %ebp, %esp2265; AVX512-32-NEXT:    popl %ebp2266; AVX512-32-NEXT:    retl2267;2268; AVX512-64-LABEL: test_v8f32_ole_s:2269; AVX512-64:       # %bb.0:2270; AVX512-64-NEXT:    vcmpleps %ymm3, %ymm2, %k12271; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2272; AVX512-64-NEXT:    retq2273;2274; AVX512F-32-LABEL: test_v8f32_ole_s:2275; AVX512F-32:       # %bb.0:2276; AVX512F-32-NEXT:    pushl %ebp2277; AVX512F-32-NEXT:    movl %esp, %ebp2278; AVX512F-32-NEXT:    andl $-32, %esp2279; AVX512F-32-NEXT:    subl $32, %esp2280; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12281; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02282; AVX512F-32-NEXT:    vcmpleps 8(%ebp), %ymm2, %ymm22283; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k12284; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2285; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02286; AVX512F-32-NEXT:    movl %ebp, %esp2287; AVX512F-32-NEXT:    popl %ebp2288; AVX512F-32-NEXT:    retl2289;2290; AVX512F-64-LABEL: test_v8f32_ole_s:2291; AVX512F-64:       # %bb.0:2292; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12293; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02294; AVX512F-64-NEXT:    vcmpleps %ymm3, %ymm2, %ymm22295; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k12296; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2297; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02298; AVX512F-64-NEXT:    retq2299  %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(2300                                               <8 x float> %f1, <8 x float> %f2, metadata !"ole",2301                                               metadata !"fpexcept.strict") #02302  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b2303  ret <8 x i32> %res2304}2305 2306define <8 x i32> @test_v8f32_one_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {2307; AVX-32-LABEL: test_v8f32_one_s:2308; AVX-32:       # %bb.0:2309; AVX-32-NEXT:    pushl %ebp2310; AVX-32-NEXT:    movl %esp, %ebp2311; AVX-32-NEXT:    andl $-32, %esp2312; AVX-32-NEXT:    subl $32, %esp2313; AVX-32-NEXT:    vcmpneq_osps 8(%ebp), %ymm2, %ymm22314; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02315; AVX-32-NEXT:    movl %ebp, %esp2316; AVX-32-NEXT:    popl %ebp2317; AVX-32-NEXT:    retl2318;2319; AVX-64-LABEL: test_v8f32_one_s:2320; AVX-64:       # %bb.0:2321; AVX-64-NEXT:    vcmpneq_osps %ymm3, %ymm2, %ymm22322; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02323; AVX-64-NEXT:    retq2324;2325; AVX512-32-LABEL: test_v8f32_one_s:2326; AVX512-32:       # %bb.0:2327; AVX512-32-NEXT:    pushl %ebp2328; AVX512-32-NEXT:    movl %esp, %ebp2329; AVX512-32-NEXT:    andl $-32, %esp2330; AVX512-32-NEXT:    subl $32, %esp2331; AVX512-32-NEXT:    vcmpneq_osps 8(%ebp), %ymm2, %k12332; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2333; AVX512-32-NEXT:    movl %ebp, %esp2334; AVX512-32-NEXT:    popl %ebp2335; AVX512-32-NEXT:    retl2336;2337; AVX512-64-LABEL: test_v8f32_one_s:2338; AVX512-64:       # %bb.0:2339; AVX512-64-NEXT:    vcmpneq_osps %ymm3, %ymm2, %k12340; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2341; AVX512-64-NEXT:    retq2342;2343; AVX512F-32-LABEL: test_v8f32_one_s:2344; AVX512F-32:       # %bb.0:2345; AVX512F-32-NEXT:    pushl %ebp2346; AVX512F-32-NEXT:    movl %esp, %ebp2347; AVX512F-32-NEXT:    andl $-32, %esp2348; AVX512F-32-NEXT:    subl $32, %esp2349; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12350; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02351; AVX512F-32-NEXT:    vcmpneq_osps 8(%ebp), %ymm2, %ymm22352; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k12353; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2354; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02355; AVX512F-32-NEXT:    movl %ebp, %esp2356; AVX512F-32-NEXT:    popl %ebp2357; AVX512F-32-NEXT:    retl2358;2359; AVX512F-64-LABEL: test_v8f32_one_s:2360; AVX512F-64:       # %bb.0:2361; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12362; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02363; AVX512F-64-NEXT:    vcmpneq_osps %ymm3, %ymm2, %ymm22364; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k12365; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2366; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02367; AVX512F-64-NEXT:    retq2368  %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(2369                                               <8 x float> %f1, <8 x float> %f2, metadata !"one",2370                                               metadata !"fpexcept.strict") #02371  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b2372  ret <8 x i32> %res2373}2374 2375define <8 x i32> @test_v8f32_ord_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {2376; AVX-32-LABEL: test_v8f32_ord_s:2377; AVX-32:       # %bb.0:2378; AVX-32-NEXT:    pushl %ebp2379; AVX-32-NEXT:    movl %esp, %ebp2380; AVX-32-NEXT:    andl $-32, %esp2381; AVX-32-NEXT:    subl $32, %esp2382; AVX-32-NEXT:    vcmpord_sps 8(%ebp), %ymm2, %ymm22383; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02384; AVX-32-NEXT:    movl %ebp, %esp2385; AVX-32-NEXT:    popl %ebp2386; AVX-32-NEXT:    retl2387;2388; AVX-64-LABEL: test_v8f32_ord_s:2389; AVX-64:       # %bb.0:2390; AVX-64-NEXT:    vcmpord_sps %ymm3, %ymm2, %ymm22391; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02392; AVX-64-NEXT:    retq2393;2394; AVX512-32-LABEL: test_v8f32_ord_s:2395; AVX512-32:       # %bb.0:2396; AVX512-32-NEXT:    pushl %ebp2397; AVX512-32-NEXT:    movl %esp, %ebp2398; AVX512-32-NEXT:    andl $-32, %esp2399; AVX512-32-NEXT:    subl $32, %esp2400; AVX512-32-NEXT:    vcmpord_sps 8(%ebp), %ymm2, %k12401; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2402; AVX512-32-NEXT:    movl %ebp, %esp2403; AVX512-32-NEXT:    popl %ebp2404; AVX512-32-NEXT:    retl2405;2406; AVX512-64-LABEL: test_v8f32_ord_s:2407; AVX512-64:       # %bb.0:2408; AVX512-64-NEXT:    vcmpord_sps %ymm3, %ymm2, %k12409; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2410; AVX512-64-NEXT:    retq2411;2412; AVX512F-32-LABEL: test_v8f32_ord_s:2413; AVX512F-32:       # %bb.0:2414; AVX512F-32-NEXT:    pushl %ebp2415; AVX512F-32-NEXT:    movl %esp, %ebp2416; AVX512F-32-NEXT:    andl $-32, %esp2417; AVX512F-32-NEXT:    subl $32, %esp2418; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12419; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02420; AVX512F-32-NEXT:    vcmpord_sps 8(%ebp), %ymm2, %ymm22421; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k12422; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2423; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02424; AVX512F-32-NEXT:    movl %ebp, %esp2425; AVX512F-32-NEXT:    popl %ebp2426; AVX512F-32-NEXT:    retl2427;2428; AVX512F-64-LABEL: test_v8f32_ord_s:2429; AVX512F-64:       # %bb.0:2430; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12431; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02432; AVX512F-64-NEXT:    vcmpord_sps %ymm3, %ymm2, %ymm22433; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k12434; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2435; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02436; AVX512F-64-NEXT:    retq2437  %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(2438                                               <8 x float> %f1, <8 x float> %f2, metadata !"ord",2439                                               metadata !"fpexcept.strict") #02440  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b2441  ret <8 x i32> %res2442}2443 2444define <8 x i32> @test_v8f32_ueq_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {2445; AVX-32-LABEL: test_v8f32_ueq_s:2446; AVX-32:       # %bb.0:2447; AVX-32-NEXT:    pushl %ebp2448; AVX-32-NEXT:    movl %esp, %ebp2449; AVX-32-NEXT:    andl $-32, %esp2450; AVX-32-NEXT:    subl $32, %esp2451; AVX-32-NEXT:    vcmpeq_usps 8(%ebp), %ymm2, %ymm22452; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02453; AVX-32-NEXT:    movl %ebp, %esp2454; AVX-32-NEXT:    popl %ebp2455; AVX-32-NEXT:    retl2456;2457; AVX-64-LABEL: test_v8f32_ueq_s:2458; AVX-64:       # %bb.0:2459; AVX-64-NEXT:    vcmpeq_usps %ymm3, %ymm2, %ymm22460; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02461; AVX-64-NEXT:    retq2462;2463; AVX512-32-LABEL: test_v8f32_ueq_s:2464; AVX512-32:       # %bb.0:2465; AVX512-32-NEXT:    pushl %ebp2466; AVX512-32-NEXT:    movl %esp, %ebp2467; AVX512-32-NEXT:    andl $-32, %esp2468; AVX512-32-NEXT:    subl $32, %esp2469; AVX512-32-NEXT:    vcmpeq_usps 8(%ebp), %ymm2, %k12470; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2471; AVX512-32-NEXT:    movl %ebp, %esp2472; AVX512-32-NEXT:    popl %ebp2473; AVX512-32-NEXT:    retl2474;2475; AVX512-64-LABEL: test_v8f32_ueq_s:2476; AVX512-64:       # %bb.0:2477; AVX512-64-NEXT:    vcmpeq_usps %ymm3, %ymm2, %k12478; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2479; AVX512-64-NEXT:    retq2480;2481; AVX512F-32-LABEL: test_v8f32_ueq_s:2482; AVX512F-32:       # %bb.0:2483; AVX512F-32-NEXT:    pushl %ebp2484; AVX512F-32-NEXT:    movl %esp, %ebp2485; AVX512F-32-NEXT:    andl $-32, %esp2486; AVX512F-32-NEXT:    subl $32, %esp2487; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12488; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02489; AVX512F-32-NEXT:    vcmpeq_usps 8(%ebp), %ymm2, %ymm22490; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k12491; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2492; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02493; AVX512F-32-NEXT:    movl %ebp, %esp2494; AVX512F-32-NEXT:    popl %ebp2495; AVX512F-32-NEXT:    retl2496;2497; AVX512F-64-LABEL: test_v8f32_ueq_s:2498; AVX512F-64:       # %bb.0:2499; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12500; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02501; AVX512F-64-NEXT:    vcmpeq_usps %ymm3, %ymm2, %ymm22502; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k12503; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2504; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02505; AVX512F-64-NEXT:    retq2506  %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(2507                                               <8 x float> %f1, <8 x float> %f2, metadata !"ueq",2508                                               metadata !"fpexcept.strict") #02509  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b2510  ret <8 x i32> %res2511}2512 2513define <8 x i32> @test_v8f32_ugt_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {2514; AVX-32-LABEL: test_v8f32_ugt_s:2515; AVX-32:       # %bb.0:2516; AVX-32-NEXT:    pushl %ebp2517; AVX-32-NEXT:    movl %esp, %ebp2518; AVX-32-NEXT:    andl $-32, %esp2519; AVX-32-NEXT:    subl $32, %esp2520; AVX-32-NEXT:    vcmpnleps 8(%ebp), %ymm2, %ymm22521; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02522; AVX-32-NEXT:    movl %ebp, %esp2523; AVX-32-NEXT:    popl %ebp2524; AVX-32-NEXT:    retl2525;2526; AVX-64-LABEL: test_v8f32_ugt_s:2527; AVX-64:       # %bb.0:2528; AVX-64-NEXT:    vcmpnleps %ymm3, %ymm2, %ymm22529; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02530; AVX-64-NEXT:    retq2531;2532; AVX512-32-LABEL: test_v8f32_ugt_s:2533; AVX512-32:       # %bb.0:2534; AVX512-32-NEXT:    pushl %ebp2535; AVX512-32-NEXT:    movl %esp, %ebp2536; AVX512-32-NEXT:    andl $-32, %esp2537; AVX512-32-NEXT:    subl $32, %esp2538; AVX512-32-NEXT:    vcmpnleps 8(%ebp), %ymm2, %k12539; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2540; AVX512-32-NEXT:    movl %ebp, %esp2541; AVX512-32-NEXT:    popl %ebp2542; AVX512-32-NEXT:    retl2543;2544; AVX512-64-LABEL: test_v8f32_ugt_s:2545; AVX512-64:       # %bb.0:2546; AVX512-64-NEXT:    vcmpnleps %ymm3, %ymm2, %k12547; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2548; AVX512-64-NEXT:    retq2549;2550; AVX512F-32-LABEL: test_v8f32_ugt_s:2551; AVX512F-32:       # %bb.0:2552; AVX512F-32-NEXT:    pushl %ebp2553; AVX512F-32-NEXT:    movl %esp, %ebp2554; AVX512F-32-NEXT:    andl $-32, %esp2555; AVX512F-32-NEXT:    subl $32, %esp2556; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12557; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02558; AVX512F-32-NEXT:    vcmpnleps 8(%ebp), %ymm2, %ymm22559; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k12560; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2561; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02562; AVX512F-32-NEXT:    movl %ebp, %esp2563; AVX512F-32-NEXT:    popl %ebp2564; AVX512F-32-NEXT:    retl2565;2566; AVX512F-64-LABEL: test_v8f32_ugt_s:2567; AVX512F-64:       # %bb.0:2568; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12569; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02570; AVX512F-64-NEXT:    vcmpnleps %ymm3, %ymm2, %ymm22571; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k12572; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2573; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02574; AVX512F-64-NEXT:    retq2575  %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(2576                                               <8 x float> %f1, <8 x float> %f2, metadata !"ugt",2577                                               metadata !"fpexcept.strict") #02578  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b2579  ret <8 x i32> %res2580}2581 2582define <8 x i32> @test_v8f32_uge_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {2583; AVX-32-LABEL: test_v8f32_uge_s:2584; AVX-32:       # %bb.0:2585; AVX-32-NEXT:    pushl %ebp2586; AVX-32-NEXT:    movl %esp, %ebp2587; AVX-32-NEXT:    andl $-32, %esp2588; AVX-32-NEXT:    subl $32, %esp2589; AVX-32-NEXT:    vcmpnltps 8(%ebp), %ymm2, %ymm22590; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02591; AVX-32-NEXT:    movl %ebp, %esp2592; AVX-32-NEXT:    popl %ebp2593; AVX-32-NEXT:    retl2594;2595; AVX-64-LABEL: test_v8f32_uge_s:2596; AVX-64:       # %bb.0:2597; AVX-64-NEXT:    vcmpnltps %ymm3, %ymm2, %ymm22598; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02599; AVX-64-NEXT:    retq2600;2601; AVX512-32-LABEL: test_v8f32_uge_s:2602; AVX512-32:       # %bb.0:2603; AVX512-32-NEXT:    pushl %ebp2604; AVX512-32-NEXT:    movl %esp, %ebp2605; AVX512-32-NEXT:    andl $-32, %esp2606; AVX512-32-NEXT:    subl $32, %esp2607; AVX512-32-NEXT:    vcmpnltps 8(%ebp), %ymm2, %k12608; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2609; AVX512-32-NEXT:    movl %ebp, %esp2610; AVX512-32-NEXT:    popl %ebp2611; AVX512-32-NEXT:    retl2612;2613; AVX512-64-LABEL: test_v8f32_uge_s:2614; AVX512-64:       # %bb.0:2615; AVX512-64-NEXT:    vcmpnltps %ymm3, %ymm2, %k12616; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2617; AVX512-64-NEXT:    retq2618;2619; AVX512F-32-LABEL: test_v8f32_uge_s:2620; AVX512F-32:       # %bb.0:2621; AVX512F-32-NEXT:    pushl %ebp2622; AVX512F-32-NEXT:    movl %esp, %ebp2623; AVX512F-32-NEXT:    andl $-32, %esp2624; AVX512F-32-NEXT:    subl $32, %esp2625; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12626; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02627; AVX512F-32-NEXT:    vcmpnltps 8(%ebp), %ymm2, %ymm22628; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k12629; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2630; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02631; AVX512F-32-NEXT:    movl %ebp, %esp2632; AVX512F-32-NEXT:    popl %ebp2633; AVX512F-32-NEXT:    retl2634;2635; AVX512F-64-LABEL: test_v8f32_uge_s:2636; AVX512F-64:       # %bb.0:2637; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12638; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02639; AVX512F-64-NEXT:    vcmpnltps %ymm3, %ymm2, %ymm22640; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k12641; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2642; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02643; AVX512F-64-NEXT:    retq2644  %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(2645                                               <8 x float> %f1, <8 x float> %f2, metadata !"uge",2646                                               metadata !"fpexcept.strict") #02647  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b2648  ret <8 x i32> %res2649}2650 2651define <8 x i32> @test_v8f32_ult_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {2652; AVX-32-LABEL: test_v8f32_ult_s:2653; AVX-32:       # %bb.0:2654; AVX-32-NEXT:    pushl %ebp2655; AVX-32-NEXT:    movl %esp, %ebp2656; AVX-32-NEXT:    andl $-32, %esp2657; AVX-32-NEXT:    subl $32, %esp2658; AVX-32-NEXT:    vmovaps 8(%ebp), %ymm32659; AVX-32-NEXT:    vcmpnleps %ymm2, %ymm3, %ymm22660; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02661; AVX-32-NEXT:    movl %ebp, %esp2662; AVX-32-NEXT:    popl %ebp2663; AVX-32-NEXT:    retl2664;2665; AVX-64-LABEL: test_v8f32_ult_s:2666; AVX-64:       # %bb.0:2667; AVX-64-NEXT:    vcmpnleps %ymm2, %ymm3, %ymm22668; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02669; AVX-64-NEXT:    retq2670;2671; AVX512-32-LABEL: test_v8f32_ult_s:2672; AVX512-32:       # %bb.0:2673; AVX512-32-NEXT:    pushl %ebp2674; AVX512-32-NEXT:    movl %esp, %ebp2675; AVX512-32-NEXT:    andl $-32, %esp2676; AVX512-32-NEXT:    subl $32, %esp2677; AVX512-32-NEXT:    vcmpngeps 8(%ebp), %ymm2, %k12678; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2679; AVX512-32-NEXT:    movl %ebp, %esp2680; AVX512-32-NEXT:    popl %ebp2681; AVX512-32-NEXT:    retl2682;2683; AVX512-64-LABEL: test_v8f32_ult_s:2684; AVX512-64:       # %bb.0:2685; AVX512-64-NEXT:    vcmpnleps %ymm2, %ymm3, %k12686; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2687; AVX512-64-NEXT:    retq2688;2689; AVX512F-32-LABEL: test_v8f32_ult_s:2690; AVX512F-32:       # %bb.0:2691; AVX512F-32-NEXT:    pushl %ebp2692; AVX512F-32-NEXT:    movl %esp, %ebp2693; AVX512F-32-NEXT:    andl $-32, %esp2694; AVX512F-32-NEXT:    subl $32, %esp2695; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12696; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02697; AVX512F-32-NEXT:    vmovaps 8(%ebp), %ymm32698; AVX512F-32-NEXT:    vcmpnleps %ymm2, %ymm3, %ymm22699; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k12700; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2701; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02702; AVX512F-32-NEXT:    movl %ebp, %esp2703; AVX512F-32-NEXT:    popl %ebp2704; AVX512F-32-NEXT:    retl2705;2706; AVX512F-64-LABEL: test_v8f32_ult_s:2707; AVX512F-64:       # %bb.0:2708; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12709; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02710; AVX512F-64-NEXT:    vcmpnleps %ymm2, %ymm3, %ymm22711; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k12712; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2713; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02714; AVX512F-64-NEXT:    retq2715  %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(2716                                               <8 x float> %f1, <8 x float> %f2, metadata !"ult",2717                                               metadata !"fpexcept.strict") #02718  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b2719  ret <8 x i32> %res2720}2721 2722define <8 x i32> @test_v8f32_ule_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {2723; AVX-32-LABEL: test_v8f32_ule_s:2724; AVX-32:       # %bb.0:2725; AVX-32-NEXT:    pushl %ebp2726; AVX-32-NEXT:    movl %esp, %ebp2727; AVX-32-NEXT:    andl $-32, %esp2728; AVX-32-NEXT:    subl $32, %esp2729; AVX-32-NEXT:    vmovaps 8(%ebp), %ymm32730; AVX-32-NEXT:    vcmpnltps %ymm2, %ymm3, %ymm22731; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02732; AVX-32-NEXT:    movl %ebp, %esp2733; AVX-32-NEXT:    popl %ebp2734; AVX-32-NEXT:    retl2735;2736; AVX-64-LABEL: test_v8f32_ule_s:2737; AVX-64:       # %bb.0:2738; AVX-64-NEXT:    vcmpnltps %ymm2, %ymm3, %ymm22739; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02740; AVX-64-NEXT:    retq2741;2742; AVX512-32-LABEL: test_v8f32_ule_s:2743; AVX512-32:       # %bb.0:2744; AVX512-32-NEXT:    pushl %ebp2745; AVX512-32-NEXT:    movl %esp, %ebp2746; AVX512-32-NEXT:    andl $-32, %esp2747; AVX512-32-NEXT:    subl $32, %esp2748; AVX512-32-NEXT:    vcmpngtps 8(%ebp), %ymm2, %k12749; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2750; AVX512-32-NEXT:    movl %ebp, %esp2751; AVX512-32-NEXT:    popl %ebp2752; AVX512-32-NEXT:    retl2753;2754; AVX512-64-LABEL: test_v8f32_ule_s:2755; AVX512-64:       # %bb.0:2756; AVX512-64-NEXT:    vcmpnltps %ymm2, %ymm3, %k12757; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2758; AVX512-64-NEXT:    retq2759;2760; AVX512F-32-LABEL: test_v8f32_ule_s:2761; AVX512F-32:       # %bb.0:2762; AVX512F-32-NEXT:    pushl %ebp2763; AVX512F-32-NEXT:    movl %esp, %ebp2764; AVX512F-32-NEXT:    andl $-32, %esp2765; AVX512F-32-NEXT:    subl $32, %esp2766; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12767; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02768; AVX512F-32-NEXT:    vmovaps 8(%ebp), %ymm32769; AVX512F-32-NEXT:    vcmpnltps %ymm2, %ymm3, %ymm22770; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k12771; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2772; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02773; AVX512F-32-NEXT:    movl %ebp, %esp2774; AVX512F-32-NEXT:    popl %ebp2775; AVX512F-32-NEXT:    retl2776;2777; AVX512F-64-LABEL: test_v8f32_ule_s:2778; AVX512F-64:       # %bb.0:2779; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12780; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02781; AVX512F-64-NEXT:    vcmpnltps %ymm2, %ymm3, %ymm22782; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k12783; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2784; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02785; AVX512F-64-NEXT:    retq2786  %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(2787                                               <8 x float> %f1, <8 x float> %f2, metadata !"ule",2788                                               metadata !"fpexcept.strict") #02789  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b2790  ret <8 x i32> %res2791}2792 2793define <8 x i32> @test_v8f32_une_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {2794; AVX-32-LABEL: test_v8f32_une_s:2795; AVX-32:       # %bb.0:2796; AVX-32-NEXT:    pushl %ebp2797; AVX-32-NEXT:    movl %esp, %ebp2798; AVX-32-NEXT:    andl $-32, %esp2799; AVX-32-NEXT:    subl $32, %esp2800; AVX-32-NEXT:    vcmpneq_usps 8(%ebp), %ymm2, %ymm22801; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02802; AVX-32-NEXT:    movl %ebp, %esp2803; AVX-32-NEXT:    popl %ebp2804; AVX-32-NEXT:    retl2805;2806; AVX-64-LABEL: test_v8f32_une_s:2807; AVX-64:       # %bb.0:2808; AVX-64-NEXT:    vcmpneq_usps %ymm3, %ymm2, %ymm22809; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02810; AVX-64-NEXT:    retq2811;2812; AVX512-32-LABEL: test_v8f32_une_s:2813; AVX512-32:       # %bb.0:2814; AVX512-32-NEXT:    pushl %ebp2815; AVX512-32-NEXT:    movl %esp, %ebp2816; AVX512-32-NEXT:    andl $-32, %esp2817; AVX512-32-NEXT:    subl $32, %esp2818; AVX512-32-NEXT:    vcmpneq_usps 8(%ebp), %ymm2, %k12819; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2820; AVX512-32-NEXT:    movl %ebp, %esp2821; AVX512-32-NEXT:    popl %ebp2822; AVX512-32-NEXT:    retl2823;2824; AVX512-64-LABEL: test_v8f32_une_s:2825; AVX512-64:       # %bb.0:2826; AVX512-64-NEXT:    vcmpneq_usps %ymm3, %ymm2, %k12827; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2828; AVX512-64-NEXT:    retq2829;2830; AVX512F-32-LABEL: test_v8f32_une_s:2831; AVX512F-32:       # %bb.0:2832; AVX512F-32-NEXT:    pushl %ebp2833; AVX512F-32-NEXT:    movl %esp, %ebp2834; AVX512F-32-NEXT:    andl $-32, %esp2835; AVX512F-32-NEXT:    subl $32, %esp2836; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12837; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02838; AVX512F-32-NEXT:    vcmpneq_usps 8(%ebp), %ymm2, %ymm22839; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k12840; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2841; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02842; AVX512F-32-NEXT:    movl %ebp, %esp2843; AVX512F-32-NEXT:    popl %ebp2844; AVX512F-32-NEXT:    retl2845;2846; AVX512F-64-LABEL: test_v8f32_une_s:2847; AVX512F-64:       # %bb.0:2848; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12849; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02850; AVX512F-64-NEXT:    vcmpneq_usps %ymm3, %ymm2, %ymm22851; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k12852; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2853; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02854; AVX512F-64-NEXT:    retq2855  %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(2856                                               <8 x float> %f1, <8 x float> %f2, metadata !"une",2857                                               metadata !"fpexcept.strict") #02858  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b2859  ret <8 x i32> %res2860}2861 2862define <8 x i32> @test_v8f32_uno_s(<8 x i32> %a, <8 x i32> %b, <8 x float> %f1, <8 x float> %f2) #0 {2863; AVX-32-LABEL: test_v8f32_uno_s:2864; AVX-32:       # %bb.0:2865; AVX-32-NEXT:    pushl %ebp2866; AVX-32-NEXT:    movl %esp, %ebp2867; AVX-32-NEXT:    andl $-32, %esp2868; AVX-32-NEXT:    subl $32, %esp2869; AVX-32-NEXT:    vcmpunord_sps 8(%ebp), %ymm2, %ymm22870; AVX-32-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02871; AVX-32-NEXT:    movl %ebp, %esp2872; AVX-32-NEXT:    popl %ebp2873; AVX-32-NEXT:    retl2874;2875; AVX-64-LABEL: test_v8f32_uno_s:2876; AVX-64:       # %bb.0:2877; AVX-64-NEXT:    vcmpunord_sps %ymm3, %ymm2, %ymm22878; AVX-64-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm02879; AVX-64-NEXT:    retq2880;2881; AVX512-32-LABEL: test_v8f32_uno_s:2882; AVX512-32:       # %bb.0:2883; AVX512-32-NEXT:    pushl %ebp2884; AVX512-32-NEXT:    movl %esp, %ebp2885; AVX512-32-NEXT:    andl $-32, %esp2886; AVX512-32-NEXT:    subl $32, %esp2887; AVX512-32-NEXT:    vcmpunord_sps 8(%ebp), %ymm2, %k12888; AVX512-32-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2889; AVX512-32-NEXT:    movl %ebp, %esp2890; AVX512-32-NEXT:    popl %ebp2891; AVX512-32-NEXT:    retl2892;2893; AVX512-64-LABEL: test_v8f32_uno_s:2894; AVX512-64:       # %bb.0:2895; AVX512-64-NEXT:    vcmpunord_sps %ymm3, %ymm2, %k12896; AVX512-64-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}2897; AVX512-64-NEXT:    retq2898;2899; AVX512F-32-LABEL: test_v8f32_uno_s:2900; AVX512F-32:       # %bb.0:2901; AVX512F-32-NEXT:    pushl %ebp2902; AVX512F-32-NEXT:    movl %esp, %ebp2903; AVX512F-32-NEXT:    andl $-32, %esp2904; AVX512F-32-NEXT:    subl $32, %esp2905; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12906; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02907; AVX512F-32-NEXT:    vcmpunord_sps 8(%ebp), %ymm2, %ymm22908; AVX512F-32-NEXT:    vptestmd %zmm2, %zmm2, %k12909; AVX512F-32-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2910; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02911; AVX512F-32-NEXT:    movl %ebp, %esp2912; AVX512F-32-NEXT:    popl %ebp2913; AVX512F-32-NEXT:    retl2914;2915; AVX512F-64-LABEL: test_v8f32_uno_s:2916; AVX512F-64:       # %bb.0:2917; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12918; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02919; AVX512F-64-NEXT:    vcmpunord_sps %ymm3, %ymm2, %ymm22920; AVX512F-64-NEXT:    vptestmd %zmm2, %zmm2, %k12921; AVX512F-64-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}2922; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02923; AVX512F-64-NEXT:    retq2924  %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(2925                                               <8 x float> %f1, <8 x float> %f2, metadata !"uno",2926                                               metadata !"fpexcept.strict") #02927  %res = select <8 x i1> %cond, <8 x i32> %a, <8 x i32> %b2928  ret <8 x i32> %res2929}2930 2931define <4 x i64> @test_v4f64_oeq_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {2932; AVX-32-LABEL: test_v4f64_oeq_s:2933; AVX-32:       # %bb.0:2934; AVX-32-NEXT:    pushl %ebp2935; AVX-32-NEXT:    movl %esp, %ebp2936; AVX-32-NEXT:    andl $-32, %esp2937; AVX-32-NEXT:    subl $32, %esp2938; AVX-32-NEXT:    vcmpeq_ospd 8(%ebp), %ymm2, %ymm22939; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm02940; AVX-32-NEXT:    movl %ebp, %esp2941; AVX-32-NEXT:    popl %ebp2942; AVX-32-NEXT:    retl2943;2944; AVX-64-LABEL: test_v4f64_oeq_s:2945; AVX-64:       # %bb.0:2946; AVX-64-NEXT:    vcmpeq_ospd %ymm3, %ymm2, %ymm22947; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm02948; AVX-64-NEXT:    retq2949;2950; AVX512-32-LABEL: test_v4f64_oeq_s:2951; AVX512-32:       # %bb.0:2952; AVX512-32-NEXT:    pushl %ebp2953; AVX512-32-NEXT:    movl %esp, %ebp2954; AVX512-32-NEXT:    andl $-32, %esp2955; AVX512-32-NEXT:    subl $32, %esp2956; AVX512-32-NEXT:    vcmpeq_ospd 8(%ebp), %ymm2, %k12957; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}2958; AVX512-32-NEXT:    movl %ebp, %esp2959; AVX512-32-NEXT:    popl %ebp2960; AVX512-32-NEXT:    retl2961;2962; AVX512-64-LABEL: test_v4f64_oeq_s:2963; AVX512-64:       # %bb.0:2964; AVX512-64-NEXT:    vcmpeq_ospd %ymm3, %ymm2, %k12965; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}2966; AVX512-64-NEXT:    retq2967;2968; AVX512F-32-LABEL: test_v4f64_oeq_s:2969; AVX512F-32:       # %bb.0:2970; AVX512F-32-NEXT:    pushl %ebp2971; AVX512F-32-NEXT:    movl %esp, %ebp2972; AVX512F-32-NEXT:    andl $-32, %esp2973; AVX512F-32-NEXT:    subl $32, %esp2974; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12975; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02976; AVX512F-32-NEXT:    vcmpeq_ospd 8(%ebp), %ymm2, %ymm22977; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k12978; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}2979; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02980; AVX512F-32-NEXT:    movl %ebp, %esp2981; AVX512F-32-NEXT:    popl %ebp2982; AVX512F-32-NEXT:    retl2983;2984; AVX512F-64-LABEL: test_v4f64_oeq_s:2985; AVX512F-64:       # %bb.0:2986; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm12987; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm02988; AVX512F-64-NEXT:    vcmpeq_ospd %ymm3, %ymm2, %ymm22989; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k12990; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}2991; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm02992; AVX512F-64-NEXT:    retq2993  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(2994                                               <4 x double> %f1, <4 x double> %f2, metadata !"oeq",2995                                               metadata !"fpexcept.strict") #02996  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b2997  ret <4 x i64> %res2998}2999 3000define <4 x i64> @test_v4f64_ogt_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {3001; AVX-32-LABEL: test_v4f64_ogt_s:3002; AVX-32:       # %bb.0:3003; AVX-32-NEXT:    pushl %ebp3004; AVX-32-NEXT:    movl %esp, %ebp3005; AVX-32-NEXT:    andl $-32, %esp3006; AVX-32-NEXT:    subl $32, %esp3007; AVX-32-NEXT:    vmovapd 8(%ebp), %ymm33008; AVX-32-NEXT:    vcmpltpd %ymm2, %ymm3, %ymm23009; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03010; AVX-32-NEXT:    movl %ebp, %esp3011; AVX-32-NEXT:    popl %ebp3012; AVX-32-NEXT:    retl3013;3014; AVX-64-LABEL: test_v4f64_ogt_s:3015; AVX-64:       # %bb.0:3016; AVX-64-NEXT:    vcmpltpd %ymm2, %ymm3, %ymm23017; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03018; AVX-64-NEXT:    retq3019;3020; AVX512-32-LABEL: test_v4f64_ogt_s:3021; AVX512-32:       # %bb.0:3022; AVX512-32-NEXT:    pushl %ebp3023; AVX512-32-NEXT:    movl %esp, %ebp3024; AVX512-32-NEXT:    andl $-32, %esp3025; AVX512-32-NEXT:    subl $32, %esp3026; AVX512-32-NEXT:    vcmpgtpd 8(%ebp), %ymm2, %k13027; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3028; AVX512-32-NEXT:    movl %ebp, %esp3029; AVX512-32-NEXT:    popl %ebp3030; AVX512-32-NEXT:    retl3031;3032; AVX512-64-LABEL: test_v4f64_ogt_s:3033; AVX512-64:       # %bb.0:3034; AVX512-64-NEXT:    vcmpltpd %ymm2, %ymm3, %k13035; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3036; AVX512-64-NEXT:    retq3037;3038; AVX512F-32-LABEL: test_v4f64_ogt_s:3039; AVX512F-32:       # %bb.0:3040; AVX512F-32-NEXT:    pushl %ebp3041; AVX512F-32-NEXT:    movl %esp, %ebp3042; AVX512F-32-NEXT:    andl $-32, %esp3043; AVX512F-32-NEXT:    subl $32, %esp3044; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13045; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03046; AVX512F-32-NEXT:    vmovapd 8(%ebp), %ymm33047; AVX512F-32-NEXT:    vcmpltpd %ymm2, %ymm3, %ymm23048; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k13049; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3050; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03051; AVX512F-32-NEXT:    movl %ebp, %esp3052; AVX512F-32-NEXT:    popl %ebp3053; AVX512F-32-NEXT:    retl3054;3055; AVX512F-64-LABEL: test_v4f64_ogt_s:3056; AVX512F-64:       # %bb.0:3057; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13058; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03059; AVX512F-64-NEXT:    vcmpltpd %ymm2, %ymm3, %ymm23060; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k13061; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3062; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03063; AVX512F-64-NEXT:    retq3064  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(3065                                               <4 x double> %f1, <4 x double> %f2, metadata !"ogt",3066                                               metadata !"fpexcept.strict") #03067  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b3068  ret <4 x i64> %res3069}3070 3071define <4 x i64> @test_v4f64_oge_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {3072; AVX-32-LABEL: test_v4f64_oge_s:3073; AVX-32:       # %bb.0:3074; AVX-32-NEXT:    pushl %ebp3075; AVX-32-NEXT:    movl %esp, %ebp3076; AVX-32-NEXT:    andl $-32, %esp3077; AVX-32-NEXT:    subl $32, %esp3078; AVX-32-NEXT:    vmovapd 8(%ebp), %ymm33079; AVX-32-NEXT:    vcmplepd %ymm2, %ymm3, %ymm23080; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03081; AVX-32-NEXT:    movl %ebp, %esp3082; AVX-32-NEXT:    popl %ebp3083; AVX-32-NEXT:    retl3084;3085; AVX-64-LABEL: test_v4f64_oge_s:3086; AVX-64:       # %bb.0:3087; AVX-64-NEXT:    vcmplepd %ymm2, %ymm3, %ymm23088; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03089; AVX-64-NEXT:    retq3090;3091; AVX512-32-LABEL: test_v4f64_oge_s:3092; AVX512-32:       # %bb.0:3093; AVX512-32-NEXT:    pushl %ebp3094; AVX512-32-NEXT:    movl %esp, %ebp3095; AVX512-32-NEXT:    andl $-32, %esp3096; AVX512-32-NEXT:    subl $32, %esp3097; AVX512-32-NEXT:    vcmpgepd 8(%ebp), %ymm2, %k13098; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3099; AVX512-32-NEXT:    movl %ebp, %esp3100; AVX512-32-NEXT:    popl %ebp3101; AVX512-32-NEXT:    retl3102;3103; AVX512-64-LABEL: test_v4f64_oge_s:3104; AVX512-64:       # %bb.0:3105; AVX512-64-NEXT:    vcmplepd %ymm2, %ymm3, %k13106; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3107; AVX512-64-NEXT:    retq3108;3109; AVX512F-32-LABEL: test_v4f64_oge_s:3110; AVX512F-32:       # %bb.0:3111; AVX512F-32-NEXT:    pushl %ebp3112; AVX512F-32-NEXT:    movl %esp, %ebp3113; AVX512F-32-NEXT:    andl $-32, %esp3114; AVX512F-32-NEXT:    subl $32, %esp3115; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13116; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03117; AVX512F-32-NEXT:    vmovapd 8(%ebp), %ymm33118; AVX512F-32-NEXT:    vcmplepd %ymm2, %ymm3, %ymm23119; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k13120; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3121; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03122; AVX512F-32-NEXT:    movl %ebp, %esp3123; AVX512F-32-NEXT:    popl %ebp3124; AVX512F-32-NEXT:    retl3125;3126; AVX512F-64-LABEL: test_v4f64_oge_s:3127; AVX512F-64:       # %bb.0:3128; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13129; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03130; AVX512F-64-NEXT:    vcmplepd %ymm2, %ymm3, %ymm23131; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k13132; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3133; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03134; AVX512F-64-NEXT:    retq3135  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(3136                                               <4 x double> %f1, <4 x double> %f2, metadata !"oge",3137                                               metadata !"fpexcept.strict") #03138  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b3139  ret <4 x i64> %res3140}3141 3142define <4 x i64> @test_v4f64_olt_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {3143; AVX-32-LABEL: test_v4f64_olt_s:3144; AVX-32:       # %bb.0:3145; AVX-32-NEXT:    pushl %ebp3146; AVX-32-NEXT:    movl %esp, %ebp3147; AVX-32-NEXT:    andl $-32, %esp3148; AVX-32-NEXT:    subl $32, %esp3149; AVX-32-NEXT:    vcmpltpd 8(%ebp), %ymm2, %ymm23150; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03151; AVX-32-NEXT:    movl %ebp, %esp3152; AVX-32-NEXT:    popl %ebp3153; AVX-32-NEXT:    retl3154;3155; AVX-64-LABEL: test_v4f64_olt_s:3156; AVX-64:       # %bb.0:3157; AVX-64-NEXT:    vcmpltpd %ymm3, %ymm2, %ymm23158; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03159; AVX-64-NEXT:    retq3160;3161; AVX512-32-LABEL: test_v4f64_olt_s:3162; AVX512-32:       # %bb.0:3163; AVX512-32-NEXT:    pushl %ebp3164; AVX512-32-NEXT:    movl %esp, %ebp3165; AVX512-32-NEXT:    andl $-32, %esp3166; AVX512-32-NEXT:    subl $32, %esp3167; AVX512-32-NEXT:    vcmpltpd 8(%ebp), %ymm2, %k13168; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3169; AVX512-32-NEXT:    movl %ebp, %esp3170; AVX512-32-NEXT:    popl %ebp3171; AVX512-32-NEXT:    retl3172;3173; AVX512-64-LABEL: test_v4f64_olt_s:3174; AVX512-64:       # %bb.0:3175; AVX512-64-NEXT:    vcmpltpd %ymm3, %ymm2, %k13176; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3177; AVX512-64-NEXT:    retq3178;3179; AVX512F-32-LABEL: test_v4f64_olt_s:3180; AVX512F-32:       # %bb.0:3181; AVX512F-32-NEXT:    pushl %ebp3182; AVX512F-32-NEXT:    movl %esp, %ebp3183; AVX512F-32-NEXT:    andl $-32, %esp3184; AVX512F-32-NEXT:    subl $32, %esp3185; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13186; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03187; AVX512F-32-NEXT:    vcmpltpd 8(%ebp), %ymm2, %ymm23188; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k13189; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3190; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03191; AVX512F-32-NEXT:    movl %ebp, %esp3192; AVX512F-32-NEXT:    popl %ebp3193; AVX512F-32-NEXT:    retl3194;3195; AVX512F-64-LABEL: test_v4f64_olt_s:3196; AVX512F-64:       # %bb.0:3197; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13198; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03199; AVX512F-64-NEXT:    vcmpltpd %ymm3, %ymm2, %ymm23200; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k13201; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3202; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03203; AVX512F-64-NEXT:    retq3204  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(3205                                               <4 x double> %f1, <4 x double> %f2, metadata !"olt",3206                                               metadata !"fpexcept.strict") #03207  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b3208  ret <4 x i64> %res3209}3210 3211define <4 x i64> @test_v4f64_ole_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {3212; AVX-32-LABEL: test_v4f64_ole_s:3213; AVX-32:       # %bb.0:3214; AVX-32-NEXT:    pushl %ebp3215; AVX-32-NEXT:    movl %esp, %ebp3216; AVX-32-NEXT:    andl $-32, %esp3217; AVX-32-NEXT:    subl $32, %esp3218; AVX-32-NEXT:    vcmplepd 8(%ebp), %ymm2, %ymm23219; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03220; AVX-32-NEXT:    movl %ebp, %esp3221; AVX-32-NEXT:    popl %ebp3222; AVX-32-NEXT:    retl3223;3224; AVX-64-LABEL: test_v4f64_ole_s:3225; AVX-64:       # %bb.0:3226; AVX-64-NEXT:    vcmplepd %ymm3, %ymm2, %ymm23227; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03228; AVX-64-NEXT:    retq3229;3230; AVX512-32-LABEL: test_v4f64_ole_s:3231; AVX512-32:       # %bb.0:3232; AVX512-32-NEXT:    pushl %ebp3233; AVX512-32-NEXT:    movl %esp, %ebp3234; AVX512-32-NEXT:    andl $-32, %esp3235; AVX512-32-NEXT:    subl $32, %esp3236; AVX512-32-NEXT:    vcmplepd 8(%ebp), %ymm2, %k13237; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3238; AVX512-32-NEXT:    movl %ebp, %esp3239; AVX512-32-NEXT:    popl %ebp3240; AVX512-32-NEXT:    retl3241;3242; AVX512-64-LABEL: test_v4f64_ole_s:3243; AVX512-64:       # %bb.0:3244; AVX512-64-NEXT:    vcmplepd %ymm3, %ymm2, %k13245; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3246; AVX512-64-NEXT:    retq3247;3248; AVX512F-32-LABEL: test_v4f64_ole_s:3249; AVX512F-32:       # %bb.0:3250; AVX512F-32-NEXT:    pushl %ebp3251; AVX512F-32-NEXT:    movl %esp, %ebp3252; AVX512F-32-NEXT:    andl $-32, %esp3253; AVX512F-32-NEXT:    subl $32, %esp3254; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13255; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03256; AVX512F-32-NEXT:    vcmplepd 8(%ebp), %ymm2, %ymm23257; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k13258; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3259; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03260; AVX512F-32-NEXT:    movl %ebp, %esp3261; AVX512F-32-NEXT:    popl %ebp3262; AVX512F-32-NEXT:    retl3263;3264; AVX512F-64-LABEL: test_v4f64_ole_s:3265; AVX512F-64:       # %bb.0:3266; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13267; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03268; AVX512F-64-NEXT:    vcmplepd %ymm3, %ymm2, %ymm23269; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k13270; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3271; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03272; AVX512F-64-NEXT:    retq3273  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(3274                                               <4 x double> %f1, <4 x double> %f2, metadata !"ole",3275                                               metadata !"fpexcept.strict") #03276  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b3277  ret <4 x i64> %res3278}3279 3280define <4 x i64> @test_v4f64_one_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {3281; AVX-32-LABEL: test_v4f64_one_s:3282; AVX-32:       # %bb.0:3283; AVX-32-NEXT:    pushl %ebp3284; AVX-32-NEXT:    movl %esp, %ebp3285; AVX-32-NEXT:    andl $-32, %esp3286; AVX-32-NEXT:    subl $32, %esp3287; AVX-32-NEXT:    vcmpneq_ospd 8(%ebp), %ymm2, %ymm23288; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03289; AVX-32-NEXT:    movl %ebp, %esp3290; AVX-32-NEXT:    popl %ebp3291; AVX-32-NEXT:    retl3292;3293; AVX-64-LABEL: test_v4f64_one_s:3294; AVX-64:       # %bb.0:3295; AVX-64-NEXT:    vcmpneq_ospd %ymm3, %ymm2, %ymm23296; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03297; AVX-64-NEXT:    retq3298;3299; AVX512-32-LABEL: test_v4f64_one_s:3300; AVX512-32:       # %bb.0:3301; AVX512-32-NEXT:    pushl %ebp3302; AVX512-32-NEXT:    movl %esp, %ebp3303; AVX512-32-NEXT:    andl $-32, %esp3304; AVX512-32-NEXT:    subl $32, %esp3305; AVX512-32-NEXT:    vcmpneq_ospd 8(%ebp), %ymm2, %k13306; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3307; AVX512-32-NEXT:    movl %ebp, %esp3308; AVX512-32-NEXT:    popl %ebp3309; AVX512-32-NEXT:    retl3310;3311; AVX512-64-LABEL: test_v4f64_one_s:3312; AVX512-64:       # %bb.0:3313; AVX512-64-NEXT:    vcmpneq_ospd %ymm3, %ymm2, %k13314; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3315; AVX512-64-NEXT:    retq3316;3317; AVX512F-32-LABEL: test_v4f64_one_s:3318; AVX512F-32:       # %bb.0:3319; AVX512F-32-NEXT:    pushl %ebp3320; AVX512F-32-NEXT:    movl %esp, %ebp3321; AVX512F-32-NEXT:    andl $-32, %esp3322; AVX512F-32-NEXT:    subl $32, %esp3323; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13324; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03325; AVX512F-32-NEXT:    vcmpneq_ospd 8(%ebp), %ymm2, %ymm23326; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k13327; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3328; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03329; AVX512F-32-NEXT:    movl %ebp, %esp3330; AVX512F-32-NEXT:    popl %ebp3331; AVX512F-32-NEXT:    retl3332;3333; AVX512F-64-LABEL: test_v4f64_one_s:3334; AVX512F-64:       # %bb.0:3335; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13336; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03337; AVX512F-64-NEXT:    vcmpneq_ospd %ymm3, %ymm2, %ymm23338; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k13339; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3340; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03341; AVX512F-64-NEXT:    retq3342  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(3343                                               <4 x double> %f1, <4 x double> %f2, metadata !"one",3344                                               metadata !"fpexcept.strict") #03345  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b3346  ret <4 x i64> %res3347}3348 3349define <4 x i64> @test_v4f64_ord_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {3350; AVX-32-LABEL: test_v4f64_ord_s:3351; AVX-32:       # %bb.0:3352; AVX-32-NEXT:    pushl %ebp3353; AVX-32-NEXT:    movl %esp, %ebp3354; AVX-32-NEXT:    andl $-32, %esp3355; AVX-32-NEXT:    subl $32, %esp3356; AVX-32-NEXT:    vcmpord_spd 8(%ebp), %ymm2, %ymm23357; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03358; AVX-32-NEXT:    movl %ebp, %esp3359; AVX-32-NEXT:    popl %ebp3360; AVX-32-NEXT:    retl3361;3362; AVX-64-LABEL: test_v4f64_ord_s:3363; AVX-64:       # %bb.0:3364; AVX-64-NEXT:    vcmpord_spd %ymm3, %ymm2, %ymm23365; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03366; AVX-64-NEXT:    retq3367;3368; AVX512-32-LABEL: test_v4f64_ord_s:3369; AVX512-32:       # %bb.0:3370; AVX512-32-NEXT:    pushl %ebp3371; AVX512-32-NEXT:    movl %esp, %ebp3372; AVX512-32-NEXT:    andl $-32, %esp3373; AVX512-32-NEXT:    subl $32, %esp3374; AVX512-32-NEXT:    vcmpord_spd 8(%ebp), %ymm2, %k13375; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3376; AVX512-32-NEXT:    movl %ebp, %esp3377; AVX512-32-NEXT:    popl %ebp3378; AVX512-32-NEXT:    retl3379;3380; AVX512-64-LABEL: test_v4f64_ord_s:3381; AVX512-64:       # %bb.0:3382; AVX512-64-NEXT:    vcmpord_spd %ymm3, %ymm2, %k13383; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3384; AVX512-64-NEXT:    retq3385;3386; AVX512F-32-LABEL: test_v4f64_ord_s:3387; AVX512F-32:       # %bb.0:3388; AVX512F-32-NEXT:    pushl %ebp3389; AVX512F-32-NEXT:    movl %esp, %ebp3390; AVX512F-32-NEXT:    andl $-32, %esp3391; AVX512F-32-NEXT:    subl $32, %esp3392; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13393; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03394; AVX512F-32-NEXT:    vcmpord_spd 8(%ebp), %ymm2, %ymm23395; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k13396; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3397; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03398; AVX512F-32-NEXT:    movl %ebp, %esp3399; AVX512F-32-NEXT:    popl %ebp3400; AVX512F-32-NEXT:    retl3401;3402; AVX512F-64-LABEL: test_v4f64_ord_s:3403; AVX512F-64:       # %bb.0:3404; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13405; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03406; AVX512F-64-NEXT:    vcmpord_spd %ymm3, %ymm2, %ymm23407; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k13408; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3409; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03410; AVX512F-64-NEXT:    retq3411  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(3412                                               <4 x double> %f1, <4 x double> %f2, metadata !"ord",3413                                               metadata !"fpexcept.strict") #03414  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b3415  ret <4 x i64> %res3416}3417 3418define <4 x i64> @test_v4f64_ueq_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {3419; AVX-32-LABEL: test_v4f64_ueq_s:3420; AVX-32:       # %bb.0:3421; AVX-32-NEXT:    pushl %ebp3422; AVX-32-NEXT:    movl %esp, %ebp3423; AVX-32-NEXT:    andl $-32, %esp3424; AVX-32-NEXT:    subl $32, %esp3425; AVX-32-NEXT:    vcmpeq_uspd 8(%ebp), %ymm2, %ymm23426; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03427; AVX-32-NEXT:    movl %ebp, %esp3428; AVX-32-NEXT:    popl %ebp3429; AVX-32-NEXT:    retl3430;3431; AVX-64-LABEL: test_v4f64_ueq_s:3432; AVX-64:       # %bb.0:3433; AVX-64-NEXT:    vcmpeq_uspd %ymm3, %ymm2, %ymm23434; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03435; AVX-64-NEXT:    retq3436;3437; AVX512-32-LABEL: test_v4f64_ueq_s:3438; AVX512-32:       # %bb.0:3439; AVX512-32-NEXT:    pushl %ebp3440; AVX512-32-NEXT:    movl %esp, %ebp3441; AVX512-32-NEXT:    andl $-32, %esp3442; AVX512-32-NEXT:    subl $32, %esp3443; AVX512-32-NEXT:    vcmpeq_uspd 8(%ebp), %ymm2, %k13444; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3445; AVX512-32-NEXT:    movl %ebp, %esp3446; AVX512-32-NEXT:    popl %ebp3447; AVX512-32-NEXT:    retl3448;3449; AVX512-64-LABEL: test_v4f64_ueq_s:3450; AVX512-64:       # %bb.0:3451; AVX512-64-NEXT:    vcmpeq_uspd %ymm3, %ymm2, %k13452; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3453; AVX512-64-NEXT:    retq3454;3455; AVX512F-32-LABEL: test_v4f64_ueq_s:3456; AVX512F-32:       # %bb.0:3457; AVX512F-32-NEXT:    pushl %ebp3458; AVX512F-32-NEXT:    movl %esp, %ebp3459; AVX512F-32-NEXT:    andl $-32, %esp3460; AVX512F-32-NEXT:    subl $32, %esp3461; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13462; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03463; AVX512F-32-NEXT:    vcmpeq_uspd 8(%ebp), %ymm2, %ymm23464; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k13465; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3466; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03467; AVX512F-32-NEXT:    movl %ebp, %esp3468; AVX512F-32-NEXT:    popl %ebp3469; AVX512F-32-NEXT:    retl3470;3471; AVX512F-64-LABEL: test_v4f64_ueq_s:3472; AVX512F-64:       # %bb.0:3473; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13474; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03475; AVX512F-64-NEXT:    vcmpeq_uspd %ymm3, %ymm2, %ymm23476; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k13477; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3478; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03479; AVX512F-64-NEXT:    retq3480  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(3481                                               <4 x double> %f1, <4 x double> %f2, metadata !"ueq",3482                                               metadata !"fpexcept.strict") #03483  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b3484  ret <4 x i64> %res3485}3486 3487define <4 x i64> @test_v4f64_ugt_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {3488; AVX-32-LABEL: test_v4f64_ugt_s:3489; AVX-32:       # %bb.0:3490; AVX-32-NEXT:    pushl %ebp3491; AVX-32-NEXT:    movl %esp, %ebp3492; AVX-32-NEXT:    andl $-32, %esp3493; AVX-32-NEXT:    subl $32, %esp3494; AVX-32-NEXT:    vcmpnlepd 8(%ebp), %ymm2, %ymm23495; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03496; AVX-32-NEXT:    movl %ebp, %esp3497; AVX-32-NEXT:    popl %ebp3498; AVX-32-NEXT:    retl3499;3500; AVX-64-LABEL: test_v4f64_ugt_s:3501; AVX-64:       # %bb.0:3502; AVX-64-NEXT:    vcmpnlepd %ymm3, %ymm2, %ymm23503; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03504; AVX-64-NEXT:    retq3505;3506; AVX512-32-LABEL: test_v4f64_ugt_s:3507; AVX512-32:       # %bb.0:3508; AVX512-32-NEXT:    pushl %ebp3509; AVX512-32-NEXT:    movl %esp, %ebp3510; AVX512-32-NEXT:    andl $-32, %esp3511; AVX512-32-NEXT:    subl $32, %esp3512; AVX512-32-NEXT:    vcmpnlepd 8(%ebp), %ymm2, %k13513; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3514; AVX512-32-NEXT:    movl %ebp, %esp3515; AVX512-32-NEXT:    popl %ebp3516; AVX512-32-NEXT:    retl3517;3518; AVX512-64-LABEL: test_v4f64_ugt_s:3519; AVX512-64:       # %bb.0:3520; AVX512-64-NEXT:    vcmpnlepd %ymm3, %ymm2, %k13521; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3522; AVX512-64-NEXT:    retq3523;3524; AVX512F-32-LABEL: test_v4f64_ugt_s:3525; AVX512F-32:       # %bb.0:3526; AVX512F-32-NEXT:    pushl %ebp3527; AVX512F-32-NEXT:    movl %esp, %ebp3528; AVX512F-32-NEXT:    andl $-32, %esp3529; AVX512F-32-NEXT:    subl $32, %esp3530; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13531; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03532; AVX512F-32-NEXT:    vcmpnlepd 8(%ebp), %ymm2, %ymm23533; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k13534; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3535; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03536; AVX512F-32-NEXT:    movl %ebp, %esp3537; AVX512F-32-NEXT:    popl %ebp3538; AVX512F-32-NEXT:    retl3539;3540; AVX512F-64-LABEL: test_v4f64_ugt_s:3541; AVX512F-64:       # %bb.0:3542; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13543; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03544; AVX512F-64-NEXT:    vcmpnlepd %ymm3, %ymm2, %ymm23545; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k13546; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3547; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03548; AVX512F-64-NEXT:    retq3549  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(3550                                               <4 x double> %f1, <4 x double> %f2, metadata !"ugt",3551                                               metadata !"fpexcept.strict") #03552  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b3553  ret <4 x i64> %res3554}3555 3556define <4 x i64> @test_v4f64_uge_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {3557; AVX-32-LABEL: test_v4f64_uge_s:3558; AVX-32:       # %bb.0:3559; AVX-32-NEXT:    pushl %ebp3560; AVX-32-NEXT:    movl %esp, %ebp3561; AVX-32-NEXT:    andl $-32, %esp3562; AVX-32-NEXT:    subl $32, %esp3563; AVX-32-NEXT:    vcmpnltpd 8(%ebp), %ymm2, %ymm23564; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03565; AVX-32-NEXT:    movl %ebp, %esp3566; AVX-32-NEXT:    popl %ebp3567; AVX-32-NEXT:    retl3568;3569; AVX-64-LABEL: test_v4f64_uge_s:3570; AVX-64:       # %bb.0:3571; AVX-64-NEXT:    vcmpnltpd %ymm3, %ymm2, %ymm23572; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03573; AVX-64-NEXT:    retq3574;3575; AVX512-32-LABEL: test_v4f64_uge_s:3576; AVX512-32:       # %bb.0:3577; AVX512-32-NEXT:    pushl %ebp3578; AVX512-32-NEXT:    movl %esp, %ebp3579; AVX512-32-NEXT:    andl $-32, %esp3580; AVX512-32-NEXT:    subl $32, %esp3581; AVX512-32-NEXT:    vcmpnltpd 8(%ebp), %ymm2, %k13582; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3583; AVX512-32-NEXT:    movl %ebp, %esp3584; AVX512-32-NEXT:    popl %ebp3585; AVX512-32-NEXT:    retl3586;3587; AVX512-64-LABEL: test_v4f64_uge_s:3588; AVX512-64:       # %bb.0:3589; AVX512-64-NEXT:    vcmpnltpd %ymm3, %ymm2, %k13590; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3591; AVX512-64-NEXT:    retq3592;3593; AVX512F-32-LABEL: test_v4f64_uge_s:3594; AVX512F-32:       # %bb.0:3595; AVX512F-32-NEXT:    pushl %ebp3596; AVX512F-32-NEXT:    movl %esp, %ebp3597; AVX512F-32-NEXT:    andl $-32, %esp3598; AVX512F-32-NEXT:    subl $32, %esp3599; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13600; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03601; AVX512F-32-NEXT:    vcmpnltpd 8(%ebp), %ymm2, %ymm23602; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k13603; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3604; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03605; AVX512F-32-NEXT:    movl %ebp, %esp3606; AVX512F-32-NEXT:    popl %ebp3607; AVX512F-32-NEXT:    retl3608;3609; AVX512F-64-LABEL: test_v4f64_uge_s:3610; AVX512F-64:       # %bb.0:3611; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13612; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03613; AVX512F-64-NEXT:    vcmpnltpd %ymm3, %ymm2, %ymm23614; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k13615; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3616; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03617; AVX512F-64-NEXT:    retq3618  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(3619                                               <4 x double> %f1, <4 x double> %f2, metadata !"uge",3620                                               metadata !"fpexcept.strict") #03621  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b3622  ret <4 x i64> %res3623}3624 3625define <4 x i64> @test_v4f64_ult_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {3626; AVX-32-LABEL: test_v4f64_ult_s:3627; AVX-32:       # %bb.0:3628; AVX-32-NEXT:    pushl %ebp3629; AVX-32-NEXT:    movl %esp, %ebp3630; AVX-32-NEXT:    andl $-32, %esp3631; AVX-32-NEXT:    subl $32, %esp3632; AVX-32-NEXT:    vmovapd 8(%ebp), %ymm33633; AVX-32-NEXT:    vcmpnlepd %ymm2, %ymm3, %ymm23634; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03635; AVX-32-NEXT:    movl %ebp, %esp3636; AVX-32-NEXT:    popl %ebp3637; AVX-32-NEXT:    retl3638;3639; AVX-64-LABEL: test_v4f64_ult_s:3640; AVX-64:       # %bb.0:3641; AVX-64-NEXT:    vcmpnlepd %ymm2, %ymm3, %ymm23642; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03643; AVX-64-NEXT:    retq3644;3645; AVX512-32-LABEL: test_v4f64_ult_s:3646; AVX512-32:       # %bb.0:3647; AVX512-32-NEXT:    pushl %ebp3648; AVX512-32-NEXT:    movl %esp, %ebp3649; AVX512-32-NEXT:    andl $-32, %esp3650; AVX512-32-NEXT:    subl $32, %esp3651; AVX512-32-NEXT:    vcmpngepd 8(%ebp), %ymm2, %k13652; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3653; AVX512-32-NEXT:    movl %ebp, %esp3654; AVX512-32-NEXT:    popl %ebp3655; AVX512-32-NEXT:    retl3656;3657; AVX512-64-LABEL: test_v4f64_ult_s:3658; AVX512-64:       # %bb.0:3659; AVX512-64-NEXT:    vcmpnlepd %ymm2, %ymm3, %k13660; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3661; AVX512-64-NEXT:    retq3662;3663; AVX512F-32-LABEL: test_v4f64_ult_s:3664; AVX512F-32:       # %bb.0:3665; AVX512F-32-NEXT:    pushl %ebp3666; AVX512F-32-NEXT:    movl %esp, %ebp3667; AVX512F-32-NEXT:    andl $-32, %esp3668; AVX512F-32-NEXT:    subl $32, %esp3669; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13670; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03671; AVX512F-32-NEXT:    vmovapd 8(%ebp), %ymm33672; AVX512F-32-NEXT:    vcmpnlepd %ymm2, %ymm3, %ymm23673; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k13674; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3675; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03676; AVX512F-32-NEXT:    movl %ebp, %esp3677; AVX512F-32-NEXT:    popl %ebp3678; AVX512F-32-NEXT:    retl3679;3680; AVX512F-64-LABEL: test_v4f64_ult_s:3681; AVX512F-64:       # %bb.0:3682; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13683; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03684; AVX512F-64-NEXT:    vcmpnlepd %ymm2, %ymm3, %ymm23685; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k13686; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3687; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03688; AVX512F-64-NEXT:    retq3689  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(3690                                               <4 x double> %f1, <4 x double> %f2, metadata !"ult",3691                                               metadata !"fpexcept.strict") #03692  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b3693  ret <4 x i64> %res3694}3695 3696define <4 x i64> @test_v4f64_ule_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {3697; AVX-32-LABEL: test_v4f64_ule_s:3698; AVX-32:       # %bb.0:3699; AVX-32-NEXT:    pushl %ebp3700; AVX-32-NEXT:    movl %esp, %ebp3701; AVX-32-NEXT:    andl $-32, %esp3702; AVX-32-NEXT:    subl $32, %esp3703; AVX-32-NEXT:    vmovapd 8(%ebp), %ymm33704; AVX-32-NEXT:    vcmpnltpd %ymm2, %ymm3, %ymm23705; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03706; AVX-32-NEXT:    movl %ebp, %esp3707; AVX-32-NEXT:    popl %ebp3708; AVX-32-NEXT:    retl3709;3710; AVX-64-LABEL: test_v4f64_ule_s:3711; AVX-64:       # %bb.0:3712; AVX-64-NEXT:    vcmpnltpd %ymm2, %ymm3, %ymm23713; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03714; AVX-64-NEXT:    retq3715;3716; AVX512-32-LABEL: test_v4f64_ule_s:3717; AVX512-32:       # %bb.0:3718; AVX512-32-NEXT:    pushl %ebp3719; AVX512-32-NEXT:    movl %esp, %ebp3720; AVX512-32-NEXT:    andl $-32, %esp3721; AVX512-32-NEXT:    subl $32, %esp3722; AVX512-32-NEXT:    vcmpngtpd 8(%ebp), %ymm2, %k13723; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3724; AVX512-32-NEXT:    movl %ebp, %esp3725; AVX512-32-NEXT:    popl %ebp3726; AVX512-32-NEXT:    retl3727;3728; AVX512-64-LABEL: test_v4f64_ule_s:3729; AVX512-64:       # %bb.0:3730; AVX512-64-NEXT:    vcmpnltpd %ymm2, %ymm3, %k13731; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3732; AVX512-64-NEXT:    retq3733;3734; AVX512F-32-LABEL: test_v4f64_ule_s:3735; AVX512F-32:       # %bb.0:3736; AVX512F-32-NEXT:    pushl %ebp3737; AVX512F-32-NEXT:    movl %esp, %ebp3738; AVX512F-32-NEXT:    andl $-32, %esp3739; AVX512F-32-NEXT:    subl $32, %esp3740; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13741; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03742; AVX512F-32-NEXT:    vmovapd 8(%ebp), %ymm33743; AVX512F-32-NEXT:    vcmpnltpd %ymm2, %ymm3, %ymm23744; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k13745; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3746; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03747; AVX512F-32-NEXT:    movl %ebp, %esp3748; AVX512F-32-NEXT:    popl %ebp3749; AVX512F-32-NEXT:    retl3750;3751; AVX512F-64-LABEL: test_v4f64_ule_s:3752; AVX512F-64:       # %bb.0:3753; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13754; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03755; AVX512F-64-NEXT:    vcmpnltpd %ymm2, %ymm3, %ymm23756; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k13757; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3758; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03759; AVX512F-64-NEXT:    retq3760  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(3761                                               <4 x double> %f1, <4 x double> %f2, metadata !"ule",3762                                               metadata !"fpexcept.strict") #03763  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b3764  ret <4 x i64> %res3765}3766 3767define <4 x i64> @test_v4f64_une_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {3768; AVX-32-LABEL: test_v4f64_une_s:3769; AVX-32:       # %bb.0:3770; AVX-32-NEXT:    pushl %ebp3771; AVX-32-NEXT:    movl %esp, %ebp3772; AVX-32-NEXT:    andl $-32, %esp3773; AVX-32-NEXT:    subl $32, %esp3774; AVX-32-NEXT:    vcmpneq_uspd 8(%ebp), %ymm2, %ymm23775; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03776; AVX-32-NEXT:    movl %ebp, %esp3777; AVX-32-NEXT:    popl %ebp3778; AVX-32-NEXT:    retl3779;3780; AVX-64-LABEL: test_v4f64_une_s:3781; AVX-64:       # %bb.0:3782; AVX-64-NEXT:    vcmpneq_uspd %ymm3, %ymm2, %ymm23783; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03784; AVX-64-NEXT:    retq3785;3786; AVX512-32-LABEL: test_v4f64_une_s:3787; AVX512-32:       # %bb.0:3788; AVX512-32-NEXT:    pushl %ebp3789; AVX512-32-NEXT:    movl %esp, %ebp3790; AVX512-32-NEXT:    andl $-32, %esp3791; AVX512-32-NEXT:    subl $32, %esp3792; AVX512-32-NEXT:    vcmpneq_uspd 8(%ebp), %ymm2, %k13793; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3794; AVX512-32-NEXT:    movl %ebp, %esp3795; AVX512-32-NEXT:    popl %ebp3796; AVX512-32-NEXT:    retl3797;3798; AVX512-64-LABEL: test_v4f64_une_s:3799; AVX512-64:       # %bb.0:3800; AVX512-64-NEXT:    vcmpneq_uspd %ymm3, %ymm2, %k13801; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3802; AVX512-64-NEXT:    retq3803;3804; AVX512F-32-LABEL: test_v4f64_une_s:3805; AVX512F-32:       # %bb.0:3806; AVX512F-32-NEXT:    pushl %ebp3807; AVX512F-32-NEXT:    movl %esp, %ebp3808; AVX512F-32-NEXT:    andl $-32, %esp3809; AVX512F-32-NEXT:    subl $32, %esp3810; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13811; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03812; AVX512F-32-NEXT:    vcmpneq_uspd 8(%ebp), %ymm2, %ymm23813; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k13814; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3815; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03816; AVX512F-32-NEXT:    movl %ebp, %esp3817; AVX512F-32-NEXT:    popl %ebp3818; AVX512F-32-NEXT:    retl3819;3820; AVX512F-64-LABEL: test_v4f64_une_s:3821; AVX512F-64:       # %bb.0:3822; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13823; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03824; AVX512F-64-NEXT:    vcmpneq_uspd %ymm3, %ymm2, %ymm23825; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k13826; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3827; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03828; AVX512F-64-NEXT:    retq3829  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(3830                                               <4 x double> %f1, <4 x double> %f2, metadata !"une",3831                                               metadata !"fpexcept.strict") #03832  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b3833  ret <4 x i64> %res3834}3835 3836define <4 x i64> @test_v4f64_uno_s(<4 x i64> %a, <4 x i64> %b, <4 x double> %f1, <4 x double> %f2) #0 {3837; AVX-32-LABEL: test_v4f64_uno_s:3838; AVX-32:       # %bb.0:3839; AVX-32-NEXT:    pushl %ebp3840; AVX-32-NEXT:    movl %esp, %ebp3841; AVX-32-NEXT:    andl $-32, %esp3842; AVX-32-NEXT:    subl $32, %esp3843; AVX-32-NEXT:    vcmpunord_spd 8(%ebp), %ymm2, %ymm23844; AVX-32-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03845; AVX-32-NEXT:    movl %ebp, %esp3846; AVX-32-NEXT:    popl %ebp3847; AVX-32-NEXT:    retl3848;3849; AVX-64-LABEL: test_v4f64_uno_s:3850; AVX-64:       # %bb.0:3851; AVX-64-NEXT:    vcmpunord_spd %ymm3, %ymm2, %ymm23852; AVX-64-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm03853; AVX-64-NEXT:    retq3854;3855; AVX512-32-LABEL: test_v4f64_uno_s:3856; AVX512-32:       # %bb.0:3857; AVX512-32-NEXT:    pushl %ebp3858; AVX512-32-NEXT:    movl %esp, %ebp3859; AVX512-32-NEXT:    andl $-32, %esp3860; AVX512-32-NEXT:    subl $32, %esp3861; AVX512-32-NEXT:    vcmpunord_spd 8(%ebp), %ymm2, %k13862; AVX512-32-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3863; AVX512-32-NEXT:    movl %ebp, %esp3864; AVX512-32-NEXT:    popl %ebp3865; AVX512-32-NEXT:    retl3866;3867; AVX512-64-LABEL: test_v4f64_uno_s:3868; AVX512-64:       # %bb.0:3869; AVX512-64-NEXT:    vcmpunord_spd %ymm3, %ymm2, %k13870; AVX512-64-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}3871; AVX512-64-NEXT:    retq3872;3873; AVX512F-32-LABEL: test_v4f64_uno_s:3874; AVX512F-32:       # %bb.0:3875; AVX512F-32-NEXT:    pushl %ebp3876; AVX512F-32-NEXT:    movl %esp, %ebp3877; AVX512F-32-NEXT:    andl $-32, %esp3878; AVX512F-32-NEXT:    subl $32, %esp3879; AVX512F-32-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13880; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03881; AVX512F-32-NEXT:    vcmpunord_spd 8(%ebp), %ymm2, %ymm23882; AVX512F-32-NEXT:    vptestmq %zmm2, %zmm2, %k13883; AVX512F-32-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3884; AVX512F-32-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03885; AVX512F-32-NEXT:    movl %ebp, %esp3886; AVX512F-32-NEXT:    popl %ebp3887; AVX512F-32-NEXT:    retl3888;3889; AVX512F-64-LABEL: test_v4f64_uno_s:3890; AVX512F-64:       # %bb.0:3891; AVX512F-64-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm13892; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm03893; AVX512F-64-NEXT:    vcmpunord_spd %ymm3, %ymm2, %ymm23894; AVX512F-64-NEXT:    vptestmq %zmm2, %zmm2, %k13895; AVX512F-64-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}3896; AVX512F-64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm03897; AVX512F-64-NEXT:    retq3898  %cond = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(3899                                               <4 x double> %f1, <4 x double> %f2, metadata !"uno",3900                                               metadata !"fpexcept.strict") #03901  %res = select <4 x i1> %cond, <4 x i64> %a, <4 x i64> %b3902  ret <4 x i64> %res3903}3904 3905attributes #0 = { strictfp nounwind }3906 3907declare <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float>, <8 x float>, metadata, metadata)3908declare <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double>, <4 x double>, metadata, metadata)3909declare <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float>, <8 x float>, metadata, metadata)3910declare <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double>, <4 x double>, metadata, metadata)3911