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