1# RUN: llc -o - %s -mtriple=aarch64-windows -start-before=prologepilog \ 2# RUN: -stop-after=prologepilog | FileCheck %s 3# Check save_fregp_x, save_fregp 4 5# CHECK: early-clobber $sp = frame-setup STPXpre killed $x19, killed $x20, $sp, -14 6# CHECK-NEXT: frame-setup SEH_SaveRegP_X 19, 20, -112 7# CHECK-NEXT: frame-setup STPXi killed $x21, killed $x22, $sp, 2 8# CHECK-NEXT: frame-setup SEH_SaveRegP 21, 22, 16 9# CHECK-NEXT: frame-setup STPXi killed $x23, killed $x24, $sp, 4 10# CHECK-NEXT: frame-setup SEH_SaveRegP 23, 24, 32 11# CHECK-NEXT: frame-setup STPXi killed $x25, killed $x26, $sp, 6 12# CHECK-NEXT: frame-setup SEH_SaveRegP 25, 26, 48 13# CHECK-NEXT: frame-setup STPXi killed $x27, killed $x28, $sp, 8 14# CHECK-NEXT: frame-setup SEH_SaveRegP 27, 28, 64 15# CHECK-NEXT: frame-setup STPDi killed $d8, killed $d9, $sp, 10 16# CHECK-NEXT: frame-setup SEH_SaveFRegP 8, 9, 80 17# CHECK-NEXT: frame-setup STPDi killed $d10, killed $d11, $sp, 12 18# CHECK-NEXT: frame-setup SEH_SaveFRegP 10, 11, 96 19# CHECK-NEXT: frame-setup SEH_PrologEnd 20# CHECK: frame-destroy SEH_EpilogStart 21# CHECK-NEXT: $d10, $d11 = frame-destroy LDPDi $sp, 12 22# CHECK-NEXT: frame-destroy SEH_SaveFRegP 10, 11, 96 23# CHECK-NEXT: $d8, $d9 = frame-destroy LDPDi $sp, 10 24# CHECK-NEXT: frame-destroy SEH_SaveFRegP 8, 9, 80 25# CHECK-NEXT: $x27, $x28 = frame-destroy LDPXi $sp, 8 26# CHECK-NEXT: frame-destroy SEH_SaveRegP 27, 28, 64 27# CHECK-NEXT: $x25, $x26 = frame-destroy LDPXi $sp, 6 28# CHECK-NEXT: frame-destroy SEH_SaveRegP 25, 26, 48 29# CHECK-NEXT: $x23, $x24 = frame-destroy LDPXi $sp, 4 30# CHECK-NEXT: frame-destroy SEH_SaveRegP 23, 24, 32 31# CHECK-NEXT: $x21, $x22 = frame-destroy LDPXi $sp, 2 32# CHECK-NEXT: frame-destroy SEH_SaveRegP 21, 22, 16 33# CHECK-NEXT: early-clobber $sp, $x19, $x20 = frame-destroy LDPXpost $sp, 14 34# CHECK-NEXT: frame-destroy SEH_SaveRegP_X 19, 20, -112 35# CHECK-NEXT: frame-destroy SEH_EpilogEnd 36# CHECK-NEXT: RET_ReallyLR implicit $x0 37... 38--- 39name: test 40alignment: 4 41exposesReturnsTwice: false 42legalized: false 43regBankSelected: false 44selected: false 45failedISel: false 46tracksRegLiveness: true 47hasWinCFI: true 48registers: 49liveins: 50 - { reg: '$w0', virtual-reg: '' } 51frameInfo: 52 isFrameAddressTaken: false 53 isReturnAddressTaken: false 54 hasStackMap: false 55 hasPatchPoint: false 56 stackSize: 112 57 offsetAdjustment: 0 58 maxAlignment: 8 59 adjustsStack: false 60 hasCalls: false 61 stackProtector: '' 62 maxCallFrameSize: 0 63 hasOpaqueSPAdjustment: true 64 hasVAStart: false 65 hasMustTailInVarArgFunc: false 66 localFrameSize: 0 67 savePoint: '' 68 restorePoint: '' 69fixedStack: 70stack: 71constants: 72body: | 73 bb.0.entry: 74 liveins: $x0, $x1, $d0, $d1, $d10, $d11, $d8, $d9, $x27, $x28, $x25, $x26, $x23, $x24, $x21, $x22, $x19, $x20 75 76 $x19 = ADDXrr $x0, killed $x1 77 $d8 = FADDDrr killed $d0, $d1, implicit $fpcr 78 $d9 = FADDDrr $d8, $d1, implicit $fpcr 79 $d10 = FADDDrr $d9, $d8, implicit $fpcr 80 $d11 = FADDDrr killed $d9, $d10, implicit $fpcr 81 $x20 = ADDXrr $x19, killed $x0 82 $x21 = ADDXrr $x20, killed $x19 83 $x22 = ADDXrr $x21, killed $x20 84 $x23 = ADDXrr $x22, killed $x21 85 $x24 = ADDXrr $x23, killed $x22 86 $x25 = ADDXrr $x24, killed $x23 87 $x26 = ADDXrr $x25, killed $x24 88 $x27 = ADDXrr $x26, killed $x25 89 $x28 = ADDXrr $x27, killed $x26 90 $x0 = COPY $d11 91 $x0 = ADDXrr $x0, killed $x28 92 RET_ReallyLR implicit $x0 93 94... 95