1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2 ; RUN: llc < %s -mtriple=mips64el-unknown-linux-gnu -target-abi n64 | FileCheck %s --check-prefix=MIPSN64 3 ; RUN: llc < %s -mtriple=mips64el-unknown-linux-gnu -target-abi n32 | FileCheck %s --check-prefix=MIPSN32 4 5 ; Test that powi has its integer argument sign extended on mips64. 6 7 declare double @llvm.powi.f64(double, i32) 8 9 define double @powi(double %value, i32 %power) { 10 ; MIPSN64-LABEL: powi: 11 ; MIPSN64: # %bb.0: 12 ; MIPSN64-NEXT: daddiu $sp, $sp, -16 13 ; MIPSN64-NEXT: .cfi_def_cfa_offset 16 14 ; MIPSN64-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill 15 ; MIPSN64-NEXT: .cfi_offset 31, -8 16 ; MIPSN64-NEXT: jal __powidf2 17 ; MIPSN64-NEXT: sll $5, $5, 0 18 ; MIPSN64-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload 19 ; MIPSN64-NEXT: jr $ra 20 ; MIPSN64-NEXT: daddiu $sp, $sp, 16 21 ; 22 ; MIPSN32-LABEL: powi: 23 ; MIPSN32: # %bb.0: 24 ; MIPSN32-NEXT: addiu $sp, $sp, -16 25 ; MIPSN32-NEXT: .cfi_def_cfa_offset 16 26 ; MIPSN32-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill 27 ; MIPSN32-NEXT: .cfi_offset 31, -8 28 ; MIPSN32-NEXT: jal __powidf2 29 ; MIPSN32-NEXT: sll $5, $5, 0 30 ; MIPSN32-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload 31 ; MIPSN32-NEXT: jr $ra 32 ; MIPSN32-NEXT: addiu $sp, $sp, 16 33 %1 = tail call double @llvm.powi.f64(double %value, i32 %power) 34 ret double %1 35 } 36 37 declare float @llvm.powi.f32(float, i32) 38 39 define float @powfi(float %value, i32 %power) { 40 ; MIPSN64-LABEL: powfi: 41 ; MIPSN64: # %bb.0: 42 ; MIPSN64-NEXT: daddiu $sp, $sp, -16 43 ; MIPSN64-NEXT: .cfi_def_cfa_offset 16 44 ; MIPSN64-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill 45 ; MIPSN64-NEXT: .cfi_offset 31, -8 46 ; MIPSN64-NEXT: jal __powisf2 47 ; MIPSN64-NEXT: sll $5, $5, 0 48 ; MIPSN64-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload 49 ; MIPSN64-NEXT: jr $ra 50 ; MIPSN64-NEXT: daddiu $sp, $sp, 16 51 ; 52 ; MIPSN32-LABEL: powfi: 53 ; MIPSN32: # %bb.0: 54 ; MIPSN32-NEXT: addiu $sp, $sp, -16 55 ; MIPSN32-NEXT: .cfi_def_cfa_offset 16 56 ; MIPSN32-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill 57 ; MIPSN32-NEXT: .cfi_offset 31, -8 58 ; MIPSN32-NEXT: jal __powisf2 59 ; MIPSN32-NEXT: sll $5, $5, 0 60 ; MIPSN32-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload 61 ; MIPSN32-NEXT: jr $ra 62 ; MIPSN32-NEXT: addiu $sp, $sp, 16 63 %1 = tail call float @llvm.powi.f32(float %value, i32 %power) 64 ret float %1 65 } 66