1411 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512f -O3 | FileCheck %s --check-prefixes=X863; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f -O3 | FileCheck %s --check-prefixes=X644 5define <16 x i32> @test_v16f32_oeq_q(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {6; X86-LABEL: test_v16f32_oeq_q:7; X86: # %bb.0:8; X86-NEXT: pushl %ebp9; X86-NEXT: movl %esp, %ebp10; X86-NEXT: andl $-64, %esp11; X86-NEXT: subl $64, %esp12; X86-NEXT: vcmpeqps 8(%ebp), %zmm2, %k113; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}14; X86-NEXT: movl %ebp, %esp15; X86-NEXT: popl %ebp16; X86-NEXT: retl17;18; X64-LABEL: test_v16f32_oeq_q:19; X64: # %bb.0:20; X64-NEXT: vcmpeqps %zmm3, %zmm2, %k121; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}22; X64-NEXT: retq23 %cond = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(24 <16 x float> %f1, <16 x float> %f2, metadata !"oeq",25 metadata !"fpexcept.strict") #026 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b27 ret <16 x i32> %res28}29 30define <16 x i32> @test_v16f32_ogt_q(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {31; X86-LABEL: test_v16f32_ogt_q:32; X86: # %bb.0:33; X86-NEXT: pushl %ebp34; X86-NEXT: movl %esp, %ebp35; X86-NEXT: andl $-64, %esp36; X86-NEXT: subl $64, %esp37; X86-NEXT: vcmpgt_oqps 8(%ebp), %zmm2, %k138; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}39; X86-NEXT: movl %ebp, %esp40; X86-NEXT: popl %ebp41; X86-NEXT: retl42;43; X64-LABEL: test_v16f32_ogt_q:44; X64: # %bb.0:45; X64-NEXT: vcmplt_oqps %zmm2, %zmm3, %k146; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}47; X64-NEXT: retq48 %cond = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(49 <16 x float> %f1, <16 x float> %f2, metadata !"ogt",50 metadata !"fpexcept.strict") #051 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b52 ret <16 x i32> %res53}54 55define <16 x i32> @test_v16f32_oge_q(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {56; X86-LABEL: test_v16f32_oge_q:57; X86: # %bb.0:58; X86-NEXT: pushl %ebp59; X86-NEXT: movl %esp, %ebp60; X86-NEXT: andl $-64, %esp61; X86-NEXT: subl $64, %esp62; X86-NEXT: vcmpge_oqps 8(%ebp), %zmm2, %k163; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}64; X86-NEXT: movl %ebp, %esp65; X86-NEXT: popl %ebp66; X86-NEXT: retl67;68; X64-LABEL: test_v16f32_oge_q:69; X64: # %bb.0:70; X64-NEXT: vcmple_oqps %zmm2, %zmm3, %k171; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}72; X64-NEXT: retq73 %cond = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(74 <16 x float> %f1, <16 x float> %f2, metadata !"oge",75 metadata !"fpexcept.strict") #076 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b77 ret <16 x i32> %res78}79 80define <16 x i32> @test_v16f32_olt_q(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {81; X86-LABEL: test_v16f32_olt_q:82; X86: # %bb.0:83; X86-NEXT: pushl %ebp84; X86-NEXT: movl %esp, %ebp85; X86-NEXT: andl $-64, %esp86; X86-NEXT: subl $64, %esp87; X86-NEXT: vcmplt_oqps 8(%ebp), %zmm2, %k188; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}89; X86-NEXT: movl %ebp, %esp90; X86-NEXT: popl %ebp91; X86-NEXT: retl92;93; X64-LABEL: test_v16f32_olt_q:94; X64: # %bb.0:95; X64-NEXT: vcmplt_oqps %zmm3, %zmm2, %k196; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}97; X64-NEXT: retq98 %cond = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(99 <16 x float> %f1, <16 x float> %f2, metadata !"olt",100 metadata !"fpexcept.strict") #0101 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b102 ret <16 x i32> %res103}104 105define <16 x i32> @test_v16f32_ole_q(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {106; X86-LABEL: test_v16f32_ole_q:107; X86: # %bb.0:108; X86-NEXT: pushl %ebp109; X86-NEXT: movl %esp, %ebp110; X86-NEXT: andl $-64, %esp111; X86-NEXT: subl $64, %esp112; X86-NEXT: vcmple_oqps 8(%ebp), %zmm2, %k1113; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}114; X86-NEXT: movl %ebp, %esp115; X86-NEXT: popl %ebp116; X86-NEXT: retl117;118; X64-LABEL: test_v16f32_ole_q:119; X64: # %bb.0:120; X64-NEXT: vcmple_oqps %zmm3, %zmm2, %k1121; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}122; X64-NEXT: retq123 %cond = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(124 <16 x float> %f1, <16 x float> %f2, metadata !"ole",125 metadata !"fpexcept.strict") #0126 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b127 ret <16 x i32> %res128}129 130define <16 x i32> @test_v16f32_one_q(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {131; X86-LABEL: test_v16f32_one_q:132; X86: # %bb.0:133; X86-NEXT: pushl %ebp134; X86-NEXT: movl %esp, %ebp135; X86-NEXT: andl $-64, %esp136; X86-NEXT: subl $64, %esp137; X86-NEXT: vcmpneq_oqps 8(%ebp), %zmm2, %k1138; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}139; X86-NEXT: movl %ebp, %esp140; X86-NEXT: popl %ebp141; X86-NEXT: retl142;143; X64-LABEL: test_v16f32_one_q:144; X64: # %bb.0:145; X64-NEXT: vcmpneq_oqps %zmm3, %zmm2, %k1146; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}147; X64-NEXT: retq148 %cond = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(149 <16 x float> %f1, <16 x float> %f2, metadata !"one",150 metadata !"fpexcept.strict") #0151 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b152 ret <16 x i32> %res153}154 155define <16 x i32> @test_v16f32_ord_q(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {156; X86-LABEL: test_v16f32_ord_q:157; X86: # %bb.0:158; X86-NEXT: pushl %ebp159; X86-NEXT: movl %esp, %ebp160; X86-NEXT: andl $-64, %esp161; X86-NEXT: subl $64, %esp162; X86-NEXT: vcmpordps 8(%ebp), %zmm2, %k1163; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}164; X86-NEXT: movl %ebp, %esp165; X86-NEXT: popl %ebp166; X86-NEXT: retl167;168; X64-LABEL: test_v16f32_ord_q:169; X64: # %bb.0:170; X64-NEXT: vcmpordps %zmm3, %zmm2, %k1171; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}172; X64-NEXT: retq173 %cond = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(174 <16 x float> %f1, <16 x float> %f2, metadata !"ord",175 metadata !"fpexcept.strict") #0176 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b177 ret <16 x i32> %res178}179 180define <16 x i32> @test_v16f32_ueq_q(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {181; X86-LABEL: test_v16f32_ueq_q:182; X86: # %bb.0:183; X86-NEXT: pushl %ebp184; X86-NEXT: movl %esp, %ebp185; X86-NEXT: andl $-64, %esp186; X86-NEXT: subl $64, %esp187; X86-NEXT: vcmpeq_uqps 8(%ebp), %zmm2, %k1188; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}189; X86-NEXT: movl %ebp, %esp190; X86-NEXT: popl %ebp191; X86-NEXT: retl192;193; X64-LABEL: test_v16f32_ueq_q:194; X64: # %bb.0:195; X64-NEXT: vcmpeq_uqps %zmm3, %zmm2, %k1196; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}197; X64-NEXT: retq198 %cond = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(199 <16 x float> %f1, <16 x float> %f2, metadata !"ueq",200 metadata !"fpexcept.strict") #0201 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b202 ret <16 x i32> %res203}204 205define <16 x i32> @test_v16f32_ugt_q(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {206; X86-LABEL: test_v16f32_ugt_q:207; X86: # %bb.0:208; X86-NEXT: pushl %ebp209; X86-NEXT: movl %esp, %ebp210; X86-NEXT: andl $-64, %esp211; X86-NEXT: subl $64, %esp212; X86-NEXT: vcmpnle_uqps 8(%ebp), %zmm2, %k1213; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}214; X86-NEXT: movl %ebp, %esp215; X86-NEXT: popl %ebp216; X86-NEXT: retl217;218; X64-LABEL: test_v16f32_ugt_q:219; X64: # %bb.0:220; X64-NEXT: vcmpnle_uqps %zmm3, %zmm2, %k1221; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}222; X64-NEXT: retq223 %cond = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(224 <16 x float> %f1, <16 x float> %f2, metadata !"ugt",225 metadata !"fpexcept.strict") #0226 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b227 ret <16 x i32> %res228}229 230define <16 x i32> @test_v16f32_uge_q(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {231; X86-LABEL: test_v16f32_uge_q:232; X86: # %bb.0:233; X86-NEXT: pushl %ebp234; X86-NEXT: movl %esp, %ebp235; X86-NEXT: andl $-64, %esp236; X86-NEXT: subl $64, %esp237; X86-NEXT: vcmpnlt_uqps 8(%ebp), %zmm2, %k1238; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}239; X86-NEXT: movl %ebp, %esp240; X86-NEXT: popl %ebp241; X86-NEXT: retl242;243; X64-LABEL: test_v16f32_uge_q:244; X64: # %bb.0:245; X64-NEXT: vcmpnlt_uqps %zmm3, %zmm2, %k1246; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}247; X64-NEXT: retq248 %cond = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(249 <16 x float> %f1, <16 x float> %f2, metadata !"uge",250 metadata !"fpexcept.strict") #0251 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b252 ret <16 x i32> %res253}254 255define <16 x i32> @test_v16f32_ult_q(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {256; X86-LABEL: test_v16f32_ult_q:257; X86: # %bb.0:258; X86-NEXT: pushl %ebp259; X86-NEXT: movl %esp, %ebp260; X86-NEXT: andl $-64, %esp261; X86-NEXT: subl $64, %esp262; X86-NEXT: vcmpnge_uqps 8(%ebp), %zmm2, %k1263; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}264; X86-NEXT: movl %ebp, %esp265; X86-NEXT: popl %ebp266; X86-NEXT: retl267;268; X64-LABEL: test_v16f32_ult_q:269; X64: # %bb.0:270; X64-NEXT: vcmpnle_uqps %zmm2, %zmm3, %k1271; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}272; X64-NEXT: retq273 %cond = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(274 <16 x float> %f1, <16 x float> %f2, metadata !"ult",275 metadata !"fpexcept.strict") #0276 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b277 ret <16 x i32> %res278}279 280define <16 x i32> @test_v16f32_ule_q(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {281; X86-LABEL: test_v16f32_ule_q:282; X86: # %bb.0:283; X86-NEXT: pushl %ebp284; X86-NEXT: movl %esp, %ebp285; X86-NEXT: andl $-64, %esp286; X86-NEXT: subl $64, %esp287; X86-NEXT: vcmpngt_uqps 8(%ebp), %zmm2, %k1288; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}289; X86-NEXT: movl %ebp, %esp290; X86-NEXT: popl %ebp291; X86-NEXT: retl292;293; X64-LABEL: test_v16f32_ule_q:294; X64: # %bb.0:295; X64-NEXT: vcmpnlt_uqps %zmm2, %zmm3, %k1296; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}297; X64-NEXT: retq298 %cond = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(299 <16 x float> %f1, <16 x float> %f2, metadata !"ule",300 metadata !"fpexcept.strict") #0301 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b302 ret <16 x i32> %res303}304 305define <16 x i32> @test_v16f32_une_q(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {306; X86-LABEL: test_v16f32_une_q:307; X86: # %bb.0:308; X86-NEXT: pushl %ebp309; X86-NEXT: movl %esp, %ebp310; X86-NEXT: andl $-64, %esp311; X86-NEXT: subl $64, %esp312; X86-NEXT: vcmpneqps 8(%ebp), %zmm2, %k1313; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}314; X86-NEXT: movl %ebp, %esp315; X86-NEXT: popl %ebp316; X86-NEXT: retl317;318; X64-LABEL: test_v16f32_une_q:319; X64: # %bb.0:320; X64-NEXT: vcmpneqps %zmm3, %zmm2, %k1321; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}322; X64-NEXT: retq323 %cond = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(324 <16 x float> %f1, <16 x float> %f2, metadata !"une",325 metadata !"fpexcept.strict") #0326 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b327 ret <16 x i32> %res328}329 330define <16 x i32> @test_v16f32_uno_q(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {331; X86-LABEL: test_v16f32_uno_q:332; X86: # %bb.0:333; X86-NEXT: pushl %ebp334; X86-NEXT: movl %esp, %ebp335; X86-NEXT: andl $-64, %esp336; X86-NEXT: subl $64, %esp337; X86-NEXT: vcmpunordps 8(%ebp), %zmm2, %k1338; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}339; X86-NEXT: movl %ebp, %esp340; X86-NEXT: popl %ebp341; X86-NEXT: retl342;343; X64-LABEL: test_v16f32_uno_q:344; X64: # %bb.0:345; X64-NEXT: vcmpunordps %zmm3, %zmm2, %k1346; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}347; X64-NEXT: retq348 %cond = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(349 <16 x float> %f1, <16 x float> %f2, metadata !"uno",350 metadata !"fpexcept.strict") #0351 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b352 ret <16 x i32> %res353}354 355define <8 x i64> @test_v8f64_oeq_q(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {356; X86-LABEL: test_v8f64_oeq_q:357; X86: # %bb.0:358; X86-NEXT: pushl %ebp359; X86-NEXT: movl %esp, %ebp360; X86-NEXT: andl $-64, %esp361; X86-NEXT: subl $64, %esp362; X86-NEXT: vcmpeqpd 8(%ebp), %zmm2, %k1363; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}364; X86-NEXT: movl %ebp, %esp365; X86-NEXT: popl %ebp366; X86-NEXT: retl367;368; X64-LABEL: test_v8f64_oeq_q:369; X64: # %bb.0:370; X64-NEXT: vcmpeqpd %zmm3, %zmm2, %k1371; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}372; X64-NEXT: retq373 %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(374 <8 x double> %f1, <8 x double> %f2, metadata !"oeq",375 metadata !"fpexcept.strict") #0376 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b377 ret <8 x i64> %res378}379 380define <8 x i64> @test_v8f64_ogt_q(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {381; X86-LABEL: test_v8f64_ogt_q:382; X86: # %bb.0:383; X86-NEXT: pushl %ebp384; X86-NEXT: movl %esp, %ebp385; X86-NEXT: andl $-64, %esp386; X86-NEXT: subl $64, %esp387; X86-NEXT: vcmpgt_oqpd 8(%ebp), %zmm2, %k1388; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}389; X86-NEXT: movl %ebp, %esp390; X86-NEXT: popl %ebp391; X86-NEXT: retl392;393; X64-LABEL: test_v8f64_ogt_q:394; X64: # %bb.0:395; X64-NEXT: vcmplt_oqpd %zmm2, %zmm3, %k1396; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}397; X64-NEXT: retq398 %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(399 <8 x double> %f1, <8 x double> %f2, metadata !"ogt",400 metadata !"fpexcept.strict") #0401 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b402 ret <8 x i64> %res403}404 405define <8 x i64> @test_v8f64_oge_q(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {406; X86-LABEL: test_v8f64_oge_q:407; X86: # %bb.0:408; X86-NEXT: pushl %ebp409; X86-NEXT: movl %esp, %ebp410; X86-NEXT: andl $-64, %esp411; X86-NEXT: subl $64, %esp412; X86-NEXT: vcmpge_oqpd 8(%ebp), %zmm2, %k1413; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}414; X86-NEXT: movl %ebp, %esp415; X86-NEXT: popl %ebp416; X86-NEXT: retl417;418; X64-LABEL: test_v8f64_oge_q:419; X64: # %bb.0:420; X64-NEXT: vcmple_oqpd %zmm2, %zmm3, %k1421; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}422; X64-NEXT: retq423 %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(424 <8 x double> %f1, <8 x double> %f2, metadata !"oge",425 metadata !"fpexcept.strict") #0426 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b427 ret <8 x i64> %res428}429 430define <8 x i64> @test_v8f64_olt_q(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {431; X86-LABEL: test_v8f64_olt_q:432; X86: # %bb.0:433; X86-NEXT: pushl %ebp434; X86-NEXT: movl %esp, %ebp435; X86-NEXT: andl $-64, %esp436; X86-NEXT: subl $64, %esp437; X86-NEXT: vcmplt_oqpd 8(%ebp), %zmm2, %k1438; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}439; X86-NEXT: movl %ebp, %esp440; X86-NEXT: popl %ebp441; X86-NEXT: retl442;443; X64-LABEL: test_v8f64_olt_q:444; X64: # %bb.0:445; X64-NEXT: vcmplt_oqpd %zmm3, %zmm2, %k1446; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}447; X64-NEXT: retq448 %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(449 <8 x double> %f1, <8 x double> %f2, metadata !"olt",450 metadata !"fpexcept.strict") #0451 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b452 ret <8 x i64> %res453}454 455define <8 x i64> @test_v8f64_ole_q(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {456; X86-LABEL: test_v8f64_ole_q:457; X86: # %bb.0:458; X86-NEXT: pushl %ebp459; X86-NEXT: movl %esp, %ebp460; X86-NEXT: andl $-64, %esp461; X86-NEXT: subl $64, %esp462; X86-NEXT: vcmple_oqpd 8(%ebp), %zmm2, %k1463; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}464; X86-NEXT: movl %ebp, %esp465; X86-NEXT: popl %ebp466; X86-NEXT: retl467;468; X64-LABEL: test_v8f64_ole_q:469; X64: # %bb.0:470; X64-NEXT: vcmple_oqpd %zmm3, %zmm2, %k1471; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}472; X64-NEXT: retq473 %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(474 <8 x double> %f1, <8 x double> %f2, metadata !"ole",475 metadata !"fpexcept.strict") #0476 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b477 ret <8 x i64> %res478}479 480define <8 x i64> @test_v8f64_one_q(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {481; X86-LABEL: test_v8f64_one_q:482; X86: # %bb.0:483; X86-NEXT: pushl %ebp484; X86-NEXT: movl %esp, %ebp485; X86-NEXT: andl $-64, %esp486; X86-NEXT: subl $64, %esp487; X86-NEXT: vcmpneq_oqpd 8(%ebp), %zmm2, %k1488; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}489; X86-NEXT: movl %ebp, %esp490; X86-NEXT: popl %ebp491; X86-NEXT: retl492;493; X64-LABEL: test_v8f64_one_q:494; X64: # %bb.0:495; X64-NEXT: vcmpneq_oqpd %zmm3, %zmm2, %k1496; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}497; X64-NEXT: retq498 %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(499 <8 x double> %f1, <8 x double> %f2, metadata !"one",500 metadata !"fpexcept.strict") #0501 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b502 ret <8 x i64> %res503}504 505define <8 x i64> @test_v8f64_ord_q(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {506; X86-LABEL: test_v8f64_ord_q:507; X86: # %bb.0:508; X86-NEXT: pushl %ebp509; X86-NEXT: movl %esp, %ebp510; X86-NEXT: andl $-64, %esp511; X86-NEXT: subl $64, %esp512; X86-NEXT: vcmpordpd 8(%ebp), %zmm2, %k1513; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}514; X86-NEXT: movl %ebp, %esp515; X86-NEXT: popl %ebp516; X86-NEXT: retl517;518; X64-LABEL: test_v8f64_ord_q:519; X64: # %bb.0:520; X64-NEXT: vcmpordpd %zmm3, %zmm2, %k1521; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}522; X64-NEXT: retq523 %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(524 <8 x double> %f1, <8 x double> %f2, metadata !"ord",525 metadata !"fpexcept.strict") #0526 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b527 ret <8 x i64> %res528}529 530define <8 x i64> @test_v8f64_ueq_q(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {531; X86-LABEL: test_v8f64_ueq_q:532; X86: # %bb.0:533; X86-NEXT: pushl %ebp534; X86-NEXT: movl %esp, %ebp535; X86-NEXT: andl $-64, %esp536; X86-NEXT: subl $64, %esp537; X86-NEXT: vcmpeq_uqpd 8(%ebp), %zmm2, %k1538; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}539; X86-NEXT: movl %ebp, %esp540; X86-NEXT: popl %ebp541; X86-NEXT: retl542;543; X64-LABEL: test_v8f64_ueq_q:544; X64: # %bb.0:545; X64-NEXT: vcmpeq_uqpd %zmm3, %zmm2, %k1546; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}547; X64-NEXT: retq548 %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(549 <8 x double> %f1, <8 x double> %f2, metadata !"ueq",550 metadata !"fpexcept.strict") #0551 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b552 ret <8 x i64> %res553}554 555define <8 x i64> @test_v8f64_ugt_q(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {556; X86-LABEL: test_v8f64_ugt_q:557; X86: # %bb.0:558; X86-NEXT: pushl %ebp559; X86-NEXT: movl %esp, %ebp560; X86-NEXT: andl $-64, %esp561; X86-NEXT: subl $64, %esp562; X86-NEXT: vcmpnle_uqpd 8(%ebp), %zmm2, %k1563; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}564; X86-NEXT: movl %ebp, %esp565; X86-NEXT: popl %ebp566; X86-NEXT: retl567;568; X64-LABEL: test_v8f64_ugt_q:569; X64: # %bb.0:570; X64-NEXT: vcmpnle_uqpd %zmm3, %zmm2, %k1571; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}572; X64-NEXT: retq573 %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(574 <8 x double> %f1, <8 x double> %f2, metadata !"ugt",575 metadata !"fpexcept.strict") #0576 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b577 ret <8 x i64> %res578}579 580define <8 x i64> @test_v8f64_uge_q(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {581; X86-LABEL: test_v8f64_uge_q:582; X86: # %bb.0:583; X86-NEXT: pushl %ebp584; X86-NEXT: movl %esp, %ebp585; X86-NEXT: andl $-64, %esp586; X86-NEXT: subl $64, %esp587; X86-NEXT: vcmpnlt_uqpd 8(%ebp), %zmm2, %k1588; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}589; X86-NEXT: movl %ebp, %esp590; X86-NEXT: popl %ebp591; X86-NEXT: retl592;593; X64-LABEL: test_v8f64_uge_q:594; X64: # %bb.0:595; X64-NEXT: vcmpnlt_uqpd %zmm3, %zmm2, %k1596; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}597; X64-NEXT: retq598 %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(599 <8 x double> %f1, <8 x double> %f2, metadata !"uge",600 metadata !"fpexcept.strict") #0601 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b602 ret <8 x i64> %res603}604 605define <8 x i64> @test_v8f64_ult_q(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {606; X86-LABEL: test_v8f64_ult_q:607; X86: # %bb.0:608; X86-NEXT: pushl %ebp609; X86-NEXT: movl %esp, %ebp610; X86-NEXT: andl $-64, %esp611; X86-NEXT: subl $64, %esp612; X86-NEXT: vcmpnge_uqpd 8(%ebp), %zmm2, %k1613; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}614; X86-NEXT: movl %ebp, %esp615; X86-NEXT: popl %ebp616; X86-NEXT: retl617;618; X64-LABEL: test_v8f64_ult_q:619; X64: # %bb.0:620; X64-NEXT: vcmpnle_uqpd %zmm2, %zmm3, %k1621; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}622; X64-NEXT: retq623 %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(624 <8 x double> %f1, <8 x double> %f2, metadata !"ult",625 metadata !"fpexcept.strict") #0626 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b627 ret <8 x i64> %res628}629 630define <8 x i64> @test_v8f64_ule_q(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {631; X86-LABEL: test_v8f64_ule_q:632; X86: # %bb.0:633; X86-NEXT: pushl %ebp634; X86-NEXT: movl %esp, %ebp635; X86-NEXT: andl $-64, %esp636; X86-NEXT: subl $64, %esp637; X86-NEXT: vcmpngt_uqpd 8(%ebp), %zmm2, %k1638; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}639; X86-NEXT: movl %ebp, %esp640; X86-NEXT: popl %ebp641; X86-NEXT: retl642;643; X64-LABEL: test_v8f64_ule_q:644; X64: # %bb.0:645; X64-NEXT: vcmpnlt_uqpd %zmm2, %zmm3, %k1646; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}647; X64-NEXT: retq648 %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(649 <8 x double> %f1, <8 x double> %f2, metadata !"ule",650 metadata !"fpexcept.strict") #0651 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b652 ret <8 x i64> %res653}654 655define <8 x i64> @test_v8f64_une_q(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {656; X86-LABEL: test_v8f64_une_q:657; X86: # %bb.0:658; X86-NEXT: pushl %ebp659; X86-NEXT: movl %esp, %ebp660; X86-NEXT: andl $-64, %esp661; X86-NEXT: subl $64, %esp662; X86-NEXT: vcmpneqpd 8(%ebp), %zmm2, %k1663; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}664; X86-NEXT: movl %ebp, %esp665; X86-NEXT: popl %ebp666; X86-NEXT: retl667;668; X64-LABEL: test_v8f64_une_q:669; X64: # %bb.0:670; X64-NEXT: vcmpneqpd %zmm3, %zmm2, %k1671; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}672; X64-NEXT: retq673 %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(674 <8 x double> %f1, <8 x double> %f2, metadata !"une",675 metadata !"fpexcept.strict") #0676 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b677 ret <8 x i64> %res678}679 680define <8 x i64> @test_v8f64_uno_q(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {681; X86-LABEL: test_v8f64_uno_q:682; X86: # %bb.0:683; X86-NEXT: pushl %ebp684; X86-NEXT: movl %esp, %ebp685; X86-NEXT: andl $-64, %esp686; X86-NEXT: subl $64, %esp687; X86-NEXT: vcmpunordpd 8(%ebp), %zmm2, %k1688; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}689; X86-NEXT: movl %ebp, %esp690; X86-NEXT: popl %ebp691; X86-NEXT: retl692;693; X64-LABEL: test_v8f64_uno_q:694; X64: # %bb.0:695; X64-NEXT: vcmpunordpd %zmm3, %zmm2, %k1696; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}697; X64-NEXT: retq698 %cond = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(699 <8 x double> %f1, <8 x double> %f2, metadata !"uno",700 metadata !"fpexcept.strict") #0701 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b702 ret <8 x i64> %res703}704 705define <16 x i32> @test_v16f32_oeq_s(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {706; X86-LABEL: test_v16f32_oeq_s:707; X86: # %bb.0:708; X86-NEXT: pushl %ebp709; X86-NEXT: movl %esp, %ebp710; X86-NEXT: andl $-64, %esp711; X86-NEXT: subl $64, %esp712; X86-NEXT: vcmpeq_osps 8(%ebp), %zmm2, %k1713; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}714; X86-NEXT: movl %ebp, %esp715; X86-NEXT: popl %ebp716; X86-NEXT: retl717;718; X64-LABEL: test_v16f32_oeq_s:719; X64: # %bb.0:720; X64-NEXT: vcmpeq_osps %zmm3, %zmm2, %k1721; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}722; X64-NEXT: retq723 %cond = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(724 <16 x float> %f1, <16 x float> %f2, metadata !"oeq",725 metadata !"fpexcept.strict") #0726 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b727 ret <16 x i32> %res728}729 730define <16 x i32> @test_v16f32_ogt_s(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {731; X86-LABEL: test_v16f32_ogt_s:732; X86: # %bb.0:733; X86-NEXT: pushl %ebp734; X86-NEXT: movl %esp, %ebp735; X86-NEXT: andl $-64, %esp736; X86-NEXT: subl $64, %esp737; X86-NEXT: vcmpgtps 8(%ebp), %zmm2, %k1738; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}739; X86-NEXT: movl %ebp, %esp740; X86-NEXT: popl %ebp741; X86-NEXT: retl742;743; X64-LABEL: test_v16f32_ogt_s:744; X64: # %bb.0:745; X64-NEXT: vcmpltps %zmm2, %zmm3, %k1746; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}747; X64-NEXT: retq748 %cond = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(749 <16 x float> %f1, <16 x float> %f2, metadata !"ogt",750 metadata !"fpexcept.strict") #0751 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b752 ret <16 x i32> %res753}754 755define <16 x i32> @test_v16f32_oge_s(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {756; X86-LABEL: test_v16f32_oge_s:757; X86: # %bb.0:758; X86-NEXT: pushl %ebp759; X86-NEXT: movl %esp, %ebp760; X86-NEXT: andl $-64, %esp761; X86-NEXT: subl $64, %esp762; X86-NEXT: vcmpgeps 8(%ebp), %zmm2, %k1763; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}764; X86-NEXT: movl %ebp, %esp765; X86-NEXT: popl %ebp766; X86-NEXT: retl767;768; X64-LABEL: test_v16f32_oge_s:769; X64: # %bb.0:770; X64-NEXT: vcmpleps %zmm2, %zmm3, %k1771; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}772; X64-NEXT: retq773 %cond = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(774 <16 x float> %f1, <16 x float> %f2, metadata !"oge",775 metadata !"fpexcept.strict") #0776 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b777 ret <16 x i32> %res778}779 780define <16 x i32> @test_v16f32_olt_s(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {781; X86-LABEL: test_v16f32_olt_s:782; X86: # %bb.0:783; X86-NEXT: pushl %ebp784; X86-NEXT: movl %esp, %ebp785; X86-NEXT: andl $-64, %esp786; X86-NEXT: subl $64, %esp787; X86-NEXT: vcmpltps 8(%ebp), %zmm2, %k1788; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}789; X86-NEXT: movl %ebp, %esp790; X86-NEXT: popl %ebp791; X86-NEXT: retl792;793; X64-LABEL: test_v16f32_olt_s:794; X64: # %bb.0:795; X64-NEXT: vcmpltps %zmm3, %zmm2, %k1796; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}797; X64-NEXT: retq798 %cond = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(799 <16 x float> %f1, <16 x float> %f2, metadata !"olt",800 metadata !"fpexcept.strict") #0801 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b802 ret <16 x i32> %res803}804 805define <16 x i32> @test_v16f32_ole_s(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {806; X86-LABEL: test_v16f32_ole_s:807; X86: # %bb.0:808; X86-NEXT: pushl %ebp809; X86-NEXT: movl %esp, %ebp810; X86-NEXT: andl $-64, %esp811; X86-NEXT: subl $64, %esp812; X86-NEXT: vcmpleps 8(%ebp), %zmm2, %k1813; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}814; X86-NEXT: movl %ebp, %esp815; X86-NEXT: popl %ebp816; X86-NEXT: retl817;818; X64-LABEL: test_v16f32_ole_s:819; X64: # %bb.0:820; X64-NEXT: vcmpleps %zmm3, %zmm2, %k1821; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}822; X64-NEXT: retq823 %cond = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(824 <16 x float> %f1, <16 x float> %f2, metadata !"ole",825 metadata !"fpexcept.strict") #0826 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b827 ret <16 x i32> %res828}829 830define <16 x i32> @test_v16f32_one_s(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {831; X86-LABEL: test_v16f32_one_s:832; X86: # %bb.0:833; X86-NEXT: pushl %ebp834; X86-NEXT: movl %esp, %ebp835; X86-NEXT: andl $-64, %esp836; X86-NEXT: subl $64, %esp837; X86-NEXT: vcmpneq_osps 8(%ebp), %zmm2, %k1838; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}839; X86-NEXT: movl %ebp, %esp840; X86-NEXT: popl %ebp841; X86-NEXT: retl842;843; X64-LABEL: test_v16f32_one_s:844; X64: # %bb.0:845; X64-NEXT: vcmpneq_osps %zmm3, %zmm2, %k1846; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}847; X64-NEXT: retq848 %cond = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(849 <16 x float> %f1, <16 x float> %f2, metadata !"one",850 metadata !"fpexcept.strict") #0851 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b852 ret <16 x i32> %res853}854 855define <16 x i32> @test_v16f32_ord_s(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {856; X86-LABEL: test_v16f32_ord_s:857; X86: # %bb.0:858; X86-NEXT: pushl %ebp859; X86-NEXT: movl %esp, %ebp860; X86-NEXT: andl $-64, %esp861; X86-NEXT: subl $64, %esp862; X86-NEXT: vcmpord_sps 8(%ebp), %zmm2, %k1863; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}864; X86-NEXT: movl %ebp, %esp865; X86-NEXT: popl %ebp866; X86-NEXT: retl867;868; X64-LABEL: test_v16f32_ord_s:869; X64: # %bb.0:870; X64-NEXT: vcmpord_sps %zmm3, %zmm2, %k1871; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}872; X64-NEXT: retq873 %cond = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(874 <16 x float> %f1, <16 x float> %f2, metadata !"ord",875 metadata !"fpexcept.strict") #0876 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b877 ret <16 x i32> %res878}879 880define <16 x i32> @test_v16f32_ueq_s(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {881; X86-LABEL: test_v16f32_ueq_s:882; X86: # %bb.0:883; X86-NEXT: pushl %ebp884; X86-NEXT: movl %esp, %ebp885; X86-NEXT: andl $-64, %esp886; X86-NEXT: subl $64, %esp887; X86-NEXT: vcmpeq_usps 8(%ebp), %zmm2, %k1888; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}889; X86-NEXT: movl %ebp, %esp890; X86-NEXT: popl %ebp891; X86-NEXT: retl892;893; X64-LABEL: test_v16f32_ueq_s:894; X64: # %bb.0:895; X64-NEXT: vcmpeq_usps %zmm3, %zmm2, %k1896; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}897; X64-NEXT: retq898 %cond = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(899 <16 x float> %f1, <16 x float> %f2, metadata !"ueq",900 metadata !"fpexcept.strict") #0901 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b902 ret <16 x i32> %res903}904 905define <16 x i32> @test_v16f32_ugt_s(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {906; X86-LABEL: test_v16f32_ugt_s:907; X86: # %bb.0:908; X86-NEXT: pushl %ebp909; X86-NEXT: movl %esp, %ebp910; X86-NEXT: andl $-64, %esp911; X86-NEXT: subl $64, %esp912; X86-NEXT: vcmpnleps 8(%ebp), %zmm2, %k1913; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}914; X86-NEXT: movl %ebp, %esp915; X86-NEXT: popl %ebp916; X86-NEXT: retl917;918; X64-LABEL: test_v16f32_ugt_s:919; X64: # %bb.0:920; X64-NEXT: vcmpnleps %zmm3, %zmm2, %k1921; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}922; X64-NEXT: retq923 %cond = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(924 <16 x float> %f1, <16 x float> %f2, metadata !"ugt",925 metadata !"fpexcept.strict") #0926 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b927 ret <16 x i32> %res928}929 930define <16 x i32> @test_v16f32_uge_s(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {931; X86-LABEL: test_v16f32_uge_s:932; X86: # %bb.0:933; X86-NEXT: pushl %ebp934; X86-NEXT: movl %esp, %ebp935; X86-NEXT: andl $-64, %esp936; X86-NEXT: subl $64, %esp937; X86-NEXT: vcmpnltps 8(%ebp), %zmm2, %k1938; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}939; X86-NEXT: movl %ebp, %esp940; X86-NEXT: popl %ebp941; X86-NEXT: retl942;943; X64-LABEL: test_v16f32_uge_s:944; X64: # %bb.0:945; X64-NEXT: vcmpnltps %zmm3, %zmm2, %k1946; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}947; X64-NEXT: retq948 %cond = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(949 <16 x float> %f1, <16 x float> %f2, metadata !"uge",950 metadata !"fpexcept.strict") #0951 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b952 ret <16 x i32> %res953}954 955define <16 x i32> @test_v16f32_ult_s(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {956; X86-LABEL: test_v16f32_ult_s:957; X86: # %bb.0:958; X86-NEXT: pushl %ebp959; X86-NEXT: movl %esp, %ebp960; X86-NEXT: andl $-64, %esp961; X86-NEXT: subl $64, %esp962; X86-NEXT: vcmpngeps 8(%ebp), %zmm2, %k1963; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}964; X86-NEXT: movl %ebp, %esp965; X86-NEXT: popl %ebp966; X86-NEXT: retl967;968; X64-LABEL: test_v16f32_ult_s:969; X64: # %bb.0:970; X64-NEXT: vcmpnleps %zmm2, %zmm3, %k1971; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}972; X64-NEXT: retq973 %cond = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(974 <16 x float> %f1, <16 x float> %f2, metadata !"ult",975 metadata !"fpexcept.strict") #0976 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b977 ret <16 x i32> %res978}979 980define <16 x i32> @test_v16f32_ule_s(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {981; X86-LABEL: test_v16f32_ule_s:982; X86: # %bb.0:983; X86-NEXT: pushl %ebp984; X86-NEXT: movl %esp, %ebp985; X86-NEXT: andl $-64, %esp986; X86-NEXT: subl $64, %esp987; X86-NEXT: vcmpngtps 8(%ebp), %zmm2, %k1988; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}989; X86-NEXT: movl %ebp, %esp990; X86-NEXT: popl %ebp991; X86-NEXT: retl992;993; X64-LABEL: test_v16f32_ule_s:994; X64: # %bb.0:995; X64-NEXT: vcmpnltps %zmm2, %zmm3, %k1996; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}997; X64-NEXT: retq998 %cond = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(999 <16 x float> %f1, <16 x float> %f2, metadata !"ule",1000 metadata !"fpexcept.strict") #01001 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b1002 ret <16 x i32> %res1003}1004 1005define <16 x i32> @test_v16f32_une_s(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {1006; X86-LABEL: test_v16f32_une_s:1007; X86: # %bb.0:1008; X86-NEXT: pushl %ebp1009; X86-NEXT: movl %esp, %ebp1010; X86-NEXT: andl $-64, %esp1011; X86-NEXT: subl $64, %esp1012; X86-NEXT: vcmpneq_usps 8(%ebp), %zmm2, %k11013; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}1014; X86-NEXT: movl %ebp, %esp1015; X86-NEXT: popl %ebp1016; X86-NEXT: retl1017;1018; X64-LABEL: test_v16f32_une_s:1019; X64: # %bb.0:1020; X64-NEXT: vcmpneq_usps %zmm3, %zmm2, %k11021; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}1022; X64-NEXT: retq1023 %cond = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(1024 <16 x float> %f1, <16 x float> %f2, metadata !"une",1025 metadata !"fpexcept.strict") #01026 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b1027 ret <16 x i32> %res1028}1029 1030define <16 x i32> @test_v16f32_uno_s(<16 x i32> %a, <16 x i32> %b, <16 x float> %f1, <16 x float> %f2) #0 {1031; X86-LABEL: test_v16f32_uno_s:1032; X86: # %bb.0:1033; X86-NEXT: pushl %ebp1034; X86-NEXT: movl %esp, %ebp1035; X86-NEXT: andl $-64, %esp1036; X86-NEXT: subl $64, %esp1037; X86-NEXT: vcmpunord_sps 8(%ebp), %zmm2, %k11038; X86-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}1039; X86-NEXT: movl %ebp, %esp1040; X86-NEXT: popl %ebp1041; X86-NEXT: retl1042;1043; X64-LABEL: test_v16f32_uno_s:1044; X64: # %bb.0:1045; X64-NEXT: vcmpunord_sps %zmm3, %zmm2, %k11046; X64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1}1047; X64-NEXT: retq1048 %cond = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(1049 <16 x float> %f1, <16 x float> %f2, metadata !"uno",1050 metadata !"fpexcept.strict") #01051 %res = select <16 x i1> %cond, <16 x i32> %a, <16 x i32> %b1052 ret <16 x i32> %res1053}1054 1055define <8 x i64> @test_v8f64_oeq_s(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {1056; X86-LABEL: test_v8f64_oeq_s:1057; X86: # %bb.0:1058; X86-NEXT: pushl %ebp1059; X86-NEXT: movl %esp, %ebp1060; X86-NEXT: andl $-64, %esp1061; X86-NEXT: subl $64, %esp1062; X86-NEXT: vcmpeq_ospd 8(%ebp), %zmm2, %k11063; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1064; X86-NEXT: movl %ebp, %esp1065; X86-NEXT: popl %ebp1066; X86-NEXT: retl1067;1068; X64-LABEL: test_v8f64_oeq_s:1069; X64: # %bb.0:1070; X64-NEXT: vcmpeq_ospd %zmm3, %zmm2, %k11071; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1072; X64-NEXT: retq1073 %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(1074 <8 x double> %f1, <8 x double> %f2, metadata !"oeq",1075 metadata !"fpexcept.strict") #01076 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b1077 ret <8 x i64> %res1078}1079 1080define <8 x i64> @test_v8f64_ogt_s(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {1081; X86-LABEL: test_v8f64_ogt_s:1082; X86: # %bb.0:1083; X86-NEXT: pushl %ebp1084; X86-NEXT: movl %esp, %ebp1085; X86-NEXT: andl $-64, %esp1086; X86-NEXT: subl $64, %esp1087; X86-NEXT: vcmpgtpd 8(%ebp), %zmm2, %k11088; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1089; X86-NEXT: movl %ebp, %esp1090; X86-NEXT: popl %ebp1091; X86-NEXT: retl1092;1093; X64-LABEL: test_v8f64_ogt_s:1094; X64: # %bb.0:1095; X64-NEXT: vcmpltpd %zmm2, %zmm3, %k11096; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1097; X64-NEXT: retq1098 %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(1099 <8 x double> %f1, <8 x double> %f2, metadata !"ogt",1100 metadata !"fpexcept.strict") #01101 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b1102 ret <8 x i64> %res1103}1104 1105define <8 x i64> @test_v8f64_oge_s(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {1106; X86-LABEL: test_v8f64_oge_s:1107; X86: # %bb.0:1108; X86-NEXT: pushl %ebp1109; X86-NEXT: movl %esp, %ebp1110; X86-NEXT: andl $-64, %esp1111; X86-NEXT: subl $64, %esp1112; X86-NEXT: vcmpgepd 8(%ebp), %zmm2, %k11113; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1114; X86-NEXT: movl %ebp, %esp1115; X86-NEXT: popl %ebp1116; X86-NEXT: retl1117;1118; X64-LABEL: test_v8f64_oge_s:1119; X64: # %bb.0:1120; X64-NEXT: vcmplepd %zmm2, %zmm3, %k11121; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1122; X64-NEXT: retq1123 %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(1124 <8 x double> %f1, <8 x double> %f2, metadata !"oge",1125 metadata !"fpexcept.strict") #01126 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b1127 ret <8 x i64> %res1128}1129 1130define <8 x i64> @test_v8f64_olt_s(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {1131; X86-LABEL: test_v8f64_olt_s:1132; X86: # %bb.0:1133; X86-NEXT: pushl %ebp1134; X86-NEXT: movl %esp, %ebp1135; X86-NEXT: andl $-64, %esp1136; X86-NEXT: subl $64, %esp1137; X86-NEXT: vcmpltpd 8(%ebp), %zmm2, %k11138; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1139; X86-NEXT: movl %ebp, %esp1140; X86-NEXT: popl %ebp1141; X86-NEXT: retl1142;1143; X64-LABEL: test_v8f64_olt_s:1144; X64: # %bb.0:1145; X64-NEXT: vcmpltpd %zmm3, %zmm2, %k11146; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1147; X64-NEXT: retq1148 %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(1149 <8 x double> %f1, <8 x double> %f2, metadata !"olt",1150 metadata !"fpexcept.strict") #01151 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b1152 ret <8 x i64> %res1153}1154 1155define <8 x i64> @test_v8f64_ole_s(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {1156; X86-LABEL: test_v8f64_ole_s:1157; X86: # %bb.0:1158; X86-NEXT: pushl %ebp1159; X86-NEXT: movl %esp, %ebp1160; X86-NEXT: andl $-64, %esp1161; X86-NEXT: subl $64, %esp1162; X86-NEXT: vcmplepd 8(%ebp), %zmm2, %k11163; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1164; X86-NEXT: movl %ebp, %esp1165; X86-NEXT: popl %ebp1166; X86-NEXT: retl1167;1168; X64-LABEL: test_v8f64_ole_s:1169; X64: # %bb.0:1170; X64-NEXT: vcmplepd %zmm3, %zmm2, %k11171; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1172; X64-NEXT: retq1173 %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(1174 <8 x double> %f1, <8 x double> %f2, metadata !"ole",1175 metadata !"fpexcept.strict") #01176 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b1177 ret <8 x i64> %res1178}1179 1180define <8 x i64> @test_v8f64_one_s(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {1181; X86-LABEL: test_v8f64_one_s:1182; X86: # %bb.0:1183; X86-NEXT: pushl %ebp1184; X86-NEXT: movl %esp, %ebp1185; X86-NEXT: andl $-64, %esp1186; X86-NEXT: subl $64, %esp1187; X86-NEXT: vcmpneq_ospd 8(%ebp), %zmm2, %k11188; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1189; X86-NEXT: movl %ebp, %esp1190; X86-NEXT: popl %ebp1191; X86-NEXT: retl1192;1193; X64-LABEL: test_v8f64_one_s:1194; X64: # %bb.0:1195; X64-NEXT: vcmpneq_ospd %zmm3, %zmm2, %k11196; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1197; X64-NEXT: retq1198 %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(1199 <8 x double> %f1, <8 x double> %f2, metadata !"one",1200 metadata !"fpexcept.strict") #01201 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b1202 ret <8 x i64> %res1203}1204 1205define <8 x i64> @test_v8f64_ord_s(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {1206; X86-LABEL: test_v8f64_ord_s:1207; X86: # %bb.0:1208; X86-NEXT: pushl %ebp1209; X86-NEXT: movl %esp, %ebp1210; X86-NEXT: andl $-64, %esp1211; X86-NEXT: subl $64, %esp1212; X86-NEXT: vcmpord_spd 8(%ebp), %zmm2, %k11213; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1214; X86-NEXT: movl %ebp, %esp1215; X86-NEXT: popl %ebp1216; X86-NEXT: retl1217;1218; X64-LABEL: test_v8f64_ord_s:1219; X64: # %bb.0:1220; X64-NEXT: vcmpord_spd %zmm3, %zmm2, %k11221; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1222; X64-NEXT: retq1223 %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(1224 <8 x double> %f1, <8 x double> %f2, metadata !"ord",1225 metadata !"fpexcept.strict") #01226 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b1227 ret <8 x i64> %res1228}1229 1230define <8 x i64> @test_v8f64_ueq_s(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {1231; X86-LABEL: test_v8f64_ueq_s:1232; X86: # %bb.0:1233; X86-NEXT: pushl %ebp1234; X86-NEXT: movl %esp, %ebp1235; X86-NEXT: andl $-64, %esp1236; X86-NEXT: subl $64, %esp1237; X86-NEXT: vcmpeq_uspd 8(%ebp), %zmm2, %k11238; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1239; X86-NEXT: movl %ebp, %esp1240; X86-NEXT: popl %ebp1241; X86-NEXT: retl1242;1243; X64-LABEL: test_v8f64_ueq_s:1244; X64: # %bb.0:1245; X64-NEXT: vcmpeq_uspd %zmm3, %zmm2, %k11246; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1247; X64-NEXT: retq1248 %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(1249 <8 x double> %f1, <8 x double> %f2, metadata !"ueq",1250 metadata !"fpexcept.strict") #01251 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b1252 ret <8 x i64> %res1253}1254 1255define <8 x i64> @test_v8f64_ugt_s(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {1256; X86-LABEL: test_v8f64_ugt_s:1257; X86: # %bb.0:1258; X86-NEXT: pushl %ebp1259; X86-NEXT: movl %esp, %ebp1260; X86-NEXT: andl $-64, %esp1261; X86-NEXT: subl $64, %esp1262; X86-NEXT: vcmpnlepd 8(%ebp), %zmm2, %k11263; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1264; X86-NEXT: movl %ebp, %esp1265; X86-NEXT: popl %ebp1266; X86-NEXT: retl1267;1268; X64-LABEL: test_v8f64_ugt_s:1269; X64: # %bb.0:1270; X64-NEXT: vcmpnlepd %zmm3, %zmm2, %k11271; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1272; X64-NEXT: retq1273 %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(1274 <8 x double> %f1, <8 x double> %f2, metadata !"ugt",1275 metadata !"fpexcept.strict") #01276 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b1277 ret <8 x i64> %res1278}1279 1280define <8 x i64> @test_v8f64_uge_s(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {1281; X86-LABEL: test_v8f64_uge_s:1282; X86: # %bb.0:1283; X86-NEXT: pushl %ebp1284; X86-NEXT: movl %esp, %ebp1285; X86-NEXT: andl $-64, %esp1286; X86-NEXT: subl $64, %esp1287; X86-NEXT: vcmpnltpd 8(%ebp), %zmm2, %k11288; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1289; X86-NEXT: movl %ebp, %esp1290; X86-NEXT: popl %ebp1291; X86-NEXT: retl1292;1293; X64-LABEL: test_v8f64_uge_s:1294; X64: # %bb.0:1295; X64-NEXT: vcmpnltpd %zmm3, %zmm2, %k11296; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1297; X64-NEXT: retq1298 %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(1299 <8 x double> %f1, <8 x double> %f2, metadata !"uge",1300 metadata !"fpexcept.strict") #01301 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b1302 ret <8 x i64> %res1303}1304 1305define <8 x i64> @test_v8f64_ult_s(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {1306; X86-LABEL: test_v8f64_ult_s:1307; X86: # %bb.0:1308; X86-NEXT: pushl %ebp1309; X86-NEXT: movl %esp, %ebp1310; X86-NEXT: andl $-64, %esp1311; X86-NEXT: subl $64, %esp1312; X86-NEXT: vcmpngepd 8(%ebp), %zmm2, %k11313; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1314; X86-NEXT: movl %ebp, %esp1315; X86-NEXT: popl %ebp1316; X86-NEXT: retl1317;1318; X64-LABEL: test_v8f64_ult_s:1319; X64: # %bb.0:1320; X64-NEXT: vcmpnlepd %zmm2, %zmm3, %k11321; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1322; X64-NEXT: retq1323 %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(1324 <8 x double> %f1, <8 x double> %f2, metadata !"ult",1325 metadata !"fpexcept.strict") #01326 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b1327 ret <8 x i64> %res1328}1329 1330define <8 x i64> @test_v8f64_ule_s(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {1331; X86-LABEL: test_v8f64_ule_s:1332; X86: # %bb.0:1333; X86-NEXT: pushl %ebp1334; X86-NEXT: movl %esp, %ebp1335; X86-NEXT: andl $-64, %esp1336; X86-NEXT: subl $64, %esp1337; X86-NEXT: vcmpngtpd 8(%ebp), %zmm2, %k11338; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1339; X86-NEXT: movl %ebp, %esp1340; X86-NEXT: popl %ebp1341; X86-NEXT: retl1342;1343; X64-LABEL: test_v8f64_ule_s:1344; X64: # %bb.0:1345; X64-NEXT: vcmpnltpd %zmm2, %zmm3, %k11346; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1347; X64-NEXT: retq1348 %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(1349 <8 x double> %f1, <8 x double> %f2, metadata !"ule",1350 metadata !"fpexcept.strict") #01351 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b1352 ret <8 x i64> %res1353}1354 1355define <8 x i64> @test_v8f64_une_s(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {1356; X86-LABEL: test_v8f64_une_s:1357; X86: # %bb.0:1358; X86-NEXT: pushl %ebp1359; X86-NEXT: movl %esp, %ebp1360; X86-NEXT: andl $-64, %esp1361; X86-NEXT: subl $64, %esp1362; X86-NEXT: vcmpneq_uspd 8(%ebp), %zmm2, %k11363; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1364; X86-NEXT: movl %ebp, %esp1365; X86-NEXT: popl %ebp1366; X86-NEXT: retl1367;1368; X64-LABEL: test_v8f64_une_s:1369; X64: # %bb.0:1370; X64-NEXT: vcmpneq_uspd %zmm3, %zmm2, %k11371; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1372; X64-NEXT: retq1373 %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(1374 <8 x double> %f1, <8 x double> %f2, metadata !"une",1375 metadata !"fpexcept.strict") #01376 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b1377 ret <8 x i64> %res1378}1379 1380define <8 x i64> @test_v8f64_uno_s(<8 x i64> %a, <8 x i64> %b, <8 x double> %f1, <8 x double> %f2) #0 {1381; X86-LABEL: test_v8f64_uno_s:1382; X86: # %bb.0:1383; X86-NEXT: pushl %ebp1384; X86-NEXT: movl %esp, %ebp1385; X86-NEXT: andl $-64, %esp1386; X86-NEXT: subl $64, %esp1387; X86-NEXT: vcmpunord_spd 8(%ebp), %zmm2, %k11388; X86-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1389; X86-NEXT: movl %ebp, %esp1390; X86-NEXT: popl %ebp1391; X86-NEXT: retl1392;1393; X64-LABEL: test_v8f64_uno_s:1394; X64: # %bb.0:1395; X64-NEXT: vcmpunord_spd %zmm3, %zmm2, %k11396; X64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1397; X64-NEXT: retq1398 %cond = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(1399 <8 x double> %f1, <8 x double> %f2, metadata !"uno",1400 metadata !"fpexcept.strict") #01401 %res = select <8 x i1> %cond, <8 x i64> %a, <8 x i64> %b1402 ret <8 x i64> %res1403}1404 1405attributes #0 = { strictfp nounwind }1406 1407declare <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float>, <16 x float>, metadata, metadata)1408declare <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double>, <8 x double>, metadata, metadata)1409declare <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float>, <16 x float>, metadata, metadata)1410declare <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double>, <8 x double>, metadata, metadata)1411