brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · cd75184 Raw
86 lines · plain
1; RUN: llc < %s -mtriple=arm64-apple-ios7.0  -homogeneous-prolog-epilog | FileCheck %s2; RUN: llc < %s -mtriple=aarch64-unknown-linux-gnu  -homogeneous-prolog-epilog | FileCheck %s --check-prefixes=CHECK-LINUX3 4; CHECK-LABEL: __Z3foofffi:5; CHECK:      stp     x29, x30, [sp, #-16]!6; CHECK-NEXT: bl      _OUTLINED_FUNCTION_PROLOG_FRAME48_x30x29x19x20d8d9d10d117; CHECK:      bl      __Z3goof8; CHECK:      bl      __Z3goof9; CHECK:      b       _OUTLINED_FUNCTION_EPILOG_TAIL_x30x29x19x20d8d9d10d1110 11; CHECK-LINUX-LABEL: _Z3foofffi:12; CHECK-LINUX:      stp     x29, x30, [sp, #-32]!13; CHECK-LINUX-NEXT: bl      OUTLINED_FUNCTION_PROLOG_FRAME32_x19x20x30x29d8d9d10d1114; CHECK-LINUX:      bl      _Z3goof15; CHECK-LINUX:      bl      _Z3goof16; CHECK-LINUX:      b       OUTLINED_FUNCTION_EPILOG_TAIL_x19x20x30x29d8d9d10d1117 18define float @_Z3foofffi(float %b, float %x, float %y, i32 %z) ssp minsize "frame-pointer"="non-leaf" {19entry:20  %inc = fadd float %b, 1.000000e+0021  %add = fadd float %inc, %x22  %add1 = fadd float %add, %y23  %conv = sitofp i32 %z to float24  %sub = fsub float %add1, %conv25  %dec = add nsw i32 %z, -126  %call = tail call float @_Z3goof(float %inc) #227  %call2 = tail call float @_Z3goof(float %sub) #228  %add3 = fadd float %call, %call229  %mul = fmul float %inc, %add330  %add4 = fadd float %sub, %mul31  %conv5 = sitofp i32 %dec to float32  %sub6 = fsub float %add4, %conv533  ret float %sub634}35 36; CHECK-LABEL: _Z3zoov:37; CHECK:      stp     x29, x30, [sp, #-16]!38; CHECK:      bl      __Z3hoo39; CHECK:      b       _OUTLINED_FUNCTION_EPILOG_TAIL_x30x2940 41define i32 @_Z3zoov() nounwind ssp minsize {42  %1 = tail call i32 @_Z3hoov() #243  %2 = add nsw i32 %1, 144  ret i32 %245}46 47 48declare float @_Z3goof(float) nounwind ssp minsize49declare i32 @_Z3hoov() nounwind ssp optsize50 51; CHECK-LABEL:  _OUTLINED_FUNCTION_PROLOG_FRAME48_x30x29x19x20d8d9d10d11:52; CHECK:      stp     d11, d10, [sp, #-48]!53; CHECK-NEXT: stp     d9, d8, [sp, #16]54; CHECK-NEXT: add     x29, sp, #4855; CHECK-NEXT: stp     x20, x19, [sp, #32]56; CHECK-NEXT: ret57 58; CHECK-LABEL: _OUTLINED_FUNCTION_EPILOG_TAIL_x30x29x19x20d8d9d10d11:59; CHECK:      ldp     x29, x30, [sp, #48]60; CHECK-NEXT: ldp     x20, x19, [sp, #32]61; CHECK-NEXT: ldp     d9, d8, [sp, #16]62; CHECK-NEXT: ldp     d11, d10, [sp], #6463; CHECK-NEXT: ret64 65; CHECK-LABEL: _OUTLINED_FUNCTION_EPILOG_TAIL_x30x29:66; CHECK:      ldp     x29, x30, [sp], #1667; CHECK-NEXT: ret68 69; CHECK-LINUX-LABEL:  OUTLINED_FUNCTION_PROLOG_FRAME32_x19x20x30x29d8d9d10d11:70; CHECK-LINUX:      stp     d11, d10, [sp, #-32]!71; CHECK-LINUX-NEXT: stp     d9, d8, [sp, #16]72; CHECK-LINUX-NEXT: add     x29, sp, #3273; CHECK-LINUX-NEXT: stp     x20, x19, [sp, #48]74; CHECK-LINUX-NEXT: ret75 76; CHECK-LINUX-LABEL: OUTLINED_FUNCTION_EPILOG_TAIL_x19x20x30x29d8d9d10d11:77; CHECK-LINUX:      ldp     x20, x19, [sp, #48]78; CHECK-LINUX-NEXT: ldp     x29, x30, [sp, #32]79; CHECK-LINUX-NEXT: ldp     d9, d8, [sp, #16]80; CHECK-LINUX-NEXT: ldp     d11, d10, [sp], #6481; CHECK-LINUX-NEXT: ret82 83; CHECK-LINUX-LABEL: OUTLINED_FUNCTION_EPILOG_TAIL_x30x29:84; CHECK-LINUX:      ldp     x29, x30, [sp], #1685; CHECK-LINUX-NEXT: ret86