xref: /llvm-project/llvm/test/CodeGen/AArch64/wineh-frame0.mir (revision 3780a4e568ac763567cc6987372e04f9e3c68ff9)
1# RUN: llc -o - %s -mtriple=aarch64-windows -start-before=prologepilog \
2# RUN:   -stop-after=prologepilog | FileCheck %s
3# Check save_regp_x, save_regp
4
5# CHECK:        early-clobber $sp = frame-setup STPXpre killed $x19, killed $x20, $sp, -10
6# CHECK-NEXT:   frame-setup SEH_SaveRegP_X 19, 20, -80
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 SEH_PrologEnd
16# CHECK:        frame-destroy SEH_EpilogStart
17# CHECK-NEXT:   $x27, $x28 = frame-destroy LDPXi $sp, 8
18# CHECK-NEXT:   frame-destroy SEH_SaveRegP 27, 28, 64
19# CHECK-NEXT:   $x25, $x26 = frame-destroy LDPXi $sp, 6
20# CHECK-NEXT:   frame-destroy SEH_SaveRegP 25, 26, 48
21# CHECK-NEXT:   $x23, $x24 = frame-destroy LDPXi $sp, 4
22# CHECK-NEXT:   frame-destroy SEH_SaveRegP 23, 24, 32
23# CHECK-NEXT:   $x21, $x22 = frame-destroy LDPXi $sp, 2
24# CHECK-NEXT:   frame-destroy SEH_SaveRegP 21, 22, 16
25# CHECK-NEXT:   early-clobber $sp, $x19, $x20 = frame-destroy LDPXpost $sp, 10
26# CHECK-NEXT:   frame-destroy SEH_SaveRegP_X 19, 20, -80
27# CHECK-NEXT:   frame-destroy SEH_EpilogEnd
28# CHECK-NEXT:   RET_ReallyLR implicit $x0
29
30...
31---
32name:            test
33alignment:       4
34tracksRegLiveness: true
35hasWinCFI: true
36liveins:
37  - { reg: '$w0' }
38frameInfo:
39  stackSize:       80
40  maxAlignment:    8
41  maxCallFrameSize: 0
42  hasOpaqueSPAdjustment: true
43stack:
44body:             |
45  bb.0.entry:
46    liveins: $x0, $x1, $x27, $x28, $x25, $x26, $x23, $x24, $x21, $x22, $x19, $x20
47    $x19 = ADDXrr $x0, killed $x1
48    $x20 = ADDXrr $x19, killed $x0
49    $x21 = ADDXrr $x20, killed $x19
50    $x22 = ADDXrr $x21, killed $x20
51    $x23 = ADDXrr $x22, killed $x21
52    $x24 = ADDXrr $x23, killed $x22
53    $x25 = ADDXrr $x24, killed $x23
54    $x26 = ADDXrr $x25, killed $x24
55    $x27 = ADDXrr $x26, killed $x25
56    $x28 = ADDXrr $x27, killed $x26
57    $x0 = COPY $x28
58    RET_ReallyLR implicit $x0
59
60...
61