brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.8 KiB · ff01da9 Raw
403 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -mtriple=avr-unknown-unknown < %s | FileCheck -check-prefixes=CHECK,NONGNU %s3; RUN: llc -mtriple=avr-unknown-linux-gnu < %s | FileCheck -check-prefixes=CHECK,GNU %s4 5define { half, half } @test_sincos_f16(half %a) #0 {6; CHECK-LABEL: test_sincos_f16:7; CHECK:       ; %bb.0:8; CHECK-NEXT:    push r129; CHECK-NEXT:    push r1310; CHECK-NEXT:    push r1411; CHECK-NEXT:    push r1512; CHECK-NEXT:    push r1613; CHECK-NEXT:    push r1714; CHECK-NEXT:    rcall __extendhfsf215; CHECK-NEXT:    mov r16, r2216; CHECK-NEXT:    mov r17, r2317; CHECK-NEXT:    mov r14, r2418; CHECK-NEXT:    mov r15, r2519; CHECK-NEXT:    rcall sin20; CHECK-NEXT:    rcall __truncsfhf221; CHECK-NEXT:    mov r12, r2422; CHECK-NEXT:    mov r13, r2523; CHECK-NEXT:    mov r22, r1624; CHECK-NEXT:    mov r23, r1725; CHECK-NEXT:    mov r24, r1426; CHECK-NEXT:    mov r25, r1527; CHECK-NEXT:    rcall cos28; CHECK-NEXT:    rcall __truncsfhf229; CHECK-NEXT:    mov r22, r1230; CHECK-NEXT:    mov r23, r1331; CHECK-NEXT:    pop r1732; CHECK-NEXT:    pop r1633; CHECK-NEXT:    pop r1534; CHECK-NEXT:    pop r1435; CHECK-NEXT:    pop r1336; CHECK-NEXT:    pop r1237; CHECK-NEXT:    ret38  %result = call { half, half } @llvm.sincos.f16(half %a)39  ret { half, half } %result40}41 42define half @test_sincos_f16_only_use_sin(half %a) #0 {43; CHECK-LABEL: test_sincos_f16_only_use_sin:44; CHECK:       ; %bb.0:45; CHECK-NEXT:    rcall __extendhfsf246; CHECK-NEXT:    rcall sin47; CHECK-NEXT:    rcall __truncsfhf248; CHECK-NEXT:    ret49  %result = call { half, half } @llvm.sincos.f16(half %a)50  %result.0 = extractvalue { half, half } %result, 051  ret half %result.052}53 54define half @test_sincos_f16_only_use_cos(half %a) #0 {55; CHECK-LABEL: test_sincos_f16_only_use_cos:56; CHECK:       ; %bb.0:57; CHECK-NEXT:    rcall __extendhfsf258; CHECK-NEXT:    rcall cos59; CHECK-NEXT:    rcall __truncsfhf260; CHECK-NEXT:    ret61  %result = call { half, half } @llvm.sincos.f16(half %a)62  %result.1 = extractvalue { half, half } %result, 163  ret half %result.164}65 66define { <2 x half>, <2 x half> } @test_sincos_v2f16(<2 x half> %a) #0 {67; CHECK-LABEL: test_sincos_v2f16:68; CHECK:       ; %bb.0:69; CHECK-NEXT:    push r670; CHECK-NEXT:    push r771; CHECK-NEXT:    push r872; CHECK-NEXT:    push r973; CHECK-NEXT:    push r1074; CHECK-NEXT:    push r1175; CHECK-NEXT:    push r1276; CHECK-NEXT:    push r1377; CHECK-NEXT:    push r1478; CHECK-NEXT:    push r1579; CHECK-NEXT:    push r1680; CHECK-NEXT:    push r1781; CHECK-NEXT:    mov r16, r2482; CHECK-NEXT:    mov r17, r2583; CHECK-NEXT:    mov r24, r2284; CHECK-NEXT:    mov r25, r2385; CHECK-NEXT:    rcall __extendhfsf286; CHECK-NEXT:    mov r14, r2287; CHECK-NEXT:    mov r15, r2388; CHECK-NEXT:    mov r12, r2489; CHECK-NEXT:    mov r13, r2590; CHECK-NEXT:    rcall sin91; CHECK-NEXT:    rcall __truncsfhf292; CHECK-NEXT:    mov r10, r2493; CHECK-NEXT:    mov r11, r2594; CHECK-NEXT:    mov r24, r1695; CHECK-NEXT:    mov r25, r1796; CHECK-NEXT:    rcall __extendhfsf297; CHECK-NEXT:    mov r16, r2298; CHECK-NEXT:    mov r17, r2399; CHECK-NEXT:    mov r8, r24100; CHECK-NEXT:    mov r9, r25101; CHECK-NEXT:    rcall sin102; CHECK-NEXT:    rcall __truncsfhf2103; CHECK-NEXT:    mov r6, r24104; CHECK-NEXT:    mov r7, r25105; CHECK-NEXT:    mov r22, r14106; CHECK-NEXT:    mov r23, r15107; CHECK-NEXT:    mov r24, r12108; CHECK-NEXT:    mov r25, r13109; CHECK-NEXT:    rcall cos110; CHECK-NEXT:    rcall __truncsfhf2111; CHECK-NEXT:    mov r14, r24112; CHECK-NEXT:    mov r15, r25113; CHECK-NEXT:    mov r22, r16114; CHECK-NEXT:    mov r23, r17115; CHECK-NEXT:    mov r24, r8116; CHECK-NEXT:    mov r25, r9117; CHECK-NEXT:    rcall cos118; CHECK-NEXT:    rcall __truncsfhf2119; CHECK-NEXT:    mov r18, r10120; CHECK-NEXT:    mov r19, r11121; CHECK-NEXT:    mov r20, r6122; CHECK-NEXT:    mov r21, r7123; CHECK-NEXT:    mov r22, r14124; CHECK-NEXT:    mov r23, r15125; CHECK-NEXT:    pop r17126; CHECK-NEXT:    pop r16127; CHECK-NEXT:    pop r15128; CHECK-NEXT:    pop r14129; CHECK-NEXT:    pop r13130; CHECK-NEXT:    pop r12131; CHECK-NEXT:    pop r11132; CHECK-NEXT:    pop r10133; CHECK-NEXT:    pop r9134; CHECK-NEXT:    pop r8135; CHECK-NEXT:    pop r7136; CHECK-NEXT:    pop r6137; CHECK-NEXT:    ret138  %result = call { <2 x half>, <2 x half> } @llvm.sincos.v2f16(<2 x half> %a)139  ret { <2 x half>, <2 x half> } %result140}141 142define { float, float } @test_sincos_f32(float %a) #0 {143; CHECK-LABEL: test_sincos_f32:144; CHECK:       ; %bb.0:145; CHECK-NEXT:    push r10146; CHECK-NEXT:    push r11147; CHECK-NEXT:    push r12148; CHECK-NEXT:    push r13149; CHECK-NEXT:    push r14150; CHECK-NEXT:    push r15151; CHECK-NEXT:    push r16152; CHECK-NEXT:    push r17153; CHECK-NEXT:    mov r16, r24154; CHECK-NEXT:    mov r17, r25155; CHECK-NEXT:    mov r14, r22156; CHECK-NEXT:    mov r15, r23157; CHECK-NEXT:    rcall sin158; CHECK-NEXT:    mov r12, r22159; CHECK-NEXT:    mov r13, r23160; CHECK-NEXT:    mov r10, r24161; CHECK-NEXT:    mov r11, r25162; CHECK-NEXT:    mov r22, r14163; CHECK-NEXT:    mov r23, r15164; CHECK-NEXT:    mov r24, r16165; CHECK-NEXT:    mov r25, r17166; CHECK-NEXT:    rcall cos167; CHECK-NEXT:    mov r18, r12168; CHECK-NEXT:    mov r19, r13169; CHECK-NEXT:    mov r20, r10170; CHECK-NEXT:    mov r21, r11171; CHECK-NEXT:    pop r17172; CHECK-NEXT:    pop r16173; CHECK-NEXT:    pop r15174; CHECK-NEXT:    pop r14175; CHECK-NEXT:    pop r13176; CHECK-NEXT:    pop r12177; CHECK-NEXT:    pop r11178; CHECK-NEXT:    pop r10179; CHECK-NEXT:    ret180  %result = call { float, float } @llvm.sincos.f32(float %a)181  ret { float, float } %result182}183 184define { <2 x float>, <2 x float> } @test_sincos_v2f32(<2 x float> %a) #0 {185; CHECK-LABEL: test_sincos_v2f32:186; CHECK:       ; %bb.0:187; CHECK-NEXT:    push r8188; CHECK-NEXT:    push r9189; CHECK-NEXT:    push r10190; CHECK-NEXT:    push r11191; CHECK-NEXT:    push r12192; CHECK-NEXT:    push r13193; CHECK-NEXT:    push r14194; CHECK-NEXT:    push r15195; CHECK-NEXT:    mov r14, r22196; CHECK-NEXT:    mov r15, r23197; CHECK-NEXT:    mov r12, r20198; CHECK-NEXT:    mov r13, r21199; CHECK-NEXT:    mov r10, r18200; CHECK-NEXT:    mov r11, r19201; CHECK-NEXT:    mov r8, r24202; CHECK-NEXT:    mov r9, r25203; CHECK-NEXT:    mov r22, r12204; CHECK-NEXT:    mov r23, r13205; CHECK-NEXT:    mov r24, r14206; CHECK-NEXT:    mov r25, r15207; CHECK-NEXT:    rcall cos208; CHECK-NEXT:    mov r30, r8209; CHECK-NEXT:    mov r31, r9210; CHECK-NEXT:    std Z+15, r25211; CHECK-NEXT:    std Z+14, r24212; CHECK-NEXT:    std Z+13, r23213; CHECK-NEXT:    std Z+12, r22214; CHECK-NEXT:    mov r22, r16215; CHECK-NEXT:    mov r23, r17216; CHECK-NEXT:    mov r24, r10217; CHECK-NEXT:    mov r25, r11218; CHECK-NEXT:    rcall cos219; CHECK-NEXT:    mov r30, r8220; CHECK-NEXT:    mov r31, r9221; CHECK-NEXT:    std Z+11, r25222; CHECK-NEXT:    std Z+10, r24223; CHECK-NEXT:    std Z+9, r23224; CHECK-NEXT:    std Z+8, r22225; CHECK-NEXT:    mov r22, r12226; CHECK-NEXT:    mov r23, r13227; CHECK-NEXT:    mov r24, r14228; CHECK-NEXT:    mov r25, r15229; CHECK-NEXT:    rcall sin230; CHECK-NEXT:    mov r30, r8231; CHECK-NEXT:    mov r31, r9232; CHECK-NEXT:    std Z+7, r25233; CHECK-NEXT:    std Z+6, r24234; CHECK-NEXT:    std Z+5, r23235; CHECK-NEXT:    std Z+4, r22236; CHECK-NEXT:    mov r22, r16237; CHECK-NEXT:    mov r23, r17238; CHECK-NEXT:    mov r24, r10239; CHECK-NEXT:    mov r25, r11240; CHECK-NEXT:    rcall sin241; CHECK-NEXT:    mov r30, r8242; CHECK-NEXT:    mov r31, r9243; CHECK-NEXT:    std Z+3, r25244; CHECK-NEXT:    std Z+2, r24245; CHECK-NEXT:    std Z+1, r23246; CHECK-NEXT:    st Z, r22247; CHECK-NEXT:    pop r15248; CHECK-NEXT:    pop r14249; CHECK-NEXT:    pop r13250; CHECK-NEXT:    pop r12251; CHECK-NEXT:    pop r11252; CHECK-NEXT:    pop r10253; CHECK-NEXT:    pop r9254; CHECK-NEXT:    pop r8255; CHECK-NEXT:    ret256  %result = call { <2 x float>, <2 x float> } @llvm.sincos.v2f32(<2 x float> %a)257  ret { <2 x float>, <2 x float> } %result258}259 260; FIXME: Broken261; define { double, double } @test_sincos_f64(double %a) #0 {262;   %result = call { double, double } @llvm.sincos.f64(double %a)263;   ret { double, double } %result264; }265 266; FIXME: Broken267; define { <2 x double>, <2 x double> } @test_sincos_v2f64(<2 x double> %a) #0 {268;   %result = call { <2 x double>, <2 x double> } @llvm.sincos.v2f64(<2 x double> %a)269;   ret { <2 x double>, <2 x double> } %result270; }271 272define { fp128, fp128 } @test_sincos_f128(fp128 %a) #0 {273; CHECK-LABEL: test_sincos_f128:274; CHECK:       ; %bb.0:275; CHECK-NEXT:    push r2276; CHECK-NEXT:    push r3277; CHECK-NEXT:    push r4278; CHECK-NEXT:    push r5279; CHECK-NEXT:    push r6280; CHECK-NEXT:    push r7281; CHECK-NEXT:    push r28282; CHECK-NEXT:    push r29283; CHECK-NEXT:    in r28, 61284; CHECK-NEXT:    in r29, 62285; CHECK-NEXT:    sbiw r28, 34286; CHECK-NEXT:    in r0, 63287; CHECK-NEXT:    cli288; CHECK-NEXT:    out 62, r29289; CHECK-NEXT:    out 63, r0290; CHECK-NEXT:    out 61, r28291; CHECK-NEXT:    std Y+2, r23 ; 2-byte Folded Spill292; CHECK-NEXT:    std Y+1, r22 ; 2-byte Folded Spill293; CHECK-NEXT:    mov r2, r20294; CHECK-NEXT:    mov r3, r21295; CHECK-NEXT:    mov r4, r18296; CHECK-NEXT:    mov r5, r19297; CHECK-NEXT:    mov r6, r24298; CHECK-NEXT:    mov r7, r25299; CHECK-NEXT:    mov r24, r28300; CHECK-NEXT:    mov r25, r29301; CHECK-NEXT:    adiw r24, 3302; CHECK-NEXT:    rcall cosl303; CHECK-NEXT:    mov r24, r28304; CHECK-NEXT:    mov r25, r29305; CHECK-NEXT:    adiw r24, 19306; CHECK-NEXT:    mov r18, r4307; CHECK-NEXT:    mov r19, r5308; CHECK-NEXT:    mov r20, r2309; CHECK-NEXT:    mov r21, r3310; CHECK-NEXT:    ldd r22, Y+1 ; 2-byte Folded Reload311; CHECK-NEXT:    ldd r23, Y+2 ; 2-byte Folded Reload312; CHECK-NEXT:    rcall sinl313; CHECK-NEXT:    ldd r24, Y+17314; CHECK-NEXT:    ldd r25, Y+18315; CHECK-NEXT:    mov r30, r6316; CHECK-NEXT:    mov r31, r7317; CHECK-NEXT:    std Z+31, r25318; CHECK-NEXT:    std Z+30, r24319; CHECK-NEXT:    ldd r24, Y+15320; CHECK-NEXT:    ldd r25, Y+16321; CHECK-NEXT:    std Z+29, r25322; CHECK-NEXT:    std Z+28, r24323; CHECK-NEXT:    ldd r24, Y+13324; CHECK-NEXT:    ldd r25, Y+14325; CHECK-NEXT:    std Z+27, r25326; CHECK-NEXT:    std Z+26, r24327; CHECK-NEXT:    ldd r24, Y+11328; CHECK-NEXT:    ldd r25, Y+12329; CHECK-NEXT:    std Z+25, r25330; CHECK-NEXT:    std Z+24, r24331; CHECK-NEXT:    ldd r24, Y+9332; CHECK-NEXT:    ldd r25, Y+10333; CHECK-NEXT:    std Z+23, r25334; CHECK-NEXT:    std Z+22, r24335; CHECK-NEXT:    ldd r24, Y+7336; CHECK-NEXT:    ldd r25, Y+8337; CHECK-NEXT:    std Z+21, r25338; CHECK-NEXT:    std Z+20, r24339; CHECK-NEXT:    ldd r24, Y+5340; CHECK-NEXT:    ldd r25, Y+6341; CHECK-NEXT:    std Z+19, r25342; CHECK-NEXT:    std Z+18, r24343; CHECK-NEXT:    ldd r24, Y+3344; CHECK-NEXT:    ldd r25, Y+4345; CHECK-NEXT:    std Z+17, r25346; CHECK-NEXT:    std Z+16, r24347; CHECK-NEXT:    ldd r24, Y+33348; CHECK-NEXT:    ldd r25, Y+34349; CHECK-NEXT:    std Z+15, r25350; CHECK-NEXT:    std Z+14, r24351; CHECK-NEXT:    ldd r24, Y+31352; CHECK-NEXT:    ldd r25, Y+32353; CHECK-NEXT:    std Z+13, r25354; CHECK-NEXT:    std Z+12, r24355; CHECK-NEXT:    ldd r24, Y+29356; CHECK-NEXT:    ldd r25, Y+30357; CHECK-NEXT:    std Z+11, r25358; CHECK-NEXT:    std Z+10, r24359; CHECK-NEXT:    ldd r24, Y+27360; CHECK-NEXT:    ldd r25, Y+28361; CHECK-NEXT:    std Z+9, r25362; CHECK-NEXT:    std Z+8, r24363; CHECK-NEXT:    ldd r24, Y+25364; CHECK-NEXT:    ldd r25, Y+26365; CHECK-NEXT:    std Z+7, r25366; CHECK-NEXT:    std Z+6, r24367; CHECK-NEXT:    ldd r24, Y+23368; CHECK-NEXT:    ldd r25, Y+24369; CHECK-NEXT:    std Z+5, r25370; CHECK-NEXT:    std Z+4, r24371; CHECK-NEXT:    ldd r24, Y+21372; CHECK-NEXT:    ldd r25, Y+22373; CHECK-NEXT:    std Z+3, r25374; CHECK-NEXT:    std Z+2, r24375; CHECK-NEXT:    ldd r24, Y+19376; CHECK-NEXT:    ldd r25, Y+20377; CHECK-NEXT:    std Z+1, r25378; CHECK-NEXT:    st Z, r24379; CHECK-NEXT:    adiw r28, 34380; CHECK-NEXT:    in r0, 63381; CHECK-NEXT:    cli382; CHECK-NEXT:    out 62, r29383; CHECK-NEXT:    out 63, r0384; CHECK-NEXT:    out 61, r28385; CHECK-NEXT:    pop r29386; CHECK-NEXT:    pop r28387; CHECK-NEXT:    pop r7388; CHECK-NEXT:    pop r6389; CHECK-NEXT:    pop r5390; CHECK-NEXT:    pop r4391; CHECK-NEXT:    pop r3392; CHECK-NEXT:    pop r2393; CHECK-NEXT:    ret394  %result = call { fp128, fp128 } @llvm.sincos.f128(fp128 %a)395  ret { fp128, fp128 } %result396}397 398attributes #0 = { nounwind }399 400;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:401; GNU: {{.*}}402; NONGNU: {{.*}}403