brintos

brintos / llvm-project-archived public Read only

0
0
Text · 34.7 KiB · 4ac38a9 Raw
877 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc --mtriple=loongarch32 --mattr=+d < %s | FileCheck %s --check-prefix=LA323; RUN: llc --mtriple=loongarch64 --mattr=+d < %s | FileCheck %s --check-prefix=LA644 5define { half, half } @test_sincos_f16(half %a) #0 {6; LA32-LABEL: test_sincos_f16:7; LA32:       # %bb.0:8; LA32-NEXT:    addi.w $sp, $sp, -329; LA32-NEXT:    st.w $ra, $sp, 28 # 4-byte Folded Spill10; LA32-NEXT:    st.w $fp, $sp, 24 # 4-byte Folded Spill11; LA32-NEXT:    fst.d $fs0, $sp, 16 # 8-byte Folded Spill12; LA32-NEXT:    fst.d $fs1, $sp, 8 # 8-byte Folded Spill13; LA32-NEXT:    bl __extendhfsf214; LA32-NEXT:    fmov.s $fs0, $fa015; LA32-NEXT:    bl cosf16; LA32-NEXT:    bl __truncsfhf217; LA32-NEXT:    fmov.s $fs1, $fa018; LA32-NEXT:    fmov.s $fa0, $fs019; LA32-NEXT:    bl sinf20; LA32-NEXT:    movfr2gr.s $fp, $fs121; LA32-NEXT:    bl __truncsfhf222; LA32-NEXT:    movfr2gr.s $a0, $fa023; LA32-NEXT:    lu12i.w $a1, -1624; LA32-NEXT:    or $a0, $a0, $a125; LA32-NEXT:    movgr2fr.w $fa0, $a026; LA32-NEXT:    or $a0, $fp, $a127; LA32-NEXT:    movgr2fr.w $fa1, $a028; LA32-NEXT:    fld.d $fs1, $sp, 8 # 8-byte Folded Reload29; LA32-NEXT:    fld.d $fs0, $sp, 16 # 8-byte Folded Reload30; LA32-NEXT:    ld.w $fp, $sp, 24 # 4-byte Folded Reload31; LA32-NEXT:    ld.w $ra, $sp, 28 # 4-byte Folded Reload32; LA32-NEXT:    addi.w $sp, $sp, 3233; LA32-NEXT:    ret34;35; LA64-LABEL: test_sincos_f16:36; LA64:       # %bb.0:37; LA64-NEXT:    addi.d $sp, $sp, -3238; LA64-NEXT:    st.d $ra, $sp, 24 # 8-byte Folded Spill39; LA64-NEXT:    st.d $fp, $sp, 16 # 8-byte Folded Spill40; LA64-NEXT:    fst.d $fs0, $sp, 8 # 8-byte Folded Spill41; LA64-NEXT:    fst.d $fs1, $sp, 0 # 8-byte Folded Spill42; LA64-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)43; LA64-NEXT:    jirl $ra, $ra, 044; LA64-NEXT:    fmov.s $fs0, $fa045; LA64-NEXT:    pcaddu18i $ra, %call36(cosf)46; LA64-NEXT:    jirl $ra, $ra, 047; LA64-NEXT:    pcaddu18i $ra, %call36(__truncsfhf2)48; LA64-NEXT:    jirl $ra, $ra, 049; LA64-NEXT:    fmov.s $fs1, $fa050; LA64-NEXT:    fmov.s $fa0, $fs051; LA64-NEXT:    pcaddu18i $ra, %call36(sinf)52; LA64-NEXT:    jirl $ra, $ra, 053; LA64-NEXT:    movfr2gr.s $fp, $fs154; LA64-NEXT:    pcaddu18i $ra, %call36(__truncsfhf2)55; LA64-NEXT:    jirl $ra, $ra, 056; LA64-NEXT:    movfr2gr.s $a0, $fa057; LA64-NEXT:    lu12i.w $a1, -1658; LA64-NEXT:    or $a0, $a0, $a159; LA64-NEXT:    movgr2fr.w $fa0, $a060; LA64-NEXT:    or $a0, $fp, $a161; LA64-NEXT:    movgr2fr.w $fa1, $a062; LA64-NEXT:    fld.d $fs1, $sp, 0 # 8-byte Folded Reload63; LA64-NEXT:    fld.d $fs0, $sp, 8 # 8-byte Folded Reload64; LA64-NEXT:    ld.d $fp, $sp, 16 # 8-byte Folded Reload65; LA64-NEXT:    ld.d $ra, $sp, 24 # 8-byte Folded Reload66; LA64-NEXT:    addi.d $sp, $sp, 3267; LA64-NEXT:    ret68  %result = call { half, half } @llvm.sincos.f16(half %a)69  ret { half, half } %result70}71 72define half @test_sincos_f16_only_use_sin(half %a) #0 {73; LA32-LABEL: test_sincos_f16_only_use_sin:74; LA32:       # %bb.0:75; LA32-NEXT:    addi.w $sp, $sp, -1676; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill77; LA32-NEXT:    bl __extendhfsf278; LA32-NEXT:    bl sinf79; LA32-NEXT:    bl __truncsfhf280; LA32-NEXT:    movfr2gr.s $a0, $fa081; LA32-NEXT:    lu12i.w $a1, -1682; LA32-NEXT:    or $a0, $a0, $a183; LA32-NEXT:    movgr2fr.w $fa0, $a084; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload85; LA32-NEXT:    addi.w $sp, $sp, 1686; LA32-NEXT:    ret87;88; LA64-LABEL: test_sincos_f16_only_use_sin:89; LA64:       # %bb.0:90; LA64-NEXT:    addi.d $sp, $sp, -1691; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill92; LA64-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)93; LA64-NEXT:    jirl $ra, $ra, 094; LA64-NEXT:    pcaddu18i $ra, %call36(sinf)95; LA64-NEXT:    jirl $ra, $ra, 096; LA64-NEXT:    pcaddu18i $ra, %call36(__truncsfhf2)97; LA64-NEXT:    jirl $ra, $ra, 098; LA64-NEXT:    movfr2gr.s $a0, $fa099; LA64-NEXT:    lu12i.w $a1, -16100; LA64-NEXT:    or $a0, $a0, $a1101; LA64-NEXT:    movgr2fr.w $fa0, $a0102; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload103; LA64-NEXT:    addi.d $sp, $sp, 16104; LA64-NEXT:    ret105  %result = call { half, half } @llvm.sincos.f16(half %a)106  %result.0 = extractvalue { half, half } %result, 0107  ret half %result.0108}109 110define half @test_sincos_f16_only_use_cos(half %a) #0 {111; LA32-LABEL: test_sincos_f16_only_use_cos:112; LA32:       # %bb.0:113; LA32-NEXT:    addi.w $sp, $sp, -16114; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill115; LA32-NEXT:    bl __extendhfsf2116; LA32-NEXT:    bl cosf117; LA32-NEXT:    bl __truncsfhf2118; LA32-NEXT:    movfr2gr.s $a0, $fa0119; LA32-NEXT:    lu12i.w $a1, -16120; LA32-NEXT:    or $a0, $a0, $a1121; LA32-NEXT:    movgr2fr.w $fa0, $a0122; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload123; LA32-NEXT:    addi.w $sp, $sp, 16124; LA32-NEXT:    ret125;126; LA64-LABEL: test_sincos_f16_only_use_cos:127; LA64:       # %bb.0:128; LA64-NEXT:    addi.d $sp, $sp, -16129; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill130; LA64-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)131; LA64-NEXT:    jirl $ra, $ra, 0132; LA64-NEXT:    pcaddu18i $ra, %call36(cosf)133; LA64-NEXT:    jirl $ra, $ra, 0134; LA64-NEXT:    pcaddu18i $ra, %call36(__truncsfhf2)135; LA64-NEXT:    jirl $ra, $ra, 0136; LA64-NEXT:    movfr2gr.s $a0, $fa0137; LA64-NEXT:    lu12i.w $a1, -16138; LA64-NEXT:    or $a0, $a0, $a1139; LA64-NEXT:    movgr2fr.w $fa0, $a0140; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload141; LA64-NEXT:    addi.d $sp, $sp, 16142; LA64-NEXT:    ret143  %result = call { half, half } @llvm.sincos.f16(half %a)144  %result.1 = extractvalue { half, half } %result, 1145  ret half %result.1146}147 148define { <2 x half>, <2 x half> } @test_sincos_v2f16(<2 x half> %a) #0 {149; LA32-LABEL: test_sincos_v2f16:150; LA32:       # %bb.0:151; LA32-NEXT:    addi.w $sp, $sp, -64152; LA32-NEXT:    st.w $ra, $sp, 60 # 4-byte Folded Spill153; LA32-NEXT:    st.w $fp, $sp, 56 # 4-byte Folded Spill154; LA32-NEXT:    st.w $s0, $sp, 52 # 4-byte Folded Spill155; LA32-NEXT:    st.w $s1, $sp, 48 # 4-byte Folded Spill156; LA32-NEXT:    st.w $s2, $sp, 44 # 4-byte Folded Spill157; LA32-NEXT:    fst.d $fs0, $sp, 32 # 8-byte Folded Spill158; LA32-NEXT:    fst.d $fs1, $sp, 24 # 8-byte Folded Spill159; LA32-NEXT:    fst.d $fs2, $sp, 16 # 8-byte Folded Spill160; LA32-NEXT:    fst.d $fs3, $sp, 8 # 8-byte Folded Spill161; LA32-NEXT:    move $fp, $a0162; LA32-NEXT:    movgr2fr.w $fs0, $a2163; LA32-NEXT:    movgr2fr.w $fa0, $a1164; LA32-NEXT:    bl __extendhfsf2165; LA32-NEXT:    fmov.s $fs1, $fa0166; LA32-NEXT:    bl cosf167; LA32-NEXT:    bl __truncsfhf2168; LA32-NEXT:    fmov.s $fs2, $fa0169; LA32-NEXT:    fmov.s $fa0, $fs0170; LA32-NEXT:    bl __extendhfsf2171; LA32-NEXT:    fmov.s $fs0, $fa0172; LA32-NEXT:    bl sinf173; LA32-NEXT:    bl __truncsfhf2174; LA32-NEXT:    fmov.s $fs3, $fa0175; LA32-NEXT:    fmov.s $fa0, $fs1176; LA32-NEXT:    bl sinf177; LA32-NEXT:    bl __truncsfhf2178; LA32-NEXT:    fmov.s $fs1, $fa0179; LA32-NEXT:    fmov.s $fa0, $fs0180; LA32-NEXT:    bl cosf181; LA32-NEXT:    movfr2gr.s $s0, $fs1182; LA32-NEXT:    movfr2gr.s $s1, $fs3183; LA32-NEXT:    movfr2gr.s $s2, $fs2184; LA32-NEXT:    bl __truncsfhf2185; LA32-NEXT:    movfr2gr.s $a0, $fa0186; LA32-NEXT:    st.h $a0, $fp, 6187; LA32-NEXT:    st.h $s2, $fp, 4188; LA32-NEXT:    st.h $s1, $fp, 2189; LA32-NEXT:    st.h $s0, $fp, 0190; LA32-NEXT:    fld.d $fs3, $sp, 8 # 8-byte Folded Reload191; LA32-NEXT:    fld.d $fs2, $sp, 16 # 8-byte Folded Reload192; LA32-NEXT:    fld.d $fs1, $sp, 24 # 8-byte Folded Reload193; LA32-NEXT:    fld.d $fs0, $sp, 32 # 8-byte Folded Reload194; LA32-NEXT:    ld.w $s2, $sp, 44 # 4-byte Folded Reload195; LA32-NEXT:    ld.w $s1, $sp, 48 # 4-byte Folded Reload196; LA32-NEXT:    ld.w $s0, $sp, 52 # 4-byte Folded Reload197; LA32-NEXT:    ld.w $fp, $sp, 56 # 4-byte Folded Reload198; LA32-NEXT:    ld.w $ra, $sp, 60 # 4-byte Folded Reload199; LA32-NEXT:    addi.w $sp, $sp, 64200; LA32-NEXT:    ret201;202; LA64-LABEL: test_sincos_v2f16:203; LA64:       # %bb.0:204; LA64-NEXT:    addi.d $sp, $sp, -80205; LA64-NEXT:    st.d $ra, $sp, 72 # 8-byte Folded Spill206; LA64-NEXT:    st.d $fp, $sp, 64 # 8-byte Folded Spill207; LA64-NEXT:    st.d $s0, $sp, 56 # 8-byte Folded Spill208; LA64-NEXT:    st.d $s1, $sp, 48 # 8-byte Folded Spill209; LA64-NEXT:    st.d $s2, $sp, 40 # 8-byte Folded Spill210; LA64-NEXT:    fst.d $fs0, $sp, 32 # 8-byte Folded Spill211; LA64-NEXT:    fst.d $fs1, $sp, 24 # 8-byte Folded Spill212; LA64-NEXT:    fst.d $fs2, $sp, 16 # 8-byte Folded Spill213; LA64-NEXT:    fst.d $fs3, $sp, 8 # 8-byte Folded Spill214; LA64-NEXT:    move $s0, $a2215; LA64-NEXT:    move $fp, $a0216; LA64-NEXT:    movgr2fr.w $fa0, $a1217; LA64-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)218; LA64-NEXT:    jirl $ra, $ra, 0219; LA64-NEXT:    fmov.s $fs0, $fa0220; LA64-NEXT:    pcaddu18i $ra, %call36(cosf)221; LA64-NEXT:    jirl $ra, $ra, 0222; LA64-NEXT:    pcaddu18i $ra, %call36(__truncsfhf2)223; LA64-NEXT:    jirl $ra, $ra, 0224; LA64-NEXT:    fmov.s $fs1, $fa0225; LA64-NEXT:    movgr2fr.w $fa0, $s0226; LA64-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)227; LA64-NEXT:    jirl $ra, $ra, 0228; LA64-NEXT:    fmov.s $fs2, $fa0229; LA64-NEXT:    pcaddu18i $ra, %call36(sinf)230; LA64-NEXT:    jirl $ra, $ra, 0231; LA64-NEXT:    pcaddu18i $ra, %call36(__truncsfhf2)232; LA64-NEXT:    jirl $ra, $ra, 0233; LA64-NEXT:    fmov.s $fs3, $fa0234; LA64-NEXT:    fmov.s $fa0, $fs0235; LA64-NEXT:    pcaddu18i $ra, %call36(sinf)236; LA64-NEXT:    jirl $ra, $ra, 0237; LA64-NEXT:    pcaddu18i $ra, %call36(__truncsfhf2)238; LA64-NEXT:    jirl $ra, $ra, 0239; LA64-NEXT:    fmov.s $fs0, $fa0240; LA64-NEXT:    fmov.s $fa0, $fs2241; LA64-NEXT:    pcaddu18i $ra, %call36(cosf)242; LA64-NEXT:    jirl $ra, $ra, 0243; LA64-NEXT:    movfr2gr.s $s0, $fs0244; LA64-NEXT:    movfr2gr.s $s1, $fs3245; LA64-NEXT:    movfr2gr.s $s2, $fs1246; LA64-NEXT:    pcaddu18i $ra, %call36(__truncsfhf2)247; LA64-NEXT:    jirl $ra, $ra, 0248; LA64-NEXT:    movfr2gr.s $a0, $fa0249; LA64-NEXT:    st.h $a0, $fp, 6250; LA64-NEXT:    st.h $s2, $fp, 4251; LA64-NEXT:    st.h $s1, $fp, 2252; LA64-NEXT:    st.h $s0, $fp, 0253; LA64-NEXT:    fld.d $fs3, $sp, 8 # 8-byte Folded Reload254; LA64-NEXT:    fld.d $fs2, $sp, 16 # 8-byte Folded Reload255; LA64-NEXT:    fld.d $fs1, $sp, 24 # 8-byte Folded Reload256; LA64-NEXT:    fld.d $fs0, $sp, 32 # 8-byte Folded Reload257; LA64-NEXT:    ld.d $s2, $sp, 40 # 8-byte Folded Reload258; LA64-NEXT:    ld.d $s1, $sp, 48 # 8-byte Folded Reload259; LA64-NEXT:    ld.d $s0, $sp, 56 # 8-byte Folded Reload260; LA64-NEXT:    ld.d $fp, $sp, 64 # 8-byte Folded Reload261; LA64-NEXT:    ld.d $ra, $sp, 72 # 8-byte Folded Reload262; LA64-NEXT:    addi.d $sp, $sp, 80263; LA64-NEXT:    ret264  %result = call { <2 x half>, <2 x half> } @llvm.sincos.v2f16(<2 x half> %a)265  ret { <2 x half>, <2 x half> } %result266}267 268define { float, float } @test_sincos_f32(float %a) #0 {269; LA32-LABEL: test_sincos_f32:270; LA32:       # %bb.0:271; LA32-NEXT:    addi.w $sp, $sp, -32272; LA32-NEXT:    st.w $ra, $sp, 28 # 4-byte Folded Spill273; LA32-NEXT:    fst.d $fs0, $sp, 16 # 8-byte Folded Spill274; LA32-NEXT:    fst.d $fs1, $sp, 8 # 8-byte Folded Spill275; LA32-NEXT:    fmov.s $fs0, $fa0276; LA32-NEXT:    bl sinf277; LA32-NEXT:    fmov.s $fs1, $fa0278; LA32-NEXT:    fmov.s $fa0, $fs0279; LA32-NEXT:    bl cosf280; LA32-NEXT:    fmov.s $fa1, $fa0281; LA32-NEXT:    fmov.s $fa0, $fs1282; LA32-NEXT:    fld.d $fs1, $sp, 8 # 8-byte Folded Reload283; LA32-NEXT:    fld.d $fs0, $sp, 16 # 8-byte Folded Reload284; LA32-NEXT:    ld.w $ra, $sp, 28 # 4-byte Folded Reload285; LA32-NEXT:    addi.w $sp, $sp, 32286; LA32-NEXT:    ret287;288; LA64-LABEL: test_sincos_f32:289; LA64:       # %bb.0:290; LA64-NEXT:    addi.d $sp, $sp, -32291; LA64-NEXT:    st.d $ra, $sp, 24 # 8-byte Folded Spill292; LA64-NEXT:    fst.d $fs0, $sp, 16 # 8-byte Folded Spill293; LA64-NEXT:    fst.d $fs1, $sp, 8 # 8-byte Folded Spill294; LA64-NEXT:    fmov.s $fs0, $fa0295; LA64-NEXT:    pcaddu18i $ra, %call36(sinf)296; LA64-NEXT:    jirl $ra, $ra, 0297; LA64-NEXT:    fmov.s $fs1, $fa0298; LA64-NEXT:    fmov.s $fa0, $fs0299; LA64-NEXT:    pcaddu18i $ra, %call36(cosf)300; LA64-NEXT:    jirl $ra, $ra, 0301; LA64-NEXT:    fmov.s $fa1, $fa0302; LA64-NEXT:    fmov.s $fa0, $fs1303; LA64-NEXT:    fld.d $fs1, $sp, 8 # 8-byte Folded Reload304; LA64-NEXT:    fld.d $fs0, $sp, 16 # 8-byte Folded Reload305; LA64-NEXT:    ld.d $ra, $sp, 24 # 8-byte Folded Reload306; LA64-NEXT:    addi.d $sp, $sp, 32307; LA64-NEXT:    ret308  %result = call { float, float } @llvm.sincos.f32(float %a)309  ret { float, float } %result310}311 312define { <2 x float>, <2 x float> } @test_sincos_v2f32(<2 x float> %a) #0 {313; LA32-LABEL: test_sincos_v2f32:314; LA32:       # %bb.0:315; LA32-NEXT:    addi.w $sp, $sp, -48316; LA32-NEXT:    st.w $ra, $sp, 44 # 4-byte Folded Spill317; LA32-NEXT:    st.w $fp, $sp, 40 # 4-byte Folded Spill318; LA32-NEXT:    fst.d $fs0, $sp, 32 # 8-byte Folded Spill319; LA32-NEXT:    fst.d $fs1, $sp, 24 # 8-byte Folded Spill320; LA32-NEXT:    fst.d $fs2, $sp, 16 # 8-byte Folded Spill321; LA32-NEXT:    fst.d $fs3, $sp, 8 # 8-byte Folded Spill322; LA32-NEXT:    fmov.s $fs0, $fa1323; LA32-NEXT:    fmov.s $fs1, $fa0324; LA32-NEXT:    move $fp, $a0325; LA32-NEXT:    bl sinf326; LA32-NEXT:    fmov.s $fs2, $fa0327; LA32-NEXT:    fmov.s $fa0, $fs0328; LA32-NEXT:    bl sinf329; LA32-NEXT:    fmov.s $fs3, $fa0330; LA32-NEXT:    fmov.s $fa0, $fs1331; LA32-NEXT:    bl cosf332; LA32-NEXT:    fmov.s $fs1, $fa0333; LA32-NEXT:    fmov.s $fa0, $fs0334; LA32-NEXT:    bl cosf335; LA32-NEXT:    fst.s $fa0, $fp, 12336; LA32-NEXT:    fst.s $fs1, $fp, 8337; LA32-NEXT:    fst.s $fs3, $fp, 4338; LA32-NEXT:    fst.s $fs2, $fp, 0339; LA32-NEXT:    fld.d $fs3, $sp, 8 # 8-byte Folded Reload340; LA32-NEXT:    fld.d $fs2, $sp, 16 # 8-byte Folded Reload341; LA32-NEXT:    fld.d $fs1, $sp, 24 # 8-byte Folded Reload342; LA32-NEXT:    fld.d $fs0, $sp, 32 # 8-byte Folded Reload343; LA32-NEXT:    ld.w $fp, $sp, 40 # 4-byte Folded Reload344; LA32-NEXT:    ld.w $ra, $sp, 44 # 4-byte Folded Reload345; LA32-NEXT:    addi.w $sp, $sp, 48346; LA32-NEXT:    ret347;348; LA64-LABEL: test_sincos_v2f32:349; LA64:       # %bb.0:350; LA64-NEXT:    addi.d $sp, $sp, -80351; LA64-NEXT:    st.d $ra, $sp, 72 # 8-byte Folded Spill352; LA64-NEXT:    vst $vr0, $sp, 16 # 16-byte Folded Spill353; LA64-NEXT:    vreplvei.w $vr0, $vr0, 1354; LA64-NEXT:    vst $vr0, $sp, 48 # 16-byte Folded Spill355; LA64-NEXT:    # kill: def $f0 killed $f0 killed $vr0356; LA64-NEXT:    pcaddu18i $ra, %call36(sinf)357; LA64-NEXT:    jirl $ra, $ra, 0358; LA64-NEXT:    # kill: def $f0 killed $f0 def $vr0359; LA64-NEXT:    vst $vr0, $sp, 32 # 16-byte Folded Spill360; LA64-NEXT:    vld $vr0, $sp, 16 # 16-byte Folded Reload361; LA64-NEXT:    vreplvei.w $vr0, $vr0, 0362; LA64-NEXT:    vst $vr0, $sp, 16 # 16-byte Folded Spill363; LA64-NEXT:    # kill: def $f0 killed $f0 killed $vr0364; LA64-NEXT:    pcaddu18i $ra, %call36(sinf)365; LA64-NEXT:    jirl $ra, $ra, 0366; LA64-NEXT:    # kill: def $f0 killed $f0 def $vr0367; LA64-NEXT:    vld $vr1, $sp, 32 # 16-byte Folded Reload368; LA64-NEXT:    vextrins.w $vr0, $vr1, 16369; LA64-NEXT:    vst $vr0, $sp, 32 # 16-byte Folded Spill370; LA64-NEXT:    vld $vr0, $sp, 48 # 16-byte Folded Reload371; LA64-NEXT:    # kill: def $f0 killed $f0 killed $vr0372; LA64-NEXT:    pcaddu18i $ra, %call36(cosf)373; LA64-NEXT:    jirl $ra, $ra, 0374; LA64-NEXT:    # kill: def $f0 killed $f0 def $vr0375; LA64-NEXT:    vst $vr0, $sp, 48 # 16-byte Folded Spill376; LA64-NEXT:    vld $vr0, $sp, 16 # 16-byte Folded Reload377; LA64-NEXT:    # kill: def $f0 killed $f0 killed $vr0378; LA64-NEXT:    pcaddu18i $ra, %call36(cosf)379; LA64-NEXT:    jirl $ra, $ra, 0380; LA64-NEXT:    fmov.s $fa1, $fa0381; LA64-NEXT:    vld $vr0, $sp, 48 # 16-byte Folded Reload382; LA64-NEXT:    vextrins.w $vr1, $vr0, 16383; LA64-NEXT:    vld $vr0, $sp, 32 # 16-byte Folded Reload384; LA64-NEXT:    ld.d $ra, $sp, 72 # 8-byte Folded Reload385; LA64-NEXT:    addi.d $sp, $sp, 80386; LA64-NEXT:    ret387  %result = call { <2 x float>, <2 x float> } @llvm.sincos.v2f32(<2 x float> %a)388  ret { <2 x float>, <2 x float> } %result389}390 391define { <3 x float>, <3 x float> } @test_sincos_v3f32(<3 x float> %a) #0 {392; LA32-LABEL: test_sincos_v3f32:393; LA32:       # %bb.0:394; LA32-NEXT:    addi.w $sp, $sp, -64395; LA32-NEXT:    st.w $ra, $sp, 60 # 4-byte Folded Spill396; LA32-NEXT:    st.w $fp, $sp, 56 # 4-byte Folded Spill397; LA32-NEXT:    fst.d $fs0, $sp, 48 # 8-byte Folded Spill398; LA32-NEXT:    fst.d $fs1, $sp, 40 # 8-byte Folded Spill399; LA32-NEXT:    fst.d $fs2, $sp, 32 # 8-byte Folded Spill400; LA32-NEXT:    fst.d $fs3, $sp, 24 # 8-byte Folded Spill401; LA32-NEXT:    fst.d $fs4, $sp, 16 # 8-byte Folded Spill402; LA32-NEXT:    fst.d $fs5, $sp, 8 # 8-byte Folded Spill403; LA32-NEXT:    fmov.s $fs0, $fa2404; LA32-NEXT:    fmov.s $fs1, $fa1405; LA32-NEXT:    fmov.s $fs2, $fa0406; LA32-NEXT:    move $fp, $a0407; LA32-NEXT:    bl sinf408; LA32-NEXT:    fmov.s $fs3, $fa0409; LA32-NEXT:    fmov.s $fa0, $fs1410; LA32-NEXT:    bl sinf411; LA32-NEXT:    fmov.s $fs4, $fa0412; LA32-NEXT:    fmov.s $fa0, $fs0413; LA32-NEXT:    bl sinf414; LA32-NEXT:    fmov.s $fs5, $fa0415; LA32-NEXT:    fmov.s $fa0, $fs2416; LA32-NEXT:    bl cosf417; LA32-NEXT:    fmov.s $fs2, $fa0418; LA32-NEXT:    fmov.s $fa0, $fs1419; LA32-NEXT:    bl cosf420; LA32-NEXT:    fmov.s $fs1, $fa0421; LA32-NEXT:    fmov.s $fa0, $fs0422; LA32-NEXT:    bl cosf423; LA32-NEXT:    fst.s $fa0, $fp, 24424; LA32-NEXT:    fst.s $fs1, $fp, 20425; LA32-NEXT:    fst.s $fs2, $fp, 16426; LA32-NEXT:    fst.s $fs5, $fp, 8427; LA32-NEXT:    fst.s $fs4, $fp, 4428; LA32-NEXT:    fst.s $fs3, $fp, 0429; LA32-NEXT:    fld.d $fs5, $sp, 8 # 8-byte Folded Reload430; LA32-NEXT:    fld.d $fs4, $sp, 16 # 8-byte Folded Reload431; LA32-NEXT:    fld.d $fs3, $sp, 24 # 8-byte Folded Reload432; LA32-NEXT:    fld.d $fs2, $sp, 32 # 8-byte Folded Reload433; LA32-NEXT:    fld.d $fs1, $sp, 40 # 8-byte Folded Reload434; LA32-NEXT:    fld.d $fs0, $sp, 48 # 8-byte Folded Reload435; LA32-NEXT:    ld.w $fp, $sp, 56 # 4-byte Folded Reload436; LA32-NEXT:    ld.w $ra, $sp, 60 # 4-byte Folded Reload437; LA32-NEXT:    addi.w $sp, $sp, 64438; LA32-NEXT:    ret439;440; LA64-LABEL: test_sincos_v3f32:441; LA64:       # %bb.0:442; LA64-NEXT:    addi.d $sp, $sp, -96443; LA64-NEXT:    st.d $ra, $sp, 88 # 8-byte Folded Spill444; LA64-NEXT:    vst $vr0, $sp, 48 # 16-byte Folded Spill445; LA64-NEXT:    vreplvei.w $vr0, $vr0, 1446; LA64-NEXT:    vst $vr0, $sp, 32 # 16-byte Folded Spill447; LA64-NEXT:    # kill: def $f0 killed $f0 killed $vr0448; LA64-NEXT:    pcaddu18i $ra, %call36(sinf)449; LA64-NEXT:    jirl $ra, $ra, 0450; LA64-NEXT:    # kill: def $f0 killed $f0 def $vr0451; LA64-NEXT:    vst $vr0, $sp, 64 # 16-byte Folded Spill452; LA64-NEXT:    vld $vr0, $sp, 48 # 16-byte Folded Reload453; LA64-NEXT:    vreplvei.w $vr0, $vr0, 0454; LA64-NEXT:    vst $vr0, $sp, 16 # 16-byte Folded Spill455; LA64-NEXT:    # kill: def $f0 killed $f0 killed $vr0456; LA64-NEXT:    pcaddu18i $ra, %call36(sinf)457; LA64-NEXT:    jirl $ra, $ra, 0458; LA64-NEXT:    # kill: def $f0 killed $f0 def $vr0459; LA64-NEXT:    vld $vr1, $sp, 64 # 16-byte Folded Reload460; LA64-NEXT:    vextrins.w $vr0, $vr1, 16461; LA64-NEXT:    vst $vr0, $sp, 64 # 16-byte Folded Spill462; LA64-NEXT:    vld $vr0, $sp, 48 # 16-byte Folded Reload463; LA64-NEXT:    vreplvei.w $vr0, $vr0, 2464; LA64-NEXT:    vst $vr0, $sp, 48 # 16-byte Folded Spill465; LA64-NEXT:    # kill: def $f0 killed $f0 killed $vr0466; LA64-NEXT:    pcaddu18i $ra, %call36(sinf)467; LA64-NEXT:    jirl $ra, $ra, 0468; LA64-NEXT:    # kill: def $f0 killed $f0 def $vr0469; LA64-NEXT:    vld $vr1, $sp, 64 # 16-byte Folded Reload470; LA64-NEXT:    vextrins.w $vr1, $vr0, 32471; LA64-NEXT:    vst $vr1, $sp, 64 # 16-byte Folded Spill472; LA64-NEXT:    vld $vr0, $sp, 32 # 16-byte Folded Reload473; LA64-NEXT:    # kill: def $f0 killed $f0 killed $vr0474; LA64-NEXT:    pcaddu18i $ra, %call36(cosf)475; LA64-NEXT:    jirl $ra, $ra, 0476; LA64-NEXT:    # kill: def $f0 killed $f0 def $vr0477; LA64-NEXT:    vst $vr0, $sp, 32 # 16-byte Folded Spill478; LA64-NEXT:    vld $vr0, $sp, 16 # 16-byte Folded Reload479; LA64-NEXT:    # kill: def $f0 killed $f0 killed $vr0480; LA64-NEXT:    pcaddu18i $ra, %call36(cosf)481; LA64-NEXT:    jirl $ra, $ra, 0482; LA64-NEXT:    # kill: def $f0 killed $f0 def $vr0483; LA64-NEXT:    vld $vr1, $sp, 32 # 16-byte Folded Reload484; LA64-NEXT:    vextrins.w $vr0, $vr1, 16485; LA64-NEXT:    vst $vr0, $sp, 32 # 16-byte Folded Spill486; LA64-NEXT:    vld $vr0, $sp, 48 # 16-byte Folded Reload487; LA64-NEXT:    # kill: def $f0 killed $f0 killed $vr0488; LA64-NEXT:    pcaddu18i $ra, %call36(cosf)489; LA64-NEXT:    jirl $ra, $ra, 0490; LA64-NEXT:    # kill: def $f0 killed $f0 def $vr0491; LA64-NEXT:    vld $vr1, $sp, 32 # 16-byte Folded Reload492; LA64-NEXT:    vextrins.w $vr1, $vr0, 32493; LA64-NEXT:    vld $vr0, $sp, 64 # 16-byte Folded Reload494; LA64-NEXT:    ld.d $ra, $sp, 88 # 8-byte Folded Reload495; LA64-NEXT:    addi.d $sp, $sp, 96496; LA64-NEXT:    ret497  %result = call { <3 x float>, <3 x float> } @llvm.sincos.v3f32(<3 x float> %a)498  ret { <3 x float>, <3 x float> } %result499}500 501define { double, double } @test_sincos_f64(double %a) #0 {502; LA32-LABEL: test_sincos_f64:503; LA32:       # %bb.0:504; LA32-NEXT:    addi.w $sp, $sp, -32505; LA32-NEXT:    st.w $ra, $sp, 28 # 4-byte Folded Spill506; LA32-NEXT:    fst.d $fs0, $sp, 16 # 8-byte Folded Spill507; LA32-NEXT:    fst.d $fs1, $sp, 8 # 8-byte Folded Spill508; LA32-NEXT:    fmov.d $fs0, $fa0509; LA32-NEXT:    bl sin510; LA32-NEXT:    fmov.d $fs1, $fa0511; LA32-NEXT:    fmov.d $fa0, $fs0512; LA32-NEXT:    bl cos513; LA32-NEXT:    fmov.d $fa1, $fa0514; LA32-NEXT:    fmov.d $fa0, $fs1515; LA32-NEXT:    fld.d $fs1, $sp, 8 # 8-byte Folded Reload516; LA32-NEXT:    fld.d $fs0, $sp, 16 # 8-byte Folded Reload517; LA32-NEXT:    ld.w $ra, $sp, 28 # 4-byte Folded Reload518; LA32-NEXT:    addi.w $sp, $sp, 32519; LA32-NEXT:    ret520;521; LA64-LABEL: test_sincos_f64:522; LA64:       # %bb.0:523; LA64-NEXT:    addi.d $sp, $sp, -32524; LA64-NEXT:    st.d $ra, $sp, 24 # 8-byte Folded Spill525; LA64-NEXT:    fst.d $fs0, $sp, 16 # 8-byte Folded Spill526; LA64-NEXT:    fst.d $fs1, $sp, 8 # 8-byte Folded Spill527; LA64-NEXT:    fmov.d $fs0, $fa0528; LA64-NEXT:    pcaddu18i $ra, %call36(sin)529; LA64-NEXT:    jirl $ra, $ra, 0530; LA64-NEXT:    fmov.d $fs1, $fa0531; LA64-NEXT:    fmov.d $fa0, $fs0532; LA64-NEXT:    pcaddu18i $ra, %call36(cos)533; LA64-NEXT:    jirl $ra, $ra, 0534; LA64-NEXT:    fmov.d $fa1, $fa0535; LA64-NEXT:    fmov.d $fa0, $fs1536; LA64-NEXT:    fld.d $fs1, $sp, 8 # 8-byte Folded Reload537; LA64-NEXT:    fld.d $fs0, $sp, 16 # 8-byte Folded Reload538; LA64-NEXT:    ld.d $ra, $sp, 24 # 8-byte Folded Reload539; LA64-NEXT:    addi.d $sp, $sp, 32540; LA64-NEXT:    ret541  %result = call { double, double } @llvm.sincos.f64(double %a)542  ret { double, double } %result543}544 545define { <2 x double>, <2 x double> } @test_sincos_v2f64(<2 x double> %a) #0 {546; LA32-LABEL: test_sincos_v2f64:547; LA32:       # %bb.0:548; LA32-NEXT:    addi.w $sp, $sp, -48549; LA32-NEXT:    st.w $ra, $sp, 44 # 4-byte Folded Spill550; LA32-NEXT:    st.w $fp, $sp, 40 # 4-byte Folded Spill551; LA32-NEXT:    fst.d $fs0, $sp, 32 # 8-byte Folded Spill552; LA32-NEXT:    fst.d $fs1, $sp, 24 # 8-byte Folded Spill553; LA32-NEXT:    fst.d $fs2, $sp, 16 # 8-byte Folded Spill554; LA32-NEXT:    fst.d $fs3, $sp, 8 # 8-byte Folded Spill555; LA32-NEXT:    fmov.d $fs0, $fa1556; LA32-NEXT:    fmov.d $fs1, $fa0557; LA32-NEXT:    move $fp, $a0558; LA32-NEXT:    bl sin559; LA32-NEXT:    fmov.d $fs2, $fa0560; LA32-NEXT:    fmov.d $fa0, $fs0561; LA32-NEXT:    bl sin562; LA32-NEXT:    fmov.d $fs3, $fa0563; LA32-NEXT:    fmov.d $fa0, $fs1564; LA32-NEXT:    bl cos565; LA32-NEXT:    fmov.d $fs1, $fa0566; LA32-NEXT:    fmov.d $fa0, $fs0567; LA32-NEXT:    bl cos568; LA32-NEXT:    fst.d $fa0, $fp, 24569; LA32-NEXT:    fst.d $fs1, $fp, 16570; LA32-NEXT:    fst.d $fs3, $fp, 8571; LA32-NEXT:    fst.d $fs2, $fp, 0572; LA32-NEXT:    fld.d $fs3, $sp, 8 # 8-byte Folded Reload573; LA32-NEXT:    fld.d $fs2, $sp, 16 # 8-byte Folded Reload574; LA32-NEXT:    fld.d $fs1, $sp, 24 # 8-byte Folded Reload575; LA32-NEXT:    fld.d $fs0, $sp, 32 # 8-byte Folded Reload576; LA32-NEXT:    ld.w $fp, $sp, 40 # 4-byte Folded Reload577; LA32-NEXT:    ld.w $ra, $sp, 44 # 4-byte Folded Reload578; LA32-NEXT:    addi.w $sp, $sp, 48579; LA32-NEXT:    ret580;581; LA64-LABEL: test_sincos_v2f64:582; LA64:       # %bb.0:583; LA64-NEXT:    addi.d $sp, $sp, -80584; LA64-NEXT:    st.d $ra, $sp, 72 # 8-byte Folded Spill585; LA64-NEXT:    vst $vr0, $sp, 16 # 16-byte Folded Spill586; LA64-NEXT:    vreplvei.d $vr0, $vr0, 1587; LA64-NEXT:    vst $vr0, $sp, 48 # 16-byte Folded Spill588; LA64-NEXT:    # kill: def $f0_64 killed $f0_64 killed $vr0589; LA64-NEXT:    pcaddu18i $ra, %call36(sin)590; LA64-NEXT:    jirl $ra, $ra, 0591; LA64-NEXT:    # kill: def $f0_64 killed $f0_64 def $vr0592; LA64-NEXT:    vst $vr0, $sp, 32 # 16-byte Folded Spill593; LA64-NEXT:    vld $vr0, $sp, 16 # 16-byte Folded Reload594; LA64-NEXT:    vreplvei.d $vr0, $vr0, 0595; LA64-NEXT:    vst $vr0, $sp, 16 # 16-byte Folded Spill596; LA64-NEXT:    # kill: def $f0_64 killed $f0_64 killed $vr0597; LA64-NEXT:    pcaddu18i $ra, %call36(sin)598; LA64-NEXT:    jirl $ra, $ra, 0599; LA64-NEXT:    # kill: def $f0_64 killed $f0_64 def $vr0600; LA64-NEXT:    vld $vr1, $sp, 32 # 16-byte Folded Reload601; LA64-NEXT:    vextrins.d $vr0, $vr1, 16602; LA64-NEXT:    vst $vr0, $sp, 32 # 16-byte Folded Spill603; LA64-NEXT:    vld $vr0, $sp, 48 # 16-byte Folded Reload604; LA64-NEXT:    # kill: def $f0_64 killed $f0_64 killed $vr0605; LA64-NEXT:    pcaddu18i $ra, %call36(cos)606; LA64-NEXT:    jirl $ra, $ra, 0607; LA64-NEXT:    # kill: def $f0_64 killed $f0_64 def $vr0608; LA64-NEXT:    vst $vr0, $sp, 48 # 16-byte Folded Spill609; LA64-NEXT:    vld $vr0, $sp, 16 # 16-byte Folded Reload610; LA64-NEXT:    # kill: def $f0_64 killed $f0_64 killed $vr0611; LA64-NEXT:    pcaddu18i $ra, %call36(cos)612; LA64-NEXT:    jirl $ra, $ra, 0613; LA64-NEXT:    fmov.d $fa1, $fa0614; LA64-NEXT:    vld $vr0, $sp, 48 # 16-byte Folded Reload615; LA64-NEXT:    vextrins.d $vr1, $vr0, 16616; LA64-NEXT:    vld $vr0, $sp, 32 # 16-byte Folded Reload617; LA64-NEXT:    ld.d $ra, $sp, 72 # 8-byte Folded Reload618; LA64-NEXT:    addi.d $sp, $sp, 80619; LA64-NEXT:    ret620  %result = call { <2 x double>, <2 x double> } @llvm.sincos.v2f64(<2 x double> %a)621  ret { <2 x double>, <2 x double> } %result622}623 624define { fp128, fp128 } @test_sincos_f128(fp128 %a) #0 {625; LA32-LABEL: test_sincos_f128:626; LA32:       # %bb.0:627; LA32-NEXT:    addi.w $sp, $sp, -96628; LA32-NEXT:    st.w $ra, $sp, 92 # 4-byte Folded Spill629; LA32-NEXT:    st.w $fp, $sp, 88 # 4-byte Folded Spill630; LA32-NEXT:    st.w $s0, $sp, 84 # 4-byte Folded Spill631; LA32-NEXT:    st.w $s1, $sp, 80 # 4-byte Folded Spill632; LA32-NEXT:    st.w $s2, $sp, 76 # 4-byte Folded Spill633; LA32-NEXT:    st.w $s3, $sp, 72 # 4-byte Folded Spill634; LA32-NEXT:    ld.w $s0, $a1, 0635; LA32-NEXT:    ld.w $s1, $a1, 4636; LA32-NEXT:    ld.w $s2, $a1, 8637; LA32-NEXT:    ld.w $s3, $a1, 12638; LA32-NEXT:    move $fp, $a0639; LA32-NEXT:    st.w $s3, $sp, 52640; LA32-NEXT:    st.w $s2, $sp, 48641; LA32-NEXT:    st.w $s1, $sp, 44642; LA32-NEXT:    addi.w $a0, $sp, 56643; LA32-NEXT:    addi.w $a1, $sp, 40644; LA32-NEXT:    st.w $s0, $sp, 40645; LA32-NEXT:    bl sinl646; LA32-NEXT:    st.w $s3, $sp, 20647; LA32-NEXT:    st.w $s2, $sp, 16648; LA32-NEXT:    st.w $s1, $sp, 12649; LA32-NEXT:    addi.w $a0, $sp, 24650; LA32-NEXT:    addi.w $a1, $sp, 8651; LA32-NEXT:    st.w $s0, $sp, 8652; LA32-NEXT:    bl cosl653; LA32-NEXT:    ld.w $a0, $sp, 56654; LA32-NEXT:    ld.w $a1, $sp, 60655; LA32-NEXT:    ld.w $a2, $sp, 64656; LA32-NEXT:    ld.w $a3, $sp, 68657; LA32-NEXT:    ld.w $a4, $sp, 36658; LA32-NEXT:    ld.w $a5, $sp, 32659; LA32-NEXT:    ld.w $a6, $sp, 28660; LA32-NEXT:    ld.w $a7, $sp, 24661; LA32-NEXT:    st.w $a4, $fp, 28662; LA32-NEXT:    st.w $a5, $fp, 24663; LA32-NEXT:    st.w $a6, $fp, 20664; LA32-NEXT:    st.w $a7, $fp, 16665; LA32-NEXT:    st.w $a3, $fp, 12666; LA32-NEXT:    st.w $a2, $fp, 8667; LA32-NEXT:    st.w $a1, $fp, 4668; LA32-NEXT:    st.w $a0, $fp, 0669; LA32-NEXT:    ld.w $s3, $sp, 72 # 4-byte Folded Reload670; LA32-NEXT:    ld.w $s2, $sp, 76 # 4-byte Folded Reload671; LA32-NEXT:    ld.w $s1, $sp, 80 # 4-byte Folded Reload672; LA32-NEXT:    ld.w $s0, $sp, 84 # 4-byte Folded Reload673; LA32-NEXT:    ld.w $fp, $sp, 88 # 4-byte Folded Reload674; LA32-NEXT:    ld.w $ra, $sp, 92 # 4-byte Folded Reload675; LA32-NEXT:    addi.w $sp, $sp, 96676; LA32-NEXT:    ret677;678; LA64-LABEL: test_sincos_f128:679; LA64:       # %bb.0:680; LA64-NEXT:    addi.d $sp, $sp, -48681; LA64-NEXT:    st.d $ra, $sp, 40 # 8-byte Folded Spill682; LA64-NEXT:    st.d $fp, $sp, 32 # 8-byte Folded Spill683; LA64-NEXT:    st.d $s0, $sp, 24 # 8-byte Folded Spill684; LA64-NEXT:    st.d $s1, $sp, 16 # 8-byte Folded Spill685; LA64-NEXT:    st.d $s2, $sp, 8 # 8-byte Folded Spill686; LA64-NEXT:    st.d $s3, $sp, 0 # 8-byte Folded Spill687; LA64-NEXT:    move $fp, $a2688; LA64-NEXT:    move $s0, $a1689; LA64-NEXT:    move $s1, $a0690; LA64-NEXT:    move $a0, $a1691; LA64-NEXT:    move $a1, $a2692; LA64-NEXT:    pcaddu18i $ra, %call36(sinl)693; LA64-NEXT:    jirl $ra, $ra, 0694; LA64-NEXT:    move $s2, $a0695; LA64-NEXT:    move $s3, $a1696; LA64-NEXT:    move $a0, $s0697; LA64-NEXT:    move $a1, $fp698; LA64-NEXT:    pcaddu18i $ra, %call36(cosl)699; LA64-NEXT:    jirl $ra, $ra, 0700; LA64-NEXT:    st.d $a1, $s1, 24701; LA64-NEXT:    st.d $a0, $s1, 16702; LA64-NEXT:    st.d $s3, $s1, 8703; LA64-NEXT:    st.d $s2, $s1, 0704; LA64-NEXT:    ld.d $s3, $sp, 0 # 8-byte Folded Reload705; LA64-NEXT:    ld.d $s2, $sp, 8 # 8-byte Folded Reload706; LA64-NEXT:    ld.d $s1, $sp, 16 # 8-byte Folded Reload707; LA64-NEXT:    ld.d $s0, $sp, 24 # 8-byte Folded Reload708; LA64-NEXT:    ld.d $fp, $sp, 32 # 8-byte Folded Reload709; LA64-NEXT:    ld.d $ra, $sp, 40 # 8-byte Folded Reload710; LA64-NEXT:    addi.d $sp, $sp, 48711; LA64-NEXT:    ret712  %result = call { fp128, fp128 } @llvm.sincos.f128(fp128 %a)713  ret { fp128, fp128 } %result714}715 716define { <2 x fp128>, <2 x fp128> } @test_sincos_v2f128(<2 x fp128> %a) #0 {717; LA32-LABEL: test_sincos_v2f128:718; LA32:       # %bb.0:719; LA32-NEXT:    addi.w $sp, $sp, -176720; LA32-NEXT:    st.w $ra, $sp, 172 # 4-byte Folded Spill721; LA32-NEXT:    st.w $fp, $sp, 168 # 4-byte Folded Spill722; LA32-NEXT:    st.w $s0, $sp, 164 # 4-byte Folded Spill723; LA32-NEXT:    st.w $s1, $sp, 160 # 4-byte Folded Spill724; LA32-NEXT:    st.w $s2, $sp, 156 # 4-byte Folded Spill725; LA32-NEXT:    st.w $s3, $sp, 152 # 4-byte Folded Spill726; LA32-NEXT:    st.w $s4, $sp, 148 # 4-byte Folded Spill727; LA32-NEXT:    st.w $s5, $sp, 144 # 4-byte Folded Spill728; LA32-NEXT:    st.w $s6, $sp, 140 # 4-byte Folded Spill729; LA32-NEXT:    st.w $s7, $sp, 136 # 4-byte Folded Spill730; LA32-NEXT:    ld.w $s0, $a1, 16731; LA32-NEXT:    ld.w $s1, $a1, 20732; LA32-NEXT:    ld.w $s2, $a1, 24733; LA32-NEXT:    ld.w $s3, $a1, 28734; LA32-NEXT:    ld.w $s4, $a1, 0735; LA32-NEXT:    ld.w $s5, $a1, 4736; LA32-NEXT:    ld.w $s6, $a1, 8737; LA32-NEXT:    ld.w $s7, $a1, 12738; LA32-NEXT:    move $fp, $a0739; LA32-NEXT:    st.w $s7, $sp, 52740; LA32-NEXT:    st.w $s6, $sp, 48741; LA32-NEXT:    st.w $s5, $sp, 44742; LA32-NEXT:    addi.w $a0, $sp, 56743; LA32-NEXT:    addi.w $a1, $sp, 40744; LA32-NEXT:    st.w $s4, $sp, 40745; LA32-NEXT:    bl sinl746; LA32-NEXT:    st.w $s3, $sp, 116747; LA32-NEXT:    st.w $s2, $sp, 112748; LA32-NEXT:    st.w $s1, $sp, 108749; LA32-NEXT:    addi.w $a0, $sp, 120750; LA32-NEXT:    addi.w $a1, $sp, 104751; LA32-NEXT:    st.w $s0, $sp, 104752; LA32-NEXT:    bl sinl753; LA32-NEXT:    st.w $s7, $sp, 20754; LA32-NEXT:    st.w $s6, $sp, 16755; LA32-NEXT:    st.w $s5, $sp, 12756; LA32-NEXT:    addi.w $a0, $sp, 24757; LA32-NEXT:    addi.w $a1, $sp, 8758; LA32-NEXT:    st.w $s4, $sp, 8759; LA32-NEXT:    bl cosl760; LA32-NEXT:    st.w $s3, $sp, 84761; LA32-NEXT:    st.w $s2, $sp, 80762; LA32-NEXT:    st.w $s1, $sp, 76763; LA32-NEXT:    addi.w $a0, $sp, 88764; LA32-NEXT:    addi.w $a1, $sp, 72765; LA32-NEXT:    st.w $s0, $sp, 72766; LA32-NEXT:    bl cosl767; LA32-NEXT:    ld.w $a0, $sp, 56768; LA32-NEXT:    ld.w $a1, $sp, 60769; LA32-NEXT:    ld.w $a2, $sp, 64770; LA32-NEXT:    ld.w $a3, $sp, 68771; LA32-NEXT:    ld.w $a4, $sp, 120772; LA32-NEXT:    ld.w $a5, $sp, 124773; LA32-NEXT:    ld.w $a6, $sp, 128774; LA32-NEXT:    ld.w $a7, $sp, 132775; LA32-NEXT:    ld.w $t0, $sp, 24776; LA32-NEXT:    ld.w $t1, $sp, 28777; LA32-NEXT:    ld.w $t2, $sp, 32778; LA32-NEXT:    ld.w $t3, $sp, 36779; LA32-NEXT:    ld.w $t4, $sp, 100780; LA32-NEXT:    ld.w $t5, $sp, 96781; LA32-NEXT:    ld.w $t6, $sp, 92782; LA32-NEXT:    ld.w $t7, $sp, 88783; LA32-NEXT:    st.w $t4, $fp, 60784; LA32-NEXT:    st.w $t5, $fp, 56785; LA32-NEXT:    st.w $t6, $fp, 52786; LA32-NEXT:    st.w $t7, $fp, 48787; LA32-NEXT:    st.w $t3, $fp, 44788; LA32-NEXT:    st.w $t2, $fp, 40789; LA32-NEXT:    st.w $t1, $fp, 36790; LA32-NEXT:    st.w $t0, $fp, 32791; LA32-NEXT:    st.w $a7, $fp, 28792; LA32-NEXT:    st.w $a6, $fp, 24793; LA32-NEXT:    st.w $a5, $fp, 20794; LA32-NEXT:    st.w $a4, $fp, 16795; LA32-NEXT:    st.w $a3, $fp, 12796; LA32-NEXT:    st.w $a2, $fp, 8797; LA32-NEXT:    st.w $a1, $fp, 4798; LA32-NEXT:    st.w $a0, $fp, 0799; LA32-NEXT:    ld.w $s7, $sp, 136 # 4-byte Folded Reload800; LA32-NEXT:    ld.w $s6, $sp, 140 # 4-byte Folded Reload801; LA32-NEXT:    ld.w $s5, $sp, 144 # 4-byte Folded Reload802; LA32-NEXT:    ld.w $s4, $sp, 148 # 4-byte Folded Reload803; LA32-NEXT:    ld.w $s3, $sp, 152 # 4-byte Folded Reload804; LA32-NEXT:    ld.w $s2, $sp, 156 # 4-byte Folded Reload805; LA32-NEXT:    ld.w $s1, $sp, 160 # 4-byte Folded Reload806; LA32-NEXT:    ld.w $s0, $sp, 164 # 4-byte Folded Reload807; LA32-NEXT:    ld.w $fp, $sp, 168 # 4-byte Folded Reload808; LA32-NEXT:    ld.w $ra, $sp, 172 # 4-byte Folded Reload809; LA32-NEXT:    addi.w $sp, $sp, 176810; LA32-NEXT:    ret811;812; LA64-LABEL: test_sincos_v2f128:813; LA64:       # %bb.0:814; LA64-NEXT:    addi.d $sp, $sp, -96815; LA64-NEXT:    st.d $ra, $sp, 88 # 8-byte Folded Spill816; LA64-NEXT:    st.d $fp, $sp, 80 # 8-byte Folded Spill817; LA64-NEXT:    st.d $s0, $sp, 72 # 8-byte Folded Spill818; LA64-NEXT:    st.d $s1, $sp, 64 # 8-byte Folded Spill819; LA64-NEXT:    st.d $s2, $sp, 56 # 8-byte Folded Spill820; LA64-NEXT:    st.d $s3, $sp, 48 # 8-byte Folded Spill821; LA64-NEXT:    st.d $s4, $sp, 40 # 8-byte Folded Spill822; LA64-NEXT:    st.d $s5, $sp, 32 # 8-byte Folded Spill823; LA64-NEXT:    st.d $s6, $sp, 24 # 8-byte Folded Spill824; LA64-NEXT:    st.d $s7, $sp, 16 # 8-byte Folded Spill825; LA64-NEXT:    ld.d $fp, $a1, 16826; LA64-NEXT:    ld.d $s0, $a1, 24827; LA64-NEXT:    ld.d $s1, $a1, 0828; LA64-NEXT:    ld.d $s2, $a1, 8829; LA64-NEXT:    move $s3, $a0830; LA64-NEXT:    move $a0, $s1831; LA64-NEXT:    move $a1, $s2832; LA64-NEXT:    pcaddu18i $ra, %call36(sinl)833; LA64-NEXT:    jirl $ra, $ra, 0834; LA64-NEXT:    move $s4, $a0835; LA64-NEXT:    move $s5, $a1836; LA64-NEXT:    move $a0, $fp837; LA64-NEXT:    move $a1, $s0838; LA64-NEXT:    pcaddu18i $ra, %call36(sinl)839; LA64-NEXT:    jirl $ra, $ra, 0840; LA64-NEXT:    move $s6, $a0841; LA64-NEXT:    move $s7, $a1842; LA64-NEXT:    move $a0, $s1843; LA64-NEXT:    move $a1, $s2844; LA64-NEXT:    pcaddu18i $ra, %call36(cosl)845; LA64-NEXT:    jirl $ra, $ra, 0846; LA64-NEXT:    move $s1, $a0847; LA64-NEXT:    move $s2, $a1848; LA64-NEXT:    move $a0, $fp849; LA64-NEXT:    move $a1, $s0850; LA64-NEXT:    pcaddu18i $ra, %call36(cosl)851; LA64-NEXT:    jirl $ra, $ra, 0852; LA64-NEXT:    st.d $a1, $s3, 56853; LA64-NEXT:    st.d $a0, $s3, 48854; LA64-NEXT:    st.d $s2, $s3, 40855; LA64-NEXT:    st.d $s1, $s3, 32856; LA64-NEXT:    st.d $s7, $s3, 24857; LA64-NEXT:    st.d $s6, $s3, 16858; LA64-NEXT:    st.d $s5, $s3, 8859; LA64-NEXT:    st.d $s4, $s3, 0860; LA64-NEXT:    ld.d $s7, $sp, 16 # 8-byte Folded Reload861; LA64-NEXT:    ld.d $s6, $sp, 24 # 8-byte Folded Reload862; LA64-NEXT:    ld.d $s5, $sp, 32 # 8-byte Folded Reload863; LA64-NEXT:    ld.d $s4, $sp, 40 # 8-byte Folded Reload864; LA64-NEXT:    ld.d $s3, $sp, 48 # 8-byte Folded Reload865; LA64-NEXT:    ld.d $s2, $sp, 56 # 8-byte Folded Reload866; LA64-NEXT:    ld.d $s1, $sp, 64 # 8-byte Folded Reload867; LA64-NEXT:    ld.d $s0, $sp, 72 # 8-byte Folded Reload868; LA64-NEXT:    ld.d $fp, $sp, 80 # 8-byte Folded Reload869; LA64-NEXT:    ld.d $ra, $sp, 88 # 8-byte Folded Reload870; LA64-NEXT:    addi.d $sp, $sp, 96871; LA64-NEXT:    ret872  %result = call { <2 x fp128>, <2 x fp128> } @llvm.sincos.v2f128(<2 x fp128> %a)873  ret { <2 x fp128>, <2 x fp128> } %result874}875 876attributes #0 = { nounwind }877