brintos

brintos / llvm-project-archived public Read only

0
0
Text · 29.0 KiB · 018b6c2 Raw
743 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx        | FileCheck %s --check-prefixes=X863; RUN: llc < %s -mtriple=x86_64-unknown-unknown                  | FileCheck %s --check-prefixes=SSE4; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx      | FileCheck %s --check-prefixes=AVX,AVX15; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2     | FileCheck %s --check-prefixes=AVX,AVX26; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vl | FileCheck %s --check-prefixes=AVX,AVX5127 8define void @vp_fadd_v4f32(<4 x float> %a0, <4 x float> %a1, ptr %out, i32 %vp) nounwind {9; X86-LABEL: vp_fadd_v4f32:10; X86:       # %bb.0:11; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax12; X86-NEXT:    vaddps %xmm1, %xmm0, %xmm013; X86-NEXT:    vmovaps %xmm0, (%eax)14; X86-NEXT:    retl15;16; SSE-LABEL: vp_fadd_v4f32:17; SSE:       # %bb.0:18; SSE-NEXT:    addps %xmm1, %xmm019; SSE-NEXT:    movaps %xmm0, (%rdi)20; SSE-NEXT:    retq21;22; AVX-LABEL: vp_fadd_v4f32:23; AVX:       # %bb.0:24; AVX-NEXT:    vaddps %xmm1, %xmm0, %xmm025; AVX-NEXT:    vmovaps %xmm0, (%rdi)26; AVX-NEXT:    retq27  %res = call <4 x float> @llvm.vp.fadd.v4f32(<4 x float> %a0, <4 x float> %a1, <4 x i1> <i1 -1, i1 -1, i1 -1, i1 -1>, i32 %vp)28  store <4 x float> %res, ptr %out29  ret void30}31declare <4 x float> @llvm.vp.fadd.v4f32(<4 x float>, <4 x float>, <4 x i1>, i32)32 33define void @vp_fsub_v4f32(<4 x float> %a0, <4 x float> %a1, ptr %out, i32 %vp) nounwind {34; X86-LABEL: vp_fsub_v4f32:35; X86:       # %bb.0:36; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax37; X86-NEXT:    vsubps %xmm1, %xmm0, %xmm038; X86-NEXT:    vmovaps %xmm0, (%eax)39; X86-NEXT:    retl40;41; SSE-LABEL: vp_fsub_v4f32:42; SSE:       # %bb.0:43; SSE-NEXT:    subps %xmm1, %xmm044; SSE-NEXT:    movaps %xmm0, (%rdi)45; SSE-NEXT:    retq46;47; AVX-LABEL: vp_fsub_v4f32:48; AVX:       # %bb.0:49; AVX-NEXT:    vsubps %xmm1, %xmm0, %xmm050; AVX-NEXT:    vmovaps %xmm0, (%rdi)51; AVX-NEXT:    retq52  %res = call <4 x float> @llvm.vp.fsub.v4f32(<4 x float> %a0, <4 x float> %a1, <4 x i1> <i1 -1, i1 -1, i1 -1, i1 -1>, i32 %vp)53  store <4 x float> %res, ptr %out54  ret void55}56declare <4 x float> @llvm.vp.fsub.v4f32(<4 x float>, <4 x float>, <4 x i1>, i32)57 58define void @vp_fmul_v4f32(<4 x float> %a0, <4 x float> %a1, ptr %out, i32 %vp) nounwind {59; X86-LABEL: vp_fmul_v4f32:60; X86:       # %bb.0:61; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax62; X86-NEXT:    vmulps %xmm1, %xmm0, %xmm063; X86-NEXT:    vmovaps %xmm0, (%eax)64; X86-NEXT:    retl65;66; SSE-LABEL: vp_fmul_v4f32:67; SSE:       # %bb.0:68; SSE-NEXT:    mulps %xmm1, %xmm069; SSE-NEXT:    movaps %xmm0, (%rdi)70; SSE-NEXT:    retq71;72; AVX-LABEL: vp_fmul_v4f32:73; AVX:       # %bb.0:74; AVX-NEXT:    vmulps %xmm1, %xmm0, %xmm075; AVX-NEXT:    vmovaps %xmm0, (%rdi)76; AVX-NEXT:    retq77  %res = call <4 x float> @llvm.vp.fmul.v4f32(<4 x float> %a0, <4 x float> %a1, <4 x i1> <i1 -1, i1 -1, i1 -1, i1 -1>, i32 %vp)78  store <4 x float> %res, ptr %out79  ret void80}81declare <4 x float> @llvm.vp.fmul.v4f32(<4 x float>, <4 x float>, <4 x i1>, i32)82 83define void @vp_fdiv_v4f32(<4 x float> %a0, <4 x float> %a1, ptr %out, i32 %vp) nounwind {84; X86-LABEL: vp_fdiv_v4f32:85; X86:       # %bb.0:86; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax87; X86-NEXT:    vdivps %xmm1, %xmm0, %xmm088; X86-NEXT:    vmovaps %xmm0, (%eax)89; X86-NEXT:    retl90;91; SSE-LABEL: vp_fdiv_v4f32:92; SSE:       # %bb.0:93; SSE-NEXT:    divps %xmm1, %xmm094; SSE-NEXT:    movaps %xmm0, (%rdi)95; SSE-NEXT:    retq96;97; AVX-LABEL: vp_fdiv_v4f32:98; AVX:       # %bb.0:99; AVX-NEXT:    vdivps %xmm1, %xmm0, %xmm0100; AVX-NEXT:    vmovaps %xmm0, (%rdi)101; AVX-NEXT:    retq102  %res = call <4 x float> @llvm.vp.fdiv.v4f32(<4 x float> %a0, <4 x float> %a1, <4 x i1> <i1 -1, i1 -1, i1 -1, i1 -1>, i32 %vp)103  store <4 x float> %res, ptr %out104  ret void105}106declare <4 x float> @llvm.vp.fdiv.v4f32(<4 x float>, <4 x float>, <4 x i1>, i32)107 108define void @vp_frem_v4f32(<4 x float> %a0, <4 x float> %a1, ptr %out, i32 %vp) nounwind {109; X86-LABEL: vp_frem_v4f32:110; X86:       # %bb.0:111; X86-NEXT:    pushl %esi112; X86-NEXT:    subl $80, %esp113; X86-NEXT:    vmovups %xmm1, {{[-0-9]+}}(%e{{[sb]}}p) # 16-byte Spill114; X86-NEXT:    vmovups %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) # 16-byte Spill115; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi116; X86-NEXT:    vextractps $2, %xmm1, {{[0-9]+}}(%esp)117; X86-NEXT:    vextractps $2, %xmm0, (%esp)118; X86-NEXT:    calll fmodf119; X86-NEXT:    fstpt {{[-0-9]+}}(%e{{[sb]}}p) # 10-byte Folded Spill120; X86-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 # 16-byte Reload121; X86-NEXT:    vextractps $1, %xmm0, {{[0-9]+}}(%esp)122; X86-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 # 16-byte Reload123; X86-NEXT:    vextractps $1, %xmm0, (%esp)124; X86-NEXT:    calll fmodf125; X86-NEXT:    fstpt {{[-0-9]+}}(%e{{[sb]}}p) # 10-byte Folded Spill126; X86-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 # 16-byte Reload127; X86-NEXT:    vmovss %xmm0, {{[0-9]+}}(%esp)128; X86-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 # 16-byte Reload129; X86-NEXT:    vmovss %xmm0, (%esp)130; X86-NEXT:    calll fmodf131; X86-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 # 16-byte Reload132; X86-NEXT:    vextractps $3, %xmm0, {{[0-9]+}}(%esp)133; X86-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 # 16-byte Reload134; X86-NEXT:    vextractps $3, %xmm0, (%esp)135; X86-NEXT:    fstps {{[0-9]+}}(%esp)136; X86-NEXT:    fldt {{[-0-9]+}}(%e{{[sb]}}p) # 10-byte Folded Reload137; X86-NEXT:    fstps {{[0-9]+}}(%esp)138; X86-NEXT:    fldt {{[-0-9]+}}(%e{{[sb]}}p) # 10-byte Folded Reload139; X86-NEXT:    fstps {{[0-9]+}}(%esp)140; X86-NEXT:    calll fmodf141; X86-NEXT:    fstps {{[0-9]+}}(%esp)142; X86-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero143; X86-NEXT:    vinsertps {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[2,3]144; X86-NEXT:    vinsertps {{.*#+}} xmm0 = xmm0[0,1],mem[0],xmm0[3]145; X86-NEXT:    vinsertps {{.*#+}} xmm0 = xmm0[0,1,2],mem[0]146; X86-NEXT:    vmovaps %xmm0, (%esi)147; X86-NEXT:    addl $80, %esp148; X86-NEXT:    popl %esi149; X86-NEXT:    retl150;151; SSE-LABEL: vp_frem_v4f32:152; SSE:       # %bb.0:153; SSE-NEXT:    pushq %rbx154; SSE-NEXT:    subq $64, %rsp155; SSE-NEXT:    movq %rdi, %rbx156; SSE-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill157; SSE-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill158; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]159; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[3,3,3,3]160; SSE-NEXT:    callq fmodf@PLT161; SSE-NEXT:    movaps %xmm0, (%rsp) # 16-byte Spill162; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload163; SSE-NEXT:    movhlps {{.*#+}} xmm0 = xmm0[1,1]164; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload165; SSE-NEXT:    movhlps {{.*#+}} xmm1 = xmm1[1,1]166; SSE-NEXT:    callq fmodf@PLT167; SSE-NEXT:    unpcklps (%rsp), %xmm0 # 16-byte Folded Reload168; SSE-NEXT:    # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]169; SSE-NEXT:    movaps %xmm0, (%rsp) # 16-byte Spill170; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload171; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload172; SSE-NEXT:    callq fmodf@PLT173; SSE-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill174; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload175; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1,1,1]176; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload177; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[1,1,1,1]178; SSE-NEXT:    callq fmodf@PLT179; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload180; SSE-NEXT:    unpcklps {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]181; SSE-NEXT:    unpcklpd (%rsp), %xmm1 # 16-byte Folded Reload182; SSE-NEXT:    # xmm1 = xmm1[0],mem[0]183; SSE-NEXT:    movaps %xmm1, (%rbx)184; SSE-NEXT:    addq $64, %rsp185; SSE-NEXT:    popq %rbx186; SSE-NEXT:    retq187;188; AVX-LABEL: vp_frem_v4f32:189; AVX:       # %bb.0:190; AVX-NEXT:    pushq %rbx191; AVX-NEXT:    subq $48, %rsp192; AVX-NEXT:    movq %rdi, %rbx193; AVX-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill194; AVX-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill195; AVX-NEXT:    callq fmodf@PLT196; AVX-NEXT:    vmovaps %xmm0, (%rsp) # 16-byte Spill197; AVX-NEXT:    vmovshdup {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload198; AVX-NEXT:    # xmm0 = mem[1,1,3,3]199; AVX-NEXT:    vmovshdup {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload200; AVX-NEXT:    # xmm1 = mem[1,1,3,3]201; AVX-NEXT:    callq fmodf@PLT202; AVX-NEXT:    vmovaps (%rsp), %xmm1 # 16-byte Reload203; AVX-NEXT:    vinsertps {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[2,3]204; AVX-NEXT:    vmovaps %xmm0, (%rsp) # 16-byte Spill205; AVX-NEXT:    vpermilpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload206; AVX-NEXT:    # xmm0 = mem[1,0]207; AVX-NEXT:    vpermilpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload208; AVX-NEXT:    # xmm1 = mem[1,0]209; AVX-NEXT:    callq fmodf@PLT210; AVX-NEXT:    vmovaps (%rsp), %xmm1 # 16-byte Reload211; AVX-NEXT:    vinsertps {{.*#+}} xmm0 = xmm1[0,1],xmm0[0],xmm1[3]212; AVX-NEXT:    vmovaps %xmm0, (%rsp) # 16-byte Spill213; AVX-NEXT:    vpermilps $255, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload214; AVX-NEXT:    # xmm0 = mem[3,3,3,3]215; AVX-NEXT:    vpermilps $255, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload216; AVX-NEXT:    # xmm1 = mem[3,3,3,3]217; AVX-NEXT:    callq fmodf@PLT218; AVX-NEXT:    vmovaps (%rsp), %xmm1 # 16-byte Reload219; AVX-NEXT:    vinsertps {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[0]220; AVX-NEXT:    vmovaps %xmm0, (%rbx)221; AVX-NEXT:    addq $48, %rsp222; AVX-NEXT:    popq %rbx223; AVX-NEXT:    retq224  %res = call <4 x float> @llvm.vp.frem.v4f32(<4 x float> %a0, <4 x float> %a1, <4 x i1> <i1 -1, i1 -1, i1 -1, i1 -1>, i32 %vp)225  store <4 x float> %res, ptr %out226  ret void227}228declare <4 x float> @llvm.vp.frem.v4f32(<4 x float>, <4 x float>, <4 x i1>, i32)229 230define void @vp_fabs_v4f32(<4 x float> %a0, <4 x float> %a1, ptr %out, i32 %vp) nounwind {231; X86-LABEL: vp_fabs_v4f32:232; X86:       # %bb.0:233; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax234; X86-NEXT:    vandps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0, %xmm0235; X86-NEXT:    vmovaps %xmm0, (%eax)236; X86-NEXT:    retl237;238; SSE-LABEL: vp_fabs_v4f32:239; SSE:       # %bb.0:240; SSE-NEXT:    andps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0241; SSE-NEXT:    movaps %xmm0, (%rdi)242; SSE-NEXT:    retq243;244; AVX1-LABEL: vp_fabs_v4f32:245; AVX1:       # %bb.0:246; AVX1-NEXT:    vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0247; AVX1-NEXT:    vmovaps %xmm0, (%rdi)248; AVX1-NEXT:    retq249;250; AVX2-LABEL: vp_fabs_v4f32:251; AVX2:       # %bb.0:252; AVX2-NEXT:    vbroadcastss {{.*#+}} xmm1 = [NaN,NaN,NaN,NaN]253; AVX2-NEXT:    vandps %xmm1, %xmm0, %xmm0254; AVX2-NEXT:    vmovaps %xmm0, (%rdi)255; AVX2-NEXT:    retq256;257; AVX512-LABEL: vp_fabs_v4f32:258; AVX512:       # %bb.0:259; AVX512-NEXT:    vpandd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0260; AVX512-NEXT:    vmovdqa %xmm0, (%rdi)261; AVX512-NEXT:    retq262  %res = call <4 x float> @llvm.vp.fabs.v4f32(<4 x float> %a0, <4 x i1> <i1 -1, i1 -1, i1 -1, i1 -1>, i32 %vp)263  store <4 x float> %res, ptr %out264  ret void265}266declare <4 x float> @llvm.vp.fabs.v4f32(<4 x float>, <4 x i1>, i32)267 268define void @vp_sqrt_v4f32(<4 x float> %a0, <4 x float> %a1, ptr %out, i32 %vp) nounwind {269; X86-LABEL: vp_sqrt_v4f32:270; X86:       # %bb.0:271; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax272; X86-NEXT:    vsqrtps %xmm0, %xmm0273; X86-NEXT:    vmovaps %xmm0, (%eax)274; X86-NEXT:    retl275;276; SSE-LABEL: vp_sqrt_v4f32:277; SSE:       # %bb.0:278; SSE-NEXT:    sqrtps %xmm0, %xmm0279; SSE-NEXT:    movaps %xmm0, (%rdi)280; SSE-NEXT:    retq281;282; AVX-LABEL: vp_sqrt_v4f32:283; AVX:       # %bb.0:284; AVX-NEXT:    vsqrtps %xmm0, %xmm0285; AVX-NEXT:    vmovaps %xmm0, (%rdi)286; AVX-NEXT:    retq287  %res = call <4 x float> @llvm.vp.sqrt.v4f32(<4 x float> %a0, <4 x i1> <i1 -1, i1 -1, i1 -1, i1 -1>, i32 %vp)288  store <4 x float> %res, ptr %out289  ret void290}291declare <4 x float> @llvm.vp.sqrt.v4f32(<4 x float>, <4 x i1>, i32)292 293define void @vp_fneg_v4f32(<4 x float> %a0, <4 x float> %a1, ptr %out, i32 %vp) nounwind {294; X86-LABEL: vp_fneg_v4f32:295; X86:       # %bb.0:296; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax297; X86-NEXT:    vxorps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0, %xmm0298; X86-NEXT:    vmovaps %xmm0, (%eax)299; X86-NEXT:    retl300;301; SSE-LABEL: vp_fneg_v4f32:302; SSE:       # %bb.0:303; SSE-NEXT:    xorps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0304; SSE-NEXT:    movaps %xmm0, (%rdi)305; SSE-NEXT:    retq306;307; AVX1-LABEL: vp_fneg_v4f32:308; AVX1:       # %bb.0:309; AVX1-NEXT:    vxorps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0310; AVX1-NEXT:    vmovaps %xmm0, (%rdi)311; AVX1-NEXT:    retq312;313; AVX2-LABEL: vp_fneg_v4f32:314; AVX2:       # %bb.0:315; AVX2-NEXT:    vbroadcastss {{.*#+}} xmm1 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0]316; AVX2-NEXT:    vxorps %xmm1, %xmm0, %xmm0317; AVX2-NEXT:    vmovaps %xmm0, (%rdi)318; AVX2-NEXT:    retq319;320; AVX512-LABEL: vp_fneg_v4f32:321; AVX512:       # %bb.0:322; AVX512-NEXT:    vpxord {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0323; AVX512-NEXT:    vmovdqa %xmm0, (%rdi)324; AVX512-NEXT:    retq325  %res = call <4 x float> @llvm.vp.fneg.v4f32(<4 x float> %a0, <4 x i1> <i1 -1, i1 -1, i1 -1, i1 -1>, i32 %vp)326  store <4 x float> %res, ptr %out327  ret void328}329declare <4 x float> @llvm.vp.fneg.v4f32(<4 x float>, <4 x i1>, i32)330 331define void @vp_fma_v4f32(<4 x float> %a0, <4 x float> %a1, ptr %out, i4 %a5) nounwind {332; X86-LABEL: vp_fma_v4f32:333; X86:       # %bb.0:334; X86-NEXT:    pushl %esi335; X86-NEXT:    subl $84, %esp336; X86-NEXT:    vmovupd %xmm1, {{[-0-9]+}}(%e{{[sb]}}p) # 16-byte Spill337; X86-NEXT:    vmovups %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) # 16-byte Spill338; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi339; X86-NEXT:    vextractps $2, %xmm0, (%esp)340; X86-NEXT:    vshufpd {{.*#+}} xmm0 = xmm1[1,0]341; X86-NEXT:    vmovss %xmm0, {{[0-9]+}}(%esp)342; X86-NEXT:    vmovss %xmm0, {{[0-9]+}}(%esp)343; X86-NEXT:    calll fmaf344; X86-NEXT:    fstpt {{[-0-9]+}}(%e{{[sb]}}p) # 10-byte Folded Spill345; X86-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 # 16-byte Reload346; X86-NEXT:    vextractps $1, %xmm0, (%esp)347; X86-NEXT:    vmovshdup {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 # 16-byte Folded Reload348; X86-NEXT:    # xmm0 = mem[1,1,3,3]349; X86-NEXT:    vmovss %xmm0, {{[0-9]+}}(%esp)350; X86-NEXT:    vmovss %xmm0, {{[0-9]+}}(%esp)351; X86-NEXT:    calll fmaf352; X86-NEXT:    fstpt {{[-0-9]+}}(%e{{[sb]}}p) # 10-byte Folded Spill353; X86-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 # 16-byte Reload354; X86-NEXT:    vmovss %xmm0, {{[0-9]+}}(%esp)355; X86-NEXT:    vmovss %xmm0, {{[0-9]+}}(%esp)356; X86-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 # 16-byte Reload357; X86-NEXT:    vmovss %xmm0, (%esp)358; X86-NEXT:    calll fmaf359; X86-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 # 16-byte Reload360; X86-NEXT:    vextractps $3, %xmm0, (%esp)361; X86-NEXT:    vpermilps $255, {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 # 16-byte Folded Reload362; X86-NEXT:    # xmm0 = mem[3,3,3,3]363; X86-NEXT:    vmovss %xmm0, {{[0-9]+}}(%esp)364; X86-NEXT:    vmovss %xmm0, {{[0-9]+}}(%esp)365; X86-NEXT:    fstps {{[0-9]+}}(%esp)366; X86-NEXT:    fldt {{[-0-9]+}}(%e{{[sb]}}p) # 10-byte Folded Reload367; X86-NEXT:    fstps {{[0-9]+}}(%esp)368; X86-NEXT:    fldt {{[-0-9]+}}(%e{{[sb]}}p) # 10-byte Folded Reload369; X86-NEXT:    fstps {{[0-9]+}}(%esp)370; X86-NEXT:    calll fmaf371; X86-NEXT:    fstps {{[0-9]+}}(%esp)372; X86-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero373; X86-NEXT:    vinsertps {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[2,3]374; X86-NEXT:    vinsertps {{.*#+}} xmm0 = xmm0[0,1],mem[0],xmm0[3]375; X86-NEXT:    vinsertps {{.*#+}} xmm0 = xmm0[0,1,2],mem[0]376; X86-NEXT:    vmovaps %xmm0, (%esi)377; X86-NEXT:    addl $84, %esp378; X86-NEXT:    popl %esi379; X86-NEXT:    retl380;381; SSE-LABEL: vp_fma_v4f32:382; SSE:       # %bb.0:383; SSE-NEXT:    pushq %rbx384; SSE-NEXT:    subq $64, %rsp385; SSE-NEXT:    movq %rdi, %rbx386; SSE-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill387; SSE-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill388; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]389; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[3,3,3,3]390; SSE-NEXT:    movaps %xmm1, %xmm2391; SSE-NEXT:    callq fmaf@PLT392; SSE-NEXT:    movaps %xmm0, (%rsp) # 16-byte Spill393; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload394; SSE-NEXT:    movhlps {{.*#+}} xmm0 = xmm0[1,1]395; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload396; SSE-NEXT:    movhlps {{.*#+}} xmm1 = xmm1[1,1]397; SSE-NEXT:    movaps %xmm1, %xmm2398; SSE-NEXT:    callq fmaf@PLT399; SSE-NEXT:    unpcklps (%rsp), %xmm0 # 16-byte Folded Reload400; SSE-NEXT:    # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]401; SSE-NEXT:    movaps %xmm0, (%rsp) # 16-byte Spill402; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload403; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload404; SSE-NEXT:    movaps %xmm1, %xmm2405; SSE-NEXT:    callq fmaf@PLT406; SSE-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill407; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload408; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1,1,1]409; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload410; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[1,1,1,1]411; SSE-NEXT:    movaps %xmm1, %xmm2412; SSE-NEXT:    callq fmaf@PLT413; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload414; SSE-NEXT:    unpcklps {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]415; SSE-NEXT:    unpcklpd (%rsp), %xmm1 # 16-byte Folded Reload416; SSE-NEXT:    # xmm1 = xmm1[0],mem[0]417; SSE-NEXT:    movaps %xmm1, (%rbx)418; SSE-NEXT:    addq $64, %rsp419; SSE-NEXT:    popq %rbx420; SSE-NEXT:    retq421;422; AVX1-LABEL: vp_fma_v4f32:423; AVX1:       # %bb.0:424; AVX1-NEXT:    pushq %rbx425; AVX1-NEXT:    subq $48, %rsp426; AVX1-NEXT:    movq %rdi, %rbx427; AVX1-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill428; AVX1-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill429; AVX1-NEXT:    vmovaps %xmm1, %xmm2430; AVX1-NEXT:    callq fmaf@PLT431; AVX1-NEXT:    vmovaps %xmm0, (%rsp) # 16-byte Spill432; AVX1-NEXT:    vmovshdup {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload433; AVX1-NEXT:    # xmm0 = mem[1,1,3,3]434; AVX1-NEXT:    vmovshdup {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload435; AVX1-NEXT:    # xmm1 = mem[1,1,3,3]436; AVX1-NEXT:    vmovaps %xmm1, %xmm2437; AVX1-NEXT:    callq fmaf@PLT438; AVX1-NEXT:    vmovaps (%rsp), %xmm1 # 16-byte Reload439; AVX1-NEXT:    vinsertps {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[2,3]440; AVX1-NEXT:    vmovaps %xmm0, (%rsp) # 16-byte Spill441; AVX1-NEXT:    vpermilpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload442; AVX1-NEXT:    # xmm0 = mem[1,0]443; AVX1-NEXT:    vpermilpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload444; AVX1-NEXT:    # xmm1 = mem[1,0]445; AVX1-NEXT:    vmovapd %xmm1, %xmm2446; AVX1-NEXT:    callq fmaf@PLT447; AVX1-NEXT:    vmovaps (%rsp), %xmm1 # 16-byte Reload448; AVX1-NEXT:    vinsertps {{.*#+}} xmm0 = xmm1[0,1],xmm0[0],xmm1[3]449; AVX1-NEXT:    vmovaps %xmm0, (%rsp) # 16-byte Spill450; AVX1-NEXT:    vpermilps $255, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload451; AVX1-NEXT:    # xmm0 = mem[3,3,3,3]452; AVX1-NEXT:    vpermilps $255, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload453; AVX1-NEXT:    # xmm1 = mem[3,3,3,3]454; AVX1-NEXT:    vmovaps %xmm1, %xmm2455; AVX1-NEXT:    callq fmaf@PLT456; AVX1-NEXT:    vmovaps (%rsp), %xmm1 # 16-byte Reload457; AVX1-NEXT:    vinsertps {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[0]458; AVX1-NEXT:    vmovaps %xmm0, (%rbx)459; AVX1-NEXT:    addq $48, %rsp460; AVX1-NEXT:    popq %rbx461; AVX1-NEXT:    retq462;463; AVX2-LABEL: vp_fma_v4f32:464; AVX2:       # %bb.0:465; AVX2-NEXT:    pushq %rbx466; AVX2-NEXT:    subq $48, %rsp467; AVX2-NEXT:    movq %rdi, %rbx468; AVX2-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill469; AVX2-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill470; AVX2-NEXT:    vmovaps %xmm1, %xmm2471; AVX2-NEXT:    callq fmaf@PLT472; AVX2-NEXT:    vmovaps %xmm0, (%rsp) # 16-byte Spill473; AVX2-NEXT:    vmovshdup {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload474; AVX2-NEXT:    # xmm0 = mem[1,1,3,3]475; AVX2-NEXT:    vmovshdup {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload476; AVX2-NEXT:    # xmm1 = mem[1,1,3,3]477; AVX2-NEXT:    vmovaps %xmm1, %xmm2478; AVX2-NEXT:    callq fmaf@PLT479; AVX2-NEXT:    vmovaps (%rsp), %xmm1 # 16-byte Reload480; AVX2-NEXT:    vinsertps {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[2,3]481; AVX2-NEXT:    vmovaps %xmm0, (%rsp) # 16-byte Spill482; AVX2-NEXT:    vpermilpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload483; AVX2-NEXT:    # xmm0 = mem[1,0]484; AVX2-NEXT:    vpermilpd $1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload485; AVX2-NEXT:    # xmm1 = mem[1,0]486; AVX2-NEXT:    vmovapd %xmm1, %xmm2487; AVX2-NEXT:    callq fmaf@PLT488; AVX2-NEXT:    vmovaps (%rsp), %xmm1 # 16-byte Reload489; AVX2-NEXT:    vinsertps {{.*#+}} xmm0 = xmm1[0,1],xmm0[0],xmm1[3]490; AVX2-NEXT:    vmovaps %xmm0, (%rsp) # 16-byte Spill491; AVX2-NEXT:    vpermilps $255, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload492; AVX2-NEXT:    # xmm0 = mem[3,3,3,3]493; AVX2-NEXT:    vpermilps $255, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload494; AVX2-NEXT:    # xmm1 = mem[3,3,3,3]495; AVX2-NEXT:    vmovaps %xmm1, %xmm2496; AVX2-NEXT:    callq fmaf@PLT497; AVX2-NEXT:    vmovaps (%rsp), %xmm1 # 16-byte Reload498; AVX2-NEXT:    vinsertps {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[0]499; AVX2-NEXT:    vmovaps %xmm0, (%rbx)500; AVX2-NEXT:    addq $48, %rsp501; AVX2-NEXT:    popq %rbx502; AVX2-NEXT:    retq503;504; AVX512-LABEL: vp_fma_v4f32:505; AVX512:       # %bb.0:506; AVX512-NEXT:    vfmadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm1507; AVX512-NEXT:    vmovaps %xmm0, (%rdi)508; AVX512-NEXT:    retq509  %res = call <4 x float> @llvm.vp.fma.v4f32(<4 x float> %a0, <4 x float> %a1, <4 x float> %a1, <4 x i1> <i1 -1, i1 -1, i1 -1, i1 -1>, i32 4)510  store <4 x float> %res, ptr %out511  ret void512}513declare <4 x float> @llvm.vp.fma.v4f32(<4 x float>, <4 x float>, <4 x float>, <4 x i1>, i32)514 515define void @vp_fmuladd_v4f32(<4 x float> %a0, <4 x float> %a1, ptr %out, i4 %a5) nounwind {516; X86-LABEL: vp_fmuladd_v4f32:517; X86:       # %bb.0:518; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax519; X86-NEXT:    vmulps %xmm1, %xmm0, %xmm0520; X86-NEXT:    vaddps %xmm1, %xmm0, %xmm0521; X86-NEXT:    vmovaps %xmm0, (%eax)522; X86-NEXT:    retl523;524; SSE-LABEL: vp_fmuladd_v4f32:525; SSE:       # %bb.0:526; SSE-NEXT:    mulps %xmm1, %xmm0527; SSE-NEXT:    addps %xmm1, %xmm0528; SSE-NEXT:    movaps %xmm0, (%rdi)529; SSE-NEXT:    retq530;531; AVX1-LABEL: vp_fmuladd_v4f32:532; AVX1:       # %bb.0:533; AVX1-NEXT:    vmulps %xmm1, %xmm0, %xmm0534; AVX1-NEXT:    vaddps %xmm1, %xmm0, %xmm0535; AVX1-NEXT:    vmovaps %xmm0, (%rdi)536; AVX1-NEXT:    retq537;538; AVX2-LABEL: vp_fmuladd_v4f32:539; AVX2:       # %bb.0:540; AVX2-NEXT:    vmulps %xmm1, %xmm0, %xmm0541; AVX2-NEXT:    vaddps %xmm1, %xmm0, %xmm0542; AVX2-NEXT:    vmovaps %xmm0, (%rdi)543; AVX2-NEXT:    retq544;545; AVX512-LABEL: vp_fmuladd_v4f32:546; AVX512:       # %bb.0:547; AVX512-NEXT:    vfmadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm1548; AVX512-NEXT:    vmovaps %xmm0, (%rdi)549; AVX512-NEXT:    retq550  %res = call <4 x float> @llvm.vp.fmuladd.v4f32(<4 x float> %a0, <4 x float> %a1, <4 x float> %a1, <4 x i1> <i1 -1, i1 -1, i1 -1, i1 -1>, i32 4)551  store <4 x float> %res, ptr %out552  ret void553}554declare <4 x float> @llvm.vp.fmuladd.v4f32(<4 x float>, <4 x float>, <4 x float>, <4 x i1>, i32)555 556declare <4 x float> @llvm.vp.maxnum.v4f32(<4 x float>, <4 x float>, <4 x i1>, i32)557define <4 x float> @vfmax_vv_v4f32(<4 x float> %va, <4 x float> %vb, <4 x i1> %m, i32 zeroext %evl) {558; X86-LABEL: vfmax_vv_v4f32:559; X86:       # %bb.0:560; X86-NEXT:    vmaxps %xmm0, %xmm1, %xmm2561; X86-NEXT:    vcmpunordps %xmm0, %xmm0, %xmm0562; X86-NEXT:    vblendvps %xmm0, %xmm1, %xmm2, %xmm0563; X86-NEXT:    retl564;565; SSE-LABEL: vfmax_vv_v4f32:566; SSE:       # %bb.0:567; SSE-NEXT:    movaps %xmm1, %xmm2568; SSE-NEXT:    maxps %xmm0, %xmm2569; SSE-NEXT:    cmpunordps %xmm0, %xmm0570; SSE-NEXT:    andps %xmm0, %xmm1571; SSE-NEXT:    andnps %xmm2, %xmm0572; SSE-NEXT:    orps %xmm1, %xmm0573; SSE-NEXT:    retq574;575; AVX1-LABEL: vfmax_vv_v4f32:576; AVX1:       # %bb.0:577; AVX1-NEXT:    vmaxps %xmm0, %xmm1, %xmm2578; AVX1-NEXT:    vcmpunordps %xmm0, %xmm0, %xmm0579; AVX1-NEXT:    vblendvps %xmm0, %xmm1, %xmm2, %xmm0580; AVX1-NEXT:    retq581;582; AVX2-LABEL: vfmax_vv_v4f32:583; AVX2:       # %bb.0:584; AVX2-NEXT:    vmaxps %xmm0, %xmm1, %xmm2585; AVX2-NEXT:    vcmpunordps %xmm0, %xmm0, %xmm0586; AVX2-NEXT:    vblendvps %xmm0, %xmm1, %xmm2, %xmm0587; AVX2-NEXT:    retq588;589; AVX512-LABEL: vfmax_vv_v4f32:590; AVX512:       # %bb.0:591; AVX512-NEXT:    vmaxps %xmm0, %xmm1, %xmm2592; AVX512-NEXT:    vcmpunordps %xmm0, %xmm0, %k1593; AVX512-NEXT:    vmovaps %xmm1, %xmm2 {%k1}594; AVX512-NEXT:    vmovaps %xmm2, %xmm0595; AVX512-NEXT:    retq596  %v = call <4 x float> @llvm.vp.maxnum.v4f32(<4 x float> %va, <4 x float> %vb, <4 x i1> %m, i32 %evl)597  ret <4 x float> %v598}599 600declare <8 x float> @llvm.vp.maxnum.v8f32(<8 x float>, <8 x float>, <8 x i1>, i32)601define <8 x float> @vfmax_vv_v8f32(<8 x float> %va, <8 x float> %vb, <8 x i1> %m, i32 zeroext %evl) {602; X86-LABEL: vfmax_vv_v8f32:603; X86:       # %bb.0:604; X86-NEXT:    vmaxps %ymm0, %ymm1, %ymm2605; X86-NEXT:    vcmpunordps %ymm0, %ymm0, %ymm0606; X86-NEXT:    vblendvps %ymm0, %ymm1, %ymm2, %ymm0607; X86-NEXT:    retl608;609; SSE-LABEL: vfmax_vv_v8f32:610; SSE:       # %bb.0:611; SSE-NEXT:    movaps %xmm2, %xmm4612; SSE-NEXT:    maxps %xmm0, %xmm4613; SSE-NEXT:    cmpunordps %xmm0, %xmm0614; SSE-NEXT:    andps %xmm0, %xmm2615; SSE-NEXT:    andnps %xmm4, %xmm0616; SSE-NEXT:    orps %xmm2, %xmm0617; SSE-NEXT:    movaps %xmm3, %xmm2618; SSE-NEXT:    maxps %xmm1, %xmm2619; SSE-NEXT:    cmpunordps %xmm1, %xmm1620; SSE-NEXT:    andps %xmm1, %xmm3621; SSE-NEXT:    andnps %xmm2, %xmm1622; SSE-NEXT:    orps %xmm3, %xmm1623; SSE-NEXT:    retq624;625; AVX1-LABEL: vfmax_vv_v8f32:626; AVX1:       # %bb.0:627; AVX1-NEXT:    vmaxps %ymm0, %ymm1, %ymm2628; AVX1-NEXT:    vcmpunordps %ymm0, %ymm0, %ymm0629; AVX1-NEXT:    vblendvps %ymm0, %ymm1, %ymm2, %ymm0630; AVX1-NEXT:    retq631;632; AVX2-LABEL: vfmax_vv_v8f32:633; AVX2:       # %bb.0:634; AVX2-NEXT:    vmaxps %ymm0, %ymm1, %ymm2635; AVX2-NEXT:    vcmpunordps %ymm0, %ymm0, %ymm0636; AVX2-NEXT:    vblendvps %ymm0, %ymm1, %ymm2, %ymm0637; AVX2-NEXT:    retq638;639; AVX512-LABEL: vfmax_vv_v8f32:640; AVX512:       # %bb.0:641; AVX512-NEXT:    vmaxps %ymm0, %ymm1, %ymm2642; AVX512-NEXT:    vcmpunordps %ymm0, %ymm0, %k1643; AVX512-NEXT:    vmovaps %ymm1, %ymm2 {%k1}644; AVX512-NEXT:    vmovaps %ymm2, %ymm0645; AVX512-NEXT:    retq646  %v = call <8 x float> @llvm.vp.maxnum.v8f32(<8 x float> %va, <8 x float> %vb, <8 x i1> %m, i32 %evl)647  ret <8 x float> %v648}649 650declare <4 x float> @llvm.vp.minnum.v4f32(<4 x float>, <4 x float>, <4 x i1>, i32)651define <4 x float> @vfmin_vv_v4f32(<4 x float> %va, <4 x float> %vb, <4 x i1> %m, i32 zeroext %evl) {652; X86-LABEL: vfmin_vv_v4f32:653; X86:       # %bb.0:654; X86-NEXT:    vminps %xmm0, %xmm1, %xmm2655; X86-NEXT:    vcmpunordps %xmm0, %xmm0, %xmm0656; X86-NEXT:    vblendvps %xmm0, %xmm1, %xmm2, %xmm0657; X86-NEXT:    retl658;659; SSE-LABEL: vfmin_vv_v4f32:660; SSE:       # %bb.0:661; SSE-NEXT:    movaps %xmm1, %xmm2662; SSE-NEXT:    minps %xmm0, %xmm2663; SSE-NEXT:    cmpunordps %xmm0, %xmm0664; SSE-NEXT:    andps %xmm0, %xmm1665; SSE-NEXT:    andnps %xmm2, %xmm0666; SSE-NEXT:    orps %xmm1, %xmm0667; SSE-NEXT:    retq668;669; AVX1-LABEL: vfmin_vv_v4f32:670; AVX1:       # %bb.0:671; AVX1-NEXT:    vminps %xmm0, %xmm1, %xmm2672; AVX1-NEXT:    vcmpunordps %xmm0, %xmm0, %xmm0673; AVX1-NEXT:    vblendvps %xmm0, %xmm1, %xmm2, %xmm0674; AVX1-NEXT:    retq675;676; AVX2-LABEL: vfmin_vv_v4f32:677; AVX2:       # %bb.0:678; AVX2-NEXT:    vminps %xmm0, %xmm1, %xmm2679; AVX2-NEXT:    vcmpunordps %xmm0, %xmm0, %xmm0680; AVX2-NEXT:    vblendvps %xmm0, %xmm1, %xmm2, %xmm0681; AVX2-NEXT:    retq682;683; AVX512-LABEL: vfmin_vv_v4f32:684; AVX512:       # %bb.0:685; AVX512-NEXT:    vminps %xmm0, %xmm1, %xmm2686; AVX512-NEXT:    vcmpunordps %xmm0, %xmm0, %k1687; AVX512-NEXT:    vmovaps %xmm1, %xmm2 {%k1}688; AVX512-NEXT:    vmovaps %xmm2, %xmm0689; AVX512-NEXT:    retq690  %v = call <4 x float> @llvm.vp.minnum.v4f32(<4 x float> %va, <4 x float> %vb, <4 x i1> %m, i32 %evl)691  ret <4 x float> %v692}693 694declare <8 x float> @llvm.vp.minnum.v8f32(<8 x float>, <8 x float>, <8 x i1>, i32)695define <8 x float> @vfmin_vv_v8f32(<8 x float> %va, <8 x float> %vb, <8 x i1> %m, i32 zeroext %evl) {696; X86-LABEL: vfmin_vv_v8f32:697; X86:       # %bb.0:698; X86-NEXT:    vminps %ymm0, %ymm1, %ymm2699; X86-NEXT:    vcmpunordps %ymm0, %ymm0, %ymm0700; X86-NEXT:    vblendvps %ymm0, %ymm1, %ymm2, %ymm0701; X86-NEXT:    retl702;703; SSE-LABEL: vfmin_vv_v8f32:704; SSE:       # %bb.0:705; SSE-NEXT:    movaps %xmm2, %xmm4706; SSE-NEXT:    minps %xmm0, %xmm4707; SSE-NEXT:    cmpunordps %xmm0, %xmm0708; SSE-NEXT:    andps %xmm0, %xmm2709; SSE-NEXT:    andnps %xmm4, %xmm0710; SSE-NEXT:    orps %xmm2, %xmm0711; SSE-NEXT:    movaps %xmm3, %xmm2712; SSE-NEXT:    minps %xmm1, %xmm2713; SSE-NEXT:    cmpunordps %xmm1, %xmm1714; SSE-NEXT:    andps %xmm1, %xmm3715; SSE-NEXT:    andnps %xmm2, %xmm1716; SSE-NEXT:    orps %xmm3, %xmm1717; SSE-NEXT:    retq718;719; AVX1-LABEL: vfmin_vv_v8f32:720; AVX1:       # %bb.0:721; AVX1-NEXT:    vminps %ymm0, %ymm1, %ymm2722; AVX1-NEXT:    vcmpunordps %ymm0, %ymm0, %ymm0723; AVX1-NEXT:    vblendvps %ymm0, %ymm1, %ymm2, %ymm0724; AVX1-NEXT:    retq725;726; AVX2-LABEL: vfmin_vv_v8f32:727; AVX2:       # %bb.0:728; AVX2-NEXT:    vminps %ymm0, %ymm1, %ymm2729; AVX2-NEXT:    vcmpunordps %ymm0, %ymm0, %ymm0730; AVX2-NEXT:    vblendvps %ymm0, %ymm1, %ymm2, %ymm0731; AVX2-NEXT:    retq732;733; AVX512-LABEL: vfmin_vv_v8f32:734; AVX512:       # %bb.0:735; AVX512-NEXT:    vminps %ymm0, %ymm1, %ymm2736; AVX512-NEXT:    vcmpunordps %ymm0, %ymm0, %k1737; AVX512-NEXT:    vmovaps %ymm1, %ymm2 {%k1}738; AVX512-NEXT:    vmovaps %ymm2, %ymm0739; AVX512-NEXT:    retq740  %v = call <8 x float> @llvm.vp.minnum.v8f32(<8 x float> %va, <8 x float> %vb, <8 x i1> %m, i32 %evl)741  ret <8 x float> %v742}743