| ; 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 | |
| } |