Home | History | Annotate | Download | only in AArch64
      1 #RUN: llc -mtriple=aarch64-- -run-pass prologepilog %s -o - | FileCheck %s
      2 # Check that we use the frame pointer to address the emergency spill slot.
      3 # Using the base pointer will result in an assert with "Emergency spill slot is
      4 # out of reach".
      5 ---
      6 name: hugeStack
      7 # CHECK-LABEL: name: hugeStack
      8 tracksRegLiveness: true
      9 frameInfo:
     10   localFrameSize:  256
     11 stack:
     12   - { id: 0, type: variable-sized,  alignment: 1 }
     13   - { id: 1, name: '', size: 32761, alignment: 8 }
     14 body: |
     15   bb.0:
     16     STRXui undef $x8, %stack.0, 0
     17     ; CHECK: STURXi undef $x8, $fp, -24
     18     B %bb.1
     19   bb.1:
     20     liveins: $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x16, $x17, $x18, $x19, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $fp, $lr
     21     RET_ReallyLR implicit $x21, implicit $x22, implicit $x23, implicit $x24, implicit $x25, implicit $x26, implicit $x27, implicit $x28
     22 ...
     23 ---
     24 name: fpDoesNotFit
     25 # CHECK-LABEL: name: fpDoesNotFit
     26 tracksRegLiveness: true
     27 frameInfo:
     28   hasStackMap: true
     29 # set to true to force hasFP to true.
     30 stack:
     31   - { id: 0, name: '', size: 4096, alignment: 8 }
     32   - { id: 1, name: '', size: 32761, alignment: 8 }
     33 body: |
     34   bb.0:
     35     STRXui undef $x8, %stack.0, -34
     36     ; Pick SP here. Picking FP will require scavenging a register.
     37     ; CHECK: STRXui undef $x8, $sp, 4062
     38     RET_ReallyLR
     39