1 # RUN: llc -o - %s -mtriple=aarch64-windows -start-before=prologepilog \
2 # RUN: -stop-after=prologepilog | FileCheck %s
3 # RUN: llc -o - %s -mtriple=aarch64-windows -start-before=prologepilog \
4 # RUN: | FileCheck --check-prefix=ASM %s
6 # Check that an odd callee-saved GPR is paired with lr
8 # CHECK: early-clobber $sp = frame-setup STPXpre killed $x19, killed $x20, $sp, -4
9 # CHECK-NEXT: frame-setup SEH_SaveRegP_X 19, 20, -32
10 # CHECK-NEXT: frame-setup STPXi killed $x21, killed $lr, $sp, 2
11 # CHECK-NEXT: frame-setup SEH_SaveRegP 21, 30, 16
12 # CHECK-NEXT: frame-setup SEH_PrologEnd
14 # ASM: stp x19, x20, [sp, #-32]!
15 # ASM-NEXT: .seh_save_regp_x x19, 32
16 # ASM-NEXT: stp x21, x30, [sp, #16]
17 # ASM-NEXT: .seh_save_lrpair x21, 16
18 # ASM-NEXT: .seh_endprologue
22 define dso_local i32 @func(i32 %a) { ret i32 %a }
23 declare dso_local i32 @other()
29 exposesReturnsTwice: false
31 regBankSelected: false
34 tracksRegLiveness: true
39 isFrameAddressTaken: false
40 isReturnAddressTaken: false
50 cvBytesOfCalleeSavedRegisters: 0
51 hasOpaqueSPAdjustment: false
53 hasMustTailInVarArgFunc: false
61 machineFunctionInfo: {}
64 liveins: $x0, $x21, $x19, $x20
66 BL @other, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit $w0, implicit-def $sp, implicit-def $w0
67 $x19 = ADDXrr $x0, $x0
68 $x20 = ADDXrr $x19, $x0
69 $x21 = ADDXrr $x20, killed $x19
70 $x0 = ADDXrr $x0, killed $x21