1 ; RUN: llc -mtriple=aarch64-linux-gnu -verify-machineinstrs -o - %s | FileCheck %s 2 3 define float @test_sincos_f32(float %f) { 4 ; CHECK-LABEL: test_sincos_f32: 5 %sin = call float @sinf(float %f) readnone 6 %cos = call float @cosf(float %f) readnone 7 ; CHECK: bl sincosf 8 %val = fadd float %sin, %cos 9 ret float %val 10 } 11 12 define float @test_sincos_f32_errno(float %f) { 13 ; CHECK-LABEL: test_sincos_f32_errno: 14 %sin = call float @sinf(float %f) 15 %cos = call float @cosf(float %f) 16 ; CHECK: bl sinf 17 ; CHECK: bl cosf 18 %val = fadd float %sin, %cos 19 ret float %val 20 } 21 22 define double @test_sincos_f64(double %f) { 23 ; CHECK-LABEL: test_sincos_f64: 24 %sin = call double @sin(double %f) readnone 25 %cos = call double @cos(double %f) readnone 26 %val = fadd double %sin, %cos 27 ; CHECK: bl sincos 28 ret double %val 29 } 30 31 define double @test_sincos_f64_errno(double %f) { 32 ; CHECK-LABEL: test_sincos_f64_errno: 33 %sin = call double @sin(double %f) 34 %cos = call double @cos(double %f) 35 %val = fadd double %sin, %cos 36 ; CHECK: bl sin 37 ; CHECK: bl cos 38 ret double %val 39 } 40 41 define fp128 @test_sincos_f128(fp128 %f) { 42 ; CHECK-LABEL: test_sincos_f128: 43 %sin = call fp128 @sinl(fp128 %f) readnone 44 %cos = call fp128 @cosl(fp128 %f) readnone 45 %val = fadd fp128 %sin, %cos 46 ; CHECK: bl sincosl 47 ret fp128 %val 48 } 49 50 define fp128 @test_sincos_f128_errno(fp128 %f) { 51 ; CHECK-LABEL: test_sincos_f128_errno: 52 %sin = call fp128 @sinl(fp128 %f) 53 %cos = call fp128 @cosl(fp128 %f) 54 %val = fadd fp128 %sin, %cos 55 ; CHECK: bl sinl 56 ; CHECK: bl cosl 57 ret fp128 %val 58 } 59 60 declare float @sinf(float) 61 declare double @sin(double) 62 declare fp128 @sinl(fp128) 63 declare float @cosf(float) 64 declare double @cos(double) 65 declare fp128 @cosl(fp128) 66