brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.3 KiB · 6d2288b Raw
251 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 62; RUN: llc -mtriple=arm64-apple-macosx10.9 < %s | FileCheck %s3 4define { half, half } @test_sincospi_f16(half %a) #0 {5; CHECK-LABEL: test_sincospi_f16:6; CHECK:       ; %bb.0:7; CHECK-NEXT:    sub sp, sp, #328; CHECK-NEXT:    fcvt s0, h09; CHECK-NEXT:    add x0, sp, #1210; CHECK-NEXT:    add x1, sp, #811; CHECK-NEXT:    stp x29, x30, [sp, #16] ; 16-byte Folded Spill12; CHECK-NEXT:    bl ___sincospif13; CHECK-NEXT:    ldp s1, s0, [sp, #8]14; CHECK-NEXT:    ldp x29, x30, [sp, #16] ; 16-byte Folded Reload15; CHECK-NEXT:    fcvt h0, s016; CHECK-NEXT:    fcvt h1, s117; CHECK-NEXT:    add sp, sp, #3218; CHECK-NEXT:    ret19  %result = call { half, half } @llvm.sincospi.f16(half %a)20  ret { half, half } %result21}22 23define half @test_sincospi_f16_only_use_sin(half %a) #0 {24; CHECK-LABEL: test_sincospi_f16_only_use_sin:25; CHECK:       ; %bb.0:26; CHECK-NEXT:    sub sp, sp, #3227; CHECK-NEXT:    fcvt s0, h028; CHECK-NEXT:    add x0, sp, #1229; CHECK-NEXT:    add x1, sp, #830; CHECK-NEXT:    stp x29, x30, [sp, #16] ; 16-byte Folded Spill31; CHECK-NEXT:    bl ___sincospif32; CHECK-NEXT:    ldr s0, [sp, #12]33; CHECK-NEXT:    ldp x29, x30, [sp, #16] ; 16-byte Folded Reload34; CHECK-NEXT:    fcvt h0, s035; CHECK-NEXT:    add sp, sp, #3236; CHECK-NEXT:    ret37  %result = call { half, half } @llvm.sincospi.f16(half %a)38  %result.0 = extractvalue { half, half } %result, 039  ret half %result.040}41 42define half @test_sincospi_f16_only_use_cos(half %a) #0 {43; CHECK-LABEL: test_sincospi_f16_only_use_cos:44; CHECK:       ; %bb.0:45; CHECK-NEXT:    sub sp, sp, #3246; CHECK-NEXT:    fcvt s0, h047; CHECK-NEXT:    add x0, sp, #1248; CHECK-NEXT:    add x1, sp, #849; CHECK-NEXT:    stp x29, x30, [sp, #16] ; 16-byte Folded Spill50; CHECK-NEXT:    bl ___sincospif51; CHECK-NEXT:    ldr s0, [sp, #8]52; CHECK-NEXT:    ldp x29, x30, [sp, #16] ; 16-byte Folded Reload53; CHECK-NEXT:    fcvt h0, s054; CHECK-NEXT:    add sp, sp, #3255; CHECK-NEXT:    ret56  %result = call { half, half } @llvm.sincospi.f16(half %a)57  %result.1 = extractvalue { half, half } %result, 158  ret half %result.159}60 61define { <2 x half>, <2 x half> } @test_sincospi_v2f16(<2 x half> %a) #0 {62; CHECK-LABEL: test_sincospi_v2f16:63; CHECK:       ; %bb.0:64; CHECK-NEXT:    sub sp, sp, #6465; CHECK-NEXT:    ; kill: def $d0 killed $d0 def $q066; CHECK-NEXT:    mov h1, v0[1]67; CHECK-NEXT:    str q0, [sp] ; 16-byte Spill68; CHECK-NEXT:    add x0, sp, #2869; CHECK-NEXT:    add x1, sp, #2470; CHECK-NEXT:    stp x29, x30, [sp, #48] ; 16-byte Folded Spill71; CHECK-NEXT:    fcvt s0, h172; CHECK-NEXT:    bl ___sincospif73; CHECK-NEXT:    ldr q0, [sp] ; 16-byte Reload74; CHECK-NEXT:    add x0, sp, #2075; CHECK-NEXT:    add x1, sp, #1676; CHECK-NEXT:    fcvt s0, h077; CHECK-NEXT:    bl ___sincospif78; CHECK-NEXT:    ldr q0, [sp] ; 16-byte Reload79; CHECK-NEXT:    add x0, sp, #3680; CHECK-NEXT:    add x1, sp, #3281; CHECK-NEXT:    mov h0, v0[2]82; CHECK-NEXT:    fcvt s0, h083; CHECK-NEXT:    bl ___sincospif84; CHECK-NEXT:    ldr q0, [sp] ; 16-byte Reload85; CHECK-NEXT:    add x0, sp, #4486; CHECK-NEXT:    add x1, sp, #4087; CHECK-NEXT:    mov h0, v0[3]88; CHECK-NEXT:    fcvt s0, h089; CHECK-NEXT:    bl ___sincospif90; CHECK-NEXT:    ldp s2, s0, [sp, #24]91; CHECK-NEXT:    ldp s3, s1, [sp, #16]92; CHECK-NEXT:    ldp x29, x30, [sp, #48] ; 16-byte Folded Reload93; CHECK-NEXT:    fcvt h4, s094; CHECK-NEXT:    fcvt h2, s295; CHECK-NEXT:    fcvt h0, s196; CHECK-NEXT:    fcvt h1, s397; CHECK-NEXT:    ldp s5, s3, [sp, #32]98; CHECK-NEXT:    fcvt h3, s399; CHECK-NEXT:    mov.h v0[1], v4[0]100; CHECK-NEXT:    fcvt h4, s5101; CHECK-NEXT:    mov.h v1[1], v2[0]102; CHECK-NEXT:    ldp s5, s2, [sp, #40]103; CHECK-NEXT:    mov.h v0[2], v3[0]104; CHECK-NEXT:    fcvt h2, s2105; CHECK-NEXT:    fcvt h3, s5106; CHECK-NEXT:    mov.h v1[2], v4[0]107; CHECK-NEXT:    mov.h v0[3], v2[0]108; CHECK-NEXT:    mov.h v1[3], v3[0]109; CHECK-NEXT:    ; kill: def $d0 killed $d0 killed $q0110; CHECK-NEXT:    ; kill: def $d1 killed $d1 killed $q1111; CHECK-NEXT:    add sp, sp, #64112; CHECK-NEXT:    ret113  %result = call { <2 x half>, <2 x half> } @llvm.sincospi.v2f16(<2 x half> %a)114  ret { <2 x half>, <2 x half> } %result115}116 117define { float, float } @test_sincospi_f32(float %a) #0 {118; CHECK-LABEL: test_sincospi_f32:119; CHECK:       ; %bb.0:120; CHECK-NEXT:    sub sp, sp, #32121; CHECK-NEXT:    add x0, sp, #12122; CHECK-NEXT:    add x1, sp, #8123; CHECK-NEXT:    stp x29, x30, [sp, #16] ; 16-byte Folded Spill124; CHECK-NEXT:    bl ___sincospif125; CHECK-NEXT:    ldp s1, s0, [sp, #8]126; CHECK-NEXT:    ldp x29, x30, [sp, #16] ; 16-byte Folded Reload127; CHECK-NEXT:    add sp, sp, #32128; CHECK-NEXT:    ret129  %result = call { float, float } @llvm.sincospi.f32(float %a)130  ret { float, float } %result131}132 133define { <3 x float>, <3 x float> } @test_sincospi_v3f32(<3 x float> %a) #0 {134; CHECK-LABEL: test_sincospi_v3f32:135; CHECK:       ; %bb.0:136; CHECK-NEXT:    sub sp, sp, #96137; CHECK-NEXT:    add x0, sp, #28138; CHECK-NEXT:    add x1, sp, #24139; CHECK-NEXT:    stp x22, x21, [sp, #48] ; 16-byte Folded Spill140; CHECK-NEXT:    stp x20, x19, [sp, #64] ; 16-byte Folded Spill141; CHECK-NEXT:    stp x29, x30, [sp, #80] ; 16-byte Folded Spill142; CHECK-NEXT:    str q0, [sp] ; 16-byte Spill143; CHECK-NEXT:    ; kill: def $s0 killed $s0 killed $q0144; CHECK-NEXT:    bl ___sincospif145; CHECK-NEXT:    ldr q0, [sp] ; 16-byte Reload146; CHECK-NEXT:    add x0, sp, #36147; CHECK-NEXT:    add x1, sp, #32148; CHECK-NEXT:    add x19, sp, #36149; CHECK-NEXT:    add x20, sp, #32150; CHECK-NEXT:    mov s0, v0[1]151; CHECK-NEXT:    bl ___sincospif152; CHECK-NEXT:    ldr q0, [sp] ; 16-byte Reload153; CHECK-NEXT:    add x0, sp, #44154; CHECK-NEXT:    add x1, sp, #40155; CHECK-NEXT:    add x21, sp, #44156; CHECK-NEXT:    add x22, sp, #40157; CHECK-NEXT:    mov s0, v0[2]158; CHECK-NEXT:    bl ___sincospif159; CHECK-NEXT:    ldp s1, s0, [sp, #24]160; CHECK-NEXT:    ldp x29, x30, [sp, #80] ; 16-byte Folded Reload161; CHECK-NEXT:    ld1.s { v0 }[1], [x19]162; CHECK-NEXT:    ld1.s { v1 }[1], [x20]163; CHECK-NEXT:    ldp x20, x19, [sp, #64] ; 16-byte Folded Reload164; CHECK-NEXT:    ld1.s { v0 }[2], [x21]165; CHECK-NEXT:    ld1.s { v1 }[2], [x22]166; CHECK-NEXT:    ldp x22, x21, [sp, #48] ; 16-byte Folded Reload167; CHECK-NEXT:    add sp, sp, #96168; CHECK-NEXT:    ret169  %result = call { <3 x float>, <3 x float> } @llvm.sincospi.v3f32(<3 x float> %a)170  ret { <3 x float>, <3 x float> } %result171}172 173define { <2 x float>, <2 x float> } @test_sincospi_v2f32(<2 x float> %a) #0 {174; CHECK-LABEL: test_sincospi_v2f32:175; CHECK:       ; %bb.0:176; CHECK-NEXT:    sub sp, sp, #64177; CHECK-NEXT:    ; kill: def $d0 killed $d0 def $q0178; CHECK-NEXT:    add x0, sp, #28179; CHECK-NEXT:    add x1, sp, #24180; CHECK-NEXT:    stp x20, x19, [sp, #32] ; 16-byte Folded Spill181; CHECK-NEXT:    stp x29, x30, [sp, #48] ; 16-byte Folded Spill182; CHECK-NEXT:    str q0, [sp] ; 16-byte Spill183; CHECK-NEXT:    ; kill: def $s0 killed $s0 killed $q0184; CHECK-NEXT:    bl ___sincospif185; CHECK-NEXT:    ldr q0, [sp] ; 16-byte Reload186; CHECK-NEXT:    add x0, sp, #20187; CHECK-NEXT:    add x1, sp, #16188; CHECK-NEXT:    add x19, sp, #20189; CHECK-NEXT:    add x20, sp, #16190; CHECK-NEXT:    mov s0, v0[1]191; CHECK-NEXT:    bl ___sincospif192; CHECK-NEXT:    ldp s1, s0, [sp, #24]193; CHECK-NEXT:    ldp x29, x30, [sp, #48] ; 16-byte Folded Reload194; CHECK-NEXT:    ld1.s { v0 }[1], [x19]195; CHECK-NEXT:    ld1.s { v1 }[1], [x20]196; CHECK-NEXT:    ldp x20, x19, [sp, #32] ; 16-byte Folded Reload197; CHECK-NEXT:    ; kill: def $d0 killed $d0 killed $q0198; CHECK-NEXT:    ; kill: def $d1 killed $d1 killed $q1199; CHECK-NEXT:    add sp, sp, #64200; CHECK-NEXT:    ret201  %result = call { <2 x float>, <2 x float> } @llvm.sincospi.v2f32(<2 x float> %a)202  ret { <2 x float>, <2 x float> } %result203}204 205define { double, double } @test_sincospi_f64(double %a) #0 {206; CHECK-LABEL: test_sincospi_f64:207; CHECK:       ; %bb.0:208; CHECK-NEXT:    sub sp, sp, #32209; CHECK-NEXT:    add x0, sp, #8210; CHECK-NEXT:    mov x1, sp211; CHECK-NEXT:    stp x29, x30, [sp, #16] ; 16-byte Folded Spill212; CHECK-NEXT:    bl ___sincospi213; CHECK-NEXT:    ldp d1, d0, [sp]214; CHECK-NEXT:    ldp x29, x30, [sp, #16] ; 16-byte Folded Reload215; CHECK-NEXT:    add sp, sp, #32216; CHECK-NEXT:    ret217  %result = call { double, double } @llvm.sincospi.f64(double %a)218  ret { double, double } %result219}220 221define { <2 x double>, <2 x double> } @test_sincospi_v2f64(<2 x double> %a) #0 {222; CHECK-LABEL: test_sincospi_v2f64:223; CHECK:       ; %bb.0:224; CHECK-NEXT:    sub sp, sp, #80225; CHECK-NEXT:    add x0, sp, #40226; CHECK-NEXT:    add x1, sp, #32227; CHECK-NEXT:    stp x20, x19, [sp, #48] ; 16-byte Folded Spill228; CHECK-NEXT:    stp x29, x30, [sp, #64] ; 16-byte Folded Spill229; CHECK-NEXT:    str q0, [sp] ; 16-byte Spill230; CHECK-NEXT:    ; kill: def $d0 killed $d0 killed $q0231; CHECK-NEXT:    bl ___sincospi232; CHECK-NEXT:    ldr q0, [sp] ; 16-byte Reload233; CHECK-NEXT:    add x0, sp, #24234; CHECK-NEXT:    add x1, sp, #16235; CHECK-NEXT:    add x19, sp, #24236; CHECK-NEXT:    add x20, sp, #16237; CHECK-NEXT:    mov d0, v0[1]238; CHECK-NEXT:    bl ___sincospi239; CHECK-NEXT:    ldp d1, d0, [sp, #32]240; CHECK-NEXT:    ldp x29, x30, [sp, #64] ; 16-byte Folded Reload241; CHECK-NEXT:    ld1.d { v0 }[1], [x19]242; CHECK-NEXT:    ld1.d { v1 }[1], [x20]243; CHECK-NEXT:    ldp x20, x19, [sp, #48] ; 16-byte Folded Reload244; CHECK-NEXT:    add sp, sp, #80245; CHECK-NEXT:    ret246  %result = call { <2 x double>, <2 x double> } @llvm.sincospi.v2f64(<2 x double> %a)247  ret { <2 x double>, <2 x double> } %result248}249 250attributes #0 = { nounwind }251