@@ -386,3 +386,46 @@ define void @shared_za_new_zt0(ptr %callee) "aarch64_inout_za" "aarch64_new_zt0"
386
386
call void %callee () "aarch64_inout_za" "aarch64_in_zt0" ;
387
387
ret void ;
388
388
}
389
+
390
+
391
+ define void @zt0_multiple_private_za_calls (ptr %callee ) "aarch64_in_zt0" nounwind {
392
+ ; CHECK-COMMON-LABEL: zt0_multiple_private_za_calls:
393
+ ; CHECK-COMMON: // %bb.0:
394
+ ; CHECK-COMMON-NEXT: sub sp, sp, #288
395
+ ; CHECK-COMMON-NEXT: stp x20, x19, [sp, #272] // 16-byte Folded Spill
396
+ ; CHECK-COMMON-NEXT: add x20, sp, #192
397
+ ; CHECK-COMMON-NEXT: mov x19, x0
398
+ ; CHECK-COMMON-NEXT: stp x29, x30, [sp, #256] // 16-byte Folded Spill
399
+ ; CHECK-COMMON-NEXT: str zt0, [x20]
400
+ ; CHECK-COMMON-NEXT: smstop za
401
+ ; CHECK-COMMON-NEXT: blr x0
402
+ ; CHECK-COMMON-NEXT: smstart za
403
+ ; CHECK-COMMON-NEXT: ldr zt0, [x20]
404
+ ; CHECK-COMMON-NEXT: add x20, sp, #128
405
+ ; CHECK-COMMON-NEXT: str zt0, [x20]
406
+ ; CHECK-COMMON-NEXT: smstop za
407
+ ; CHECK-COMMON-NEXT: blr x19
408
+ ; CHECK-COMMON-NEXT: smstart za
409
+ ; CHECK-COMMON-NEXT: ldr zt0, [x20]
410
+ ; CHECK-COMMON-NEXT: add x20, sp, #64
411
+ ; CHECK-COMMON-NEXT: str zt0, [x20]
412
+ ; CHECK-COMMON-NEXT: smstop za
413
+ ; CHECK-COMMON-NEXT: blr x19
414
+ ; CHECK-COMMON-NEXT: smstart za
415
+ ; CHECK-COMMON-NEXT: ldr zt0, [x20]
416
+ ; CHECK-COMMON-NEXT: mov x20, sp
417
+ ; CHECK-COMMON-NEXT: str zt0, [x20]
418
+ ; CHECK-COMMON-NEXT: smstop za
419
+ ; CHECK-COMMON-NEXT: blr x19
420
+ ; CHECK-COMMON-NEXT: smstart za
421
+ ; CHECK-COMMON-NEXT: ldr zt0, [x20]
422
+ ; CHECK-COMMON-NEXT: ldp x20, x19, [sp, #272] // 16-byte Folded Reload
423
+ ; CHECK-COMMON-NEXT: ldp x29, x30, [sp, #256] // 16-byte Folded Reload
424
+ ; CHECK-COMMON-NEXT: add sp, sp, #288
425
+ ; CHECK-COMMON-NEXT: ret
426
+ call void %callee ()
427
+ call void %callee ()
428
+ call void %callee ()
429
+ call void %callee ()
430
+ ret void
431
+ }
0 commit comments