| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6 |
| ; RUN: llc -mtriple=sparc < %s | FileCheck %s |
| |
| declare float @llvm.powi.f32.i32(float, i32) |
| declare double @llvm.powi.f64.i32(double, i32) |
| |
| define float @powi_f32(float %a, i32 %b) nounwind { |
| ; CHECK-LABEL: powi_f32: |
| ; CHECK: ! %bb.0: |
| ; CHECK-NEXT: save %sp, -96, %sp |
| ; CHECK-NEXT: mov %i1, %o1 |
| ; CHECK-NEXT: call __powisf2 |
| ; CHECK-NEXT: mov %i0, %o0 |
| ; CHECK-NEXT: ret |
| ; CHECK-NEXT: restore |
| %r = call float @llvm.powi.f32.i32(float %a, i32 %b) |
| ret float %r |
| } |
| |
| define double @powi_f64(double %a, i32 %b) nounwind { |
| ; CHECK-LABEL: powi_f64: |
| ; CHECK: ! %bb.0: |
| ; CHECK-NEXT: save %sp, -112, %sp |
| ; CHECK-NEXT: ! kill: def $i1 killed $i1 killed $i0_i1 def $i0_i1 |
| ; CHECK-NEXT: ! kill: def $i0 killed $i0 killed $i0_i1 def $i0_i1 |
| ; CHECK-NEXT: std %i0, [%fp+-8] |
| ; CHECK-NEXT: ldd [%fp+-8], %f0 |
| ; CHECK-NEXT: mov %i2, %o2 |
| ; CHECK-NEXT: std %f0, [%fp+-16] |
| ; CHECK-NEXT: call __powidf2 |
| ; CHECK-NEXT: ldd [%fp+-16], %o0 |
| ; CHECK-NEXT: ret |
| ; CHECK-NEXT: restore |
| %r = call double @llvm.powi.f64.i32(double %a, i32 %b) |
| ret double %r |
| } |