| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py |
| ; RUN: llc < %s -mtriple=mips64el-unknown-linux-gnu -target-abi n64 | FileCheck %s --check-prefix=MIPSN64 |
| ; RUN: llc < %s -mtriple=mips64el-unknown-linux-gnu -target-abi n32 | FileCheck %s --check-prefix=MIPSN32 |
| |
| ; Test that powi has its integer argument sign extended on mips64. |
| |
| declare double @llvm.powi.f64.i32(double, i32) |
| |
| define double @powi(double %value, i32 %power) { |
| ; MIPSN64-LABEL: powi: |
| ; MIPSN64: # %bb.0: |
| ; MIPSN64-NEXT: daddiu $sp, $sp, -16 |
| ; MIPSN64-NEXT: .cfi_def_cfa_offset 16 |
| ; MIPSN64-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill |
| ; MIPSN64-NEXT: .cfi_offset 31, -8 |
| ; MIPSN64-NEXT: jal __powidf2 |
| ; MIPSN64-NEXT: sll $5, $5, 0 |
| ; MIPSN64-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload |
| ; MIPSN64-NEXT: jr $ra |
| ; MIPSN64-NEXT: daddiu $sp, $sp, 16 |
| ; |
| ; MIPSN32-LABEL: powi: |
| ; MIPSN32: # %bb.0: |
| ; MIPSN32-NEXT: addiu $sp, $sp, -16 |
| ; MIPSN32-NEXT: .cfi_def_cfa_offset 16 |
| ; MIPSN32-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill |
| ; MIPSN32-NEXT: .cfi_offset 31, -8 |
| ; MIPSN32-NEXT: jal __powidf2 |
| ; MIPSN32-NEXT: sll $5, $5, 0 |
| ; MIPSN32-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload |
| ; MIPSN32-NEXT: jr $ra |
| ; MIPSN32-NEXT: addiu $sp, $sp, 16 |
| %1 = tail call double @llvm.powi.f64.i32(double %value, i32 %power) |
| ret double %1 |
| } |
| |
| declare float @llvm.powi.f32.i32(float, i32) |
| |
| define float @powfi(float %value, i32 %power) { |
| ; MIPSN64-LABEL: powfi: |
| ; MIPSN64: # %bb.0: |
| ; MIPSN64-NEXT: daddiu $sp, $sp, -16 |
| ; MIPSN64-NEXT: .cfi_def_cfa_offset 16 |
| ; MIPSN64-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill |
| ; MIPSN64-NEXT: .cfi_offset 31, -8 |
| ; MIPSN64-NEXT: jal __powisf2 |
| ; MIPSN64-NEXT: sll $5, $5, 0 |
| ; MIPSN64-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload |
| ; MIPSN64-NEXT: jr $ra |
| ; MIPSN64-NEXT: daddiu $sp, $sp, 16 |
| ; |
| ; MIPSN32-LABEL: powfi: |
| ; MIPSN32: # %bb.0: |
| ; MIPSN32-NEXT: addiu $sp, $sp, -16 |
| ; MIPSN32-NEXT: .cfi_def_cfa_offset 16 |
| ; MIPSN32-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill |
| ; MIPSN32-NEXT: .cfi_offset 31, -8 |
| ; MIPSN32-NEXT: jal __powisf2 |
| ; MIPSN32-NEXT: sll $5, $5, 0 |
| ; MIPSN32-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload |
| ; MIPSN32-NEXT: jr $ra |
| ; MIPSN32-NEXT: addiu $sp, $sp, 16 |
| %1 = tail call float @llvm.powi.f32.i32(float %value, i32 %power) |
| ret float %1 |
| } |