133 lines · plain
1# RUN: llc -o - %s -mtriple=aarch64-windows -start-after=prologepilog \2# RUN: -filetype=obj | llvm-readobj --unwind - | FileCheck %s3# Check save_fplr_x, set_fp, alloc_s4 5# CHECK: ExceptionData {6# CHECK-NEXT: FunctionLength: 927# CHECK-NEXT: Version: 08# CHECK-NEXT: ExceptionData: No9# CHECK-NEXT: EpiloguePacked: Yes10# CHECK-NEXT: EpilogueOffset: 111# CHECK-NEXT: ByteCodeLength: 412# CHECK-NEXT: Prologue [13# CHECK-NEXT: 0x02 ; sub sp, #3214# CHECK-NEXT: 0xe1 ; mov fp, sp15# CHECK-NEXT: 0x81 ; stp x29, x30, [sp, #-16]!16# CHECK-NEXT: 0xe4 ; end17# CHECK-NEXT: ]18# CHECK-NEXT: Epilogue [19# CHECK-NEXT: 0xe1 ; mov sp, fp20# CHECK-NEXT: 0x81 ; ldp x29, x30, [sp], #1621# CHECK-NEXT: 0xe4 ; end22# CHECK-NEXT: ]23# CHECK-NEXT: }24...25---26name: '?func@@YAHHHHH@Z'27alignment: 828exposesReturnsTwice: false29legalized: false30regBankSelected: false31selected: false32failedISel: false33tracksRegLiveness: true34hasWinCFI: true35registers:36liveins:37 - { reg: '$w0', virtual-reg: '' }38 - { reg: '$w1', virtual-reg: '' }39 - { reg: '$w2', virtual-reg: '' }40 - { reg: '$w3', virtual-reg: '' }41frameInfo:42 isFrameAddressTaken: false43 isReturnAddressTaken: false44 hasStackMap: false45 hasPatchPoint: false46 stackSize: 4847 offsetAdjustment: 048 maxAlignment: 849 adjustsStack: true50 hasCalls: true51 stackProtector: ''52 maxCallFrameSize: 053 hasOpaqueSPAdjustment: false54 hasVAStart: false55 hasMustTailInVarArgFunc: false56 localFrameSize: 2457 savePoint: []58 restorePoint: []59fixedStack:60stack:61 - { id: 0, name: '', type: default, offset: -20, size: 4, alignment: 4,62 stack-id: default, callee-saved-register: '', callee-saved-restored: true,63 local-offset: -4, debug-info-variable: '', debug-info-expression: '',64 debug-info-location: '' }65 - { id: 1, name: '', type: default, offset: -24, size: 4, alignment: 4,66 stack-id: default, callee-saved-register: '', callee-saved-restored: true,67 local-offset: -8, debug-info-variable: '', debug-info-expression: '',68 debug-info-location: '' }69 - { id: 2, name: '', type: default, offset: -28, size: 4, alignment: 4,70 stack-id: default, callee-saved-register: '', callee-saved-restored: true,71 local-offset: -12, debug-info-variable: '', debug-info-expression: '',72 debug-info-location: '' }73 - { id: 3, name: '', type: default, offset: -32, size: 4, alignment: 4,74 stack-id: default, callee-saved-register: '', callee-saved-restored: true,75 local-offset: -16, debug-info-variable: '', debug-info-expression: '',76 debug-info-location: '' }77 - { id: 4, name: '', type: default, offset: -40, size: 8, alignment: 8,78 stack-id: default, callee-saved-register: '', callee-saved-restored: true,79 local-offset: -24, debug-info-variable: '', debug-info-expression: '',80 debug-info-location: '' }81 - { id: 5, name: '', type: variable-sized, offset: -40,82 alignment: 1, stack-id: default, callee-saved-register: '', callee-saved-restored: true,83 local-offset: -24, debug-info-variable: '', debug-info-expression: '',84 debug-info-location: '' }85 - { id: 6, name: '', type: spill-slot, offset: -48, size: 8, alignment: 8,86 stack-id: default, callee-saved-register: '', callee-saved-restored: true,87 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }88 - { id: 7, name: '', type: spill-slot, offset: -8, size: 8, alignment: 8,89 stack-id: default, callee-saved-register: '$fp', callee-saved-restored: true,90 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }91 - { id: 8, name: '', type: spill-slot, offset: -16, size: 8, alignment: 8,92 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: true,93 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }94constants:95body: |96 bb.0.entry:97 liveins: $w0, $w1, $w2, $w3, $lr98 99 early-clobber $sp = frame-setup STPXpre killed $fp, killed $lr, $sp, -2 :: (store (s64) into %stack.7), (store (s64) into %stack.8)100 frame-setup SEH_SaveFPLR_X -16101 $fp = frame-setup ADDXri $sp, 0, 0102 frame-setup SEH_SetFP103 $sp = frame-setup SUBXri $sp, 32, 0104 frame-setup SEH_StackAlloc 32105 frame-setup SEH_PrologEnd106 STURWi killed renamable $w3, $fp, -4107 STURWi killed renamable $w2, $fp, -8108 STURWi killed renamable $w1, $fp, -12109 STURWi killed renamable $w0, $fp, -16110 renamable $x8 = LDURSWi $fp, -16111 renamable $x8 = ADDXri killed renamable $x8, 15, 0112 renamable $x8 = UBFMXri killed renamable $x8, 4, 63113 $x15 = COPY renamable $x8114 STURXi killed $x8, $fp, -32 :: (store (s64) into %stack.6)115 BL &__chkstk, csr_aarch64_stackprobe_windows, implicit-def dead $lr, implicit $sp, implicit killed $x15116 renamable $x8 = COPY $sp117 $x15 = LDURXi $fp, -32 :: (load (s64) from %stack.6)118 renamable $x8 = SUBSXrs killed renamable $x8, killed renamable $x15, 4, implicit-def dead $nzcv119 $sp = COPY renamable $x8120 STURXi killed renamable $x8, $fp, -24121 renamable $x0 = LDURXi $fp, -24122 renamable $w1 = COPY $wzr123 $w0 = COPY killed renamable $w1124 frame-destroy SEH_EpilogStart125 $sp = frame-destroy ADDXri $fp, 0, 0126 frame-destroy SEH_SetFP127 early-clobber $sp, $fp, $lr = frame-destroy LDPXpost $sp, 2128 frame-destroy SEH_SaveFPLR_X -16129 frame-destroy SEH_EpilogEnd130 RET_ReallyLR implicit killed $w0131 132...133