brintos

brintos / llvm-project-archived public Read only

0
0
Text · 26.7 KiB · bfeb41e Raw
709 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512fp16 -O3 | FileCheck %s --check-prefixes=X863; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512fp16 -O3 | FileCheck %s --check-prefixes=X644 5define <32 x i16> @test_v32f16_oeq_q(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {6; X86-LABEL: test_v32f16_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:    vcmpeqph 8(%ebp), %zmm2, %k113; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}14; X86-NEXT:    movl %ebp, %esp15; X86-NEXT:    popl %ebp16; X86-NEXT:    retl17;18; X64-LABEL: test_v32f16_oeq_q:19; X64:       # %bb.0:20; X64-NEXT:    vcmpeqph %zmm3, %zmm2, %k121; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}22; X64-NEXT:    retq23  %cond = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(24                                               <32 x half> %f1, <32 x half> %f2, metadata !"oeq",25                                               metadata !"fpexcept.strict") #026  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b27  ret <32 x i16> %res28}29 30define <32 x i16> @test_v32f16_ogt_q(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {31; X86-LABEL: test_v32f16_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_oqph 8(%ebp), %zmm2, %k138; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}39; X86-NEXT:    movl %ebp, %esp40; X86-NEXT:    popl %ebp41; X86-NEXT:    retl42;43; X64-LABEL: test_v32f16_ogt_q:44; X64:       # %bb.0:45; X64-NEXT:    vcmplt_oqph %zmm2, %zmm3, %k146; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}47; X64-NEXT:    retq48  %cond = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(49                                               <32 x half> %f1, <32 x half> %f2, metadata !"ogt",50                                               metadata !"fpexcept.strict") #051  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b52  ret <32 x i16> %res53}54 55define <32 x i16> @test_v32f16_oge_q(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {56; X86-LABEL: test_v32f16_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_oqph 8(%ebp), %zmm2, %k163; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}64; X86-NEXT:    movl %ebp, %esp65; X86-NEXT:    popl %ebp66; X86-NEXT:    retl67;68; X64-LABEL: test_v32f16_oge_q:69; X64:       # %bb.0:70; X64-NEXT:    vcmple_oqph %zmm2, %zmm3, %k171; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}72; X64-NEXT:    retq73  %cond = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(74                                               <32 x half> %f1, <32 x half> %f2, metadata !"oge",75                                               metadata !"fpexcept.strict") #076  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b77  ret <32 x i16> %res78}79 80define <32 x i16> @test_v32f16_olt_q(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {81; X86-LABEL: test_v32f16_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_oqph 8(%ebp), %zmm2, %k188; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}89; X86-NEXT:    movl %ebp, %esp90; X86-NEXT:    popl %ebp91; X86-NEXT:    retl92;93; X64-LABEL: test_v32f16_olt_q:94; X64:       # %bb.0:95; X64-NEXT:    vcmplt_oqph %zmm3, %zmm2, %k196; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}97; X64-NEXT:    retq98  %cond = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(99                                               <32 x half> %f1, <32 x half> %f2, metadata !"olt",100                                               metadata !"fpexcept.strict") #0101  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b102  ret <32 x i16> %res103}104 105define <32 x i16> @test_v32f16_ole_q(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {106; X86-LABEL: test_v32f16_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_oqph 8(%ebp), %zmm2, %k1113; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}114; X86-NEXT:    movl %ebp, %esp115; X86-NEXT:    popl %ebp116; X86-NEXT:    retl117;118; X64-LABEL: test_v32f16_ole_q:119; X64:       # %bb.0:120; X64-NEXT:    vcmple_oqph %zmm3, %zmm2, %k1121; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}122; X64-NEXT:    retq123  %cond = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(124                                               <32 x half> %f1, <32 x half> %f2, metadata !"ole",125                                               metadata !"fpexcept.strict") #0126  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b127  ret <32 x i16> %res128}129 130define <32 x i16> @test_v32f16_one_q(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {131; X86-LABEL: test_v32f16_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_oqph 8(%ebp), %zmm2, %k1138; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}139; X86-NEXT:    movl %ebp, %esp140; X86-NEXT:    popl %ebp141; X86-NEXT:    retl142;143; X64-LABEL: test_v32f16_one_q:144; X64:       # %bb.0:145; X64-NEXT:    vcmpneq_oqph %zmm3, %zmm2, %k1146; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}147; X64-NEXT:    retq148  %cond = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(149                                               <32 x half> %f1, <32 x half> %f2, metadata !"one",150                                               metadata !"fpexcept.strict") #0151  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b152  ret <32 x i16> %res153}154 155define <32 x i16> @test_v32f16_ord_q(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {156; X86-LABEL: test_v32f16_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:    vcmpordph 8(%ebp), %zmm2, %k1163; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}164; X86-NEXT:    movl %ebp, %esp165; X86-NEXT:    popl %ebp166; X86-NEXT:    retl167;168; X64-LABEL: test_v32f16_ord_q:169; X64:       # %bb.0:170; X64-NEXT:    vcmpordph %zmm3, %zmm2, %k1171; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}172; X64-NEXT:    retq173  %cond = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(174                                               <32 x half> %f1, <32 x half> %f2, metadata !"ord",175                                               metadata !"fpexcept.strict") #0176  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b177  ret <32 x i16> %res178}179 180define <32 x i16> @test_v32f16_ueq_q(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {181; X86-LABEL: test_v32f16_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_uqph 8(%ebp), %zmm2, %k1188; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}189; X86-NEXT:    movl %ebp, %esp190; X86-NEXT:    popl %ebp191; X86-NEXT:    retl192;193; X64-LABEL: test_v32f16_ueq_q:194; X64:       # %bb.0:195; X64-NEXT:    vcmpeq_uqph %zmm3, %zmm2, %k1196; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}197; X64-NEXT:    retq198  %cond = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(199                                               <32 x half> %f1, <32 x half> %f2, metadata !"ueq",200                                               metadata !"fpexcept.strict") #0201  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b202  ret <32 x i16> %res203}204 205define <32 x i16> @test_v32f16_ugt_q(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {206; X86-LABEL: test_v32f16_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_uqph 8(%ebp), %zmm2, %k1213; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}214; X86-NEXT:    movl %ebp, %esp215; X86-NEXT:    popl %ebp216; X86-NEXT:    retl217;218; X64-LABEL: test_v32f16_ugt_q:219; X64:       # %bb.0:220; X64-NEXT:    vcmpnle_uqph %zmm3, %zmm2, %k1221; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}222; X64-NEXT:    retq223  %cond = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(224                                               <32 x half> %f1, <32 x half> %f2, metadata !"ugt",225                                               metadata !"fpexcept.strict") #0226  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b227  ret <32 x i16> %res228}229 230define <32 x i16> @test_v32f16_uge_q(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {231; X86-LABEL: test_v32f16_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_uqph 8(%ebp), %zmm2, %k1238; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}239; X86-NEXT:    movl %ebp, %esp240; X86-NEXT:    popl %ebp241; X86-NEXT:    retl242;243; X64-LABEL: test_v32f16_uge_q:244; X64:       # %bb.0:245; X64-NEXT:    vcmpnlt_uqph %zmm3, %zmm2, %k1246; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}247; X64-NEXT:    retq248  %cond = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(249                                               <32 x half> %f1, <32 x half> %f2, metadata !"uge",250                                               metadata !"fpexcept.strict") #0251  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b252  ret <32 x i16> %res253}254 255define <32 x i16> @test_v32f16_ult_q(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {256; X86-LABEL: test_v32f16_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_uqph 8(%ebp), %zmm2, %k1263; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}264; X86-NEXT:    movl %ebp, %esp265; X86-NEXT:    popl %ebp266; X86-NEXT:    retl267;268; X64-LABEL: test_v32f16_ult_q:269; X64:       # %bb.0:270; X64-NEXT:    vcmpnle_uqph %zmm2, %zmm3, %k1271; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}272; X64-NEXT:    retq273  %cond = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(274                                               <32 x half> %f1, <32 x half> %f2, metadata !"ult",275                                               metadata !"fpexcept.strict") #0276  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b277  ret <32 x i16> %res278}279 280define <32 x i16> @test_v32f16_ule_q(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {281; X86-LABEL: test_v32f16_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_uqph 8(%ebp), %zmm2, %k1288; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}289; X86-NEXT:    movl %ebp, %esp290; X86-NEXT:    popl %ebp291; X86-NEXT:    retl292;293; X64-LABEL: test_v32f16_ule_q:294; X64:       # %bb.0:295; X64-NEXT:    vcmpnlt_uqph %zmm2, %zmm3, %k1296; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}297; X64-NEXT:    retq298  %cond = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(299                                               <32 x half> %f1, <32 x half> %f2, metadata !"ule",300                                               metadata !"fpexcept.strict") #0301  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b302  ret <32 x i16> %res303}304 305define <32 x i16> @test_v32f16_une_q(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {306; X86-LABEL: test_v32f16_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:    vcmpneqph 8(%ebp), %zmm2, %k1313; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}314; X86-NEXT:    movl %ebp, %esp315; X86-NEXT:    popl %ebp316; X86-NEXT:    retl317;318; X64-LABEL: test_v32f16_une_q:319; X64:       # %bb.0:320; X64-NEXT:    vcmpneqph %zmm3, %zmm2, %k1321; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}322; X64-NEXT:    retq323  %cond = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(324                                               <32 x half> %f1, <32 x half> %f2, metadata !"une",325                                               metadata !"fpexcept.strict") #0326  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b327  ret <32 x i16> %res328}329 330define <32 x i16> @test_v32f16_uno_q(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {331; X86-LABEL: test_v32f16_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:    vcmpunordph 8(%ebp), %zmm2, %k1338; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}339; X86-NEXT:    movl %ebp, %esp340; X86-NEXT:    popl %ebp341; X86-NEXT:    retl342;343; X64-LABEL: test_v32f16_uno_q:344; X64:       # %bb.0:345; X64-NEXT:    vcmpunordph %zmm3, %zmm2, %k1346; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}347; X64-NEXT:    retq348  %cond = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(349                                               <32 x half> %f1, <32 x half> %f2, metadata !"uno",350                                               metadata !"fpexcept.strict") #0351  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b352  ret <32 x i16> %res353}354 355define <32 x i16> @test_v32f16_oeq_s(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {356; X86-LABEL: test_v32f16_oeq_s: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:    vcmpeq_osph 8(%ebp), %zmm2, %k1363; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}364; X86-NEXT:    movl %ebp, %esp365; X86-NEXT:    popl %ebp366; X86-NEXT:    retl367;368; X64-LABEL: test_v32f16_oeq_s:369; X64:       # %bb.0:370; X64-NEXT:    vcmpeq_osph %zmm3, %zmm2, %k1371; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}372; X64-NEXT:    retq373  %cond = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(374                                               <32 x half> %f1, <32 x half> %f2, metadata !"oeq",375                                               metadata !"fpexcept.strict") #0376  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b377  ret <32 x i16> %res378}379 380define <32 x i16> @test_v32f16_ogt_s(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {381; X86-LABEL: test_v32f16_ogt_s: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:    vcmpgtph 8(%ebp), %zmm2, %k1388; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}389; X86-NEXT:    movl %ebp, %esp390; X86-NEXT:    popl %ebp391; X86-NEXT:    retl392;393; X64-LABEL: test_v32f16_ogt_s:394; X64:       # %bb.0:395; X64-NEXT:    vcmpltph %zmm2, %zmm3, %k1396; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}397; X64-NEXT:    retq398  %cond = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(399                                               <32 x half> %f1, <32 x half> %f2, metadata !"ogt",400                                               metadata !"fpexcept.strict") #0401  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b402  ret <32 x i16> %res403}404 405define <32 x i16> @test_v32f16_oge_s(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {406; X86-LABEL: test_v32f16_oge_s: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:    vcmpgeph 8(%ebp), %zmm2, %k1413; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}414; X86-NEXT:    movl %ebp, %esp415; X86-NEXT:    popl %ebp416; X86-NEXT:    retl417;418; X64-LABEL: test_v32f16_oge_s:419; X64:       # %bb.0:420; X64-NEXT:    vcmpleph %zmm2, %zmm3, %k1421; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}422; X64-NEXT:    retq423  %cond = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(424                                               <32 x half> %f1, <32 x half> %f2, metadata !"oge",425                                               metadata !"fpexcept.strict") #0426  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b427  ret <32 x i16> %res428}429 430define <32 x i16> @test_v32f16_olt_s(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {431; X86-LABEL: test_v32f16_olt_s: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:    vcmpltph 8(%ebp), %zmm2, %k1438; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}439; X86-NEXT:    movl %ebp, %esp440; X86-NEXT:    popl %ebp441; X86-NEXT:    retl442;443; X64-LABEL: test_v32f16_olt_s:444; X64:       # %bb.0:445; X64-NEXT:    vcmpltph %zmm3, %zmm2, %k1446; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}447; X64-NEXT:    retq448  %cond = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(449                                               <32 x half> %f1, <32 x half> %f2, metadata !"olt",450                                               metadata !"fpexcept.strict") #0451  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b452  ret <32 x i16> %res453}454 455define <32 x i16> @test_v32f16_ole_s(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {456; X86-LABEL: test_v32f16_ole_s: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:    vcmpleph 8(%ebp), %zmm2, %k1463; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}464; X86-NEXT:    movl %ebp, %esp465; X86-NEXT:    popl %ebp466; X86-NEXT:    retl467;468; X64-LABEL: test_v32f16_ole_s:469; X64:       # %bb.0:470; X64-NEXT:    vcmpleph %zmm3, %zmm2, %k1471; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}472; X64-NEXT:    retq473  %cond = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(474                                               <32 x half> %f1, <32 x half> %f2, metadata !"ole",475                                               metadata !"fpexcept.strict") #0476  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b477  ret <32 x i16> %res478}479 480define <32 x i16> @test_v32f16_one_s(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {481; X86-LABEL: test_v32f16_one_s: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_osph 8(%ebp), %zmm2, %k1488; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}489; X86-NEXT:    movl %ebp, %esp490; X86-NEXT:    popl %ebp491; X86-NEXT:    retl492;493; X64-LABEL: test_v32f16_one_s:494; X64:       # %bb.0:495; X64-NEXT:    vcmpneq_osph %zmm3, %zmm2, %k1496; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}497; X64-NEXT:    retq498  %cond = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(499                                               <32 x half> %f1, <32 x half> %f2, metadata !"one",500                                               metadata !"fpexcept.strict") #0501  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b502  ret <32 x i16> %res503}504 505define <32 x i16> @test_v32f16_ord_s(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {506; X86-LABEL: test_v32f16_ord_s: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:    vcmpord_sph 8(%ebp), %zmm2, %k1513; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}514; X86-NEXT:    movl %ebp, %esp515; X86-NEXT:    popl %ebp516; X86-NEXT:    retl517;518; X64-LABEL: test_v32f16_ord_s:519; X64:       # %bb.0:520; X64-NEXT:    vcmpord_sph %zmm3, %zmm2, %k1521; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}522; X64-NEXT:    retq523  %cond = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(524                                               <32 x half> %f1, <32 x half> %f2, metadata !"ord",525                                               metadata !"fpexcept.strict") #0526  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b527  ret <32 x i16> %res528}529 530define <32 x i16> @test_v32f16_ueq_s(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {531; X86-LABEL: test_v32f16_ueq_s: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_usph 8(%ebp), %zmm2, %k1538; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}539; X86-NEXT:    movl %ebp, %esp540; X86-NEXT:    popl %ebp541; X86-NEXT:    retl542;543; X64-LABEL: test_v32f16_ueq_s:544; X64:       # %bb.0:545; X64-NEXT:    vcmpeq_usph %zmm3, %zmm2, %k1546; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}547; X64-NEXT:    retq548  %cond = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(549                                               <32 x half> %f1, <32 x half> %f2, metadata !"ueq",550                                               metadata !"fpexcept.strict") #0551  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b552  ret <32 x i16> %res553}554 555define <32 x i16> @test_v32f16_ugt_s(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {556; X86-LABEL: test_v32f16_ugt_s: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:    vcmpnleph 8(%ebp), %zmm2, %k1563; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}564; X86-NEXT:    movl %ebp, %esp565; X86-NEXT:    popl %ebp566; X86-NEXT:    retl567;568; X64-LABEL: test_v32f16_ugt_s:569; X64:       # %bb.0:570; X64-NEXT:    vcmpnleph %zmm3, %zmm2, %k1571; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}572; X64-NEXT:    retq573  %cond = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(574                                               <32 x half> %f1, <32 x half> %f2, metadata !"ugt",575                                               metadata !"fpexcept.strict") #0576  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b577  ret <32 x i16> %res578}579 580define <32 x i16> @test_v32f16_uge_s(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {581; X86-LABEL: test_v32f16_uge_s: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:    vcmpnltph 8(%ebp), %zmm2, %k1588; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}589; X86-NEXT:    movl %ebp, %esp590; X86-NEXT:    popl %ebp591; X86-NEXT:    retl592;593; X64-LABEL: test_v32f16_uge_s:594; X64:       # %bb.0:595; X64-NEXT:    vcmpnltph %zmm3, %zmm2, %k1596; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}597; X64-NEXT:    retq598  %cond = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(599                                               <32 x half> %f1, <32 x half> %f2, metadata !"uge",600                                               metadata !"fpexcept.strict") #0601  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b602  ret <32 x i16> %res603}604 605define <32 x i16> @test_v32f16_ult_s(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {606; X86-LABEL: test_v32f16_ult_s: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:    vcmpngeph 8(%ebp), %zmm2, %k1613; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}614; X86-NEXT:    movl %ebp, %esp615; X86-NEXT:    popl %ebp616; X86-NEXT:    retl617;618; X64-LABEL: test_v32f16_ult_s:619; X64:       # %bb.0:620; X64-NEXT:    vcmpnleph %zmm2, %zmm3, %k1621; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}622; X64-NEXT:    retq623  %cond = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(624                                               <32 x half> %f1, <32 x half> %f2, metadata !"ult",625                                               metadata !"fpexcept.strict") #0626  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b627  ret <32 x i16> %res628}629 630define <32 x i16> @test_v32f16_ule_s(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {631; X86-LABEL: test_v32f16_ule_s: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:    vcmpngtph 8(%ebp), %zmm2, %k1638; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}639; X86-NEXT:    movl %ebp, %esp640; X86-NEXT:    popl %ebp641; X86-NEXT:    retl642;643; X64-LABEL: test_v32f16_ule_s:644; X64:       # %bb.0:645; X64-NEXT:    vcmpnltph %zmm2, %zmm3, %k1646; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}647; X64-NEXT:    retq648  %cond = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(649                                               <32 x half> %f1, <32 x half> %f2, metadata !"ule",650                                               metadata !"fpexcept.strict") #0651  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b652  ret <32 x i16> %res653}654 655define <32 x i16> @test_v32f16_une_s(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {656; X86-LABEL: test_v32f16_une_s: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:    vcmpneq_usph 8(%ebp), %zmm2, %k1663; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}664; X86-NEXT:    movl %ebp, %esp665; X86-NEXT:    popl %ebp666; X86-NEXT:    retl667;668; X64-LABEL: test_v32f16_une_s:669; X64:       # %bb.0:670; X64-NEXT:    vcmpneq_usph %zmm3, %zmm2, %k1671; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}672; X64-NEXT:    retq673  %cond = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(674                                               <32 x half> %f1, <32 x half> %f2, metadata !"une",675                                               metadata !"fpexcept.strict") #0676  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b677  ret <32 x i16> %res678}679 680define <32 x i16> @test_v32f16_uno_s(<32 x i16> %a, <32 x i16> %b, <32 x half> %f1, <32 x half> %f2) #0 {681; X86-LABEL: test_v32f16_uno_s: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:    vcmpunord_sph 8(%ebp), %zmm2, %k1688; X86-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}689; X86-NEXT:    movl %ebp, %esp690; X86-NEXT:    popl %ebp691; X86-NEXT:    retl692;693; X64-LABEL: test_v32f16_uno_s:694; X64:       # %bb.0:695; X64-NEXT:    vcmpunord_sph %zmm3, %zmm2, %k1696; X64-NEXT:    vpblendmw %zmm0, %zmm1, %zmm0 {%k1}697; X64-NEXT:    retq698  %cond = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(699                                               <32 x half> %f1, <32 x half> %f2, metadata !"uno",700                                               metadata !"fpexcept.strict") #0701  %res = select <32 x i1> %cond, <32 x i16> %a, <32 x i16> %b702  ret <32 x i16> %res703}704 705attributes #0 = { strictfp nounwind }706 707declare <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half>, <32 x half>, metadata, metadata)708declare <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half>, <32 x half>, metadata, metadata)709