brintos

brintos / llvm-project-archived public Read only

0
0
Text · 44.5 KiB · b8302e6 Raw
885 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --print-fixed-stack --version 52# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5 --print-fixed-stack3# RUN: llc -mattr=+sve -mtriple=aarch64-windows-msvc -run-pass=prologepilog %s -o - | FileCheck %s4 5--- |6 7  define void @test_allocate_sve() uwtable { entry: unreachable }8  define void @test_allocate_sve_gpr_callee_saves() uwtable { entry: unreachable }9  define void @test_allocate_sve_gpr_realigned() uwtable { entry: unreachable }10  define void @test_address_sve() uwtable { entry: unreachable }11  define void @test_address_sve_fp() uwtable { entry: unreachable }12  define void @test_stack_arg_sve() uwtable { entry: unreachable }13  define void @test_address_sve_out_of_range() uwtable { entry: unreachable }14  define void @test_address_gpr_vla() uwtable { entry: unreachable }15  define aarch64_sve_vector_pcs void @save_restore_pregs_sve() uwtable { entry: unreachable }16  define aarch64_sve_vector_pcs void @save_restore_zregs_sve() uwtable { entry: unreachable }17  define aarch64_sve_vector_pcs void @save_restore_sve() uwtable { entry: unreachable }18  define aarch64_sve_vector_pcs void @save_restore_sve_realign() uwtable { entry: unreachable }19  define aarch64_sve_vector_pcs void @frame_layout() uwtable { entry: unreachable }20...21---22name:            test_allocate_sve23stack:24  - { id: 0, stack-id: scalable-vector, size: 18, alignment: 2 }25  - { id: 1, stack-id: default, size: 16, alignment: 8 }26body:             |27  bb.0.entry:28    ; CHECK-LABEL: name: test_allocate_sve29    ; CHECK: fixedStack:30    ; CHECK: liveins: $lr31    ; CHECK-NEXT: {{  $}}32    ; CHECK-NEXT: early-clobber $sp = frame-setup STRXpre killed $lr, $sp, -16 :: (store (s64) into %stack.2)33    ; CHECK-NEXT: frame-setup SEH_SaveReg_X 30, -1634    ; CHECK-NEXT: $sp = frame-setup SUBXri $sp, 16, 035    ; CHECK-NEXT: frame-setup SEH_StackAlloc 1636    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -2, implicit $vg37    ; CHECK-NEXT: frame-setup SEH_AllocZ 238    ; CHECK-NEXT: frame-setup SEH_PrologEnd39    ; CHECK-NEXT: frame-destroy SEH_EpilogStart40    ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 2, implicit $vg41    ; CHECK-NEXT: frame-destroy SEH_AllocZ 242    ; CHECK-NEXT: $sp = frame-destroy ADDXri $sp, 16, 043    ; CHECK-NEXT: frame-destroy SEH_StackAlloc 1644    ; CHECK-NEXT: early-clobber $sp, $lr = frame-destroy LDRXpost $sp, 16 :: (load (s64) from %stack.2)45    ; CHECK-NEXT: frame-destroy SEH_SaveReg_X 30, -1646    ; CHECK-NEXT: frame-destroy SEH_EpilogEnd47    ; CHECK-NEXT: RET_ReallyLR48    RET_ReallyLR49...50---51name:            test_allocate_sve_gpr_callee_saves52stack:53  - { id: 0, stack-id: scalable-vector, size: 18, alignment: 2 }54  - { id: 1, stack-id: default, size: 16, alignment: 8 }55body:             |56  bb.0.entry:57    ; CHECK-LABEL: name: test_allocate_sve_gpr_callee_saves58    ; CHECK: fixedStack:59    ; CHECK: liveins: $x21, $x20, $lr60    ; CHECK-NEXT: {{  $}}61    ; CHECK-NEXT: early-clobber $sp = frame-setup STPXpre killed $x20, killed $x21, $sp, -4 :: (store (s64) into %stack.3), (store (s64) into %stack.4)62    ; CHECK-NEXT: frame-setup SEH_SaveRegP_X 20, 21, -3263    ; CHECK-NEXT: frame-setup STRXui killed $lr, $sp, 2 :: (store (s64) into %stack.2)64    ; CHECK-NEXT: frame-setup SEH_SaveReg 30, 1665    ; CHECK-NEXT: $sp = frame-setup SUBXri $sp, 16, 066    ; CHECK-NEXT: frame-setup SEH_StackAlloc 1667    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -2, implicit $vg68    ; CHECK-NEXT: frame-setup SEH_AllocZ 269    ; CHECK-NEXT: frame-setup SEH_PrologEnd70    ; CHECK-NEXT: $x20 = IMPLICIT_DEF71    ; CHECK-NEXT: $x21 = IMPLICIT_DEF72    ; CHECK-NEXT: frame-destroy SEH_EpilogStart73    ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 2, implicit $vg74    ; CHECK-NEXT: frame-destroy SEH_AllocZ 275    ; CHECK-NEXT: $sp = frame-destroy ADDXri $sp, 16, 076    ; CHECK-NEXT: frame-destroy SEH_StackAlloc 1677    ; CHECK-NEXT: $lr = frame-destroy LDRXui $sp, 2 :: (load (s64) from %stack.2)78    ; CHECK-NEXT: frame-destroy SEH_SaveReg 30, 1679    ; CHECK-NEXT: early-clobber $sp, $x20, $x21 = frame-destroy LDPXpost $sp, 4 :: (load (s64) from %stack.3), (load (s64) from %stack.4)80    ; CHECK-NEXT: frame-destroy SEH_SaveRegP_X 20, 21, -3281    ; CHECK-NEXT: frame-destroy SEH_EpilogEnd82    ; CHECK-NEXT: RET_ReallyLR83    $x20 = IMPLICIT_DEF84    $x21 = IMPLICIT_DEF85    RET_ReallyLR86...87---88name:            test_allocate_sve_gpr_realigned89stack:90  - { id: 0, stack-id: scalable-vector, size: 18, alignment: 2  }91  - { id: 1, stack-id: default, size: 16, alignment: 32 }92body:             |93  bb.0.entry:94    ; CHECK-LABEL: name: test_allocate_sve_gpr_realigned95    ; CHECK: fixedStack:96    ; CHECK: liveins: $lr97    ; CHECK-NEXT: {{  $}}98    ; CHECK-NEXT: early-clobber $sp = frame-setup STPXpre killed $fp, killed $lr, $sp, -2 :: (store (s64) into %stack.2), (store (s64) into %stack.3)99    ; CHECK-NEXT: frame-setup SEH_SaveFPLR_X -16100    ; CHECK-NEXT: $fp = frame-setup ADDXri $sp, 0, 0101    ; CHECK-NEXT: frame-setup SEH_SetFP102    ; CHECK-NEXT: frame-setup SEH_PrologEnd103    ; CHECK-NEXT: $x9 = frame-setup SUBXri $sp, 16, 0104    ; CHECK-NEXT: $x9 = frame-setup ADDVL_XXI $x9, -2, implicit $vg105    ; CHECK-NEXT: $sp = frame-setup ANDXri killed $x9, 7930106    ; CHECK-NEXT: frame-destroy SEH_EpilogStart107    ; CHECK-NEXT: $sp = frame-destroy ADDXri $fp, 0, 0108    ; CHECK-NEXT: frame-destroy SEH_SetFP109    ; CHECK-NEXT: early-clobber $sp, $fp, $lr = frame-destroy LDPXpost $sp, 2 :: (load (s64) from %stack.2), (load (s64) from %stack.3)110    ; CHECK-NEXT: frame-destroy SEH_SaveFPLR_X -16111    ; CHECK-NEXT: frame-destroy SEH_EpilogEnd112    ; CHECK-NEXT: RET_ReallyLR113    RET_ReallyLR114...115---116name:            test_address_sve117frameInfo:118  maxAlignment:  16119stack:120  - { id: 0, stack-id: scalable-vector, size: 16, alignment: 8 }121  - { id: 1, stack-id: scalable-vector, size: 16, alignment: 8 }122  - { id: 2, stack-id: scalable-vector, size:  2, alignment: 2 }123  - { id: 3, stack-id: default, size: 16, alignment: 8 }124body:             |125  bb.0.entry:126    liveins: $z0, $z1, $p0127 128    ; CHECK-LABEL: name: test_address_sve129    ; CHECK: fixedStack:130    ; CHECK: liveins: $z0, $z1, $p0, $lr131    ; CHECK-NEXT: {{  $}}132    ; CHECK-NEXT: early-clobber $sp = frame-setup STRXpre killed $lr, $sp, -16 :: (store (s64) into %stack.4)133    ; CHECK-NEXT: frame-setup SEH_SaveReg_X 30, -16134    ; CHECK-NEXT: $sp = frame-setup SUBXri $sp, 16, 0135    ; CHECK-NEXT: frame-setup SEH_StackAlloc 16136    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -3, implicit $vg137    ; CHECK-NEXT: frame-setup SEH_AllocZ 3138    ; CHECK-NEXT: frame-setup SEH_PrologEnd139    ; CHECK-NEXT: $x8 = ADDXri $sp, 16, 0140    ; CHECK-NEXT: STR_ZXI $z0, killed $x8, 2141    ; CHECK-NEXT: $x8 = ADDXri $sp, 16, 0142    ; CHECK-NEXT: STR_ZXI $z1, killed $x8, 1143    ; CHECK-NEXT: $x8 = ADDXri $sp, 16, 0144    ; CHECK-NEXT: STR_PXI $p0, killed $x8, 7145    ; CHECK-NEXT: frame-destroy SEH_EpilogStart146    ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 3, implicit $vg147    ; CHECK-NEXT: frame-destroy SEH_AllocZ 3148    ; CHECK-NEXT: $sp = frame-destroy ADDXri $sp, 16, 0149    ; CHECK-NEXT: frame-destroy SEH_StackAlloc 16150    ; CHECK-NEXT: early-clobber $sp, $lr = frame-destroy LDRXpost $sp, 16 :: (load (s64) from %stack.4)151    ; CHECK-NEXT: frame-destroy SEH_SaveReg_X 30, -16152    ; CHECK-NEXT: frame-destroy SEH_EpilogEnd153    ; CHECK-NEXT: RET_ReallyLR154    STR_ZXI $z0, %stack.0, 0155    STR_ZXI $z1, %stack.1, 0156    STR_PXI $p0, %stack.2, 0157 158    RET_ReallyLR159...160---161name:            test_address_sve_fp162frameInfo:163  maxAlignment:  16164  isFrameAddressTaken: true165stack:166  - { id: 0, stack-id: scalable-vector, size: 16, alignment: 8 }167  - { id: 1, stack-id: scalable-vector, size: 16, alignment: 8 }168  - { id: 2, stack-id: scalable-vector, size:  2, alignment: 2 }169  - { id: 3, stack-id: default, size: 16, alignment: 8 }170body:             |171  bb.0.entry:172    liveins: $z0, $z1, $p0173 174    ; CHECK-LABEL: name: test_address_sve_fp175    ; CHECK: fixedStack:176    ; CHECK: liveins: $z0, $z1, $p0, $lr177    ; CHECK-NEXT: {{  $}}178    ; CHECK-NEXT: early-clobber $sp = frame-setup STPXpre killed $fp, killed $lr, $sp, -2 :: (store (s64) into %stack.4), (store (s64) into %stack.5)179    ; CHECK-NEXT: frame-setup SEH_SaveFPLR_X -16180    ; CHECK-NEXT: $fp = frame-setup ADDXri $sp, 0, 0181    ; CHECK-NEXT: frame-setup SEH_SetFP182    ; CHECK-NEXT: frame-setup SEH_PrologEnd183    ; CHECK-NEXT: $sp = frame-setup SUBXri $sp, 16, 0184    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -3, implicit $vg185    ; CHECK-NEXT: STR_ZXI $z0, $fp, -1186    ; CHECK-NEXT: STR_ZXI $z1, $fp, -2187    ; CHECK-NEXT: STR_PXI $p0, $fp, -17188    ; CHECK-NEXT: frame-destroy SEH_EpilogStart189    ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 3, implicit $vg190    ; CHECK-NEXT: frame-destroy SEH_AllocZ 3191    ; CHECK-NEXT: $sp = frame-destroy ADDXri $sp, 16, 0192    ; CHECK-NEXT: frame-destroy SEH_StackAlloc 16193    ; CHECK-NEXT: early-clobber $sp, $fp, $lr = frame-destroy LDPXpost $sp, 2 :: (load (s64) from %stack.4), (load (s64) from %stack.5)194    ; CHECK-NEXT: frame-destroy SEH_SaveFPLR_X -16195    ; CHECK-NEXT: frame-destroy SEH_EpilogEnd196    ; CHECK-NEXT: RET_ReallyLR197    STR_ZXI $z0, %stack.0, 0198    STR_ZXI $z1, %stack.1, 0199    STR_PXI $p0, %stack.2, 0200 201    RET_ReallyLR202...203---204name:             test_stack_arg_sve205fixedStack:206  - { id: 0, stack-id: default, size: 16, alignment: 16, offset: 0 }207stack:208  - { id: 0, stack-id: scalable-vector, size: 16, alignment: 16 }209  - { id: 1, stack-id: default, size: 16, alignment: 16 }210body:             |211  bb.0.entry:212    liveins: $x0213 214    ; CHECK-LABEL: name: test_stack_arg_sve215    ; CHECK: fixedStack:216    ; CHECK-NEXT:   - { id: 0, type: default, offset: 0, size: 16, alignment: 16, stack-id: default, 217    ; CHECK-NEXT:       isImmutable: false, isAliased: false, callee-saved-register: '', 218    ; CHECK-NEXT:       callee-saved-restored: true, debug-info-variable: '', debug-info-expression: '', 219    ; CHECK-NEXT:       debug-info-location: '' }220    ; CHECK: liveins: $x0, $lr221    ; CHECK-NEXT: {{  $}}222    ; CHECK-NEXT: early-clobber $sp = frame-setup STRXpre killed $lr, $sp, -16 :: (store (s64) into %stack.2)223    ; CHECK-NEXT: frame-setup SEH_SaveReg_X 30, -16224    ; CHECK-NEXT: $sp = frame-setup SUBXri $sp, 16, 0225    ; CHECK-NEXT: frame-setup SEH_StackAlloc 16226    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -1, implicit $vg227    ; CHECK-NEXT: frame-setup SEH_AllocZ 1228    ; CHECK-NEXT: frame-setup SEH_PrologEnd229    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 1, implicit $vg230    ; CHECK-NEXT: $x0 = LDRXui killed $x8, 4231    ; CHECK-NEXT: frame-destroy SEH_EpilogStart232    ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 1, implicit $vg233    ; CHECK-NEXT: frame-destroy SEH_AllocZ 1234    ; CHECK-NEXT: $sp = frame-destroy ADDXri $sp, 16, 0235    ; CHECK-NEXT: frame-destroy SEH_StackAlloc 16236    ; CHECK-NEXT: early-clobber $sp, $lr = frame-destroy LDRXpost $sp, 16 :: (load (s64) from %stack.2)237    ; CHECK-NEXT: frame-destroy SEH_SaveReg_X 30, -16238    ; CHECK-NEXT: frame-destroy SEH_EpilogEnd239    ; CHECK-NEXT: RET_ReallyLR240    $x0 = LDRXui %fixed-stack.0, 0241    RET_ReallyLR242...243---244name:            test_address_sve_out_of_range245frameInfo:246  maxAlignment:  16247stack:248  - { id: 0, stack-id: scalable-vector, size:   16, alignment: 16 }249  - { id: 1, stack-id: scalable-vector, size: 3584, alignment: 16 }250  - { id: 2, stack-id: scalable-vector, size:  512, alignment: 16 }251 252body:             |253  bb.0.entry:254    liveins: $z0, $p0255 256    ; CHECK-LABEL: name: test_address_sve_out_of_range257    ; CHECK: fixedStack:258    ; CHECK: liveins: $z0, $p0, $lr259    ; CHECK-NEXT: {{  $}}260    ; CHECK-NEXT: early-clobber $sp = frame-setup STRXpre killed $lr, $sp, -16 :: (store (s64) into %stack.3)261    ; CHECK-NEXT: frame-setup SEH_SaveReg_X 30, -16262    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -32, implicit $vg263    ; CHECK-NEXT: frame-setup SEH_AllocZ 32264    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -32, implicit $vg265    ; CHECK-NEXT: frame-setup SEH_AllocZ 32266    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -32, implicit $vg267    ; CHECK-NEXT: frame-setup SEH_AllocZ 32268    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -32, implicit $vg269    ; CHECK-NEXT: frame-setup SEH_AllocZ 32270    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -32, implicit $vg271    ; CHECK-NEXT: frame-setup SEH_AllocZ 32272    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -32, implicit $vg273    ; CHECK-NEXT: frame-setup SEH_AllocZ 32274    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -32, implicit $vg275    ; CHECK-NEXT: frame-setup SEH_AllocZ 32276    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -32, implicit $vg277    ; CHECK-NEXT: frame-setup SEH_AllocZ 32278    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -1, implicit $vg279    ; CHECK-NEXT: frame-setup SEH_AllocZ 1280    ; CHECK-NEXT: frame-setup SEH_PrologEnd281    ; CHECK-NEXT: $x8 = ADDVL_XXI $sp, 1, implicit $vg282    ; CHECK-NEXT: STR_ZXI $z0, killed $x8, 255283    ; CHECK-NEXT: $x8 = ADDPL_XXI $sp, 1, implicit $vg284    ; CHECK-NEXT: STR_PXI $p0, killed $x8, 255285    ; CHECK-NEXT: frame-destroy SEH_EpilogStart286    ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 31, implicit $vg287    ; CHECK-NEXT: frame-destroy SEH_AllocZ 31288    ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 31, implicit $vg289    ; CHECK-NEXT: frame-destroy SEH_AllocZ 31290    ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 31, implicit $vg291    ; CHECK-NEXT: frame-destroy SEH_AllocZ 31292    ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 31, implicit $vg293    ; CHECK-NEXT: frame-destroy SEH_AllocZ 31294    ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 31, implicit $vg295    ; CHECK-NEXT: frame-destroy SEH_AllocZ 31296    ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 31, implicit $vg297    ; CHECK-NEXT: frame-destroy SEH_AllocZ 31298    ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 31, implicit $vg299    ; CHECK-NEXT: frame-destroy SEH_AllocZ 31300    ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 31, implicit $vg301    ; CHECK-NEXT: frame-destroy SEH_AllocZ 31302    ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 9, implicit $vg303    ; CHECK-NEXT: frame-destroy SEH_AllocZ 9304    ; CHECK-NEXT: early-clobber $sp, $lr = frame-destroy LDRXpost $sp, 16 :: (load (s64) from %stack.3)305    ; CHECK-NEXT: frame-destroy SEH_SaveReg_X 30, -16306    ; CHECK-NEXT: frame-destroy SEH_EpilogEnd307    ; CHECK-NEXT: RET_ReallyLR308    STR_ZXI $z0, %stack.0, 0309    STR_PXI $p0, %stack.1, 0310 311    RET_ReallyLR312...313---314name:            test_address_gpr_vla315frameInfo:316  maxAlignment:  16317stack:318  - { id: 0, stack-id: scalable-vector, size: 16, alignment: 8 }319  - { id: 1, stack-id: default, size: 16, alignment: 8 }320  - { id: 2, stack-id: default, type: variable-sized }321body:             |322  bb.0.entry:323    liveins: $xzr324 325    ; CHECK-LABEL: name: test_address_gpr_vla326    ; CHECK: fixedStack:327    ; CHECK: liveins: $xzr, $lr328    ; CHECK-NEXT: {{  $}}329    ; CHECK-NEXT: early-clobber $sp = frame-setup STRXpre killed $x19, $sp, -32 :: (store (s64) into %stack.5)330    ; CHECK-NEXT: frame-setup SEH_SaveReg_X 19, -32331    ; CHECK-NEXT: frame-setup STPXi killed $fp, killed $lr, $sp, 1 :: (store (s64) into %stack.3), (store (s64) into %stack.4)332    ; CHECK-NEXT: frame-setup SEH_SaveFPLR 8333    ; CHECK-NEXT: $fp = frame-setup ADDXri $sp, 8, 0334    ; CHECK-NEXT: frame-setup SEH_AddFP 8335    ; CHECK-NEXT: frame-setup SEH_PrologEnd336    ; CHECK-NEXT: $sp = frame-setup SUBXri $sp, 16, 0337    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -1, implicit $vg338    ; CHECK-NEXT: $x19 = ADDXri $sp, 0, 0339    ; CHECK-NEXT: STRXui $xzr, $x19, 0340    ; CHECK-NEXT: frame-destroy SEH_EpilogStart341    ; CHECK-NEXT: $sp = frame-destroy SUBXri $fp, 8, 0342    ; CHECK-NEXT: frame-destroy SEH_AddFP 8343    ; CHECK-NEXT: $fp, $lr = frame-destroy LDPXi $sp, 1 :: (load (s64) from %stack.3), (load (s64) from %stack.4)344    ; CHECK-NEXT: frame-destroy SEH_SaveFPLR 8345    ; CHECK-NEXT: early-clobber $sp, $x19 = frame-destroy LDRXpost $sp, 32 :: (load (s64) from %stack.5)346    ; CHECK-NEXT: frame-destroy SEH_SaveReg_X 19, -32347    ; CHECK-NEXT: frame-destroy SEH_EpilogEnd348    ; CHECK-NEXT: RET_ReallyLR349    STRXui $xzr, %stack.1, 0350 351    RET_ReallyLR352...353---354name: save_restore_pregs_sve355stack:356  - { id: 0, stack-id: default, size: 32, alignment: 16 }357body:             |358  bb.0.entry:359 360    ; CHECK-LABEL: name: save_restore_pregs_sve361    ; CHECK: fixedStack:362    ; CHECK: liveins: $p4, $p5, $p6, $lr363    ; CHECK-NEXT: {{  $}}364    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -1, implicit $vg365    ; CHECK-NEXT: frame-setup SEH_AllocZ 1366    ; CHECK-NEXT: frame-setup STR_PXI killed $p4, $sp, 0 :: (store (s16) into %stack.4)367    ; CHECK-NEXT: frame-setup SEH_SavePReg 4, 0368    ; CHECK-NEXT: frame-setup STR_PXI killed $p5, $sp, 1 :: (store (s16) into %stack.3)369    ; CHECK-NEXT: frame-setup SEH_SavePReg 5, 1370    ; CHECK-NEXT: frame-setup STR_PXI killed $p6, $sp, 2 :: (store (s16) into %stack.2)371    ; CHECK-NEXT: frame-setup SEH_SavePReg 6, 2372    ; CHECK-NEXT: early-clobber $sp = frame-setup STRXpre killed $lr, $sp, -16 :: (store (s64) into %stack.1)373    ; CHECK-NEXT: frame-setup SEH_SaveReg_X 30, -16374    ; CHECK-NEXT: $sp = frame-setup SUBXri $sp, 32, 0375    ; CHECK-NEXT: frame-setup SEH_StackAlloc 32376    ; CHECK-NEXT: frame-setup SEH_PrologEnd377    ; CHECK-NEXT: $p4 = IMPLICIT_DEF378    ; CHECK-NEXT: $p5 = IMPLICIT_DEF379    ; CHECK-NEXT: $p6 = IMPLICIT_DEF380    ; CHECK-NEXT: frame-destroy SEH_EpilogStart381    ; CHECK-NEXT: $sp = frame-destroy ADDXri $sp, 32, 0382    ; CHECK-NEXT: frame-destroy SEH_StackAlloc 32383    ; CHECK-NEXT: early-clobber $sp, $lr = frame-destroy LDRXpost $sp, 16 :: (load (s64) from %stack.1)384    ; CHECK-NEXT: frame-destroy SEH_SaveReg_X 30, -16385    ; CHECK-NEXT: $p4 = frame-destroy LDR_PXI $sp, 0 :: (load (s16) from %stack.4)386    ; CHECK-NEXT: frame-destroy SEH_SavePReg 4, 0387    ; CHECK-NEXT: $p5 = frame-destroy LDR_PXI $sp, 1 :: (load (s16) from %stack.3)388    ; CHECK-NEXT: frame-destroy SEH_SavePReg 5, 1389    ; CHECK-NEXT: $p6 = frame-destroy LDR_PXI $sp, 2 :: (load (s16) from %stack.2)390    ; CHECK-NEXT: frame-destroy SEH_SavePReg 6, 2391    ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 1, implicit $vg392    ; CHECK-NEXT: frame-destroy SEH_AllocZ 1393    ; CHECK-NEXT: frame-destroy SEH_EpilogEnd394    ; CHECK-NEXT: RET_ReallyLR395    $p4 = IMPLICIT_DEF396    $p5 = IMPLICIT_DEF397    $p6 = IMPLICIT_DEF398 399    RET_ReallyLR400...401---402name: save_restore_zregs_sve403stack:404  - { id: 0, stack-id: default, size: 32, alignment: 16 }405body:             |406  bb.0.entry:407 408    ; CHECK-LABEL: name: save_restore_zregs_sve409    ; CHECK: fixedStack:410    ; CHECK: liveins: $z8, $z9, $z10, $lr411    ; CHECK-NEXT: {{  $}}412    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -3, implicit $vg413    ; CHECK-NEXT: frame-setup SEH_AllocZ 3414    ; CHECK-NEXT: frame-setup STR_ZXI killed $z8, $sp, 0 :: (store (s128) into %stack.4)415    ; CHECK-NEXT: frame-setup SEH_SaveZReg 8, 0416    ; CHECK-NEXT: frame-setup STR_ZXI killed $z9, $sp, 1 :: (store (s128) into %stack.3)417    ; CHECK-NEXT: frame-setup SEH_SaveZReg 9, 1418    ; CHECK-NEXT: frame-setup STR_ZXI killed $z10, $sp, 2 :: (store (s128) into %stack.2)419    ; CHECK-NEXT: frame-setup SEH_SaveZReg 10, 2420    ; CHECK-NEXT: early-clobber $sp = frame-setup STRXpre killed $lr, $sp, -16 :: (store (s64) into %stack.1)421    ; CHECK-NEXT: frame-setup SEH_SaveReg_X 30, -16422    ; CHECK-NEXT: $sp = frame-setup SUBXri $sp, 32, 0423    ; CHECK-NEXT: frame-setup SEH_StackAlloc 32424    ; CHECK-NEXT: frame-setup SEH_PrologEnd425    ; CHECK-NEXT: $z8 = IMPLICIT_DEF426    ; CHECK-NEXT: $z9 = IMPLICIT_DEF427    ; CHECK-NEXT: $z10 = IMPLICIT_DEF428    ; CHECK-NEXT: frame-destroy SEH_EpilogStart429    ; CHECK-NEXT: $sp = frame-destroy ADDXri $sp, 32, 0430    ; CHECK-NEXT: frame-destroy SEH_StackAlloc 32431    ; CHECK-NEXT: early-clobber $sp, $lr = frame-destroy LDRXpost $sp, 16 :: (load (s64) from %stack.1)432    ; CHECK-NEXT: frame-destroy SEH_SaveReg_X 30, -16433    ; CHECK-NEXT: $z8 = frame-destroy LDR_ZXI $sp, 0 :: (load (s128) from %stack.4)434    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 8, 0435    ; CHECK-NEXT: $z9 = frame-destroy LDR_ZXI $sp, 1 :: (load (s128) from %stack.3)436    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 9, 1437    ; CHECK-NEXT: $z10 = frame-destroy LDR_ZXI $sp, 2 :: (load (s128) from %stack.2)438    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 10, 2439    ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 3, implicit $vg440    ; CHECK-NEXT: frame-destroy SEH_AllocZ 3441    ; CHECK-NEXT: frame-destroy SEH_EpilogEnd442    ; CHECK-NEXT: RET_ReallyLR443    $z8 = IMPLICIT_DEF444    $z9 = IMPLICIT_DEF445    $z10 = IMPLICIT_DEF446 447    RET_ReallyLR448...449---450name: save_restore_sve451stack:452  - { id: 0, stack-id: scalable-vector, size: 16, alignment: 16 }453  - { id: 1, stack-id: default, size: 32, alignment: 16 }454body:             |455  bb.0.entry:456 457    ; CHECK-LABEL: name: save_restore_sve458    ; CHECK: fixedStack:459    ; CHECK: liveins: $p4, $p5, $p6, $p7, $p8, $p9, $p10, $p11, $p12, $p13, $p14, $p15, $z8, $z9, $z10, $z11, $z12, $z13, $z14, $z15, $z16, $z17, $z18, $z19, $z20, $z21, $z22, $z23, $x20, $x19, $lr, $x21460    ; CHECK-NEXT: {{  $}}461    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -18, implicit $vg462    ; CHECK-NEXT: frame-setup SEH_AllocZ 18463    ; CHECK-NEXT: frame-setup STR_PXI killed $p4, $sp, 0 :: (store (s16) into %stack.33)464    ; CHECK-NEXT: frame-setup SEH_SavePReg 4, 0465    ; CHECK-NEXT: frame-setup STR_PXI killed $p5, $sp, 1 :: (store (s16) into %stack.32)466    ; CHECK-NEXT: frame-setup SEH_SavePReg 5, 1467    ; CHECK-NEXT: frame-setup STR_PXI killed $p6, $sp, 2 :: (store (s16) into %stack.31)468    ; CHECK-NEXT: frame-setup SEH_SavePReg 6, 2469    ; CHECK-NEXT: frame-setup STR_PXI killed $p7, $sp, 3 :: (store (s16) into %stack.30)470    ; CHECK-NEXT: frame-setup SEH_SavePReg 7, 3471    ; CHECK-NEXT: frame-setup STR_PXI killed $p8, $sp, 4 :: (store (s16) into %stack.29)472    ; CHECK-NEXT: frame-setup SEH_SavePReg 8, 4473    ; CHECK-NEXT: frame-setup STR_PXI killed $p9, $sp, 5 :: (store (s16) into %stack.28)474    ; CHECK-NEXT: frame-setup SEH_SavePReg 9, 5475    ; CHECK-NEXT: frame-setup STR_PXI killed $p10, $sp, 6 :: (store (s16) into %stack.27)476    ; CHECK-NEXT: frame-setup SEH_SavePReg 10, 6477    ; CHECK-NEXT: frame-setup STR_PXI killed $p11, $sp, 7 :: (store (s16) into %stack.26)478    ; CHECK-NEXT: frame-setup SEH_SavePReg 11, 7479    ; CHECK-NEXT: frame-setup STR_PXI killed $p12, $sp, 8 :: (store (s16) into %stack.25)480    ; CHECK-NEXT: frame-setup SEH_SavePReg 12, 8481    ; CHECK-NEXT: frame-setup STR_PXI killed $p13, $sp, 9 :: (store (s16) into %stack.24)482    ; CHECK-NEXT: frame-setup SEH_SavePReg 13, 9483    ; CHECK-NEXT: frame-setup STR_PXI killed $p14, $sp, 10 :: (store (s16) into %stack.23)484    ; CHECK-NEXT: frame-setup SEH_SavePReg 14, 10485    ; CHECK-NEXT: frame-setup STR_PXI killed $p15, $sp, 11 :: (store (s16) into %stack.22)486    ; CHECK-NEXT: frame-setup SEH_SavePReg 15, 11487    ; CHECK-NEXT: frame-setup STR_ZXI killed $z8, $sp, 2 :: (store (s128) into %stack.21)488    ; CHECK-NEXT: frame-setup SEH_SaveZReg 8, 2489    ; CHECK-NEXT: frame-setup STR_ZXI killed $z9, $sp, 3 :: (store (s128) into %stack.20)490    ; CHECK-NEXT: frame-setup SEH_SaveZReg 9, 3491    ; CHECK-NEXT: frame-setup STR_ZXI killed $z10, $sp, 4 :: (store (s128) into %stack.19)492    ; CHECK-NEXT: frame-setup SEH_SaveZReg 10, 4493    ; CHECK-NEXT: frame-setup STR_ZXI killed $z11, $sp, 5 :: (store (s128) into %stack.18)494    ; CHECK-NEXT: frame-setup SEH_SaveZReg 11, 5495    ; CHECK-NEXT: frame-setup STR_ZXI killed $z12, $sp, 6 :: (store (s128) into %stack.17)496    ; CHECK-NEXT: frame-setup SEH_SaveZReg 12, 6497    ; CHECK-NEXT: frame-setup STR_ZXI killed $z13, $sp, 7 :: (store (s128) into %stack.16)498    ; CHECK-NEXT: frame-setup SEH_SaveZReg 13, 7499    ; CHECK-NEXT: frame-setup STR_ZXI killed $z14, $sp, 8 :: (store (s128) into %stack.15)500    ; CHECK-NEXT: frame-setup SEH_SaveZReg 14, 8501    ; CHECK-NEXT: frame-setup STR_ZXI killed $z15, $sp, 9 :: (store (s128) into %stack.14)502    ; CHECK-NEXT: frame-setup SEH_SaveZReg 15, 9503    ; CHECK-NEXT: frame-setup STR_ZXI killed $z16, $sp, 10 :: (store (s128) into %stack.13)504    ; CHECK-NEXT: frame-setup SEH_SaveZReg 16, 10505    ; CHECK-NEXT: frame-setup STR_ZXI killed $z17, $sp, 11 :: (store (s128) into %stack.12)506    ; CHECK-NEXT: frame-setup SEH_SaveZReg 17, 11507    ; CHECK-NEXT: frame-setup STR_ZXI killed $z18, $sp, 12 :: (store (s128) into %stack.11)508    ; CHECK-NEXT: frame-setup SEH_SaveZReg 18, 12509    ; CHECK-NEXT: frame-setup STR_ZXI killed $z19, $sp, 13 :: (store (s128) into %stack.10)510    ; CHECK-NEXT: frame-setup SEH_SaveZReg 19, 13511    ; CHECK-NEXT: frame-setup STR_ZXI killed $z20, $sp, 14 :: (store (s128) into %stack.9)512    ; CHECK-NEXT: frame-setup SEH_SaveZReg 20, 14513    ; CHECK-NEXT: frame-setup STR_ZXI killed $z21, $sp, 15 :: (store (s128) into %stack.8)514    ; CHECK-NEXT: frame-setup SEH_SaveZReg 21, 15515    ; CHECK-NEXT: frame-setup STR_ZXI killed $z22, $sp, 16 :: (store (s128) into %stack.7)516    ; CHECK-NEXT: frame-setup SEH_SaveZReg 22, 16517    ; CHECK-NEXT: frame-setup STR_ZXI killed $z23, $sp, 17 :: (store (s128) into %stack.6)518    ; CHECK-NEXT: frame-setup SEH_SaveZReg 23, 17519    ; CHECK-NEXT: early-clobber $sp = frame-setup STPXpre killed $x19, killed $x20, $sp, -4 :: (store (s64) into %stack.4), (store (s64) into %stack.5)520    ; CHECK-NEXT: frame-setup SEH_SaveRegP_X 19, 20, -32521    ; CHECK-NEXT: frame-setup STPXi killed $x21, killed $lr, $sp, 2 :: (store (s64) into %stack.2), (store (s64) into %stack.3)522    ; CHECK-NEXT: frame-setup SEH_SaveRegP 21, 30, 16523    ; CHECK-NEXT: $sp = frame-setup SUBXri $sp, 32, 0524    ; CHECK-NEXT: frame-setup SEH_StackAlloc 32525    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -1, implicit $vg526    ; CHECK-NEXT: frame-setup SEH_AllocZ 1527    ; CHECK-NEXT: frame-setup SEH_PrologEnd528    ; CHECK-NEXT: $z8_z9_z10_z11 = IMPLICIT_DEF529    ; CHECK-NEXT: $z12_z13_z14_z15 = IMPLICIT_DEF530    ; CHECK-NEXT: $z16_z17_z18_z19 = IMPLICIT_DEF531    ; CHECK-NEXT: $z20_z21_z22_z23 = IMPLICIT_DEF532    ; CHECK-NEXT: $z24_z25_z26_z27 = IMPLICIT_DEF533    ; CHECK-NEXT: $z28_z29_z30_z31 = IMPLICIT_DEF534    ; CHECK-NEXT: $p4 = IMPLICIT_DEF535    ; CHECK-NEXT: $p5 = IMPLICIT_DEF536    ; CHECK-NEXT: $p6 = IMPLICIT_DEF537    ; CHECK-NEXT: $p7 = IMPLICIT_DEF538    ; CHECK-NEXT: $p8 = IMPLICIT_DEF539    ; CHECK-NEXT: $p9 = IMPLICIT_DEF540    ; CHECK-NEXT: $p10 = IMPLICIT_DEF541    ; CHECK-NEXT: $p11 = IMPLICIT_DEF542    ; CHECK-NEXT: $p12 = IMPLICIT_DEF543    ; CHECK-NEXT: $p13 = IMPLICIT_DEF544    ; CHECK-NEXT: $p14 = IMPLICIT_DEF545    ; CHECK-NEXT: $p15 = IMPLICIT_DEF546    ; CHECK-NEXT: $x19 = IMPLICIT_DEF547    ; CHECK-NEXT: $x20 = IMPLICIT_DEF548    ; CHECK-NEXT: $x21 = IMPLICIT_DEF549    ; CHECK-NEXT: frame-destroy SEH_EpilogStart550    ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 1, implicit $vg551    ; CHECK-NEXT: frame-destroy SEH_AllocZ 1552    ; CHECK-NEXT: $sp = frame-destroy ADDXri $sp, 32, 0553    ; CHECK-NEXT: frame-destroy SEH_StackAlloc 32554    ; CHECK-NEXT: $x21, $lr = frame-destroy LDPXi $sp, 2 :: (load (s64) from %stack.2), (load (s64) from %stack.3)555    ; CHECK-NEXT: frame-destroy SEH_SaveRegP 21, 30, 16556    ; CHECK-NEXT: early-clobber $sp, $x19, $x20 = frame-destroy LDPXpost $sp, 4 :: (load (s64) from %stack.4), (load (s64) from %stack.5)557    ; CHECK-NEXT: frame-destroy SEH_SaveRegP_X 19, 20, -32558    ; CHECK-NEXT: $z8 = frame-destroy LDR_ZXI $sp, 2 :: (load (s128) from %stack.21)559    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 8, 2560    ; CHECK-NEXT: $z9 = frame-destroy LDR_ZXI $sp, 3 :: (load (s128) from %stack.20)561    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 9, 3562    ; CHECK-NEXT: $z10 = frame-destroy LDR_ZXI $sp, 4 :: (load (s128) from %stack.19)563    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 10, 4564    ; CHECK-NEXT: $z11 = frame-destroy LDR_ZXI $sp, 5 :: (load (s128) from %stack.18)565    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 11, 5566    ; CHECK-NEXT: $z12 = frame-destroy LDR_ZXI $sp, 6 :: (load (s128) from %stack.17)567    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 12, 6568    ; CHECK-NEXT: $z13 = frame-destroy LDR_ZXI $sp, 7 :: (load (s128) from %stack.16)569    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 13, 7570    ; CHECK-NEXT: $z14 = frame-destroy LDR_ZXI $sp, 8 :: (load (s128) from %stack.15)571    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 14, 8572    ; CHECK-NEXT: $z15 = frame-destroy LDR_ZXI $sp, 9 :: (load (s128) from %stack.14)573    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 15, 9574    ; CHECK-NEXT: $z16 = frame-destroy LDR_ZXI $sp, 10 :: (load (s128) from %stack.13)575    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 16, 10576    ; CHECK-NEXT: $z17 = frame-destroy LDR_ZXI $sp, 11 :: (load (s128) from %stack.12)577    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 17, 11578    ; CHECK-NEXT: $z18 = frame-destroy LDR_ZXI $sp, 12 :: (load (s128) from %stack.11)579    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 18, 12580    ; CHECK-NEXT: $z19 = frame-destroy LDR_ZXI $sp, 13 :: (load (s128) from %stack.10)581    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 19, 13582    ; CHECK-NEXT: $z20 = frame-destroy LDR_ZXI $sp, 14 :: (load (s128) from %stack.9)583    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 20, 14584    ; CHECK-NEXT: $z21 = frame-destroy LDR_ZXI $sp, 15 :: (load (s128) from %stack.8)585    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 21, 15586    ; CHECK-NEXT: $z22 = frame-destroy LDR_ZXI $sp, 16 :: (load (s128) from %stack.7)587    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 22, 16588    ; CHECK-NEXT: $z23 = frame-destroy LDR_ZXI $sp, 17 :: (load (s128) from %stack.6)589    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 23, 17590    ; CHECK-NEXT: $p4 = frame-destroy LDR_PXI $sp, 0 :: (load (s16) from %stack.33)591    ; CHECK-NEXT: frame-destroy SEH_SavePReg 4, 0592    ; CHECK-NEXT: $p5 = frame-destroy LDR_PXI $sp, 1 :: (load (s16) from %stack.32)593    ; CHECK-NEXT: frame-destroy SEH_SavePReg 5, 1594    ; CHECK-NEXT: $p6 = frame-destroy LDR_PXI $sp, 2 :: (load (s16) from %stack.31)595    ; CHECK-NEXT: frame-destroy SEH_SavePReg 6, 2596    ; CHECK-NEXT: $p7 = frame-destroy LDR_PXI $sp, 3 :: (load (s16) from %stack.30)597    ; CHECK-NEXT: frame-destroy SEH_SavePReg 7, 3598    ; CHECK-NEXT: $p8 = frame-destroy LDR_PXI $sp, 4 :: (load (s16) from %stack.29)599    ; CHECK-NEXT: frame-destroy SEH_SavePReg 8, 4600    ; CHECK-NEXT: $p9 = frame-destroy LDR_PXI $sp, 5 :: (load (s16) from %stack.28)601    ; CHECK-NEXT: frame-destroy SEH_SavePReg 9, 5602    ; CHECK-NEXT: $p10 = frame-destroy LDR_PXI $sp, 6 :: (load (s16) from %stack.27)603    ; CHECK-NEXT: frame-destroy SEH_SavePReg 10, 6604    ; CHECK-NEXT: $p11 = frame-destroy LDR_PXI $sp, 7 :: (load (s16) from %stack.26)605    ; CHECK-NEXT: frame-destroy SEH_SavePReg 11, 7606    ; CHECK-NEXT: $p12 = frame-destroy LDR_PXI $sp, 8 :: (load (s16) from %stack.25)607    ; CHECK-NEXT: frame-destroy SEH_SavePReg 12, 8608    ; CHECK-NEXT: $p13 = frame-destroy LDR_PXI $sp, 9 :: (load (s16) from %stack.24)609    ; CHECK-NEXT: frame-destroy SEH_SavePReg 13, 9610    ; CHECK-NEXT: $p14 = frame-destroy LDR_PXI $sp, 10 :: (load (s16) from %stack.23)611    ; CHECK-NEXT: frame-destroy SEH_SavePReg 14, 10612    ; CHECK-NEXT: $p15 = frame-destroy LDR_PXI $sp, 11 :: (load (s16) from %stack.22)613    ; CHECK-NEXT: frame-destroy SEH_SavePReg 15, 11614    ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 18, implicit $vg615    ; CHECK-NEXT: frame-destroy SEH_AllocZ 18616    ; CHECK-NEXT: frame-destroy SEH_EpilogEnd617    ; CHECK-NEXT: RET_ReallyLR618    $z8_z9_z10_z11   = IMPLICIT_DEF619    $z12_z13_z14_z15 = IMPLICIT_DEF620    $z16_z17_z18_z19 = IMPLICIT_DEF621    $z20_z21_z22_z23 = IMPLICIT_DEF622    $z24_z25_z26_z27 = IMPLICIT_DEF623    $z28_z29_z30_z31 = IMPLICIT_DEF624    $p4 = IMPLICIT_DEF625    $p5 = IMPLICIT_DEF626    $p6 = IMPLICIT_DEF627    $p7 = IMPLICIT_DEF628    $p8 = IMPLICIT_DEF629    $p9 = IMPLICIT_DEF630    $p10 = IMPLICIT_DEF631    $p11 = IMPLICIT_DEF632    $p12 = IMPLICIT_DEF633    $p13 = IMPLICIT_DEF634    $p14 = IMPLICIT_DEF635    $p15 = IMPLICIT_DEF636 637    $x19 = IMPLICIT_DEF638    $x20 = IMPLICIT_DEF639    $x21 = IMPLICIT_DEF640 641    RET_ReallyLR642...643---644name: save_restore_sve_realign645stack:646  - { id: 0, stack-id: scalable-vector, size: 16, alignment: 16 }647  - { id: 1, stack-id: default, size: 16, alignment: 32 }648body:             |649  bb.0.entry:650 651    ; CHECK-LABEL: name: save_restore_sve_realign652    ; CHECK: fixedStack:653    ; CHECK: liveins: $p4, $p5, $p6, $p7, $p8, $p9, $p10, $p11, $p12, $p13, $p14, $p15, $z8, $z9, $z10, $z11, $z12, $z13, $z14, $z15, $z16, $z17, $z18, $z19, $z20, $z21, $z22, $z23, $lr654    ; CHECK-NEXT: {{  $}}655    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -18, implicit $vg656    ; CHECK-NEXT: frame-setup SEH_AllocZ 18657    ; CHECK-NEXT: frame-setup STR_PXI killed $p4, $sp, 0 :: (store (s16) into %stack.31)658    ; CHECK-NEXT: frame-setup SEH_SavePReg 4, 0659    ; CHECK-NEXT: frame-setup STR_PXI killed $p5, $sp, 1 :: (store (s16) into %stack.30)660    ; CHECK-NEXT: frame-setup SEH_SavePReg 5, 1661    ; CHECK-NEXT: frame-setup STR_PXI killed $p6, $sp, 2 :: (store (s16) into %stack.29)662    ; CHECK-NEXT: frame-setup SEH_SavePReg 6, 2663    ; CHECK-NEXT: frame-setup STR_PXI killed $p7, $sp, 3 :: (store (s16) into %stack.28)664    ; CHECK-NEXT: frame-setup SEH_SavePReg 7, 3665    ; CHECK-NEXT: frame-setup STR_PXI killed $p8, $sp, 4 :: (store (s16) into %stack.27)666    ; CHECK-NEXT: frame-setup SEH_SavePReg 8, 4667    ; CHECK-NEXT: frame-setup STR_PXI killed $p9, $sp, 5 :: (store (s16) into %stack.26)668    ; CHECK-NEXT: frame-setup SEH_SavePReg 9, 5669    ; CHECK-NEXT: frame-setup STR_PXI killed $p10, $sp, 6 :: (store (s16) into %stack.25)670    ; CHECK-NEXT: frame-setup SEH_SavePReg 10, 6671    ; CHECK-NEXT: frame-setup STR_PXI killed $p11, $sp, 7 :: (store (s16) into %stack.24)672    ; CHECK-NEXT: frame-setup SEH_SavePReg 11, 7673    ; CHECK-NEXT: frame-setup STR_PXI killed $p12, $sp, 8 :: (store (s16) into %stack.23)674    ; CHECK-NEXT: frame-setup SEH_SavePReg 12, 8675    ; CHECK-NEXT: frame-setup STR_PXI killed $p13, $sp, 9 :: (store (s16) into %stack.22)676    ; CHECK-NEXT: frame-setup SEH_SavePReg 13, 9677    ; CHECK-NEXT: frame-setup STR_PXI killed $p14, $sp, 10 :: (store (s16) into %stack.21)678    ; CHECK-NEXT: frame-setup SEH_SavePReg 14, 10679    ; CHECK-NEXT: frame-setup STR_PXI killed $p15, $sp, 11 :: (store (s16) into %stack.20)680    ; CHECK-NEXT: frame-setup SEH_SavePReg 15, 11681    ; CHECK-NEXT: frame-setup STR_ZXI killed $z8, $sp, 2 :: (store (s128) into %stack.19)682    ; CHECK-NEXT: frame-setup SEH_SaveZReg 8, 2683    ; CHECK-NEXT: frame-setup STR_ZXI killed $z9, $sp, 3 :: (store (s128) into %stack.18)684    ; CHECK-NEXT: frame-setup SEH_SaveZReg 9, 3685    ; CHECK-NEXT: frame-setup STR_ZXI killed $z10, $sp, 4 :: (store (s128) into %stack.17)686    ; CHECK-NEXT: frame-setup SEH_SaveZReg 10, 4687    ; CHECK-NEXT: frame-setup STR_ZXI killed $z11, $sp, 5 :: (store (s128) into %stack.16)688    ; CHECK-NEXT: frame-setup SEH_SaveZReg 11, 5689    ; CHECK-NEXT: frame-setup STR_ZXI killed $z12, $sp, 6 :: (store (s128) into %stack.15)690    ; CHECK-NEXT: frame-setup SEH_SaveZReg 12, 6691    ; CHECK-NEXT: frame-setup STR_ZXI killed $z13, $sp, 7 :: (store (s128) into %stack.14)692    ; CHECK-NEXT: frame-setup SEH_SaveZReg 13, 7693    ; CHECK-NEXT: frame-setup STR_ZXI killed $z14, $sp, 8 :: (store (s128) into %stack.13)694    ; CHECK-NEXT: frame-setup SEH_SaveZReg 14, 8695    ; CHECK-NEXT: frame-setup STR_ZXI killed $z15, $sp, 9 :: (store (s128) into %stack.12)696    ; CHECK-NEXT: frame-setup SEH_SaveZReg 15, 9697    ; CHECK-NEXT: frame-setup STR_ZXI killed $z16, $sp, 10 :: (store (s128) into %stack.11)698    ; CHECK-NEXT: frame-setup SEH_SaveZReg 16, 10699    ; CHECK-NEXT: frame-setup STR_ZXI killed $z17, $sp, 11 :: (store (s128) into %stack.10)700    ; CHECK-NEXT: frame-setup SEH_SaveZReg 17, 11701    ; CHECK-NEXT: frame-setup STR_ZXI killed $z18, $sp, 12 :: (store (s128) into %stack.9)702    ; CHECK-NEXT: frame-setup SEH_SaveZReg 18, 12703    ; CHECK-NEXT: frame-setup STR_ZXI killed $z19, $sp, 13 :: (store (s128) into %stack.8)704    ; CHECK-NEXT: frame-setup SEH_SaveZReg 19, 13705    ; CHECK-NEXT: frame-setup STR_ZXI killed $z20, $sp, 14 :: (store (s128) into %stack.7)706    ; CHECK-NEXT: frame-setup SEH_SaveZReg 20, 14707    ; CHECK-NEXT: frame-setup STR_ZXI killed $z21, $sp, 15 :: (store (s128) into %stack.6)708    ; CHECK-NEXT: frame-setup SEH_SaveZReg 21, 15709    ; CHECK-NEXT: frame-setup STR_ZXI killed $z22, $sp, 16 :: (store (s128) into %stack.5)710    ; CHECK-NEXT: frame-setup SEH_SaveZReg 22, 16711    ; CHECK-NEXT: frame-setup STR_ZXI killed $z23, $sp, 17 :: (store (s128) into %stack.4)712    ; CHECK-NEXT: frame-setup SEH_SaveZReg 23, 17713    ; CHECK-NEXT: early-clobber $sp = frame-setup STPXpre killed $fp, killed $lr, $sp, -2 :: (store (s64) into %stack.2), (store (s64) into %stack.3)714    ; CHECK-NEXT: frame-setup SEH_SaveFPLR_X -16715    ; CHECK-NEXT: $fp = frame-setup ADDXri $sp, 0, 0716    ; CHECK-NEXT: frame-setup SEH_SetFP717    ; CHECK-NEXT: frame-setup SEH_PrologEnd718    ; CHECK-NEXT: $x9 = frame-setup SUBXri $sp, 16, 0719    ; CHECK-NEXT: $x9 = frame-setup ADDVL_XXI $x9, -1, implicit $vg720    ; CHECK-NEXT: $sp = frame-setup ANDXri killed $x9, 7930721    ; CHECK-NEXT: $z8_z9_z10_z11 = IMPLICIT_DEF722    ; CHECK-NEXT: $z12_z13_z14_z15 = IMPLICIT_DEF723    ; CHECK-NEXT: $z16_z17_z18_z19 = IMPLICIT_DEF724    ; CHECK-NEXT: $z20_z21_z22_z23 = IMPLICIT_DEF725    ; CHECK-NEXT: $z24_z25_z26_z27 = IMPLICIT_DEF726    ; CHECK-NEXT: $z28_z29_z30_z31 = IMPLICIT_DEF727    ; CHECK-NEXT: $p4 = IMPLICIT_DEF728    ; CHECK-NEXT: $p5 = IMPLICIT_DEF729    ; CHECK-NEXT: $p6 = IMPLICIT_DEF730    ; CHECK-NEXT: $p7 = IMPLICIT_DEF731    ; CHECK-NEXT: $p8 = IMPLICIT_DEF732    ; CHECK-NEXT: $p9 = IMPLICIT_DEF733    ; CHECK-NEXT: $p10 = IMPLICIT_DEF734    ; CHECK-NEXT: $p11 = IMPLICIT_DEF735    ; CHECK-NEXT: $p12 = IMPLICIT_DEF736    ; CHECK-NEXT: $p13 = IMPLICIT_DEF737    ; CHECK-NEXT: $p14 = IMPLICIT_DEF738    ; CHECK-NEXT: $p15 = IMPLICIT_DEF739    ; CHECK-NEXT: frame-destroy SEH_EpilogStart740    ; CHECK-NEXT: $sp = frame-destroy ADDXri $fp, 0, 0741    ; CHECK-NEXT: frame-destroy SEH_SetFP742    ; CHECK-NEXT: early-clobber $sp, $fp, $lr = frame-destroy LDPXpost $sp, 2 :: (load (s64) from %stack.2), (load (s64) from %stack.3)743    ; CHECK-NEXT: frame-destroy SEH_SaveFPLR_X -16744    ; CHECK-NEXT: $z8 = frame-destroy LDR_ZXI $sp, 2 :: (load (s128) from %stack.19)745    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 8, 2746    ; CHECK-NEXT: $z9 = frame-destroy LDR_ZXI $sp, 3 :: (load (s128) from %stack.18)747    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 9, 3748    ; CHECK-NEXT: $z10 = frame-destroy LDR_ZXI $sp, 4 :: (load (s128) from %stack.17)749    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 10, 4750    ; CHECK-NEXT: $z11 = frame-destroy LDR_ZXI $sp, 5 :: (load (s128) from %stack.16)751    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 11, 5752    ; CHECK-NEXT: $z12 = frame-destroy LDR_ZXI $sp, 6 :: (load (s128) from %stack.15)753    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 12, 6754    ; CHECK-NEXT: $z13 = frame-destroy LDR_ZXI $sp, 7 :: (load (s128) from %stack.14)755    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 13, 7756    ; CHECK-NEXT: $z14 = frame-destroy LDR_ZXI $sp, 8 :: (load (s128) from %stack.13)757    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 14, 8758    ; CHECK-NEXT: $z15 = frame-destroy LDR_ZXI $sp, 9 :: (load (s128) from %stack.12)759    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 15, 9760    ; CHECK-NEXT: $z16 = frame-destroy LDR_ZXI $sp, 10 :: (load (s128) from %stack.11)761    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 16, 10762    ; CHECK-NEXT: $z17 = frame-destroy LDR_ZXI $sp, 11 :: (load (s128) from %stack.10)763    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 17, 11764    ; CHECK-NEXT: $z18 = frame-destroy LDR_ZXI $sp, 12 :: (load (s128) from %stack.9)765    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 18, 12766    ; CHECK-NEXT: $z19 = frame-destroy LDR_ZXI $sp, 13 :: (load (s128) from %stack.8)767    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 19, 13768    ; CHECK-NEXT: $z20 = frame-destroy LDR_ZXI $sp, 14 :: (load (s128) from %stack.7)769    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 20, 14770    ; CHECK-NEXT: $z21 = frame-destroy LDR_ZXI $sp, 15 :: (load (s128) from %stack.6)771    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 21, 15772    ; CHECK-NEXT: $z22 = frame-destroy LDR_ZXI $sp, 16 :: (load (s128) from %stack.5)773    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 22, 16774    ; CHECK-NEXT: $z23 = frame-destroy LDR_ZXI $sp, 17 :: (load (s128) from %stack.4)775    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 23, 17776    ; CHECK-NEXT: $p4 = frame-destroy LDR_PXI $sp, 0 :: (load (s16) from %stack.31)777    ; CHECK-NEXT: frame-destroy SEH_SavePReg 4, 0778    ; CHECK-NEXT: $p5 = frame-destroy LDR_PXI $sp, 1 :: (load (s16) from %stack.30)779    ; CHECK-NEXT: frame-destroy SEH_SavePReg 5, 1780    ; CHECK-NEXT: $p6 = frame-destroy LDR_PXI $sp, 2 :: (load (s16) from %stack.29)781    ; CHECK-NEXT: frame-destroy SEH_SavePReg 6, 2782    ; CHECK-NEXT: $p7 = frame-destroy LDR_PXI $sp, 3 :: (load (s16) from %stack.28)783    ; CHECK-NEXT: frame-destroy SEH_SavePReg 7, 3784    ; CHECK-NEXT: $p8 = frame-destroy LDR_PXI $sp, 4 :: (load (s16) from %stack.27)785    ; CHECK-NEXT: frame-destroy SEH_SavePReg 8, 4786    ; CHECK-NEXT: $p9 = frame-destroy LDR_PXI $sp, 5 :: (load (s16) from %stack.26)787    ; CHECK-NEXT: frame-destroy SEH_SavePReg 9, 5788    ; CHECK-NEXT: $p10 = frame-destroy LDR_PXI $sp, 6 :: (load (s16) from %stack.25)789    ; CHECK-NEXT: frame-destroy SEH_SavePReg 10, 6790    ; CHECK-NEXT: $p11 = frame-destroy LDR_PXI $sp, 7 :: (load (s16) from %stack.24)791    ; CHECK-NEXT: frame-destroy SEH_SavePReg 11, 7792    ; CHECK-NEXT: $p12 = frame-destroy LDR_PXI $sp, 8 :: (load (s16) from %stack.23)793    ; CHECK-NEXT: frame-destroy SEH_SavePReg 12, 8794    ; CHECK-NEXT: $p13 = frame-destroy LDR_PXI $sp, 9 :: (load (s16) from %stack.22)795    ; CHECK-NEXT: frame-destroy SEH_SavePReg 13, 9796    ; CHECK-NEXT: $p14 = frame-destroy LDR_PXI $sp, 10 :: (load (s16) from %stack.21)797    ; CHECK-NEXT: frame-destroy SEH_SavePReg 14, 10798    ; CHECK-NEXT: $p15 = frame-destroy LDR_PXI $sp, 11 :: (load (s16) from %stack.20)799    ; CHECK-NEXT: frame-destroy SEH_SavePReg 15, 11800    ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 18, implicit $vg801    ; CHECK-NEXT: frame-destroy SEH_AllocZ 18802    ; CHECK-NEXT: frame-destroy SEH_EpilogEnd803    ; CHECK-NEXT: RET_ReallyLR804    $z8_z9_z10_z11   = IMPLICIT_DEF805    $z12_z13_z14_z15 = IMPLICIT_DEF806    $z16_z17_z18_z19 = IMPLICIT_DEF807    $z20_z21_z22_z23 = IMPLICIT_DEF808    $z24_z25_z26_z27 = IMPLICIT_DEF809    $z28_z29_z30_z31 = IMPLICIT_DEF810    $p4 = IMPLICIT_DEF811    $p5 = IMPLICIT_DEF812    $p6 = IMPLICIT_DEF813    $p7 = IMPLICIT_DEF814    $p8 = IMPLICIT_DEF815    $p9 = IMPLICIT_DEF816    $p10 = IMPLICIT_DEF817    $p11 = IMPLICIT_DEF818    $p12 = IMPLICIT_DEF819    $p13 = IMPLICIT_DEF820    $p14 = IMPLICIT_DEF821    $p15 = IMPLICIT_DEF822 823    RET_ReallyLR824...825---826name: frame_layout827stack:828  - { id: 0, type: default,    size:  32, alignment: 16, stack-id: scalable-vector }829  - { id: 1, type: default,    size:   4, alignment:  2, stack-id: scalable-vector }830  - { id: 2, type: default,    size:  16, alignment: 16, stack-id: scalable-vector }831  - { id: 3, type: default,    size:   2, alignment:  2, stack-id: scalable-vector }832  - { id: 4, type: spill-slot, size:  16, alignment: 16, stack-id: scalable-vector }833  - { id: 5, type: spill-slot, size:   2, alignment:  2, stack-id: scalable-vector }834body:             |835  bb.0.entry:836 837    ; Trigger some callee saves838    ; CHECK-LABEL: name: frame_layout839    ; CHECK: fixedStack:840    ; CHECK: liveins: $p4, $p15, $z8, $z23, $lr841    ; CHECK-NEXT: {{  $}}842    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -3, implicit $vg843    ; CHECK-NEXT: frame-setup SEH_AllocZ 3844    ; CHECK-NEXT: frame-setup STR_PXI killed $p4, $sp, 0 :: (store (s16) into %stack.10)845    ; CHECK-NEXT: frame-setup SEH_SavePReg 4, 0846    ; CHECK-NEXT: frame-setup STR_PXI killed $p15, $sp, 1 :: (store (s16) into %stack.9)847    ; CHECK-NEXT: frame-setup SEH_SavePReg 15, 1848    ; CHECK-NEXT: frame-setup STR_ZXI killed $z8, $sp, 1 :: (store (s128) into %stack.8)849    ; CHECK-NEXT: frame-setup SEH_SaveZReg 8, 1850    ; CHECK-NEXT: frame-setup STR_ZXI killed $z23, $sp, 2 :: (store (s128) into %stack.7)851    ; CHECK-NEXT: frame-setup SEH_SaveZReg 23, 2852    ; CHECK-NEXT: early-clobber $sp = frame-setup STRXpre killed $lr, $sp, -16 :: (store (s64) into %stack.6)853    ; CHECK-NEXT: frame-setup SEH_SaveReg_X 30, -16854    ; CHECK-NEXT: $sp = frame-setup ADDVL_XXI $sp, -7, implicit $vg855    ; CHECK-NEXT: frame-setup SEH_AllocZ 7856    ; CHECK-NEXT: frame-setup SEH_PrologEnd857    ; CHECK-NEXT: $z8 = IMPLICIT_DEF858    ; CHECK-NEXT: $z23 = IMPLICIT_DEF859    ; CHECK-NEXT: $p4 = IMPLICIT_DEF860    ; CHECK-NEXT: $p15 = IMPLICIT_DEF861    ; CHECK-NEXT: frame-destroy SEH_EpilogStart862    ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 7, implicit $vg863    ; CHECK-NEXT: frame-destroy SEH_AllocZ 7864    ; CHECK-NEXT: early-clobber $sp, $lr = frame-destroy LDRXpost $sp, 16 :: (load (s64) from %stack.6)865    ; CHECK-NEXT: frame-destroy SEH_SaveReg_X 30, -16866    ; CHECK-NEXT: $z8 = frame-destroy LDR_ZXI $sp, 1 :: (load (s128) from %stack.8)867    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 8, 1868    ; CHECK-NEXT: $z23 = frame-destroy LDR_ZXI $sp, 2 :: (load (s128) from %stack.7)869    ; CHECK-NEXT: frame-destroy SEH_SaveZReg 23, 2870    ; CHECK-NEXT: $p4 = frame-destroy LDR_PXI $sp, 0 :: (load (s16) from %stack.10)871    ; CHECK-NEXT: frame-destroy SEH_SavePReg 4, 0872    ; CHECK-NEXT: $p15 = frame-destroy LDR_PXI $sp, 1 :: (load (s16) from %stack.9)873    ; CHECK-NEXT: frame-destroy SEH_SavePReg 15, 1874    ; CHECK-NEXT: $sp = frame-destroy ADDVL_XXI $sp, 3, implicit $vg875    ; CHECK-NEXT: frame-destroy SEH_AllocZ 3876    ; CHECK-NEXT: frame-destroy SEH_EpilogEnd877    ; CHECK-NEXT: RET_ReallyLR878    $z8  = IMPLICIT_DEF879    $z23 = IMPLICIT_DEF880    $p4  = IMPLICIT_DEF881    $p15 = IMPLICIT_DEF882 883    RET_ReallyLR884...885