brintos

brintos / llvm-project-archived public Read only

0
0
Text · 43.1 KiB · f02ac2c Raw
1488 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=hexagon < %s | FileCheck -check-prefix=BASE %s3; RUN: llc -mtriple=hexagon-unknown-linux-gnu < %s | FileCheck -check-prefix=GNU %s4; RUN: llc -mtriple=hexagon-unknown-linux-musl < %s | FileCheck -check-prefix=MUSL %s5 6define { half, half } @test_sincos_f16(half %a) #0 {7; BASE-LABEL: test_sincos_f16:8; BASE:       // %bb.0:9; BASE-NEXT:    {10; BASE-NEXT:     call __extendhfsf211; BASE-NEXT:     memd(r29+#-16) = r17:1612; BASE-NEXT:     allocframe(#8)13; BASE-NEXT:    } // 8-byte Folded Spill14; BASE-NEXT:    {15; BASE-NEXT:     call sinf16; BASE-NEXT:     r16 = r017; BASE-NEXT:    }18; BASE-NEXT:    {19; BASE-NEXT:     call __truncsfhf220; BASE-NEXT:    }21; BASE-NEXT:    {22; BASE-NEXT:     call cosf23; BASE-NEXT:     r17 = r024; BASE-NEXT:     r0 = r1625; BASE-NEXT:    }26; BASE-NEXT:    {27; BASE-NEXT:     call __truncsfhf228; BASE-NEXT:    }29; BASE-NEXT:    {30; BASE-NEXT:     r1:0 = combine(r0,r17)31; BASE-NEXT:     r17:16 = memd(r29+#0)32; BASE-NEXT:     dealloc_return33; BASE-NEXT:    } // 8-byte Folded Reload34;35; GNU-LABEL: test_sincos_f16:36; GNU:       // %bb.0:37; GNU-NEXT:    {38; GNU-NEXT:     call __extendhfsf239; GNU-NEXT:     memd(r29+#-16) = r17:1640; GNU-NEXT:     allocframe(#16)41; GNU-NEXT:    } // 8-byte Folded Spill42; GNU-NEXT:    {43; GNU-NEXT:     call sincosf44; GNU-NEXT:     r1 = add(r29,#0)45; GNU-NEXT:     r2 = add(r29,#4)46; GNU-NEXT:    }47; GNU-NEXT:    {48; GNU-NEXT:     call __truncsfhf249; GNU-NEXT:     r0 = memw(r29+#0)50; GNU-NEXT:    }51; GNU-NEXT:    {52; GNU-NEXT:     call __truncsfhf253; GNU-NEXT:     r16 = r054; GNU-NEXT:     r0 = memw(r29+#4)55; GNU-NEXT:    }56; GNU-NEXT:    {57; GNU-NEXT:     r1:0 = combine(r0,r16)58; GNU-NEXT:     r17:16 = memd(r29+#8)59; GNU-NEXT:     dealloc_return60; GNU-NEXT:    } // 8-byte Folded Reload61;62; MUSL-LABEL: test_sincos_f16:63; MUSL:       // %bb.0:64; MUSL-NEXT:    {65; MUSL-NEXT:     call __extendhfsf266; MUSL-NEXT:     memd(r29+#-16) = r17:1667; MUSL-NEXT:     allocframe(#8)68; MUSL-NEXT:    } // 8-byte Folded Spill69; MUSL-NEXT:    {70; MUSL-NEXT:     call sinf71; MUSL-NEXT:     r16 = r072; MUSL-NEXT:    }73; MUSL-NEXT:    {74; MUSL-NEXT:     call __truncsfhf275; MUSL-NEXT:    }76; MUSL-NEXT:    {77; MUSL-NEXT:     call cosf78; MUSL-NEXT:     r17 = r079; MUSL-NEXT:     r0 = r1680; MUSL-NEXT:    }81; MUSL-NEXT:    {82; MUSL-NEXT:     call __truncsfhf283; MUSL-NEXT:    }84; MUSL-NEXT:    {85; MUSL-NEXT:     r1:0 = combine(r0,r17)86; MUSL-NEXT:     r17:16 = memd(r29+#0)87; MUSL-NEXT:     dealloc_return88; MUSL-NEXT:    } // 8-byte Folded Reload89  %result = call { half, half } @llvm.sincos.f16(half %a)90  ret { half, half } %result91}92 93define half @test_sincos_f16_only_use_sin(half %a) #0 {94; BASE-LABEL: test_sincos_f16_only_use_sin:95; BASE:       // %bb.0:96; BASE-NEXT:    {97; BASE-NEXT:     call __extendhfsf298; BASE-NEXT:     allocframe(r29,#0):raw99; BASE-NEXT:    }100; BASE-NEXT:    {101; BASE-NEXT:     call sinf102; BASE-NEXT:    }103; BASE-NEXT:    {104; BASE-NEXT:     call __truncsfhf2105; BASE-NEXT:    }106; BASE-NEXT:    {107; BASE-NEXT:     r31:30 = dealloc_return(r30):raw108; BASE-NEXT:    }109;110; GNU-LABEL: test_sincos_f16_only_use_sin:111; GNU:       // %bb.0:112; GNU-NEXT:    {113; GNU-NEXT:     call __extendhfsf2114; GNU-NEXT:     allocframe(r29,#8):raw115; GNU-NEXT:    }116; GNU-NEXT:    {117; GNU-NEXT:     call sincosf118; GNU-NEXT:     r1 = add(r29,#0)119; GNU-NEXT:     r2 = add(r29,#4)120; GNU-NEXT:    }121; GNU-NEXT:    {122; GNU-NEXT:     call __truncsfhf2123; GNU-NEXT:     r0 = memw(r29+#0)124; GNU-NEXT:    }125; GNU-NEXT:    {126; GNU-NEXT:     r31:30 = dealloc_return(r30):raw127; GNU-NEXT:    }128;129; MUSL-LABEL: test_sincos_f16_only_use_sin:130; MUSL:       // %bb.0:131; MUSL-NEXT:    {132; MUSL-NEXT:     call __extendhfsf2133; MUSL-NEXT:     allocframe(r29,#0):raw134; MUSL-NEXT:    }135; MUSL-NEXT:    {136; MUSL-NEXT:     call sinf137; MUSL-NEXT:    }138; MUSL-NEXT:    {139; MUSL-NEXT:     call __truncsfhf2140; MUSL-NEXT:    }141; MUSL-NEXT:    {142; MUSL-NEXT:     r31:30 = dealloc_return(r30):raw143; MUSL-NEXT:    }144  %result = call { half, half } @llvm.sincos.f16(half %a)145  %result.0 = extractvalue { half, half } %result, 0146  ret half %result.0147}148 149define half @test_sincos_f16_only_use_cos(half %a) #0 {150; BASE-LABEL: test_sincos_f16_only_use_cos:151; BASE:       // %bb.0:152; BASE-NEXT:    {153; BASE-NEXT:     call __extendhfsf2154; BASE-NEXT:     allocframe(r29,#0):raw155; BASE-NEXT:    }156; BASE-NEXT:    {157; BASE-NEXT:     call cosf158; BASE-NEXT:    }159; BASE-NEXT:    {160; BASE-NEXT:     call __truncsfhf2161; BASE-NEXT:    }162; BASE-NEXT:    {163; BASE-NEXT:     r31:30 = dealloc_return(r30):raw164; BASE-NEXT:    }165;166; GNU-LABEL: test_sincos_f16_only_use_cos:167; GNU:       // %bb.0:168; GNU-NEXT:    {169; GNU-NEXT:     call __extendhfsf2170; GNU-NEXT:     allocframe(r29,#8):raw171; GNU-NEXT:    }172; GNU-NEXT:    {173; GNU-NEXT:     call sincosf174; GNU-NEXT:     r1 = add(r29,#0)175; GNU-NEXT:     r2 = add(r29,#4)176; GNU-NEXT:    }177; GNU-NEXT:    {178; GNU-NEXT:     call __truncsfhf2179; GNU-NEXT:     r0 = memw(r29+#4)180; GNU-NEXT:    }181; GNU-NEXT:    {182; GNU-NEXT:     r31:30 = dealloc_return(r30):raw183; GNU-NEXT:    }184;185; MUSL-LABEL: test_sincos_f16_only_use_cos:186; MUSL:       // %bb.0:187; MUSL-NEXT:    {188; MUSL-NEXT:     call __extendhfsf2189; MUSL-NEXT:     allocframe(r29,#0):raw190; MUSL-NEXT:    }191; MUSL-NEXT:    {192; MUSL-NEXT:     call cosf193; MUSL-NEXT:    }194; MUSL-NEXT:    {195; MUSL-NEXT:     call __truncsfhf2196; MUSL-NEXT:    }197; MUSL-NEXT:    {198; MUSL-NEXT:     r31:30 = dealloc_return(r30):raw199; MUSL-NEXT:    }200  %result = call { half, half } @llvm.sincos.f16(half %a)201  %result.1 = extractvalue { half, half } %result, 1202  ret half %result.1203}204 205define { <2 x half>, <2 x half> } @test_sincos_v2f16(<2 x half> %a) #0 {206; BASE-LABEL: test_sincos_v2f16:207; BASE:       // %bb.0:208; BASE-NEXT:    {209; BASE-NEXT:     r17:16 = combine(r3,r0)210; BASE-NEXT:     r0 = r2211; BASE-NEXT:     memd(r29+#-16) = r17:16212; BASE-NEXT:     allocframe(#24)213; BASE-NEXT:    } // 8-byte Folded Spill214; BASE-NEXT:    {215; BASE-NEXT:     call __extendhfsf2216; BASE-NEXT:     memd(r29+#8) = r19:18217; BASE-NEXT:     memd(r29+#0) = r21:20218; BASE-NEXT:    } // 8-byte Folded Spill219; BASE-NEXT:    {220; BASE-NEXT:     call sinf221; BASE-NEXT:     r18 = r0222; BASE-NEXT:    }223; BASE-NEXT:    {224; BASE-NEXT:     call __truncsfhf2225; BASE-NEXT:    }226; BASE-NEXT:    {227; BASE-NEXT:     call __extendhfsf2228; BASE-NEXT:     r19 = r0229; BASE-NEXT:     r0 = r17230; BASE-NEXT:    }231; BASE-NEXT:    {232; BASE-NEXT:     call sinf233; BASE-NEXT:     r17 = r0234; BASE-NEXT:    }235; BASE-NEXT:    {236; BASE-NEXT:     call __truncsfhf2237; BASE-NEXT:    }238; BASE-NEXT:    {239; BASE-NEXT:     call cosf240; BASE-NEXT:     r20 = r0241; BASE-NEXT:     r0 = r18242; BASE-NEXT:    }243; BASE-NEXT:    {244; BASE-NEXT:     call __truncsfhf2245; BASE-NEXT:    }246; BASE-NEXT:    {247; BASE-NEXT:     call cosf248; BASE-NEXT:     r18 = r0249; BASE-NEXT:     r0 = r17250; BASE-NEXT:    }251; BASE-NEXT:    {252; BASE-NEXT:     call __truncsfhf2253; BASE-NEXT:    }254; BASE-NEXT:    {255; BASE-NEXT:     memh(r16+#6) = r0256; BASE-NEXT:     memh(r16+#4) = r18257; BASE-NEXT:    }258; BASE-NEXT:    {259; BASE-NEXT:     memh(r16+#2) = r20260; BASE-NEXT:     memh(r16+#0) = r19261; BASE-NEXT:    }262; BASE-NEXT:    {263; BASE-NEXT:     r17:16 = memd(r29+#16)264; BASE-NEXT:     r19:18 = memd(r29+#8)265; BASE-NEXT:    } // 8-byte Folded Reload266; BASE-NEXT:    {267; BASE-NEXT:     r21:20 = memd(r29+#0)268; BASE-NEXT:     dealloc_return269; BASE-NEXT:    } // 8-byte Folded Reload270;271; GNU-LABEL: test_sincos_v2f16:272; GNU:       // %bb.0:273; GNU-NEXT:    {274; GNU-NEXT:     r17:16 = combine(r3,r0)275; GNU-NEXT:     r0 = r2276; GNU-NEXT:     memd(r29+#-16) = r17:16277; GNU-NEXT:     allocframe(#32)278; GNU-NEXT:    } // 8-byte Folded Spill279; GNU-NEXT:    {280; GNU-NEXT:     call __extendhfsf2281; GNU-NEXT:     memd(r29+#16) = r19:18282; GNU-NEXT:    } // 8-byte Folded Spill283; GNU-NEXT:    {284; GNU-NEXT:     call sincosf285; GNU-NEXT:     r1 = add(r29,#8)286; GNU-NEXT:     r2 = add(r29,#12)287; GNU-NEXT:    }288; GNU-NEXT:    {289; GNU-NEXT:     call __extendhfsf2290; GNU-NEXT:     r0 = r17291; GNU-NEXT:    }292; GNU-NEXT:    {293; GNU-NEXT:     call sincosf294; GNU-NEXT:     r1 = add(r29,#0)295; GNU-NEXT:     r2 = add(r29,#4)296; GNU-NEXT:    }297; GNU-NEXT:    {298; GNU-NEXT:     call __truncsfhf2299; GNU-NEXT:     r0 = memw(r29+#8)300; GNU-NEXT:    }301; GNU-NEXT:    {302; GNU-NEXT:     call __truncsfhf2303; GNU-NEXT:     r17 = r0304; GNU-NEXT:     r0 = memw(r29+#0)305; GNU-NEXT:    }306; GNU-NEXT:    {307; GNU-NEXT:     call __truncsfhf2308; GNU-NEXT:     r18 = r0309; GNU-NEXT:     r0 = memw(r29+#12)310; GNU-NEXT:    }311; GNU-NEXT:    {312; GNU-NEXT:     call __truncsfhf2313; GNU-NEXT:     r19 = r0314; GNU-NEXT:     r0 = memw(r29+#4)315; GNU-NEXT:    }316; GNU-NEXT:    {317; GNU-NEXT:     memh(r16+#6) = r0318; GNU-NEXT:     memh(r16+#4) = r19319; GNU-NEXT:    }320; GNU-NEXT:    {321; GNU-NEXT:     memh(r16+#2) = r18322; GNU-NEXT:     memh(r16+#0) = r17323; GNU-NEXT:    }324; GNU-NEXT:    {325; GNU-NEXT:     r17:16 = memd(r29+#24)326; GNU-NEXT:     r19:18 = memd(r29+#16)327; GNU-NEXT:    } // 8-byte Folded Reload328; GNU-NEXT:    {329; GNU-NEXT:     r31:30 = dealloc_return(r30):raw330; GNU-NEXT:    }331;332; MUSL-LABEL: test_sincos_v2f16:333; MUSL:       // %bb.0:334; MUSL-NEXT:    {335; MUSL-NEXT:     r17:16 = combine(r3,r0)336; MUSL-NEXT:     r0 = r2337; MUSL-NEXT:     memd(r29+#-16) = r17:16338; MUSL-NEXT:     allocframe(#24)339; MUSL-NEXT:    } // 8-byte Folded Spill340; MUSL-NEXT:    {341; MUSL-NEXT:     call __extendhfsf2342; MUSL-NEXT:     memd(r29+#8) = r19:18343; MUSL-NEXT:     memd(r29+#0) = r21:20344; MUSL-NEXT:    } // 8-byte Folded Spill345; MUSL-NEXT:    {346; MUSL-NEXT:     call sinf347; MUSL-NEXT:     r18 = r0348; MUSL-NEXT:    }349; MUSL-NEXT:    {350; MUSL-NEXT:     call __truncsfhf2351; MUSL-NEXT:    }352; MUSL-NEXT:    {353; MUSL-NEXT:     call __extendhfsf2354; MUSL-NEXT:     r19 = r0355; MUSL-NEXT:     r0 = r17356; MUSL-NEXT:    }357; MUSL-NEXT:    {358; MUSL-NEXT:     call sinf359; MUSL-NEXT:     r17 = r0360; MUSL-NEXT:    }361; MUSL-NEXT:    {362; MUSL-NEXT:     call __truncsfhf2363; MUSL-NEXT:    }364; MUSL-NEXT:    {365; MUSL-NEXT:     call cosf366; MUSL-NEXT:     r20 = r0367; MUSL-NEXT:     r0 = r18368; MUSL-NEXT:    }369; MUSL-NEXT:    {370; MUSL-NEXT:     call __truncsfhf2371; MUSL-NEXT:    }372; MUSL-NEXT:    {373; MUSL-NEXT:     call cosf374; MUSL-NEXT:     r18 = r0375; MUSL-NEXT:     r0 = r17376; MUSL-NEXT:    }377; MUSL-NEXT:    {378; MUSL-NEXT:     call __truncsfhf2379; MUSL-NEXT:    }380; MUSL-NEXT:    {381; MUSL-NEXT:     memh(r16+#6) = r0382; MUSL-NEXT:     memh(r16+#4) = r18383; MUSL-NEXT:    }384; MUSL-NEXT:    {385; MUSL-NEXT:     memh(r16+#2) = r20386; MUSL-NEXT:     memh(r16+#0) = r19387; MUSL-NEXT:    }388; MUSL-NEXT:    {389; MUSL-NEXT:     r17:16 = memd(r29+#16)390; MUSL-NEXT:     r19:18 = memd(r29+#8)391; MUSL-NEXT:    } // 8-byte Folded Reload392; MUSL-NEXT:    {393; MUSL-NEXT:     r21:20 = memd(r29+#0)394; MUSL-NEXT:     dealloc_return395; MUSL-NEXT:    } // 8-byte Folded Reload396  %result = call { <2 x half>, <2 x half> } @llvm.sincos.v2f16(<2 x half> %a)397  ret { <2 x half>, <2 x half> } %result398}399 400define { float, float } @test_sincos_f32(float %a) #0 {401; BASE-LABEL: test_sincos_f32:402; BASE:       // %bb.0:403; BASE-NEXT:    {404; BASE-NEXT:     call sinf405; BASE-NEXT:     r16 = r0406; BASE-NEXT:     memd(r29+#-16) = r17:16407; BASE-NEXT:     allocframe(#8)408; BASE-NEXT:    } // 8-byte Folded Spill409; BASE-NEXT:    {410; BASE-NEXT:     call cosf411; BASE-NEXT:     r17 = r0412; BASE-NEXT:     r0 = r16413; BASE-NEXT:    }414; BASE-NEXT:    {415; BASE-NEXT:     r1:0 = combine(r0,r17)416; BASE-NEXT:     r17:16 = memd(r29+#0)417; BASE-NEXT:     dealloc_return418; BASE-NEXT:    } // 8-byte Folded Reload419;420; GNU-LABEL: test_sincos_f32:421; GNU:       // %bb.0:422; GNU-NEXT:    {423; GNU-NEXT:     allocframe(r29,#8):raw424; GNU-NEXT:    }425; GNU-NEXT:    {426; GNU-NEXT:     call sincosf427; GNU-NEXT:     r1 = add(r29,#0)428; GNU-NEXT:     r2 = add(r29,#4)429; GNU-NEXT:    }430; GNU-NEXT:    {431; GNU-NEXT:     r0 = memw(r29+#0)432; GNU-NEXT:     r1 = memw(r29+#4)433; GNU-NEXT:    }434; GNU-NEXT:    {435; GNU-NEXT:     r31:30 = dealloc_return(r30):raw436; GNU-NEXT:    }437;438; MUSL-LABEL: test_sincos_f32:439; MUSL:       // %bb.0:440; MUSL-NEXT:    {441; MUSL-NEXT:     call sinf442; MUSL-NEXT:     r16 = r0443; MUSL-NEXT:     memd(r29+#-16) = r17:16444; MUSL-NEXT:     allocframe(#8)445; MUSL-NEXT:    } // 8-byte Folded Spill446; MUSL-NEXT:    {447; MUSL-NEXT:     call cosf448; MUSL-NEXT:     r17 = r0449; MUSL-NEXT:     r0 = r16450; MUSL-NEXT:    }451; MUSL-NEXT:    {452; MUSL-NEXT:     r1:0 = combine(r0,r17)453; MUSL-NEXT:     r17:16 = memd(r29+#0)454; MUSL-NEXT:     dealloc_return455; MUSL-NEXT:    } // 8-byte Folded Reload456  %result = call { float, float } @llvm.sincos.f32(float %a)457  ret { float, float } %result458}459 460define { <2 x float>, <2 x float> } @test_sincos_v2f32(<2 x float> %a) #0 {461; CHECKR2-LABEL: test_sincos_v2f32:462; CHECKR2:       # %bb.0:463; CHECKR2-NEXT:    daddiu $sp, $sp, -32464; CHECKR2-NEXT:    sd $ra, 24($sp) # 8-byte Folded Spill465; CHECKR2-NEXT:    sd $16, 16($sp) # 8-byte Folded Spill466; CHECKR2-NEXT:    move $16, $4467; CHECKR2-NEXT:    dsrl $1, $4, 32468; CHECKR2-NEXT:    sll $1, $1, 0469; CHECKR2-NEXT:    mtc1 $1, $f12470; CHECKR2-NEXT:    daddiu $5, $sp, 12471; CHECKR2-NEXT:    jal sincosf472; CHECKR2-NEXT:    daddiu $6, $sp, 8473; CHECKR2-NEXT:    sll $1, $16, 0474; CHECKR2-NEXT:    mtc1 $1, $f12475; CHECKR2-NEXT:    daddiu $5, $sp, 4476; CHECKR2-NEXT:    jal sincosf477; CHECKR2-NEXT:    daddiu $6, $sp, 0478; CHECKR2-NEXT:    lwc1 $f0, 12($sp)479; CHECKR2-NEXT:    mfc1 $1, $f0480; CHECKR2-NEXT:    dsll $1, $1, 32481; CHECKR2-NEXT:    lwc1 $f0, 4($sp)482; CHECKR2-NEXT:    mfc1 $2, $f0483; CHECKR2-NEXT:    dext $2, $2, 0, 32484; CHECKR2-NEXT:    lwc1 $f0, 8($sp)485; CHECKR2-NEXT:    or $2, $2, $1486; CHECKR2-NEXT:    mfc1 $1, $f0487; CHECKR2-NEXT:    dsll $1, $1, 32488; CHECKR2-NEXT:    lwc1 $f0, 0($sp)489; CHECKR2-NEXT:    mfc1 $3, $f0490; CHECKR2-NEXT:    dext $3, $3, 0, 32491; CHECKR2-NEXT:    or $3, $3, $1492; CHECKR2-NEXT:    ld $16, 16($sp) # 8-byte Folded Reload493; CHECKR2-NEXT:    ld $ra, 24($sp) # 8-byte Folded Reload494; CHECKR2-NEXT:    jr $ra495; CHECKR2-NEXT:    daddiu $sp, $sp, 32496; BASE-LABEL: test_sincos_v2f32:497; BASE:       // %bb.0:498; BASE-NEXT:    {499; BASE-NEXT:     r17:16 = combine(r0,r2)500; BASE-NEXT:     r0 = r2501; BASE-NEXT:     memd(r29+#-16) = r17:16502; BASE-NEXT:     allocframe(#24)503; BASE-NEXT:    } // 8-byte Folded Spill504; BASE-NEXT:    {505; BASE-NEXT:     call sinf506; BASE-NEXT:     r18 = r3507; BASE-NEXT:     memd(r29+#8) = r19:18508; BASE-NEXT:     memd(r29+#0) = r21:20509; BASE-NEXT:    } // 8-byte Folded Spill510; BASE-NEXT:    {511; BASE-NEXT:     call sinf512; BASE-NEXT:     r19 = r0513; BASE-NEXT:     r0 = r18514; BASE-NEXT:    }515; BASE-NEXT:    {516; BASE-NEXT:     call cosf517; BASE-NEXT:     r20 = r0518; BASE-NEXT:     r0 = r16519; BASE-NEXT:    }520; BASE-NEXT:    {521; BASE-NEXT:     call cosf522; BASE-NEXT:     r16 = r0523; BASE-NEXT:     r0 = r18524; BASE-NEXT:    }525; BASE-NEXT:    {526; BASE-NEXT:     r1:0 = combine(r0,r16)527; BASE-NEXT:     r3:2 = combine(r20,r19)528; BASE-NEXT:    }529; BASE-NEXT:    {530; BASE-NEXT:     memd(r17+#8) = r1:0531; BASE-NEXT:     memd(r17+#0) = r3:2532; BASE-NEXT:    }533; BASE-NEXT:    {534; BASE-NEXT:     r17:16 = memd(r29+#16)535; BASE-NEXT:     r19:18 = memd(r29+#8)536; BASE-NEXT:    } // 8-byte Folded Reload537; BASE-NEXT:    {538; BASE-NEXT:     r21:20 = memd(r29+#0)539; BASE-NEXT:     dealloc_return540; BASE-NEXT:    } // 8-byte Folded Reload541;542; GNU-LABEL: test_sincos_v2f32:543; GNU:       // %bb.0:544; GNU-NEXT:    {545; GNU-NEXT:     r17:16 = combine(r0,r2)546; GNU-NEXT:     r1 = add(r0,#4)547; GNU-NEXT:     memd(r29+#-16) = r17:16548; GNU-NEXT:     allocframe(#8)549; GNU-NEXT:    } // 8-byte Folded Spill550; GNU-NEXT:    {551; GNU-NEXT:     call sincosf552; GNU-NEXT:     r2 = add(r0,#12)553; GNU-NEXT:     r0 = r3554; GNU-NEXT:    }555; GNU-NEXT:    {556; GNU-NEXT:     call sincosf557; GNU-NEXT:     r2 = add(r17,#8)558; GNU-NEXT:     r1:0 = combine(r17,r16)559; GNU-NEXT:    }560; GNU-NEXT:    {561; GNU-NEXT:     r17:16 = memd(r29+#0)562; GNU-NEXT:     dealloc_return563; GNU-NEXT:    } // 8-byte Folded Reload564;565; MUSL-LABEL: test_sincos_v2f32:566; MUSL:       // %bb.0:567; MUSL-NEXT:    {568; MUSL-NEXT:     r17:16 = combine(r0,r2)569; MUSL-NEXT:     r0 = r2570; MUSL-NEXT:     memd(r29+#-16) = r17:16571; MUSL-NEXT:     allocframe(#24)572; MUSL-NEXT:    } // 8-byte Folded Spill573; MUSL-NEXT:    {574; MUSL-NEXT:     call sinf575; MUSL-NEXT:     r18 = r3576; MUSL-NEXT:     memd(r29+#8) = r19:18577; MUSL-NEXT:     memd(r29+#0) = r21:20578; MUSL-NEXT:    } // 8-byte Folded Spill579; MUSL-NEXT:    {580; MUSL-NEXT:     call sinf581; MUSL-NEXT:     r19 = r0582; MUSL-NEXT:     r0 = r18583; MUSL-NEXT:    }584; MUSL-NEXT:    {585; MUSL-NEXT:     call cosf586; MUSL-NEXT:     r20 = r0587; MUSL-NEXT:     r0 = r16588; MUSL-NEXT:    }589; MUSL-NEXT:    {590; MUSL-NEXT:     call cosf591; MUSL-NEXT:     r16 = r0592; MUSL-NEXT:     r0 = r18593; MUSL-NEXT:    }594; MUSL-NEXT:    {595; MUSL-NEXT:     r1:0 = combine(r0,r16)596; MUSL-NEXT:     r3:2 = combine(r20,r19)597; MUSL-NEXT:    }598; MUSL-NEXT:    {599; MUSL-NEXT:     memd(r17+#8) = r1:0600; MUSL-NEXT:     memd(r17+#0) = r3:2601; MUSL-NEXT:    }602; MUSL-NEXT:    {603; MUSL-NEXT:     r17:16 = memd(r29+#16)604; MUSL-NEXT:     r19:18 = memd(r29+#8)605; MUSL-NEXT:    } // 8-byte Folded Reload606; MUSL-NEXT:    {607; MUSL-NEXT:     r21:20 = memd(r29+#0)608; MUSL-NEXT:     dealloc_return609; MUSL-NEXT:    } // 8-byte Folded Reload610  %result = call { <2 x float>, <2 x float> } @llvm.sincos.v2f32(<2 x float> %a)611  ret { <2 x float>, <2 x float> } %result612}613 614define { <3 x float>, <3 x float> } @test_sincos_v3f32(<3 x float> %a) #0 {615; CHECKR2-LABEL: test_sincos_v3f32:616; CHECKR2:       # %bb.0:617; CHECKR2-NEXT:    daddiu $sp, $sp, -48618; CHECKR2-NEXT:    sdc1 $f25, 40($sp) # 8-byte Folded Spill619; CHECKR2-NEXT:    sdc1 $f24, 32($sp) # 8-byte Folded Spill620; CHECKR2-NEXT:    sd $ra, 24($sp) # 8-byte Folded Spill621; CHECKR2-NEXT:    sd $16, 16($sp) # 8-byte Folded Spill622; CHECKR2-NEXT:    mov.s $f24, $f15623; CHECKR2-NEXT:    mov.s $f25, $f14624; CHECKR2-NEXT:    mov.s $f12, $f13625; CHECKR2-NEXT:    move $16, $4626; CHECKR2-NEXT:    daddiu $5, $sp, 4627; CHECKR2-NEXT:    jal sincosf628; CHECKR2-NEXT:    daddiu $6, $sp, 0629; CHECKR2-NEXT:    daddiu $5, $sp, 12630; CHECKR2-NEXT:    daddiu $6, $sp, 8631; CHECKR2-NEXT:    jal sincosf632; CHECKR2-NEXT:    mov.s $f12, $f25633; CHECKR2-NEXT:    daddiu $5, $16, 8634; CHECKR2-NEXT:    daddiu $6, $16, 24635; CHECKR2-NEXT:    jal sincosf636; CHECKR2-NEXT:    mov.s $f12, $f24637; CHECKR2-NEXT:    lwc1 $f0, 0($sp)638; CHECKR2-NEXT:    mfc1 $1, $f0639; CHECKR2-NEXT:    dsll $1, $1, 32640; CHECKR2-NEXT:    lwc1 $f0, 8($sp)641; CHECKR2-NEXT:    mfc1 $2, $f0642; CHECKR2-NEXT:    dext $2, $2, 0, 32643; CHECKR2-NEXT:    or $1, $2, $1644; CHECKR2-NEXT:    lwc1 $f0, 4($sp)645; CHECKR2-NEXT:    mfc1 $2, $f0646; CHECKR2-NEXT:    sd $1, 16($16)647; CHECKR2-NEXT:    dsll $1, $2, 32648; CHECKR2-NEXT:    lwc1 $f0, 12($sp)649; CHECKR2-NEXT:    mfc1 $2, $f0650; CHECKR2-NEXT:    dext $2, $2, 0, 32651; CHECKR2-NEXT:    or $1, $2, $1652; CHECKR2-NEXT:    sd $1, 0($16)653; CHECKR2-NEXT:    ld $16, 16($sp) # 8-byte Folded Reload654; CHECKR2-NEXT:    ld $ra, 24($sp) # 8-byte Folded Reload655; CHECKR2-NEXT:    ldc1 $f24, 32($sp) # 8-byte Folded Reload656; CHECKR2-NEXT:    ldc1 $f25, 40($sp) # 8-byte Folded Reload657; CHECKR2-NEXT:    jr $ra658; CHECKR2-NEXT:    daddiu $sp, $sp, 48659; BASE-LABEL: test_sincos_v3f32:660; BASE:       // %bb.0:661; BASE-NEXT:    {662; BASE-NEXT:     memd(r29+#-16) = r17:16663; BASE-NEXT:     allocframe(#32)664; BASE-NEXT:    } // 8-byte Folded Spill665; BASE-NEXT:    {666; BASE-NEXT:     r19:18 = combine(r0,r2)667; BASE-NEXT:     r0 = r2668; BASE-NEXT:     memd(r29+#16) = r19:18669; BASE-NEXT:     memd(r29+#8) = r21:20670; BASE-NEXT:    } // 8-byte Folded Spill671; BASE-NEXT:    {672; BASE-NEXT:     call sinf673; BASE-NEXT:     r21:20 = combine(r3,r4)674; BASE-NEXT:     memd(r29+#0) = r23:22675; BASE-NEXT:    } // 8-byte Folded Spill676; BASE-NEXT:    {677; BASE-NEXT:     call sinf678; BASE-NEXT:     r16 = r0679; BASE-NEXT:     r0 = r21680; BASE-NEXT:    }681; BASE-NEXT:    {682; BASE-NEXT:     call cosf683; BASE-NEXT:     r17 = r0684; BASE-NEXT:     r0 = r18685; BASE-NEXT:    }686; BASE-NEXT:    {687; BASE-NEXT:     call cosf688; BASE-NEXT:     r22 = r0689; BASE-NEXT:     r0 = r21690; BASE-NEXT:    }691; BASE-NEXT:    {692; BASE-NEXT:     call sinf693; BASE-NEXT:     r23 = r0694; BASE-NEXT:     r0 = r20695; BASE-NEXT:    }696; BASE-NEXT:    {697; BASE-NEXT:     call cosf698; BASE-NEXT:     r18 = r0699; BASE-NEXT:     r0 = r20700; BASE-NEXT:    }701; BASE-NEXT:    {702; BASE-NEXT:     memw(r19+#24) = r0703; BASE-NEXT:     memd(r19+#16) = r23:22704; BASE-NEXT:    }705; BASE-NEXT:    {706; BASE-NEXT:     memw(r19+#8) = r18707; BASE-NEXT:     memd(r19+#0) = r17:16708; BASE-NEXT:    }709; BASE-NEXT:    {710; BASE-NEXT:     r17:16 = memd(r29+#24)711; BASE-NEXT:     r19:18 = memd(r29+#16)712; BASE-NEXT:    } // 8-byte Folded Reload713; BASE-NEXT:    {714; BASE-NEXT:     r21:20 = memd(r29+#8)715; BASE-NEXT:     r23:22 = memd(r29+#0)716; BASE-NEXT:    } // 8-byte Folded Reload717; BASE-NEXT:    {718; BASE-NEXT:     r31:30 = dealloc_return(r30):raw719; BASE-NEXT:    }720;721; GNU-LABEL: test_sincos_v3f32:722; GNU:       // %bb.0:723; GNU-NEXT:    {724; GNU-NEXT:     r17:16 = combine(r4,r0)725; GNU-NEXT:     r0 = r2726; GNU-NEXT:     memd(r29+#-16) = r17:16727; GNU-NEXT:     allocframe(#32)728; GNU-NEXT:    } // 8-byte Folded Spill729; GNU-NEXT:    {730; GNU-NEXT:     r2 = add(r29,#12)731; GNU-NEXT:     r18 = r3732; GNU-NEXT:     r1 = add(r29,#8)733; GNU-NEXT:     memd(r29+#16) = r19:18734; GNU-NEXT:    } // 8-byte Folded Spill735; GNU-NEXT:    {736; GNU-NEXT:     call sincosf737; GNU-NEXT:    }738; GNU-NEXT:    {739; GNU-NEXT:     call sincosf740; GNU-NEXT:     r1 = add(r29,#0)741; GNU-NEXT:     r2 = add(r29,#4)742; GNU-NEXT:     r0 = r18743; GNU-NEXT:    }744; GNU-NEXT:    {745; GNU-NEXT:     call sincosf746; GNU-NEXT:     r1 = add(r16,#8)747; GNU-NEXT:     r2 = add(r16,#24)748; GNU-NEXT:     r0 = r17749; GNU-NEXT:    }750; GNU-NEXT:    {751; GNU-NEXT:     r0 = memw(r29+#8)752; GNU-NEXT:     r1 = memw(r29+#0)753; GNU-NEXT:    }754; GNU-NEXT:    {755; GNU-NEXT:     r2 = memw(r29+#12)756; GNU-NEXT:     r3 = memw(r29+#4)757; GNU-NEXT:    }758; GNU-NEXT:    {759; GNU-NEXT:     memd(r16+#16) = r3:2760; GNU-NEXT:     memd(r16+#0) = r1:0761; GNU-NEXT:    }762; GNU-NEXT:    {763; GNU-NEXT:     r17:16 = memd(r29+#24)764; GNU-NEXT:     r19:18 = memd(r29+#16)765; GNU-NEXT:    } // 8-byte Folded Reload766; GNU-NEXT:    {767; GNU-NEXT:     r31:30 = dealloc_return(r30):raw768; GNU-NEXT:    }769;770; MUSL-LABEL: test_sincos_v3f32:771; MUSL:       // %bb.0:772; MUSL-NEXT:    {773; MUSL-NEXT:     memd(r29+#-16) = r17:16774; MUSL-NEXT:     allocframe(#32)775; MUSL-NEXT:    } // 8-byte Folded Spill776; MUSL-NEXT:    {777; MUSL-NEXT:     r19:18 = combine(r0,r2)778; MUSL-NEXT:     r0 = r2779; MUSL-NEXT:     memd(r29+#16) = r19:18780; MUSL-NEXT:     memd(r29+#8) = r21:20781; MUSL-NEXT:    } // 8-byte Folded Spill782; MUSL-NEXT:    {783; MUSL-NEXT:     call sinf784; MUSL-NEXT:     r21:20 = combine(r3,r4)785; MUSL-NEXT:     memd(r29+#0) = r23:22786; MUSL-NEXT:    } // 8-byte Folded Spill787; MUSL-NEXT:    {788; MUSL-NEXT:     call sinf789; MUSL-NEXT:     r16 = r0790; MUSL-NEXT:     r0 = r21791; MUSL-NEXT:    }792; MUSL-NEXT:    {793; MUSL-NEXT:     call cosf794; MUSL-NEXT:     r17 = r0795; MUSL-NEXT:     r0 = r18796; MUSL-NEXT:    }797; MUSL-NEXT:    {798; MUSL-NEXT:     call cosf799; MUSL-NEXT:     r22 = r0800; MUSL-NEXT:     r0 = r21801; MUSL-NEXT:    }802; MUSL-NEXT:    {803; MUSL-NEXT:     call sinf804; MUSL-NEXT:     r23 = r0805; MUSL-NEXT:     r0 = r20806; MUSL-NEXT:    }807; MUSL-NEXT:    {808; MUSL-NEXT:     call cosf809; MUSL-NEXT:     r18 = r0810; MUSL-NEXT:     r0 = r20811; MUSL-NEXT:    }812; MUSL-NEXT:    {813; MUSL-NEXT:     memw(r19+#24) = r0814; MUSL-NEXT:     memd(r19+#16) = r23:22815; MUSL-NEXT:    }816; MUSL-NEXT:    {817; MUSL-NEXT:     memw(r19+#8) = r18818; MUSL-NEXT:     memd(r19+#0) = r17:16819; MUSL-NEXT:    }820; MUSL-NEXT:    {821; MUSL-NEXT:     r17:16 = memd(r29+#24)822; MUSL-NEXT:     r19:18 = memd(r29+#16)823; MUSL-NEXT:    } // 8-byte Folded Reload824; MUSL-NEXT:    {825; MUSL-NEXT:     r21:20 = memd(r29+#8)826; MUSL-NEXT:     r23:22 = memd(r29+#0)827; MUSL-NEXT:    } // 8-byte Folded Reload828; MUSL-NEXT:    {829; MUSL-NEXT:     r31:30 = dealloc_return(r30):raw830; MUSL-NEXT:    }831  %result = call { <3 x float>, <3 x float> } @llvm.sincos.v3f32(<3 x float> %a)832  ret { <3 x float>, <3 x float> } %result833}834 835define { double, double } @test_sincos_f64(double %a) #0 {836; BASE-LABEL: test_sincos_f64:837; BASE:       // %bb.0:838; BASE-NEXT:    {839; BASE-NEXT:     r17:16 = combine(r3,r2)840; BASE-NEXT:     memd(r29+#-16) = r17:16841; BASE-NEXT:     allocframe(#24)842; BASE-NEXT:    } // 8-byte Folded Spill843; BASE-NEXT:    {844; BASE-NEXT:     r18 = r0845; BASE-NEXT:     r1:0 = combine(r3,r2)846; BASE-NEXT:     memd(r29+#8) = r19:18847; BASE-NEXT:     memd(r29+#0) = r21:20848; BASE-NEXT:    } // 8-byte Folded Spill849; BASE-NEXT:    {850; BASE-NEXT:     call sin851; BASE-NEXT:    }852; BASE-NEXT:    {853; BASE-NEXT:     call cos854; BASE-NEXT:     r21:20 = combine(r1,r0)855; BASE-NEXT:     r1:0 = combine(r17,r16)856; BASE-NEXT:    }857; BASE-NEXT:    {858; BASE-NEXT:     memd(r18+#8) = r1:0859; BASE-NEXT:     memd(r18+#0) = r21:20860; BASE-NEXT:    }861; BASE-NEXT:    {862; BASE-NEXT:     r17:16 = memd(r29+#16)863; BASE-NEXT:     r19:18 = memd(r29+#8)864; BASE-NEXT:    } // 8-byte Folded Reload865; BASE-NEXT:    {866; BASE-NEXT:     r21:20 = memd(r29+#0)867; BASE-NEXT:     dealloc_return868; BASE-NEXT:    } // 8-byte Folded Reload869;870; GNU-LABEL: test_sincos_f64:871; GNU:       // %bb.0:872; GNU-NEXT:    {873; GNU-NEXT:     r5:4 = combine(r3,r2)874; GNU-NEXT:     r3 = add(r0,#8)875; GNU-NEXT:     r2 = r0876; GNU-NEXT:     allocframe(#0)877; GNU-NEXT:    }878; GNU-NEXT:    {879; GNU-NEXT:     call sincos880; GNU-NEXT:     r1:0 = combine(r5,r4)881; GNU-NEXT:    }882; GNU-NEXT:    {883; GNU-NEXT:     r31:30 = dealloc_return(r30):raw884; GNU-NEXT:    }885;886; MUSL-LABEL: test_sincos_f64:887; MUSL:       // %bb.0:888; MUSL-NEXT:    {889; MUSL-NEXT:     r17:16 = combine(r3,r2)890; MUSL-NEXT:     memd(r29+#-16) = r17:16891; MUSL-NEXT:     allocframe(#24)892; MUSL-NEXT:    } // 8-byte Folded Spill893; MUSL-NEXT:    {894; MUSL-NEXT:     r18 = r0895; MUSL-NEXT:     r1:0 = combine(r3,r2)896; MUSL-NEXT:     memd(r29+#8) = r19:18897; MUSL-NEXT:     memd(r29+#0) = r21:20898; MUSL-NEXT:    } // 8-byte Folded Spill899; MUSL-NEXT:    {900; MUSL-NEXT:     call sin901; MUSL-NEXT:    }902; MUSL-NEXT:    {903; MUSL-NEXT:     call cos904; MUSL-NEXT:     r21:20 = combine(r1,r0)905; MUSL-NEXT:     r1:0 = combine(r17,r16)906; MUSL-NEXT:    }907; MUSL-NEXT:    {908; MUSL-NEXT:     memd(r18+#8) = r1:0909; MUSL-NEXT:     memd(r18+#0) = r21:20910; MUSL-NEXT:    }911; MUSL-NEXT:    {912; MUSL-NEXT:     r17:16 = memd(r29+#16)913; MUSL-NEXT:     r19:18 = memd(r29+#8)914; MUSL-NEXT:    } // 8-byte Folded Reload915; MUSL-NEXT:    {916; MUSL-NEXT:     r21:20 = memd(r29+#0)917; MUSL-NEXT:     dealloc_return918; MUSL-NEXT:    } // 8-byte Folded Reload919  %result = call { double, double } @llvm.sincos.f64(double %a)920  ret { double, double } %result921}922 923define { <2 x double>, <2 x double> } @test_sincos_v2f64(<2 x double> %a) #0 {924; CHECKR2-LABEL: test_sincos_v2f64:925; CHECKR2:       # %bb.0:926; CHECKR2-NEXT:    addiu $sp, $sp, -32927; CHECKR2-NEXT:    sw $ra, 28($sp) # 4-byte Folded Spill928; CHECKR2-NEXT:    sw $18, 24($sp) # 4-byte Folded Spill929; CHECKR2-NEXT:    sw $17, 20($sp) # 4-byte Folded Spill930; CHECKR2-NEXT:    sw $16, 16($sp) # 4-byte Folded Spill931; CHECKR2-NEXT:    move $16, $7932; CHECKR2-NEXT:    move $17, $6933; CHECKR2-NEXT:    move $18, $4934; CHECKR2-NEXT:    lw $1, 48($sp)935; CHECKR2-NEXT:    lw $2, 52($sp)936; CHECKR2-NEXT:    mtc1 $2, $f12937; CHECKR2-NEXT:    mthc1 $1, $f12938; CHECKR2-NEXT:    addiu $6, $4, 8939; CHECKR2-NEXT:    jal sincos940; CHECKR2-NEXT:    addiu $7, $4, 24941; CHECKR2-NEXT:    mtc1 $16, $f12942; CHECKR2-NEXT:    mthc1 $17, $f12943; CHECKR2-NEXT:    addiu $7, $18, 16944; CHECKR2-NEXT:    jal sincos945; CHECKR2-NEXT:    move $6, $18946; CHECKR2-NEXT:    lw $16, 16($sp) # 4-byte Folded Reload947; CHECKR2-NEXT:    lw $17, 20($sp) # 4-byte Folded Reload948; CHECKR2-NEXT:    lw $18, 24($sp) # 4-byte Folded Reload949; CHECKR2-NEXT:    lw $ra, 28($sp) # 4-byte Folded Reload950; CHECKR2-NEXT:    jr $ra951; CHECKR2-NEXT:    addiu $sp, $sp, 32952; BASE-LABEL: test_sincos_v2f64:953; BASE:       // %bb.0:954; BASE-NEXT:    {955; BASE-NEXT:     r17:16 = combine(r3,r2)956; BASE-NEXT:     memd(r29+#-16) = r17:16957; BASE-NEXT:     allocframe(#40)958; BASE-NEXT:    } // 8-byte Folded Spill959; BASE-NEXT:    {960; BASE-NEXT:     r18 = r0961; BASE-NEXT:     r1:0 = combine(r3,r2)962; BASE-NEXT:     memd(r29+#24) = r19:18963; BASE-NEXT:     memd(r29+#16) = r21:20964; BASE-NEXT:    } // 8-byte Folded Spill965; BASE-NEXT:    {966; BASE-NEXT:     call sin967; BASE-NEXT:     r21:20 = combine(r5,r4)968; BASE-NEXT:     memd(r29+#8) = r23:22969; BASE-NEXT:     memd(r29+#0) = r25:24970; BASE-NEXT:    } // 8-byte Folded Spill971; BASE-NEXT:    {972; BASE-NEXT:     call sin973; BASE-NEXT:     r23:22 = combine(r1,r0)974; BASE-NEXT:     r1:0 = combine(r21,r20)975; BASE-NEXT:    }976; BASE-NEXT:    {977; BASE-NEXT:     call cos978; BASE-NEXT:     r25:24 = combine(r1,r0)979; BASE-NEXT:     r1:0 = combine(r17,r16)980; BASE-NEXT:    }981; BASE-NEXT:    {982; BASE-NEXT:     call cos983; BASE-NEXT:     r17:16 = combine(r1,r0)984; BASE-NEXT:     r1:0 = combine(r21,r20)985; BASE-NEXT:    }986; BASE-NEXT:    {987; BASE-NEXT:     memd(r18+#16) = r17:16988; BASE-NEXT:     memd(r18+#24) = r1:0989; BASE-NEXT:    }990; BASE-NEXT:    {991; BASE-NEXT:     memd(r18+#8) = r25:24992; BASE-NEXT:     memd(r18+#0) = r23:22993; BASE-NEXT:    }994; BASE-NEXT:    {995; BASE-NEXT:     r17:16 = memd(r29+#32)996; BASE-NEXT:     r19:18 = memd(r29+#24)997; BASE-NEXT:    } // 8-byte Folded Reload998; BASE-NEXT:    {999; BASE-NEXT:     r21:20 = memd(r29+#16)1000; BASE-NEXT:     r23:22 = memd(r29+#8)1001; BASE-NEXT:    } // 8-byte Folded Reload1002; BASE-NEXT:    {1003; BASE-NEXT:     r25:24 = memd(r29+#0)1004; BASE-NEXT:     r31:30 = dealloc_return(r30):raw1005; BASE-NEXT:    } // 8-byte Folded Reload1006;1007; GNU-LABEL: test_sincos_v2f64:1008; GNU:       // %bb.0:1009; GNU-NEXT:    {1010; GNU-NEXT:     r17:16 = combine(r3,r2)1011; GNU-NEXT:     r2 = add(r0,#8)1012; GNU-NEXT:     memd(r29+#-16) = r17:161013; GNU-NEXT:     allocframe(#16)1014; GNU-NEXT:    } // 8-byte Folded Spill1015; GNU-NEXT:    {1016; GNU-NEXT:     r3 = add(r0,#24)1017; GNU-NEXT:     r1:0 = combine(r5,r4)1018; GNU-NEXT:     r18 = r01019; GNU-NEXT:     memd(r29+#0) = r19:181020; GNU-NEXT:    } // 8-byte Folded Spill1021; GNU-NEXT:    {1022; GNU-NEXT:     call sincos1023; GNU-NEXT:    }1024; GNU-NEXT:    {1025; GNU-NEXT:     call sincos1026; GNU-NEXT:     r3 = add(r18,#16)1027; GNU-NEXT:     r1:0 = combine(r17,r16)1028; GNU-NEXT:     r2 = r181029; GNU-NEXT:    }1030; GNU-NEXT:    {1031; GNU-NEXT:     r17:16 = memd(r29+#8)1032; GNU-NEXT:     r19:18 = memd(r29+#0)1033; GNU-NEXT:    } // 8-byte Folded Reload1034; GNU-NEXT:    {1035; GNU-NEXT:     r31:30 = dealloc_return(r30):raw1036; GNU-NEXT:    }1037;1038; MUSL-LABEL: test_sincos_v2f64:1039; MUSL:       // %bb.0:1040; MUSL-NEXT:    {1041; MUSL-NEXT:     r17:16 = combine(r3,r2)1042; MUSL-NEXT:     memd(r29+#-16) = r17:161043; MUSL-NEXT:     allocframe(#40)1044; MUSL-NEXT:    } // 8-byte Folded Spill1045; MUSL-NEXT:    {1046; MUSL-NEXT:     r18 = r01047; MUSL-NEXT:     r1:0 = combine(r3,r2)1048; MUSL-NEXT:     memd(r29+#24) = r19:181049; MUSL-NEXT:     memd(r29+#16) = r21:201050; MUSL-NEXT:    } // 8-byte Folded Spill1051; MUSL-NEXT:    {1052; MUSL-NEXT:     call sin1053; MUSL-NEXT:     r21:20 = combine(r5,r4)1054; MUSL-NEXT:     memd(r29+#8) = r23:221055; MUSL-NEXT:     memd(r29+#0) = r25:241056; MUSL-NEXT:    } // 8-byte Folded Spill1057; MUSL-NEXT:    {1058; MUSL-NEXT:     call sin1059; MUSL-NEXT:     r23:22 = combine(r1,r0)1060; MUSL-NEXT:     r1:0 = combine(r21,r20)1061; MUSL-NEXT:    }1062; MUSL-NEXT:    {1063; MUSL-NEXT:     call cos1064; MUSL-NEXT:     r25:24 = combine(r1,r0)1065; MUSL-NEXT:     r1:0 = combine(r17,r16)1066; MUSL-NEXT:    }1067; MUSL-NEXT:    {1068; MUSL-NEXT:     call cos1069; MUSL-NEXT:     r17:16 = combine(r1,r0)1070; MUSL-NEXT:     r1:0 = combine(r21,r20)1071; MUSL-NEXT:    }1072; MUSL-NEXT:    {1073; MUSL-NEXT:     memd(r18+#16) = r17:161074; MUSL-NEXT:     memd(r18+#24) = r1:01075; MUSL-NEXT:    }1076; MUSL-NEXT:    {1077; MUSL-NEXT:     memd(r18+#8) = r25:241078; MUSL-NEXT:     memd(r18+#0) = r23:221079; MUSL-NEXT:    }1080; MUSL-NEXT:    {1081; MUSL-NEXT:     r17:16 = memd(r29+#32)1082; MUSL-NEXT:     r19:18 = memd(r29+#24)1083; MUSL-NEXT:    } // 8-byte Folded Reload1084; MUSL-NEXT:    {1085; MUSL-NEXT:     r21:20 = memd(r29+#16)1086; MUSL-NEXT:     r23:22 = memd(r29+#8)1087; MUSL-NEXT:    } // 8-byte Folded Reload1088; MUSL-NEXT:    {1089; MUSL-NEXT:     r25:24 = memd(r29+#0)1090; MUSL-NEXT:     r31:30 = dealloc_return(r30):raw1091; MUSL-NEXT:    } // 8-byte Folded Reload1092  %result = call { <2 x double>, <2 x double> } @llvm.sincos.v2f64(<2 x double> %a)1093  ret { <2 x double>, <2 x double> } %result1094}1095 1096define { fp128, fp128 } @test_sincos_f128(fp128 %a) #0 {1097; BASE-LABEL: test_sincos_f128:1098; BASE:       // %bb.0:1099; BASE-NEXT:    {1100; BASE-NEXT:     r17:16 = combine(r5,r4)1101; BASE-NEXT:     memd(r29+#-16) = r17:161102; BASE-NEXT:     allocframe(#56)1103; BASE-NEXT:    } // 8-byte Folded Spill1104; BASE-NEXT:    {1105; BASE-NEXT:     r20 = r01106; BASE-NEXT:     r0 = add(r29,#0)1107; BASE-NEXT:     memd(r29+#32) = r21:201108; BASE-NEXT:     memd(r29+#40) = r19:181109; BASE-NEXT:    } // 8-byte Folded Spill1110; BASE-NEXT:    {1111; BASE-NEXT:     call sinl1112; BASE-NEXT:     r19:18 = combine(r3,r2)1113; BASE-NEXT:    }1114; BASE-NEXT:    {1115; BASE-NEXT:     call cosl1116; BASE-NEXT:     r0 = add(r29,#16)1117; BASE-NEXT:     r3:2 = combine(r19,r18)1118; BASE-NEXT:     r5:4 = combine(r17,r16)1119; BASE-NEXT:    }1120; BASE-NEXT:    {1121; BASE-NEXT:     r1:0 = memd(r29+#0)1122; BASE-NEXT:     r3:2 = memd(r29+#8)1123; BASE-NEXT:    }1124; BASE-NEXT:    {1125; BASE-NEXT:     r5:4 = memd(r29+#16)1126; BASE-NEXT:     r7:6 = memd(r29+#24)1127; BASE-NEXT:    }1128; BASE-NEXT:    {1129; BASE-NEXT:     memd(r20+#24) = r7:61130; BASE-NEXT:     memd(r20+#16) = r5:41131; BASE-NEXT:    }1132; BASE-NEXT:    {1133; BASE-NEXT:     memd(r20+#8) = r3:21134; BASE-NEXT:     memd(r20+#0) = r1:01135; BASE-NEXT:    }1136; BASE-NEXT:    {1137; BASE-NEXT:     r17:16 = memd(r29+#48)1138; BASE-NEXT:     r19:18 = memd(r29+#40)1139; BASE-NEXT:    } // 8-byte Folded Reload1140; BASE-NEXT:    {1141; BASE-NEXT:     r21:20 = memd(r29+#32)1142; BASE-NEXT:     dealloc_return1143; BASE-NEXT:    } // 8-byte Folded Reload1144;1145; GNU-LABEL: test_sincos_f128:1146; GNU:       // %bb.0:1147; GNU-NEXT:    {1148; GNU-NEXT:     r16 = r01149; GNU-NEXT:     memd(r29+#-16) = r17:161150; GNU-NEXT:     allocframe(#64)1151; GNU-NEXT:    } // 8-byte Folded Spill1152; GNU-NEXT:    {1153; GNU-NEXT:     r0 = add(r29,#40)1154; GNU-NEXT:     r7 = add(r29,#24)1155; GNU-NEXT:     r6 = add(r29,#8)1156; GNU-NEXT:     memw(r29+#4) = r7.new1157; GNU-NEXT:    }1158; GNU-NEXT:    {1159; GNU-NEXT:     call sincosl1160; GNU-NEXT:     memw(r29+#0) = r61161; GNU-NEXT:    }1162; GNU-NEXT:    {1163; GNU-NEXT:     r1:0 = memd(r29+#8)1164; GNU-NEXT:     r3:2 = memd(r29+#16)1165; GNU-NEXT:    }1166; GNU-NEXT:    {1167; GNU-NEXT:     r5:4 = memd(r29+#24)1168; GNU-NEXT:     r7:6 = memd(r29+#32)1169; GNU-NEXT:    }1170; GNU-NEXT:    {1171; GNU-NEXT:     memd(r16+#24) = r7:61172; GNU-NEXT:     memd(r16+#16) = r5:41173; GNU-NEXT:    }1174; GNU-NEXT:    {1175; GNU-NEXT:     memd(r16+#8) = r3:21176; GNU-NEXT:     memd(r16+#0) = r1:01177; GNU-NEXT:    }1178; GNU-NEXT:    {1179; GNU-NEXT:     r17:16 = memd(r29+#56)1180; GNU-NEXT:     dealloc_return1181; GNU-NEXT:    } // 8-byte Folded Reload1182;1183; MUSL-LABEL: test_sincos_f128:1184; MUSL:       // %bb.0:1185; MUSL-NEXT:    {1186; MUSL-NEXT:     r17:16 = combine(r5,r4)1187; MUSL-NEXT:     memd(r29+#-16) = r17:161188; MUSL-NEXT:     allocframe(#56)1189; MUSL-NEXT:    } // 8-byte Folded Spill1190; MUSL-NEXT:    {1191; MUSL-NEXT:     r20 = r01192; MUSL-NEXT:     r0 = add(r29,#0)1193; MUSL-NEXT:     memd(r29+#32) = r21:201194; MUSL-NEXT:     memd(r29+#40) = r19:181195; MUSL-NEXT:    } // 8-byte Folded Spill1196; MUSL-NEXT:    {1197; MUSL-NEXT:     call sinl1198; MUSL-NEXT:     r19:18 = combine(r3,r2)1199; MUSL-NEXT:    }1200; MUSL-NEXT:    {1201; MUSL-NEXT:     call cosl1202; MUSL-NEXT:     r0 = add(r29,#16)1203; MUSL-NEXT:     r3:2 = combine(r19,r18)1204; MUSL-NEXT:     r5:4 = combine(r17,r16)1205; MUSL-NEXT:    }1206; MUSL-NEXT:    {1207; MUSL-NEXT:     r1:0 = memd(r29+#0)1208; MUSL-NEXT:     r3:2 = memd(r29+#8)1209; MUSL-NEXT:    }1210; MUSL-NEXT:    {1211; MUSL-NEXT:     r5:4 = memd(r29+#16)1212; MUSL-NEXT:     r7:6 = memd(r29+#24)1213; MUSL-NEXT:    }1214; MUSL-NEXT:    {1215; MUSL-NEXT:     memd(r20+#24) = r7:61216; MUSL-NEXT:     memd(r20+#16) = r5:41217; MUSL-NEXT:    }1218; MUSL-NEXT:    {1219; MUSL-NEXT:     memd(r20+#8) = r3:21220; MUSL-NEXT:     memd(r20+#0) = r1:01221; MUSL-NEXT:    }1222; MUSL-NEXT:    {1223; MUSL-NEXT:     r17:16 = memd(r29+#48)1224; MUSL-NEXT:     r19:18 = memd(r29+#40)1225; MUSL-NEXT:    } // 8-byte Folded Reload1226; MUSL-NEXT:    {1227; MUSL-NEXT:     r21:20 = memd(r29+#32)1228; MUSL-NEXT:     dealloc_return1229; MUSL-NEXT:    } // 8-byte Folded Reload1230  %result = call { fp128, fp128 } @llvm.sincos.f128(fp128 %a)1231  ret { fp128, fp128 } %result1232}1233 1234define { <2 x fp128>, <2 x fp128> } @test_sincos_v2f128(<2 x fp128> %a) #0 {1235; BASE-LABEL: test_sincos_v2f128:1236; BASE:       // %bb.0:1237; BASE-NEXT:    {1238; BASE-NEXT:     r17:16 = combine(r5,r4)1239; BASE-NEXT:     memd(r29+#-16) = r17:161240; BASE-NEXT:     allocframe(#104)1241; BASE-NEXT:    } // 8-byte Folded Spill1242; BASE-NEXT:    {1243; BASE-NEXT:     r20 = r01244; BASE-NEXT:     r0 = add(r29,#32)1245; BASE-NEXT:     memd(r29+#80) = r21:201246; BASE-NEXT:     memd(r29+#88) = r19:181247; BASE-NEXT:    } // 8-byte Folded Spill1248; BASE-NEXT:    {1249; BASE-NEXT:     r19:18 = combine(r3,r2)1250; BASE-NEXT:     memd(r29+#72) = r23:221251; BASE-NEXT:     memd(r29+#64) = r25:241252; BASE-NEXT:    } // 8-byte Folded Spill1253; BASE-NEXT:    {1254; BASE-NEXT:     call sinl1255; BASE-NEXT:     r23:22 = memd(r29+#112)1256; BASE-NEXT:     r25:24 = memd(r29+#120)1257; BASE-NEXT:    }1258; BASE-NEXT:    {1259; BASE-NEXT:     call sinl1260; BASE-NEXT:     r0 = add(r29,#0)1261; BASE-NEXT:     r3:2 = combine(r23,r22)1262; BASE-NEXT:     r5:4 = combine(r25,r24)1263; BASE-NEXT:    }1264; BASE-NEXT:    {1265; BASE-NEXT:     call cosl1266; BASE-NEXT:     r0 = add(r29,#48)1267; BASE-NEXT:     r3:2 = combine(r19,r18)1268; BASE-NEXT:     r5:4 = combine(r17,r16)1269; BASE-NEXT:    }1270; BASE-NEXT:    {1271; BASE-NEXT:     call cosl1272; BASE-NEXT:     r0 = add(r29,#16)1273; BASE-NEXT:     r3:2 = combine(r23,r22)1274; BASE-NEXT:     r5:4 = combine(r25,r24)1275; BASE-NEXT:    }1276; BASE-NEXT:    {1277; BASE-NEXT:     r1:0 = memd(r29+#32)1278; BASE-NEXT:     r3:2 = memd(r29+#40)1279; BASE-NEXT:    }1280; BASE-NEXT:    {1281; BASE-NEXT:     r9:8 = memd(r29+#48)1282; BASE-NEXT:     r15:14 = memd(r29+#24)1283; BASE-NEXT:    }1284; BASE-NEXT:    {1285; BASE-NEXT:     r5:4 = memd(r29+#0)1286; BASE-NEXT:     r7:6 = memd(r29+#8)1287; BASE-NEXT:    }1288; BASE-NEXT:    {1289; BASE-NEXT:     r13:12 = memd(r29+#16)1290; BASE-NEXT:     r11:10 = memd(r29+#56)1291; BASE-NEXT:    }1292; BASE-NEXT:    {1293; BASE-NEXT:     memd(r20+#56) = r15:141294; BASE-NEXT:     memd(r20+#48) = r13:121295; BASE-NEXT:    }1296; BASE-NEXT:    {1297; BASE-NEXT:     memd(r20+#40) = r11:101298; BASE-NEXT:     memd(r20+#32) = r9:81299; BASE-NEXT:    }1300; BASE-NEXT:    {1301; BASE-NEXT:     memd(r20+#24) = r7:61302; BASE-NEXT:     memd(r20+#16) = r5:41303; BASE-NEXT:    }1304; BASE-NEXT:    {1305; BASE-NEXT:     memd(r20+#8) = r3:21306; BASE-NEXT:     memd(r20+#0) = r1:01307; BASE-NEXT:    }1308; BASE-NEXT:    {1309; BASE-NEXT:     r17:16 = memd(r29+#96)1310; BASE-NEXT:     r19:18 = memd(r29+#88)1311; BASE-NEXT:    } // 8-byte Folded Reload1312; BASE-NEXT:    {1313; BASE-NEXT:     r21:20 = memd(r29+#80)1314; BASE-NEXT:     r23:22 = memd(r29+#72)1315; BASE-NEXT:    } // 8-byte Folded Reload1316; BASE-NEXT:    {1317; BASE-NEXT:     r25:24 = memd(r29+#64)1318; BASE-NEXT:     r31:30 = dealloc_return(r30):raw1319; BASE-NEXT:    } // 8-byte Folded Reload1320;1321; GNU-LABEL: test_sincos_v2f128:1322; GNU:       // %bb.0:1323; GNU-NEXT:    {1324; GNU-NEXT:     r16 = r01325; GNU-NEXT:     memd(r29+#-16) = r17:161326; GNU-NEXT:     allocframe(#128)1327; GNU-NEXT:    } // 8-byte Folded Spill1328; GNU-NEXT:    {1329; GNU-NEXT:     r0 = add(r29,#88)1330; GNU-NEXT:     r17 = r291331; GNU-NEXT:     memd(r29+#112) = r19:181332; GNU-NEXT:     memd(r29+#104) = r21:201333; GNU-NEXT:    } // 8-byte Folded Spill1334; GNU-NEXT:    {1335; GNU-NEXT:     r6 = add(r29,#56)1336; GNU-NEXT:     r1 = add(r29,#72)1337; GNU-NEXT:     r19:18 = memd(r29+#136)1338; GNU-NEXT:     memw(r17+#0) = r6.new1339; GNU-NEXT:    }1340; GNU-NEXT:    {1341; GNU-NEXT:     call sincosl1342; GNU-NEXT:     r21:20 = memd(r29+#144)1343; GNU-NEXT:     memw(r17+#4) = r11344; GNU-NEXT:    }1345; GNU-NEXT:    {1346; GNU-NEXT:     r0 = add(r29,#24)1347; GNU-NEXT:     r3:2 = combine(r19,r18)1348; GNU-NEXT:     r5:4 = combine(r21,r20)1349; GNU-NEXT:     memw(r17+#4) = r0.new1350; GNU-NEXT:    }1351; GNU-NEXT:    {1352; GNU-NEXT:     call sincosl1353; GNU-NEXT:     r0 = add(r29,#40)1354; GNU-NEXT:     r1 = add(r29,#8)1355; GNU-NEXT:     memw(r17+#0) = r1.new1356; GNU-NEXT:    }1357; GNU-NEXT:    {1358; GNU-NEXT:     r1:0 = memd(r29+#56)1359; GNU-NEXT:     r3:2 = memd(r29+#64)1360; GNU-NEXT:    }1361; GNU-NEXT:    {1362; GNU-NEXT:     r5:4 = memd(r29+#8)1363; GNU-NEXT:     r7:6 = memd(r29+#16)1364; GNU-NEXT:    }1365; GNU-NEXT:    {1366; GNU-NEXT:     r9:8 = memd(r29+#72)1367; GNU-NEXT:     r13:12 = memd(r29+#24)1368; GNU-NEXT:    }1369; GNU-NEXT:    {1370; GNU-NEXT:     r15:14 = memd(r29+#32)1371; GNU-NEXT:     r11:10 = memd(r29+#80)1372; GNU-NEXT:    }1373; GNU-NEXT:    {1374; GNU-NEXT:     memd(r16+#56) = r15:141375; GNU-NEXT:     memd(r16+#48) = r13:121376; GNU-NEXT:    }1377; GNU-NEXT:    {1378; GNU-NEXT:     memd(r16+#40) = r11:101379; GNU-NEXT:     memd(r16+#32) = r9:81380; GNU-NEXT:    }1381; GNU-NEXT:    {1382; GNU-NEXT:     memd(r16+#24) = r7:61383; GNU-NEXT:     memd(r16+#16) = r5:41384; GNU-NEXT:    }1385; GNU-NEXT:    {1386; GNU-NEXT:     memd(r16+#8) = r3:21387; GNU-NEXT:     memd(r16+#0) = r1:01388; GNU-NEXT:    }1389; GNU-NEXT:    {1390; GNU-NEXT:     r17:16 = memd(r29+#120)1391; GNU-NEXT:     r19:18 = memd(r29+#112)1392; GNU-NEXT:    } // 8-byte Folded Reload1393; GNU-NEXT:    {1394; GNU-NEXT:     r21:20 = memd(r29+#104)1395; GNU-NEXT:     dealloc_return1396; GNU-NEXT:    } // 8-byte Folded Reload1397;1398; MUSL-LABEL: test_sincos_v2f128:1399; MUSL:       // %bb.0:1400; MUSL-NEXT:    {1401; MUSL-NEXT:     r17:16 = combine(r5,r4)1402; MUSL-NEXT:     memd(r29+#-16) = r17:161403; MUSL-NEXT:     allocframe(#104)1404; MUSL-NEXT:    } // 8-byte Folded Spill1405; MUSL-NEXT:    {1406; MUSL-NEXT:     r20 = r01407; MUSL-NEXT:     r0 = add(r29,#32)1408; MUSL-NEXT:     memd(r29+#80) = r21:201409; MUSL-NEXT:     memd(r29+#88) = r19:181410; MUSL-NEXT:    } // 8-byte Folded Spill1411; MUSL-NEXT:    {1412; MUSL-NEXT:     r19:18 = combine(r3,r2)1413; MUSL-NEXT:     memd(r29+#72) = r23:221414; MUSL-NEXT:     memd(r29+#64) = r25:241415; MUSL-NEXT:    } // 8-byte Folded Spill1416; MUSL-NEXT:    {1417; MUSL-NEXT:     call sinl1418; MUSL-NEXT:     r23:22 = memd(r29+#112)1419; MUSL-NEXT:     r25:24 = memd(r29+#120)1420; MUSL-NEXT:    }1421; MUSL-NEXT:    {1422; MUSL-NEXT:     call sinl1423; MUSL-NEXT:     r0 = add(r29,#0)1424; MUSL-NEXT:     r3:2 = combine(r23,r22)1425; MUSL-NEXT:     r5:4 = combine(r25,r24)1426; MUSL-NEXT:    }1427; MUSL-NEXT:    {1428; MUSL-NEXT:     call cosl1429; MUSL-NEXT:     r0 = add(r29,#48)1430; MUSL-NEXT:     r3:2 = combine(r19,r18)1431; MUSL-NEXT:     r5:4 = combine(r17,r16)1432; MUSL-NEXT:    }1433; MUSL-NEXT:    {1434; MUSL-NEXT:     call cosl1435; MUSL-NEXT:     r0 = add(r29,#16)1436; MUSL-NEXT:     r3:2 = combine(r23,r22)1437; MUSL-NEXT:     r5:4 = combine(r25,r24)1438; MUSL-NEXT:    }1439; MUSL-NEXT:    {1440; MUSL-NEXT:     r1:0 = memd(r29+#32)1441; MUSL-NEXT:     r3:2 = memd(r29+#40)1442; MUSL-NEXT:    }1443; MUSL-NEXT:    {1444; MUSL-NEXT:     r9:8 = memd(r29+#48)1445; MUSL-NEXT:     r15:14 = memd(r29+#24)1446; MUSL-NEXT:    }1447; MUSL-NEXT:    {1448; MUSL-NEXT:     r5:4 = memd(r29+#0)1449; MUSL-NEXT:     r7:6 = memd(r29+#8)1450; MUSL-NEXT:    }1451; MUSL-NEXT:    {1452; MUSL-NEXT:     r13:12 = memd(r29+#16)1453; MUSL-NEXT:     r11:10 = memd(r29+#56)1454; MUSL-NEXT:    }1455; MUSL-NEXT:    {1456; MUSL-NEXT:     memd(r20+#56) = r15:141457; MUSL-NEXT:     memd(r20+#48) = r13:121458; MUSL-NEXT:    }1459; MUSL-NEXT:    {1460; MUSL-NEXT:     memd(r20+#40) = r11:101461; MUSL-NEXT:     memd(r20+#32) = r9:81462; MUSL-NEXT:    }1463; MUSL-NEXT:    {1464; MUSL-NEXT:     memd(r20+#24) = r7:61465; MUSL-NEXT:     memd(r20+#16) = r5:41466; MUSL-NEXT:    }1467; MUSL-NEXT:    {1468; MUSL-NEXT:     memd(r20+#8) = r3:21469; MUSL-NEXT:     memd(r20+#0) = r1:01470; MUSL-NEXT:    }1471; MUSL-NEXT:    {1472; MUSL-NEXT:     r17:16 = memd(r29+#96)1473; MUSL-NEXT:     r19:18 = memd(r29+#88)1474; MUSL-NEXT:    } // 8-byte Folded Reload1475; MUSL-NEXT:    {1476; MUSL-NEXT:     r21:20 = memd(r29+#80)1477; MUSL-NEXT:     r23:22 = memd(r29+#72)1478; MUSL-NEXT:    } // 8-byte Folded Reload1479; MUSL-NEXT:    {1480; MUSL-NEXT:     r25:24 = memd(r29+#64)1481; MUSL-NEXT:     r31:30 = dealloc_return(r30):raw1482; MUSL-NEXT:    } // 8-byte Folded Reload1483  %result = call { <2 x fp128>, <2 x fp128> } @llvm.sincos.v2f128(<2 x fp128> %a)1484  ret { <2 x fp128>, <2 x fp128> } %result1485}1486 1487attributes #0 = { nounwind }1488