| ; RUN: llc < %s -march=xcore | FileCheck %s |
| declare double @llvm.cos.f64(double) |
| declare double @llvm.exp.f64(double) |
| declare double @llvm.exp2.f64(double) |
| declare double @llvm.log.f64(double) |
| declare double @llvm.log10.f64(double) |
| declare double @llvm.log2.f64(double) |
| declare double @llvm.pow.f64(double, double) |
| declare double @llvm.powi.f64(double, i32) |
| declare double @llvm.sin.f64(double) |
| declare double @llvm.sqrt.f64(double) |
| |
| define double @cos(double %F) { |
| ; CHECK: cos: |
| ; CHECK: bl cos |
| %result = call double @llvm.cos.f64(double %F) |
| ret double %result |
| } |
| |
| declare float @llvm.cos.f32(float) |
| |
| ; CHECK: cosf: |
| ; CHECK: bl cosf |
| define float @cosf(float %F) { |
| %result = call float @llvm.cos.f32(float %F) |
| ret float %result |
| } |
| |
| define double @exp(double %F) { |
| ; CHECK: exp: |
| ; CHECK: bl exp |
| %result = call double @llvm.exp.f64(double %F) |
| ret double %result |
| } |
| |
| declare float @llvm.exp.f32(float) |
| |
| define float @expf(float %F) { |
| ; CHECK: expf: |
| ; CHECK: bl expf |
| %result = call float @llvm.exp.f32(float %F) |
| ret float %result |
| } |
| |
| define double @exp2(double %F) { |
| ; CHECK: exp2: |
| ; CHECK: bl exp2 |
| %result = call double @llvm.exp2.f64(double %F) |
| ret double %result |
| } |
| |
| declare float @llvm.exp2.f32(float) |
| |
| define float @exp2f(float %F) { |
| ; CHECK: exp2f: |
| ; CHECK: bl exp2f |
| %result = call float @llvm.exp2.f32(float %F) |
| ret float %result |
| } |
| |
| define double @log(double %F) { |
| ; CHECK: log: |
| ; CHECK: bl log |
| %result = call double @llvm.log.f64(double %F) |
| ret double %result |
| } |
| |
| declare float @llvm.log.f32(float) |
| |
| define float @logf(float %F) { |
| ; CHECK: logf: |
| ; CHECK: bl logf |
| %result = call float @llvm.log.f32(float %F) |
| ret float %result |
| } |
| |
| define double @log10(double %F) { |
| ; CHECK: log10: |
| ; CHECK: bl log10 |
| %result = call double @llvm.log10.f64(double %F) |
| ret double %result |
| } |
| |
| declare float @llvm.log10.f32(float) |
| |
| define float @log10f(float %F) { |
| ; CHECK: log10f: |
| ; CHECK: bl log10f |
| %result = call float @llvm.log10.f32(float %F) |
| ret float %result |
| } |
| |
| define double @log2(double %F) { |
| ; CHECK: log2: |
| ; CHECK: bl log2 |
| %result = call double @llvm.log2.f64(double %F) |
| ret double %result |
| } |
| |
| declare float @llvm.log2.f32(float) |
| |
| define float @log2f(float %F) { |
| ; CHECK: log2f: |
| ; CHECK: bl log2f |
| %result = call float @llvm.log2.f32(float %F) |
| ret float %result |
| } |
| |
| define double @pow(double %F, double %power) { |
| ; CHECK: pow: |
| ; CHECK: bl pow |
| %result = call double @llvm.pow.f64(double %F, double %power) |
| ret double %result |
| } |
| |
| declare float @llvm.pow.f32(float, float) |
| |
| define float @powf(float %F, float %power) { |
| ; CHECK: powf: |
| ; CHECK: bl powf |
| %result = call float @llvm.pow.f32(float %F, float %power) |
| ret float %result |
| } |
| |
| define double @powi(double %F, i32 %power) { |
| ; CHECK: powi: |
| ; CHECK: bl __powidf2 |
| %result = call double @llvm.powi.f64(double %F, i32 %power) |
| ret double %result |
| } |
| |
| declare float @llvm.powi.f32(float, i32) |
| |
| define float @powif(float %F, i32 %power) { |
| ; CHECK: powif: |
| ; CHECK: bl __powisf2 |
| %result = call float @llvm.powi.f32(float %F, i32 %power) |
| ret float %result |
| } |
| |
| define double @sin(double %F) { |
| ; CHECK: sin: |
| ; CHECK: bl sin |
| %result = call double @llvm.sin.f64(double %F) |
| ret double %result |
| } |
| |
| declare float @llvm.sin.f32(float) |
| |
| define float @sinf(float %F) { |
| ; CHECK: sinf: |
| ; CHECK: bl sinf |
| %result = call float @llvm.sin.f32(float %F) |
| ret float %result |
| } |
| |
| define double @sqrt(double %F) { |
| ; CHECK: sqrt: |
| ; CHECK: bl sqrt |
| %result = call double @llvm.sqrt.f64(double %F) |
| ret double %result |
| } |
| |
| declare float @llvm.sqrt.f32(float) |
| |
| define float @sqrtf(float %F) { |
| ; CHECK: sqrtf: |
| ; CHECK: bl sqrtf |
| %result = call float @llvm.sqrt.f32(float %F) |
| ret float %result |
| } |