brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.4 KiB · 159427c Raw
353 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -mtriple=msp430-unknown-unknown < %s | FileCheck %s3 4define { half, half } @test_sincos_f16(half %a) #0 {5; CHECK-LABEL: test_sincos_f16:6; CHECK:       ; %bb.0:7; CHECK-NEXT:    push r88; CHECK-NEXT:    push r99; CHECK-NEXT:    push r1010; CHECK-NEXT:    call #__extendhfsf211; CHECK-NEXT:    mov r12, r1012; CHECK-NEXT:    mov r13, r913; CHECK-NEXT:    call #sinf14; CHECK-NEXT:    call #__truncsfhf215; CHECK-NEXT:    mov r12, r816; CHECK-NEXT:    mov r10, r1217; CHECK-NEXT:    mov r9, r1318; CHECK-NEXT:    call #cosf19; CHECK-NEXT:    call #__truncsfhf220; CHECK-NEXT:    mov r12, r1421; CHECK-NEXT:    mov r8, r1222; CHECK-NEXT:    pop r1023; CHECK-NEXT:    pop r924; CHECK-NEXT:    pop r825; CHECK-NEXT:    ret26  %result = call { half, half } @llvm.sincos.f16(half %a)27  ret { half, half } %result28}29 30define half @test_sincos_f16_only_use_sin(half %a) #0 {31; CHECK-LABEL: test_sincos_f16_only_use_sin:32; CHECK:       ; %bb.0:33; CHECK-NEXT:    call #__extendhfsf234; CHECK-NEXT:    call #sinf35; CHECK-NEXT:    call #__truncsfhf236; CHECK-NEXT:    ret37  %result = call { half, half } @llvm.sincos.f16(half %a)38  %result.0 = extractvalue { half, half } %result, 039  ret half %result.040}41 42define half @test_sincos_f16_only_use_cos(half %a) #0 {43; CHECK-LABEL: test_sincos_f16_only_use_cos:44; CHECK:       ; %bb.0:45; CHECK-NEXT:    call #__extendhfsf246; CHECK-NEXT:    call #cosf47; CHECK-NEXT:    call #__truncsfhf248; CHECK-NEXT:    ret49  %result = call { half, half } @llvm.sincos.f16(half %a)50  %result.1 = extractvalue { half, half } %result, 151  ret half %result.152}53 54define { <2 x half>, <2 x half> } @test_sincos_v2f16(<2 x half> %a) #0 {55; CHECK-LABEL: test_sincos_v2f16:56; CHECK:       ; %bb.0:57; CHECK-NEXT:    push r558; CHECK-NEXT:    push r659; CHECK-NEXT:    push r760; CHECK-NEXT:    push r861; CHECK-NEXT:    push r962; CHECK-NEXT:    push r1063; CHECK-NEXT:    mov r12, r764; CHECK-NEXT:    mov r13, r1265; CHECK-NEXT:    call #__extendhfsf266; CHECK-NEXT:    mov r12, r1067; CHECK-NEXT:    mov r13, r968; CHECK-NEXT:    call #sinf69; CHECK-NEXT:    call #__truncsfhf270; CHECK-NEXT:    mov r12, r871; CHECK-NEXT:    mov r7, r1272; CHECK-NEXT:    call #__extendhfsf273; CHECK-NEXT:    mov r12, r674; CHECK-NEXT:    mov r13, r575; CHECK-NEXT:    call #cosf76; CHECK-NEXT:    call #__truncsfhf277; CHECK-NEXT:    mov r12, r778; CHECK-NEXT:    mov r6, r1279; CHECK-NEXT:    mov r5, r1380; CHECK-NEXT:    call #sinf81; CHECK-NEXT:    call #__truncsfhf282; CHECK-NEXT:    mov r12, r683; CHECK-NEXT:    mov r10, r1284; CHECK-NEXT:    mov r9, r1385; CHECK-NEXT:    call #cosf86; CHECK-NEXT:    call #__truncsfhf287; CHECK-NEXT:    mov r12, r1588; CHECK-NEXT:    mov r6, r1289; CHECK-NEXT:    mov r8, r1390; CHECK-NEXT:    mov r7, r1491; CHECK-NEXT:    pop r1092; CHECK-NEXT:    pop r993; CHECK-NEXT:    pop r894; CHECK-NEXT:    pop r795; CHECK-NEXT:    pop r696; CHECK-NEXT:    pop r597; CHECK-NEXT:    ret98  %result = call { <2 x half>, <2 x half> } @llvm.sincos.v2f16(<2 x half> %a)99  ret { <2 x half>, <2 x half> } %result100}101 102define { float, float } @test_sincos_f32(float %a) #0 {103; CHECK-LABEL: test_sincos_f32:104; CHECK:       ; %bb.0:105; CHECK-NEXT:    push r7106; CHECK-NEXT:    push r8107; CHECK-NEXT:    push r9108; CHECK-NEXT:    push r10109; CHECK-NEXT:    mov r13, r10110; CHECK-NEXT:    mov r12, r9111; CHECK-NEXT:    call #sinf112; CHECK-NEXT:    mov r12, r8113; CHECK-NEXT:    mov r13, r7114; CHECK-NEXT:    mov r9, r12115; CHECK-NEXT:    mov r10, r13116; CHECK-NEXT:    call #cosf117; CHECK-NEXT:    mov r12, r14118; CHECK-NEXT:    mov r13, r15119; CHECK-NEXT:    mov r8, r12120; CHECK-NEXT:    mov r7, r13121; CHECK-NEXT:    pop r10122; CHECK-NEXT:    pop r9123; CHECK-NEXT:    pop r8124; CHECK-NEXT:    pop r7125; CHECK-NEXT:    ret126  %result = call { float, float } @llvm.sincos.f32(float %a)127  ret { float, float } %result128}129 130define { <2 x float>, <2 x float> } @test_sincos_v2f32(<2 x float> %a) #0 {131; CHECK-LABEL: test_sincos_v2f32:132; CHECK:       ; %bb.0:133; CHECK-NEXT:    push r6134; CHECK-NEXT:    push r7135; CHECK-NEXT:    push r8136; CHECK-NEXT:    push r9137; CHECK-NEXT:    push r10138; CHECK-NEXT:    mov r12, r10139; CHECK-NEXT:    mov 16(r1), r9140; CHECK-NEXT:    mov 18(r1), r8141; CHECK-NEXT:    mov r9, r12142; CHECK-NEXT:    mov r8, r13143; CHECK-NEXT:    call #cosf144; CHECK-NEXT:    mov r13, 14(r10)145; CHECK-NEXT:    mov r12, 12(r10)146; CHECK-NEXT:    mov 12(r1), r7147; CHECK-NEXT:    mov 14(r1), r6148; CHECK-NEXT:    mov r7, r12149; CHECK-NEXT:    mov r6, r13150; CHECK-NEXT:    call #cosf151; CHECK-NEXT:    mov r13, 10(r10)152; CHECK-NEXT:    mov r12, 8(r10)153; CHECK-NEXT:    mov r9, r12154; CHECK-NEXT:    mov r8, r13155; CHECK-NEXT:    call #sinf156; CHECK-NEXT:    mov r13, 6(r10)157; CHECK-NEXT:    mov r12, 4(r10)158; CHECK-NEXT:    mov r7, r12159; CHECK-NEXT:    mov r6, r13160; CHECK-NEXT:    call #sinf161; CHECK-NEXT:    mov r13, 2(r10)162; CHECK-NEXT:    mov r12, 0(r10)163; CHECK-NEXT:    pop r10164; CHECK-NEXT:    pop r9165; CHECK-NEXT:    pop r8166; CHECK-NEXT:    pop r7167; CHECK-NEXT:    pop r6168; CHECK-NEXT:    ret169  %result = call { <2 x float>, <2 x float> } @llvm.sincos.v2f32(<2 x float> %a)170  ret { <2 x float>, <2 x float> } %result171}172 173define { double, double } @test_sincos_f64(double %a) #0 {174; CHECK-LABEL: test_sincos_f64:175; CHECK:       ; %bb.0:176; CHECK-NEXT:    push r6177; CHECK-NEXT:    push r7178; CHECK-NEXT:    push r8179; CHECK-NEXT:    push r9180; CHECK-NEXT:    push r10181; CHECK-NEXT:    mov r12, r10182; CHECK-NEXT:    mov 12(r1), r9183; CHECK-NEXT:    mov 14(r1), r8184; CHECK-NEXT:    mov 16(r1), r7185; CHECK-NEXT:    mov 18(r1), r6186; CHECK-NEXT:    mov r9, r12187; CHECK-NEXT:    mov r8, r13188; CHECK-NEXT:    mov r7, r14189; CHECK-NEXT:    mov r6, r15190; CHECK-NEXT:    call #cos191; CHECK-NEXT:    mov r15, 14(r10)192; CHECK-NEXT:    mov r14, 12(r10)193; CHECK-NEXT:    mov r13, 10(r10)194; CHECK-NEXT:    mov r12, 8(r10)195; CHECK-NEXT:    mov r9, r12196; CHECK-NEXT:    mov r8, r13197; CHECK-NEXT:    mov r7, r14198; CHECK-NEXT:    mov r6, r15199; CHECK-NEXT:    call #sin200; CHECK-NEXT:    mov r15, 6(r10)201; CHECK-NEXT:    mov r14, 4(r10)202; CHECK-NEXT:    mov r13, 2(r10)203; CHECK-NEXT:    mov r12, 0(r10)204; CHECK-NEXT:    pop r10205; CHECK-NEXT:    pop r9206; CHECK-NEXT:    pop r8207; CHECK-NEXT:    pop r7208; CHECK-NEXT:    pop r6209; CHECK-NEXT:    ret210  %result = call { double, double } @llvm.sincos.f64(double %a)211  ret { double, double } %result212}213 214define { <2 x double>, <2 x double> } @test_sincos_v2f64(<2 x double> %a) #0 {215; CHECK-LABEL: test_sincos_v2f64:216; CHECK:       ; %bb.0:217; CHECK-NEXT:    push r4218; CHECK-NEXT:    push r5219; CHECK-NEXT:    push r6220; CHECK-NEXT:    push r7221; CHECK-NEXT:    push r8222; CHECK-NEXT:    push r9223; CHECK-NEXT:    push r10224; CHECK-NEXT:    mov r12, r10225; CHECK-NEXT:    mov 24(r1), r12226; CHECK-NEXT:    mov 26(r1), r13227; CHECK-NEXT:    mov 28(r1), r7228; CHECK-NEXT:    mov 30(r1), r6229; CHECK-NEXT:    mov r7, r14230; CHECK-NEXT:    mov r6, r15231; CHECK-NEXT:    call #cos232; CHECK-NEXT:    mov r15, 30(r10)233; CHECK-NEXT:    mov r14, 28(r10)234; CHECK-NEXT:    mov r13, 26(r10)235; CHECK-NEXT:    mov r12, 24(r10)236; CHECK-NEXT:    mov 16(r1), r5237; CHECK-NEXT:    mov 18(r1), r4238; CHECK-NEXT:    mov 20(r1), r9239; CHECK-NEXT:    mov 22(r1), r8240; CHECK-NEXT:    mov r5, r12241; CHECK-NEXT:    mov r4, r13242; CHECK-NEXT:    mov r9, r14243; CHECK-NEXT:    mov r8, r15244; CHECK-NEXT:    call #cos245; CHECK-NEXT:    mov r15, 22(r10)246; CHECK-NEXT:    mov r14, 20(r10)247; CHECK-NEXT:    mov r13, 18(r10)248; CHECK-NEXT:    mov r12, 16(r10)249; CHECK-NEXT:    mov 24(r1), r12250; CHECK-NEXT:    mov 26(r1), r13251; CHECK-NEXT:    mov r7, r14252; CHECK-NEXT:    mov r6, r15253; CHECK-NEXT:    call #sin254; CHECK-NEXT:    mov r15, 14(r10)255; CHECK-NEXT:    mov r14, 12(r10)256; CHECK-NEXT:    mov r13, 10(r10)257; CHECK-NEXT:    mov r12, 8(r10)258; CHECK-NEXT:    mov r5, r12259; CHECK-NEXT:    mov r4, r13260; CHECK-NEXT:    mov r9, r14261; CHECK-NEXT:    mov r8, r15262; CHECK-NEXT:    call #sin263; CHECK-NEXT:    mov r15, 6(r10)264; CHECK-NEXT:    mov r14, 4(r10)265; CHECK-NEXT:    mov r13, 2(r10)266; CHECK-NEXT:    mov r12, 0(r10)267; CHECK-NEXT:    pop r10268; CHECK-NEXT:    pop r9269; CHECK-NEXT:    pop r8270; CHECK-NEXT:    pop r7271; CHECK-NEXT:    pop r6272; CHECK-NEXT:    pop r5273; CHECK-NEXT:    pop r4274; CHECK-NEXT:    ret275  %result = call { <2 x double>, <2 x double> } @llvm.sincos.v2f64(<2 x double> %a)276  ret { <2 x double>, <2 x double> } %result277}278 279define { fp128, fp128 } @test_sincos_f128(fp128 %a) #0 {280; CHECK-LABEL: test_sincos_f128:281; CHECK:       ; %bb.0:282; CHECK-NEXT:    push r4283; CHECK-NEXT:    push r5284; CHECK-NEXT:    push r6285; CHECK-NEXT:    push r7286; CHECK-NEXT:    push r8287; CHECK-NEXT:    push r9288; CHECK-NEXT:    push r10289; CHECK-NEXT:    sub #48, r1290; CHECK-NEXT:    mov r12, r10291; CHECK-NEXT:    mov 78(r1), r12292; CHECK-NEXT:    mov r12, 14(r1)293; CHECK-NEXT:    mov 76(r1), r12294; CHECK-NEXT:    mov r12, 12(r1)295; CHECK-NEXT:    mov 74(r1), r7296; CHECK-NEXT:    mov r7, 10(r1)297; CHECK-NEXT:    mov 72(r1), r6298; CHECK-NEXT:    mov r6, 8(r1)299; CHECK-NEXT:    mov 70(r1), r5300; CHECK-NEXT:    mov r5, 6(r1)301; CHECK-NEXT:    mov 68(r1), r4302; CHECK-NEXT:    mov r4, 4(r1)303; CHECK-NEXT:    mov 66(r1), r9304; CHECK-NEXT:    mov r9, 2(r1)305; CHECK-NEXT:    mov 64(r1), r8306; CHECK-NEXT:    mov r8, 0(r1)307; CHECK-NEXT:    mov r1, r12308; CHECK-NEXT:    add #16, r12309; CHECK-NEXT:    call #cosl310; CHECK-NEXT:    mov 78(r1), r12311; CHECK-NEXT:    mov r12, 14(r1)312; CHECK-NEXT:    mov 76(r1), r12313; CHECK-NEXT:    mov r12, 12(r1)314; CHECK-NEXT:    mov r7, 10(r1)315; CHECK-NEXT:    mov r6, 8(r1)316; CHECK-NEXT:    mov r5, 6(r1)317; CHECK-NEXT:    mov r4, 4(r1)318; CHECK-NEXT:    mov r9, 2(r1)319; CHECK-NEXT:    mov r8, 0(r1)320; CHECK-NEXT:    mov r1, r12321; CHECK-NEXT:    add #32, r12322; CHECK-NEXT:    call #sinl323; CHECK-NEXT:    mov 30(r1), 30(r10)324; CHECK-NEXT:    mov 28(r1), 28(r10)325; CHECK-NEXT:    mov 26(r1), 26(r10)326; CHECK-NEXT:    mov 24(r1), 24(r10)327; CHECK-NEXT:    mov 22(r1), 22(r10)328; CHECK-NEXT:    mov 20(r1), 20(r10)329; CHECK-NEXT:    mov 18(r1), 18(r10)330; CHECK-NEXT:    mov 16(r1), 16(r10)331; CHECK-NEXT:    mov 46(r1), 14(r10)332; CHECK-NEXT:    mov 44(r1), 12(r10)333; CHECK-NEXT:    mov 42(r1), 10(r10)334; CHECK-NEXT:    mov 40(r1), 8(r10)335; CHECK-NEXT:    mov 38(r1), 6(r10)336; CHECK-NEXT:    mov 36(r1), 4(r10)337; CHECK-NEXT:    mov 34(r1), 2(r10)338; CHECK-NEXT:    mov 32(r1), 0(r10)339; CHECK-NEXT:    add #48, r1340; CHECK-NEXT:    pop r10341; CHECK-NEXT:    pop r9342; CHECK-NEXT:    pop r8343; CHECK-NEXT:    pop r7344; CHECK-NEXT:    pop r6345; CHECK-NEXT:    pop r5346; CHECK-NEXT:    pop r4347; CHECK-NEXT:    ret348  %result = call { fp128, fp128 } @llvm.sincos.f16(fp128 %a)349  ret { fp128, fp128 } %result350}351 352attributes #0 = { nounwind }353