124 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=arm64-apple-ios7.0 -homogeneous-prolog-epilog -frame-helper-size-threshold=6 | FileCheck %s3; RUN: llc < %s -mtriple=aarch64-unknown-linux-gnu -homogeneous-prolog-epilog -frame-helper-size-threshold=6 | FileCheck %s --check-prefixes=CHECK-LINUX4 5define float @_Z3foofffi(float %b, float %x, float %y, i32 %z) uwtable ssp minsize "frame-pointer"="non-leaf" {6; CHECK-LABEL: _Z3foofffi:7; CHECK: ; %bb.0: ; %entry8; CHECK-NEXT: stp d11, d10, [sp, #-64]!9; CHECK-NEXT: stp d9, d8, [sp, #16]10; CHECK-NEXT: stp x20, x19, [sp, #32]11; CHECK-NEXT: stp x29, x30, [sp, #48]12; CHECK-NEXT: add x29, sp, #4813; CHECK-NEXT: .cfi_def_cfa w29, 1614; CHECK-NEXT: .cfi_offset w30, -815; CHECK-NEXT: .cfi_offset w29, -1616; CHECK-NEXT: .cfi_offset w19, -2417; CHECK-NEXT: .cfi_offset w20, -3218; CHECK-NEXT: .cfi_offset b8, -4019; CHECK-NEXT: .cfi_offset b9, -4820; CHECK-NEXT: .cfi_offset b10, -5621; CHECK-NEXT: .cfi_offset b11, -6422; CHECK-NEXT: fmov s3, #1.0000000023; CHECK-NEXT: sub w19, w0, #124; CHECK-NEXT: fadd s8, s0, s325; CHECK-NEXT: fadd s0, s8, s126; CHECK-NEXT: scvtf s1, w027; CHECK-NEXT: fadd s0, s0, s228; CHECK-NEXT: fsub s9, s0, s129; CHECK-NEXT: fmov s0, s830; CHECK-NEXT: bl __Z3goof31; CHECK-NEXT: fmov s10, s032; CHECK-NEXT: fmov s0, s933; CHECK-NEXT: bl __Z3goof34; CHECK-NEXT: fadd s0, s10, s035; CHECK-NEXT: scvtf s1, w1936; CHECK-NEXT: ldp x29, x30, [sp, #48]37; CHECK-NEXT: ldp x20, x19, [sp, #32]38; CHECK-NEXT: fmul s0, s8, s039; CHECK-NEXT: fadd s0, s9, s040; CHECK-NEXT: ldp d9, d8, [sp, #16]41; CHECK-NEXT: fsub s0, s0, s142; CHECK-NEXT: ldp d11, d10, [sp], #6443; CHECK-NEXT: ret44;45; CHECK-LINUX-LABEL: _Z3foofffi:46; CHECK-LINUX: // %bb.0: // %entry47; CHECK-LINUX-NEXT: stp d11, d10, [sp, #-64]!48; CHECK-LINUX-NEXT: stp d9, d8, [sp, #16]49; CHECK-LINUX-NEXT: stp x29, x30, [sp, #32]50; CHECK-LINUX-NEXT: stp x20, x19, [sp, #48]51; CHECK-LINUX-NEXT: add x29, sp, #3252; CHECK-LINUX-NEXT: .cfi_def_cfa w29, 3253; CHECK-LINUX-NEXT: .cfi_offset w19, -854; CHECK-LINUX-NEXT: .cfi_offset w20, -1655; CHECK-LINUX-NEXT: .cfi_offset w30, -2456; CHECK-LINUX-NEXT: .cfi_offset w29, -3257; CHECK-LINUX-NEXT: .cfi_offset b8, -4058; CHECK-LINUX-NEXT: .cfi_offset b9, -4859; CHECK-LINUX-NEXT: .cfi_offset b10, -5660; CHECK-LINUX-NEXT: .cfi_offset b11, -6461; CHECK-LINUX-NEXT: fmov s3, #1.0000000062; CHECK-LINUX-NEXT: sub w19, w0, #163; CHECK-LINUX-NEXT: fadd s8, s0, s364; CHECK-LINUX-NEXT: fadd s0, s8, s165; CHECK-LINUX-NEXT: scvtf s1, w066; CHECK-LINUX-NEXT: fadd s0, s0, s267; CHECK-LINUX-NEXT: fsub s9, s0, s168; CHECK-LINUX-NEXT: fmov s0, s869; CHECK-LINUX-NEXT: bl _Z3goof70; CHECK-LINUX-NEXT: fmov s10, s071; CHECK-LINUX-NEXT: fmov s0, s972; CHECK-LINUX-NEXT: bl _Z3goof73; CHECK-LINUX-NEXT: fadd s0, s10, s074; CHECK-LINUX-NEXT: scvtf s1, w1975; CHECK-LINUX-NEXT: ldp x20, x19, [sp, #48]76; CHECK-LINUX-NEXT: ldp x29, x30, [sp, #32]77; CHECK-LINUX-NEXT: fmul s0, s8, s078; CHECK-LINUX-NEXT: fadd s0, s9, s079; CHECK-LINUX-NEXT: ldp d9, d8, [sp, #16]80; CHECK-LINUX-NEXT: fsub s0, s0, s181; CHECK-LINUX-NEXT: ldp d11, d10, [sp], #6482; CHECK-LINUX-NEXT: ret83entry:84 %inc = fadd float %b, 1.000000e+0085 %add = fadd float %inc, %x86 %add1 = fadd float %add, %y87 %conv = sitofp i32 %z to float88 %sub = fsub float %add1, %conv89 %dec = add nsw i32 %z, -190 %call = tail call float @_Z3goof(float %inc) #291 %call2 = tail call float @_Z3goof(float %sub) #292 %add3 = fadd float %call, %call293 %mul = fmul float %inc, %add394 %add4 = fadd float %sub, %mul95 %conv5 = sitofp i32 %dec to float96 %sub6 = fsub float %add4, %conv597 ret float %sub698}99 100define i32 @_Z3zoov() nounwind ssp minsize {101; CHECK-LABEL: _Z3zoov:102; CHECK: ; %bb.0:103; CHECK-NEXT: stp x29, x30, [sp, #-16]!104; CHECK-NEXT: bl __Z3hoov105; CHECK-NEXT: add w0, w0, #1106; CHECK-NEXT: ldp x29, x30, [sp], #16107; CHECK-NEXT: ret108;109; CHECK-LINUX-LABEL: _Z3zoov:110; CHECK-LINUX: // %bb.0:111; CHECK-LINUX-NEXT: stp x29, x30, [sp, #-16]!112; CHECK-LINUX-NEXT: bl _Z3hoov113; CHECK-LINUX-NEXT: add w0, w0, #1114; CHECK-LINUX-NEXT: ldp x29, x30, [sp], #16115; CHECK-LINUX-NEXT: ret116 %1 = tail call i32 @_Z3hoov() #2117 %2 = add nsw i32 %1, 1118 ret i32 %2119}120 121 122declare float @_Z3goof(float) nounwind ssp minsize123declare i32 @_Z3hoov() nounwind ssp minsize124