blob: 604bf6d700fab975213f2cbf0ec7eea9f2269a20 [file] [edit]
; 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
}