brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.4 KiB · 26aa46b Raw
388 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=sparc < %s | FileCheck %s -check-prefix=SOFT-FLOAT-323; RUN: llc -mtriple=sparc64 < %s | FileCheck %s -check-prefix=SOFT-FLOAT-644 5define float @fmuladd_intrinsic_f32(float %a, float %b, float %c) #0 {6; SOFT-FLOAT-32-LABEL: fmuladd_intrinsic_f32:7; SOFT-FLOAT-32:         .cfi_startproc8; SOFT-FLOAT-32-NEXT:  ! %bb.0:9; SOFT-FLOAT-32-NEXT:    save %sp, -96, %sp10; SOFT-FLOAT-32-NEXT:    .cfi_def_cfa_register %fp11; SOFT-FLOAT-32-NEXT:    .cfi_window_save12; SOFT-FLOAT-32-NEXT:    .cfi_register %o7, %i713; SOFT-FLOAT-32-NEXT:    mov %i1, %o114; SOFT-FLOAT-32-NEXT:    call __mulsf315; SOFT-FLOAT-32-NEXT:    mov %i0, %o016; SOFT-FLOAT-32-NEXT:    call __addsf317; SOFT-FLOAT-32-NEXT:    mov %i2, %o118; SOFT-FLOAT-32-NEXT:    ret19; SOFT-FLOAT-32-NEXT:    restore %g0, %o0, %o020;21; SOFT-FLOAT-64-LABEL: fmuladd_intrinsic_f32:22; SOFT-FLOAT-64:         .cfi_startproc23; SOFT-FLOAT-64-NEXT:  ! %bb.0:24; SOFT-FLOAT-64-NEXT:    save %sp, -176, %sp25; SOFT-FLOAT-64-NEXT:    .cfi_def_cfa_register %fp26; SOFT-FLOAT-64-NEXT:    .cfi_window_save27; SOFT-FLOAT-64-NEXT:    .cfi_register %o7, %i728; SOFT-FLOAT-64-NEXT:    srl %i0, 0, %o029; SOFT-FLOAT-64-NEXT:    call __mulsf330; SOFT-FLOAT-64-NEXT:    srl %i1, 0, %o131; SOFT-FLOAT-64-NEXT:    call __addsf332; SOFT-FLOAT-64-NEXT:    srl %i2, 0, %o133; SOFT-FLOAT-64-NEXT:    ret34; SOFT-FLOAT-64-NEXT:    restore %g0, %o0, %o035  %result = call float @llvm.fmuladd.f32(float %a, float %b, float %c)36  ret float %result37}38 39define double @fmuladd_intrinsic_f64(double %a, double %b, double %c) #0 {40; SOFT-FLOAT-32-LABEL: fmuladd_intrinsic_f64:41; SOFT-FLOAT-32:         .cfi_startproc42; SOFT-FLOAT-32-NEXT:  ! %bb.0:43; SOFT-FLOAT-32-NEXT:    save %sp, -96, %sp44; SOFT-FLOAT-32-NEXT:    .cfi_def_cfa_register %fp45; SOFT-FLOAT-32-NEXT:    .cfi_window_save46; SOFT-FLOAT-32-NEXT:    .cfi_register %o7, %i747; SOFT-FLOAT-32-NEXT:    mov %i3, %o348; SOFT-FLOAT-32-NEXT:    mov %i2, %o249; SOFT-FLOAT-32-NEXT:    mov %i1, %o150; SOFT-FLOAT-32-NEXT:    call __muldf351; SOFT-FLOAT-32-NEXT:    mov %i0, %o052; SOFT-FLOAT-32-NEXT:    mov %i4, %o253; SOFT-FLOAT-32-NEXT:    call __adddf354; SOFT-FLOAT-32-NEXT:    mov %i5, %o355; SOFT-FLOAT-32-NEXT:    mov %o0, %i056; SOFT-FLOAT-32-NEXT:    ret57; SOFT-FLOAT-32-NEXT:    restore %g0, %o1, %o158;59; SOFT-FLOAT-64-LABEL: fmuladd_intrinsic_f64:60; SOFT-FLOAT-64:         .cfi_startproc61; SOFT-FLOAT-64-NEXT:  ! %bb.0:62; SOFT-FLOAT-64-NEXT:    save %sp, -176, %sp63; SOFT-FLOAT-64-NEXT:    .cfi_def_cfa_register %fp64; SOFT-FLOAT-64-NEXT:    .cfi_window_save65; SOFT-FLOAT-64-NEXT:    .cfi_register %o7, %i766; SOFT-FLOAT-64-NEXT:    mov %i1, %o167; SOFT-FLOAT-64-NEXT:    call __muldf368; SOFT-FLOAT-64-NEXT:    mov %i0, %o069; SOFT-FLOAT-64-NEXT:    call __adddf370; SOFT-FLOAT-64-NEXT:    mov %i2, %o171; SOFT-FLOAT-64-NEXT:    ret72; SOFT-FLOAT-64-NEXT:    restore %g0, %o0, %o073  %result = call double @llvm.fmuladd.f64(double %a, double %b, double %c)74  ret double %result75}76 77define float @fmuladd_contract_f32(float %a, float %b, float %c) #0 {78; SOFT-FLOAT-32-LABEL: fmuladd_contract_f32:79; SOFT-FLOAT-32:         .cfi_startproc80; SOFT-FLOAT-32-NEXT:  ! %bb.0:81; SOFT-FLOAT-32-NEXT:    save %sp, -96, %sp82; SOFT-FLOAT-32-NEXT:    .cfi_def_cfa_register %fp83; SOFT-FLOAT-32-NEXT:    .cfi_window_save84; SOFT-FLOAT-32-NEXT:    .cfi_register %o7, %i785; SOFT-FLOAT-32-NEXT:    mov %i1, %o186; SOFT-FLOAT-32-NEXT:    call __mulsf387; SOFT-FLOAT-32-NEXT:    mov %i0, %o088; SOFT-FLOAT-32-NEXT:    call __addsf389; SOFT-FLOAT-32-NEXT:    mov %i2, %o190; SOFT-FLOAT-32-NEXT:    ret91; SOFT-FLOAT-32-NEXT:    restore %g0, %o0, %o092;93; SOFT-FLOAT-64-LABEL: fmuladd_contract_f32:94; SOFT-FLOAT-64:         .cfi_startproc95; SOFT-FLOAT-64-NEXT:  ! %bb.0:96; SOFT-FLOAT-64-NEXT:    save %sp, -176, %sp97; SOFT-FLOAT-64-NEXT:    .cfi_def_cfa_register %fp98; SOFT-FLOAT-64-NEXT:    .cfi_window_save99; SOFT-FLOAT-64-NEXT:    .cfi_register %o7, %i7100; SOFT-FLOAT-64-NEXT:    srl %i0, 0, %o0101; SOFT-FLOAT-64-NEXT:    call __mulsf3102; SOFT-FLOAT-64-NEXT:    srl %i1, 0, %o1103; SOFT-FLOAT-64-NEXT:    call __addsf3104; SOFT-FLOAT-64-NEXT:    srl %i2, 0, %o1105; SOFT-FLOAT-64-NEXT:    ret106; SOFT-FLOAT-64-NEXT:    restore %g0, %o0, %o0107  %product = fmul contract float %a, %b108  %result = fadd contract float %product, %c109  ret float %result110}111 112define double @fmuladd_contract_f64(double %a, double %b, double %c) #0 {113; SOFT-FLOAT-32-LABEL: fmuladd_contract_f64:114; SOFT-FLOAT-32:         .cfi_startproc115; SOFT-FLOAT-32-NEXT:  ! %bb.0:116; SOFT-FLOAT-32-NEXT:    save %sp, -96, %sp117; SOFT-FLOAT-32-NEXT:    .cfi_def_cfa_register %fp118; SOFT-FLOAT-32-NEXT:    .cfi_window_save119; SOFT-FLOAT-32-NEXT:    .cfi_register %o7, %i7120; SOFT-FLOAT-32-NEXT:    mov %i3, %o3121; SOFT-FLOAT-32-NEXT:    mov %i2, %o2122; SOFT-FLOAT-32-NEXT:    mov %i1, %o1123; SOFT-FLOAT-32-NEXT:    call __muldf3124; SOFT-FLOAT-32-NEXT:    mov %i0, %o0125; SOFT-FLOAT-32-NEXT:    mov %i4, %o2126; SOFT-FLOAT-32-NEXT:    call __adddf3127; SOFT-FLOAT-32-NEXT:    mov %i5, %o3128; SOFT-FLOAT-32-NEXT:    mov %o0, %i0129; SOFT-FLOAT-32-NEXT:    ret130; SOFT-FLOAT-32-NEXT:    restore %g0, %o1, %o1131;132; SOFT-FLOAT-64-LABEL: fmuladd_contract_f64:133; SOFT-FLOAT-64:         .cfi_startproc134; SOFT-FLOAT-64-NEXT:  ! %bb.0:135; SOFT-FLOAT-64-NEXT:    save %sp, -176, %sp136; SOFT-FLOAT-64-NEXT:    .cfi_def_cfa_register %fp137; SOFT-FLOAT-64-NEXT:    .cfi_window_save138; SOFT-FLOAT-64-NEXT:    .cfi_register %o7, %i7139; SOFT-FLOAT-64-NEXT:    mov %i1, %o1140; SOFT-FLOAT-64-NEXT:    call __muldf3141; SOFT-FLOAT-64-NEXT:    mov %i0, %o0142; SOFT-FLOAT-64-NEXT:    call __adddf3143; SOFT-FLOAT-64-NEXT:    mov %i2, %o1144; SOFT-FLOAT-64-NEXT:    ret145; SOFT-FLOAT-64-NEXT:    restore %g0, %o0, %o0146  %product = fmul contract double %a, %b147  %result = fadd contract double %product, %c148  ret double %result149}150 151define <4 x float> @fmuladd_contract_v4f32(<4 x float> %a, <4 x float> %b, <4 x float> %c) #0 {152; SOFT-FLOAT-32-LABEL: fmuladd_contract_v4f32:153; SOFT-FLOAT-32:         .cfi_startproc154; SOFT-FLOAT-32-NEXT:  ! %bb.0:155; SOFT-FLOAT-32-NEXT:    save %sp, -96, %sp156; SOFT-FLOAT-32-NEXT:    .cfi_def_cfa_register %fp157; SOFT-FLOAT-32-NEXT:    .cfi_window_save158; SOFT-FLOAT-32-NEXT:    .cfi_register %o7, %i7159; SOFT-FLOAT-32-NEXT:    ld [%fp+100], %l0160; SOFT-FLOAT-32-NEXT:    ld [%fp+104], %l1161; SOFT-FLOAT-32-NEXT:    ld [%fp+108], %l2162; SOFT-FLOAT-32-NEXT:    ld [%fp+112], %l3163; SOFT-FLOAT-32-NEXT:    ld [%fp+96], %l4164; SOFT-FLOAT-32-NEXT:    ld [%fp+92], %l5165; SOFT-FLOAT-32-NEXT:    mov %i4, %o1166; SOFT-FLOAT-32-NEXT:    call __mulsf3167; SOFT-FLOAT-32-NEXT:    mov %i0, %o0168; SOFT-FLOAT-32-NEXT:    mov %o0, %i0169; SOFT-FLOAT-32-NEXT:    mov %i1, %o0170; SOFT-FLOAT-32-NEXT:    call __mulsf3171; SOFT-FLOAT-32-NEXT:    mov %i5, %o1172; SOFT-FLOAT-32-NEXT:    mov %o0, %i1173; SOFT-FLOAT-32-NEXT:    mov %i2, %o0174; SOFT-FLOAT-32-NEXT:    call __mulsf3175; SOFT-FLOAT-32-NEXT:    mov %l5, %o1176; SOFT-FLOAT-32-NEXT:    mov %o0, %i2177; SOFT-FLOAT-32-NEXT:    mov %i3, %o0178; SOFT-FLOAT-32-NEXT:    call __mulsf3179; SOFT-FLOAT-32-NEXT:    mov %l4, %o1180; SOFT-FLOAT-32-NEXT:    call __addsf3181; SOFT-FLOAT-32-NEXT:    mov %l3, %o1182; SOFT-FLOAT-32-NEXT:    mov %o0, %i3183; SOFT-FLOAT-32-NEXT:    mov %i2, %o0184; SOFT-FLOAT-32-NEXT:    call __addsf3185; SOFT-FLOAT-32-NEXT:    mov %l2, %o1186; SOFT-FLOAT-32-NEXT:    mov %o0, %i4187; SOFT-FLOAT-32-NEXT:    mov %i1, %o0188; SOFT-FLOAT-32-NEXT:    call __addsf3189; SOFT-FLOAT-32-NEXT:    mov %l1, %o1190; SOFT-FLOAT-32-NEXT:    mov %o0, %i1191; SOFT-FLOAT-32-NEXT:    mov %i0, %o0192; SOFT-FLOAT-32-NEXT:    call __addsf3193; SOFT-FLOAT-32-NEXT:    mov %l0, %o1194; SOFT-FLOAT-32-NEXT:    ! kill: def $o0 killed $o0 def $o0_o1195; SOFT-FLOAT-32-NEXT:    mov %o0, %i0196; SOFT-FLOAT-32-NEXT:    ret197; SOFT-FLOAT-32-NEXT:    restore %g0, %i4, %o2198;199; SOFT-FLOAT-64-LABEL: fmuladd_contract_v4f32:200; SOFT-FLOAT-64:         .cfi_startproc201; SOFT-FLOAT-64-NEXT:  ! %bb.0:202; SOFT-FLOAT-64-NEXT:    save %sp, -176, %sp203; SOFT-FLOAT-64-NEXT:    .cfi_def_cfa_register %fp204; SOFT-FLOAT-64-NEXT:    .cfi_window_save205; SOFT-FLOAT-64-NEXT:    .cfi_register %o7, %i7206; SOFT-FLOAT-64-NEXT:    ld [%fp+2267], %l0207; SOFT-FLOAT-64-NEXT:    ld [%fp+2259], %l1208; SOFT-FLOAT-64-NEXT:    ld [%fp+2251], %l2209; SOFT-FLOAT-64-NEXT:    ld [%fp+2243], %l3210; SOFT-FLOAT-64-NEXT:    ld [%fp+2227], %l4211; SOFT-FLOAT-64-NEXT:    ld [%fp+2235], %o1212; SOFT-FLOAT-64-NEXT:    call __mulsf3213; SOFT-FLOAT-64-NEXT:    srl %i3, 0, %o0214; SOFT-FLOAT-64-NEXT:    mov %o0, %i3215; SOFT-FLOAT-64-NEXT:    srl %i2, 0, %o0216; SOFT-FLOAT-64-NEXT:    call __mulsf3217; SOFT-FLOAT-64-NEXT:    mov %l4, %o1218; SOFT-FLOAT-64-NEXT:    mov %o0, %i2219; SOFT-FLOAT-64-NEXT:    srl %i1, 0, %o0220; SOFT-FLOAT-64-NEXT:    call __mulsf3221; SOFT-FLOAT-64-NEXT:    srl %i5, 0, %o1222; SOFT-FLOAT-64-NEXT:    mov %o0, %i1223; SOFT-FLOAT-64-NEXT:    srl %i0, 0, %o0224; SOFT-FLOAT-64-NEXT:    call __mulsf3225; SOFT-FLOAT-64-NEXT:    srl %i4, 0, %o1226; SOFT-FLOAT-64-NEXT:    call __addsf3227; SOFT-FLOAT-64-NEXT:    mov %l3, %o1228; SOFT-FLOAT-64-NEXT:    mov %o0, %i0229; SOFT-FLOAT-64-NEXT:    mov %i1, %o0230; SOFT-FLOAT-64-NEXT:    call __addsf3231; SOFT-FLOAT-64-NEXT:    mov %l2, %o1232; SOFT-FLOAT-64-NEXT:    mov %o0, %i1233; SOFT-FLOAT-64-NEXT:    mov %i2, %o0234; SOFT-FLOAT-64-NEXT:    call __addsf3235; SOFT-FLOAT-64-NEXT:    mov %l1, %o1236; SOFT-FLOAT-64-NEXT:    mov %o0, %i2237; SOFT-FLOAT-64-NEXT:    mov %i3, %o0238; SOFT-FLOAT-64-NEXT:    call __addsf3239; SOFT-FLOAT-64-NEXT:    mov %l0, %o1240; SOFT-FLOAT-64-NEXT:    ret241; SOFT-FLOAT-64-NEXT:    restore %g0, %o0, %o3242  %product = fmul contract <4 x float> %a, %b243  %result = fadd contract <4 x float> %product, %c244  ret <4 x float> %result245}246 247define <4 x double> @fmuladd_contract_v4f64(<4 x double> %a, <4 x double> %b, <4 x double> %c) #0 {248; SOFT-FLOAT-32-LABEL: fmuladd_contract_v4f64:249; SOFT-FLOAT-32:         .cfi_startproc250; SOFT-FLOAT-32-NEXT:  ! %bb.0:251; SOFT-FLOAT-32-NEXT:    save %sp, -128, %sp252; SOFT-FLOAT-32-NEXT:    .cfi_def_cfa_register %fp253; SOFT-FLOAT-32-NEXT:    .cfi_window_save254; SOFT-FLOAT-32-NEXT:    .cfi_register %o7, %i7255; SOFT-FLOAT-32-NEXT:    ld [%fp+64], %l6256; SOFT-FLOAT-32-NEXT:    ld [%fp+156], %g2257; SOFT-FLOAT-32-NEXT:    st %g2, [%fp+-4] ! 4-byte Folded Spill258; SOFT-FLOAT-32-NEXT:    ld [%fp+160], %g2259; SOFT-FLOAT-32-NEXT:    st %g2, [%fp+-8] ! 4-byte Folded Spill260; SOFT-FLOAT-32-NEXT:    ld [%fp+148], %g2261; SOFT-FLOAT-32-NEXT:    st %g2, [%fp+-12] ! 4-byte Folded Spill262; SOFT-FLOAT-32-NEXT:    ld [%fp+152], %g2263; SOFT-FLOAT-32-NEXT:    st %g2, [%fp+-16] ! 4-byte Folded Spill264; SOFT-FLOAT-32-NEXT:    ld [%fp+140], %g2265; SOFT-FLOAT-32-NEXT:    st %g2, [%fp+-20] ! 4-byte Folded Spill266; SOFT-FLOAT-32-NEXT:    ld [%fp+144], %g2267; SOFT-FLOAT-32-NEXT:    st %g2, [%fp+-24] ! 4-byte Folded Spill268; SOFT-FLOAT-32-NEXT:    ld [%fp+132], %g2269; SOFT-FLOAT-32-NEXT:    st %g2, [%fp+-28] ! 4-byte Folded Spill270; SOFT-FLOAT-32-NEXT:    ld [%fp+136], %l7271; SOFT-FLOAT-32-NEXT:    ld [%fp+100], %l0272; SOFT-FLOAT-32-NEXT:    ld [%fp+104], %l1273; SOFT-FLOAT-32-NEXT:    ld [%fp+108], %l2274; SOFT-FLOAT-32-NEXT:    ld [%fp+112], %l3275; SOFT-FLOAT-32-NEXT:    ld [%fp+116], %l4276; SOFT-FLOAT-32-NEXT:    ld [%fp+120], %l5277; SOFT-FLOAT-32-NEXT:    ld [%fp+92], %o0278; SOFT-FLOAT-32-NEXT:    ld [%fp+96], %o1279; SOFT-FLOAT-32-NEXT:    ld [%fp+124], %o2280; SOFT-FLOAT-32-NEXT:    call __muldf3281; SOFT-FLOAT-32-NEXT:    ld [%fp+128], %o3282; SOFT-FLOAT-32-NEXT:    st %o0, [%fp+-32] ! 4-byte Folded Spill283; SOFT-FLOAT-32-NEXT:    st %o1, [%fp+-36] ! 4-byte Folded Spill284; SOFT-FLOAT-32-NEXT:    mov %i4, %o0285; SOFT-FLOAT-32-NEXT:    mov %i5, %o1286; SOFT-FLOAT-32-NEXT:    mov %l4, %o2287; SOFT-FLOAT-32-NEXT:    call __muldf3288; SOFT-FLOAT-32-NEXT:    mov %l5, %o3289; SOFT-FLOAT-32-NEXT:    mov %o0, %l4290; SOFT-FLOAT-32-NEXT:    mov %o1, %l5291; SOFT-FLOAT-32-NEXT:    mov %i2, %o0292; SOFT-FLOAT-32-NEXT:    mov %i3, %o1293; SOFT-FLOAT-32-NEXT:    mov %l2, %o2294; SOFT-FLOAT-32-NEXT:    call __muldf3295; SOFT-FLOAT-32-NEXT:    mov %l3, %o3296; SOFT-FLOAT-32-NEXT:    mov %o0, %i4297; SOFT-FLOAT-32-NEXT:    mov %o1, %i5298; SOFT-FLOAT-32-NEXT:    mov %i0, %o0299; SOFT-FLOAT-32-NEXT:    mov %i1, %o1300; SOFT-FLOAT-32-NEXT:    mov %l0, %o2301; SOFT-FLOAT-32-NEXT:    call __muldf3302; SOFT-FLOAT-32-NEXT:    mov %l1, %o3303; SOFT-FLOAT-32-NEXT:    ld [%fp+-28], %o2 ! 4-byte Folded Reload304; SOFT-FLOAT-32-NEXT:    call __adddf3305; SOFT-FLOAT-32-NEXT:    mov %l7, %o3306; SOFT-FLOAT-32-NEXT:    mov %o0, %i2307; SOFT-FLOAT-32-NEXT:    mov %o1, %i3308; SOFT-FLOAT-32-NEXT:    mov %i4, %o0309; SOFT-FLOAT-32-NEXT:    mov %i5, %o1310; SOFT-FLOAT-32-NEXT:    ld [%fp+-20], %o2 ! 4-byte Folded Reload311; SOFT-FLOAT-32-NEXT:    call __adddf3312; SOFT-FLOAT-32-NEXT:    ld [%fp+-24], %o3313; SOFT-FLOAT-32-NEXT:    mov %o0, %i4314; SOFT-FLOAT-32-NEXT:    mov %o1, %i5315; SOFT-FLOAT-32-NEXT:    mov %l4, %o0316; SOFT-FLOAT-32-NEXT:    mov %l5, %o1317; SOFT-FLOAT-32-NEXT:    ld [%fp+-12], %o2 ! 4-byte Folded Reload318; SOFT-FLOAT-32-NEXT:    call __adddf3319; SOFT-FLOAT-32-NEXT:    ld [%fp+-16], %o3320; SOFT-FLOAT-32-NEXT:    mov %o0, %i0321; SOFT-FLOAT-32-NEXT:    mov %o1, %i1322; SOFT-FLOAT-32-NEXT:    ld [%fp+-32], %o0 ! 4-byte Folded Reload323; SOFT-FLOAT-32-NEXT:    ld [%fp+-36], %o1 ! 4-byte Folded Reload324; SOFT-FLOAT-32-NEXT:    ld [%fp+-4], %o2 ! 4-byte Folded Reload325; SOFT-FLOAT-32-NEXT:    call __adddf3326; SOFT-FLOAT-32-NEXT:    ld [%fp+-8], %o3327; SOFT-FLOAT-32-NEXT:    ! kill: def $o0 killed $o0 killed $o0_o1 def $o0_o1328; SOFT-FLOAT-32-NEXT:    ! kill: def $o1 killed $o1 killed $o0_o1 def $o0_o1329; SOFT-FLOAT-32-NEXT:    std %o0, [%l6+24]330; SOFT-FLOAT-32-NEXT:    std %i0, [%l6+16]331; SOFT-FLOAT-32-NEXT:    std %i4, [%l6+8]332; SOFT-FLOAT-32-NEXT:    std %i2, [%l6]333; SOFT-FLOAT-32-NEXT:    ret334; SOFT-FLOAT-32-NEXT:    restore335;336; SOFT-FLOAT-64-LABEL: fmuladd_contract_v4f64:337; SOFT-FLOAT-64:         .cfi_startproc338; SOFT-FLOAT-64-NEXT:  ! %bb.0:339; SOFT-FLOAT-64-NEXT:    save %sp, -176, %sp340; SOFT-FLOAT-64-NEXT:    .cfi_def_cfa_register %fp341; SOFT-FLOAT-64-NEXT:    .cfi_window_save342; SOFT-FLOAT-64-NEXT:    .cfi_register %o7, %i7343; SOFT-FLOAT-64-NEXT:    ldx [%fp+2263], %l0344; SOFT-FLOAT-64-NEXT:    ldx [%fp+2255], %l1345; SOFT-FLOAT-64-NEXT:    ldx [%fp+2247], %l2346; SOFT-FLOAT-64-NEXT:    ldx [%fp+2239], %l3347; SOFT-FLOAT-64-NEXT:    ldx [%fp+2223], %l4348; SOFT-FLOAT-64-NEXT:    ldx [%fp+2231], %o1349; SOFT-FLOAT-64-NEXT:    call __muldf3350; SOFT-FLOAT-64-NEXT:    mov %i3, %o0351; SOFT-FLOAT-64-NEXT:    mov %o0, %i3352; SOFT-FLOAT-64-NEXT:    mov %i2, %o0353; SOFT-FLOAT-64-NEXT:    call __muldf3354; SOFT-FLOAT-64-NEXT:    mov %l4, %o1355; SOFT-FLOAT-64-NEXT:    mov %o0, %i2356; SOFT-FLOAT-64-NEXT:    mov %i1, %o0357; SOFT-FLOAT-64-NEXT:    call __muldf3358; SOFT-FLOAT-64-NEXT:    mov %i5, %o1359; SOFT-FLOAT-64-NEXT:    mov %o0, %i1360; SOFT-FLOAT-64-NEXT:    mov %i0, %o0361; SOFT-FLOAT-64-NEXT:    call __muldf3362; SOFT-FLOAT-64-NEXT:    mov %i4, %o1363; SOFT-FLOAT-64-NEXT:    call __adddf3364; SOFT-FLOAT-64-NEXT:    mov %l3, %o1365; SOFT-FLOAT-64-NEXT:    mov %o0, %i0366; SOFT-FLOAT-64-NEXT:    mov %i1, %o0367; SOFT-FLOAT-64-NEXT:    call __adddf3368; SOFT-FLOAT-64-NEXT:    mov %l2, %o1369; SOFT-FLOAT-64-NEXT:    mov %o0, %i1370; SOFT-FLOAT-64-NEXT:    mov %i2, %o0371; SOFT-FLOAT-64-NEXT:    call __adddf3372; SOFT-FLOAT-64-NEXT:    mov %l1, %o1373; SOFT-FLOAT-64-NEXT:    mov %o0, %i2374; SOFT-FLOAT-64-NEXT:    mov %i3, %o0375; SOFT-FLOAT-64-NEXT:    call __adddf3376; SOFT-FLOAT-64-NEXT:    mov %l0, %o1377; SOFT-FLOAT-64-NEXT:    ret378; SOFT-FLOAT-64-NEXT:    restore %g0, %o0, %o3379  %product = fmul contract <4 x double> %a, %b380  %result = fadd contract <4 x double> %product, %c381  ret <4 x double> %result382}383 384attributes #0 = { "use-soft-float"="true" }385 386declare float @llvm.fmuladd.f32(float %a, float %b, float %c)387declare double @llvm.fmuladd.f64(double %a, double %b, double %c)388