Skip to content

Commit 2f7ba65

Browse files
committed
Mark VG as restored in function epilogue
At this point for all function types VG should match the entry VG, and the saved VG has been deallocated on the stack, so may not contain a valid value.
1 parent f093d2e commit 2f7ba65

File tree

8 files changed

+48
-4
lines changed

8 files changed

+48
-4
lines changed

llvm/lib/Target/AArch64/AArch64FrameLowering.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -793,9 +793,6 @@ static void emitCalleeSavedRestores(MachineBasicBlock &MBB,
793793
!static_cast<const AArch64RegisterInfo &>(TRI).regNeedsCFI(Reg, Reg))
794794
continue;
795795

796-
if (!Info.isRestored())
797-
continue;
798-
799796
CFIBuilder.buildRestore(Info.getReg());
800797
}
801798
}
@@ -4219,7 +4216,6 @@ bool AArch64FrameLowering::assignCalleeSavedSpillSlots(
42194216
// Insert VG into the list of CSRs, immediately before LR if saved.
42204217
if (requiresSaveVG(MF)) {
42214218
CalleeSavedInfo VGInfo(AArch64::VG);
4222-
VGInfo.setRestored(false);
42234219

42244220
bool InsertedBeforeLR = false;
42254221
for (unsigned I = 0; I < CSI.size(); I++)

llvm/test/CodeGen/AArch64/sme-darwin-sve-vg.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ define void @locally_streaming_fn() #0 {
3535
; CHECK-NEXT: ldp d13, d12, [sp, #16] ; 16-byte Folded Reload
3636
; CHECK-NEXT: ldp d15, d14, [sp], #96 ; 16-byte Folded Reload
3737
; CHECK-NEXT: .cfi_def_cfa_offset 0
38+
; CHECK-NEXT: .cfi_restore vg
3839
; CHECK-NEXT: .cfi_restore w30
3940
; CHECK-NEXT: .cfi_restore w29
4041
; CHECK-NEXT: .cfi_restore b8

llvm/test/CodeGen/AArch64/sme-must-save-lr-for-vg.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ define void @foo() "aarch64_pstate_sm_body" {
3333
; CHECK-NEXT: ldp d13, d12, [sp, #16] // 16-byte Folded Reload
3434
; CHECK-NEXT: ldp d15, d14, [sp], #96 // 16-byte Folded Reload
3535
; CHECK-NEXT: .cfi_def_cfa_offset 0
36+
; CHECK-NEXT: .cfi_restore vg
3637
; CHECK-NEXT: .cfi_restore w30
3738
; CHECK-NEXT: .cfi_restore w29
3839
; CHECK-NEXT: .cfi_restore b8

llvm/test/CodeGen/AArch64/sme-peephole-opts.ll

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,7 @@ define void @test10() "aarch64_pstate_sm_body" {
410410
; CHECK-NEXT: ldp d13, d12, [sp, #16] // 16-byte Folded Reload
411411
; CHECK-NEXT: ldp d15, d14, [sp], #96 // 16-byte Folded Reload
412412
; CHECK-NEXT: .cfi_def_cfa_offset 0
413+
; CHECK-NEXT: .cfi_restore vg
413414
; CHECK-NEXT: .cfi_restore w30
414415
; CHECK-NEXT: .cfi_restore w29
415416
; CHECK-NEXT: .cfi_restore b8
@@ -496,6 +497,7 @@ define void @test12() "aarch64_pstate_sm_body" {
496497
; CHECK-NEXT: ldp d13, d12, [sp, #16] // 16-byte Folded Reload
497498
; CHECK-NEXT: ldp d15, d14, [sp], #96 // 16-byte Folded Reload
498499
; CHECK-NEXT: .cfi_def_cfa_offset 0
500+
; CHECK-NEXT: .cfi_restore vg
499501
; CHECK-NEXT: .cfi_restore w30
500502
; CHECK-NEXT: .cfi_restore w29
501503
; CHECK-NEXT: .cfi_restore b8

llvm/test/CodeGen/AArch64/sme-streaming-compatible-interface.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -496,6 +496,7 @@ define void @call_to_non_streaming_pass_args(ptr nocapture noundef readnone %ptr
496496
; CHECK-NEXT: add sp, sp, #128
497497
; CHECK-NEXT: .cfi_def_cfa_offset 0
498498
; CHECK-NEXT: .cfi_restore w19
499+
; CHECK-NEXT: .cfi_restore vg
499500
; CHECK-NEXT: .cfi_restore w30
500501
; CHECK-NEXT: .cfi_restore w29
501502
; CHECK-NEXT: .cfi_restore b8

llvm/test/CodeGen/AArch64/sme-vg-to-stack.ll

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ define void @vg_unwind_simple() #0 {
4444
; CHECK-NEXT: ldp d13, d12, [sp, #16] // 16-byte Folded Reload
4545
; CHECK-NEXT: ldp d15, d14, [sp], #96 // 16-byte Folded Reload
4646
; CHECK-NEXT: .cfi_def_cfa_offset 0
47+
; CHECK-NEXT: .cfi_restore vg
4748
; CHECK-NEXT: .cfi_restore w30
4849
; CHECK-NEXT: .cfi_restore w29
4950
; CHECK-NEXT: .cfi_restore b8
@@ -89,6 +90,7 @@ define void @vg_unwind_simple() #0 {
8990
; FP-CHECK-NEXT: ldp d13, d12, [sp, #16] // 16-byte Folded Reload
9091
; FP-CHECK-NEXT: ldp d15, d14, [sp], #96 // 16-byte Folded Reload
9192
; FP-CHECK-NEXT: .cfi_def_cfa_offset 0
93+
; FP-CHECK-NEXT: .cfi_restore vg
9294
; FP-CHECK-NEXT: .cfi_restore w30
9395
; FP-CHECK-NEXT: .cfi_restore w29
9496
; FP-CHECK-NEXT: .cfi_restore b8
@@ -146,6 +148,7 @@ define void @vg_unwind_needs_gap() #0 {
146148
; CHECK-NEXT: ldp d15, d14, [sp], #96 // 16-byte Folded Reload
147149
; CHECK-NEXT: .cfi_def_cfa_offset 0
148150
; CHECK-NEXT: .cfi_restore w20
151+
; CHECK-NEXT: .cfi_restore vg
149152
; CHECK-NEXT: .cfi_restore w30
150153
; CHECK-NEXT: .cfi_restore w29
151154
; CHECK-NEXT: .cfi_restore b8
@@ -196,6 +199,7 @@ define void @vg_unwind_needs_gap() #0 {
196199
; FP-CHECK-NEXT: ldp d15, d14, [sp], #96 // 16-byte Folded Reload
197200
; FP-CHECK-NEXT: .cfi_def_cfa_offset 0
198201
; FP-CHECK-NEXT: .cfi_restore w20
202+
; FP-CHECK-NEXT: .cfi_restore vg
199203
; FP-CHECK-NEXT: .cfi_restore w30
200204
; FP-CHECK-NEXT: .cfi_restore w29
201205
; FP-CHECK-NEXT: .cfi_restore b8
@@ -251,6 +255,7 @@ define void @vg_unwind_with_fixed_args(<4 x i32> %x) #0 {
251255
; CHECK-NEXT: ldp d15, d14, [sp, #16] // 16-byte Folded Reload
252256
; CHECK-NEXT: add sp, sp, #112
253257
; CHECK-NEXT: .cfi_def_cfa_offset 0
258+
; CHECK-NEXT: .cfi_restore vg
254259
; CHECK-NEXT: .cfi_restore w30
255260
; CHECK-NEXT: .cfi_restore w29
256261
; CHECK-NEXT: .cfi_restore b8
@@ -300,6 +305,7 @@ define void @vg_unwind_with_fixed_args(<4 x i32> %x) #0 {
300305
; FP-CHECK-NEXT: ldp d15, d14, [sp, #16] // 16-byte Folded Reload
301306
; FP-CHECK-NEXT: add sp, sp, #112
302307
; FP-CHECK-NEXT: .cfi_def_cfa_offset 0
308+
; FP-CHECK-NEXT: .cfi_restore vg
303309
; FP-CHECK-NEXT: .cfi_restore w30
304310
; FP-CHECK-NEXT: .cfi_restore w29
305311
; FP-CHECK-NEXT: .cfi_restore b8
@@ -411,6 +417,7 @@ define void @vg_unwind_with_sve_args(<vscale x 2 x i64> %x) #0 {
411417
; CHECK-NEXT: .cfi_def_cfa_offset 0
412418
; CHECK-NEXT: .cfi_restore w27
413419
; CHECK-NEXT: .cfi_restore w28
420+
; CHECK-NEXT: .cfi_restore vg
414421
; CHECK-NEXT: .cfi_restore w30
415422
; CHECK-NEXT: .cfi_restore w29
416423
; CHECK-NEXT: ret
@@ -506,6 +513,7 @@ define void @vg_unwind_with_sve_args(<vscale x 2 x i64> %x) #0 {
506513
; FP-CHECK-NEXT: .cfi_def_cfa_offset 0
507514
; FP-CHECK-NEXT: .cfi_restore w27
508515
; FP-CHECK-NEXT: .cfi_restore w28
516+
; FP-CHECK-NEXT: .cfi_restore vg
509517
; FP-CHECK-NEXT: .cfi_restore w30
510518
; FP-CHECK-NEXT: .cfi_restore w29
511519
; FP-CHECK-NEXT: ret
@@ -569,6 +577,7 @@ define void @vg_unwind_multiple_scratch_regs(ptr %out) #1 {
569577
; CHECK-NEXT: ldp d15, d14, [sp], #96 // 16-byte Folded Reload
570578
; CHECK-NEXT: .cfi_def_cfa_offset 0
571579
; CHECK-NEXT: .cfi_restore w28
580+
; CHECK-NEXT: .cfi_restore vg
572581
; CHECK-NEXT: .cfi_restore w30
573582
; CHECK-NEXT: .cfi_restore w29
574583
; CHECK-NEXT: .cfi_restore b8
@@ -628,6 +637,7 @@ define void @vg_unwind_multiple_scratch_regs(ptr %out) #1 {
628637
; FP-CHECK-NEXT: ldp d15, d14, [sp], #96 // 16-byte Folded Reload
629638
; FP-CHECK-NEXT: .cfi_def_cfa_offset 0
630639
; FP-CHECK-NEXT: .cfi_restore w28
640+
; FP-CHECK-NEXT: .cfi_restore vg
631641
; FP-CHECK-NEXT: .cfi_restore w30
632642
; FP-CHECK-NEXT: .cfi_restore w29
633643
; FP-CHECK-NEXT: .cfi_restore b8
@@ -683,6 +693,7 @@ define void @vg_locally_streaming_fn() #3 {
683693
; CHECK-NEXT: ldp d13, d12, [sp, #16] // 16-byte Folded Reload
684694
; CHECK-NEXT: ldp d15, d14, [sp], #96 // 16-byte Folded Reload
685695
; CHECK-NEXT: .cfi_def_cfa_offset 0
696+
; CHECK-NEXT: .cfi_restore vg
686697
; CHECK-NEXT: .cfi_restore w30
687698
; CHECK-NEXT: .cfi_restore w29
688699
; CHECK-NEXT: .cfi_restore b8
@@ -730,6 +741,7 @@ define void @vg_locally_streaming_fn() #3 {
730741
; FP-CHECK-NEXT: ldp d13, d12, [sp, #16] // 16-byte Folded Reload
731742
; FP-CHECK-NEXT: ldp d15, d14, [sp], #96 // 16-byte Folded Reload
732743
; FP-CHECK-NEXT: .cfi_def_cfa_offset 0
744+
; FP-CHECK-NEXT: .cfi_restore vg
733745
; FP-CHECK-NEXT: .cfi_restore w30
734746
; FP-CHECK-NEXT: .cfi_restore w29
735747
; FP-CHECK-NEXT: .cfi_restore b8
@@ -793,6 +805,7 @@ define void @streaming_compatible_to_streaming() #4 {
793805
; CHECK-NEXT: ldp d15, d14, [sp], #96 // 16-byte Folded Reload
794806
; CHECK-NEXT: .cfi_def_cfa_offset 0
795807
; CHECK-NEXT: .cfi_restore w19
808+
; CHECK-NEXT: .cfi_restore vg
796809
; CHECK-NEXT: .cfi_restore w30
797810
; CHECK-NEXT: .cfi_restore w29
798811
; CHECK-NEXT: .cfi_restore b8
@@ -849,6 +862,7 @@ define void @streaming_compatible_to_streaming() #4 {
849862
; FP-CHECK-NEXT: ldp d15, d14, [sp], #96 // 16-byte Folded Reload
850863
; FP-CHECK-NEXT: .cfi_def_cfa_offset 0
851864
; FP-CHECK-NEXT: .cfi_restore w19
865+
; FP-CHECK-NEXT: .cfi_restore vg
852866
; FP-CHECK-NEXT: .cfi_restore w30
853867
; FP-CHECK-NEXT: .cfi_restore w29
854868
; FP-CHECK-NEXT: .cfi_restore b8
@@ -910,6 +924,7 @@ define void @streaming_compatible_to_non_streaming() #4 {
910924
; CHECK-NEXT: ldp d15, d14, [sp], #96 // 16-byte Folded Reload
911925
; CHECK-NEXT: .cfi_def_cfa_offset 0
912926
; CHECK-NEXT: .cfi_restore w19
927+
; CHECK-NEXT: .cfi_restore vg
913928
; CHECK-NEXT: .cfi_restore w30
914929
; CHECK-NEXT: .cfi_restore w29
915930
; CHECK-NEXT: .cfi_restore b8
@@ -966,6 +981,7 @@ define void @streaming_compatible_to_non_streaming() #4 {
966981
; FP-CHECK-NEXT: ldp d15, d14, [sp], #96 // 16-byte Folded Reload
967982
; FP-CHECK-NEXT: .cfi_def_cfa_offset 0
968983
; FP-CHECK-NEXT: .cfi_restore w19
984+
; FP-CHECK-NEXT: .cfi_restore vg
969985
; FP-CHECK-NEXT: .cfi_restore w30
970986
; FP-CHECK-NEXT: .cfi_restore w29
971987
; FP-CHECK-NEXT: .cfi_restore b8
@@ -1039,6 +1055,7 @@ define void @streaming_compatible_no_sve(i32 noundef %x) #4 {
10391055
; NO-SVE-CHECK-NEXT: ldp d15, d14, [sp], #96 // 16-byte Folded Reload
10401056
; NO-SVE-CHECK-NEXT: .cfi_def_cfa_offset 0
10411057
; NO-SVE-CHECK-NEXT: .cfi_restore w19
1058+
; NO-SVE-CHECK-NEXT: .cfi_restore vg
10421059
; NO-SVE-CHECK-NEXT: .cfi_restore w30
10431060
; NO-SVE-CHECK-NEXT: .cfi_restore w29
10441061
; NO-SVE-CHECK-NEXT: .cfi_restore b8
@@ -1129,6 +1146,7 @@ define void @vg_unwind_noasync() #5 {
11291146
; CHECK-NEXT: ldp d13, d12, [sp, #16] // 16-byte Folded Reload
11301147
; CHECK-NEXT: ldp d15, d14, [sp], #96 // 16-byte Folded Reload
11311148
; CHECK-NEXT: .cfi_def_cfa_offset 0
1149+
; CHECK-NEXT: .cfi_restore vg
11321150
; CHECK-NEXT: .cfi_restore w30
11331151
; CHECK-NEXT: .cfi_restore w29
11341152
; CHECK-NEXT: .cfi_restore b8
@@ -1174,6 +1192,7 @@ define void @vg_unwind_noasync() #5 {
11741192
; FP-CHECK-NEXT: ldp d13, d12, [sp, #16] // 16-byte Folded Reload
11751193
; FP-CHECK-NEXT: ldp d15, d14, [sp], #96 // 16-byte Folded Reload
11761194
; FP-CHECK-NEXT: .cfi_def_cfa_offset 0
1195+
; FP-CHECK-NEXT: .cfi_restore vg
11771196
; FP-CHECK-NEXT: .cfi_restore w30
11781197
; FP-CHECK-NEXT: .cfi_restore w29
11791198
; FP-CHECK-NEXT: .cfi_restore b8

llvm/test/CodeGen/AArch64/stack-hazard.ll

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -673,6 +673,7 @@ define i32 @csr_x18_25_d8_15_allocdi64_locallystreaming(i64 %d, double %e) "aarc
673673
; CHECK0-NEXT: .cfi_restore w23
674674
; CHECK0-NEXT: .cfi_restore w24
675675
; CHECK0-NEXT: .cfi_restore w25
676+
; CHECK0-NEXT: .cfi_restore vg
676677
; CHECK0-NEXT: .cfi_restore w30
677678
; CHECK0-NEXT: .cfi_restore w29
678679
; CHECK0-NEXT: .cfi_restore b8
@@ -746,6 +747,7 @@ define i32 @csr_x18_25_d8_15_allocdi64_locallystreaming(i64 %d, double %e) "aarc
746747
; CHECK64-NEXT: .cfi_restore w23
747748
; CHECK64-NEXT: .cfi_restore w24
748749
; CHECK64-NEXT: .cfi_restore w25
750+
; CHECK64-NEXT: .cfi_restore vg
749751
; CHECK64-NEXT: .cfi_restore w30
750752
; CHECK64-NEXT: .cfi_restore w29
751753
; CHECK64-NEXT: .cfi_restore b8
@@ -832,6 +834,7 @@ define i32 @csr_x18_25_d8_15_allocdi64_locallystreaming(i64 %d, double %e) "aarc
832834
; CHECK1024-NEXT: .cfi_restore w23
833835
; CHECK1024-NEXT: .cfi_restore w24
834836
; CHECK1024-NEXT: .cfi_restore w25
837+
; CHECK1024-NEXT: .cfi_restore vg
835838
; CHECK1024-NEXT: .cfi_restore w30
836839
; CHECK1024-NEXT: .cfi_restore w29
837840
; CHECK1024-NEXT: .cfi_restore b8
@@ -1644,6 +1647,7 @@ define i32 @f128_libcall(fp128 %v0, fp128 %v1, fp128 %v2, fp128 %v3, i32 %a, i32
16441647
; CHECK0-NEXT: .cfi_restore w20
16451648
; CHECK0-NEXT: .cfi_restore w21
16461649
; CHECK0-NEXT: .cfi_restore w22
1650+
; CHECK0-NEXT: .cfi_restore vg
16471651
; CHECK0-NEXT: .cfi_restore w30
16481652
; CHECK0-NEXT: .cfi_restore w29
16491653
; CHECK0-NEXT: .cfi_restore b8
@@ -1732,6 +1736,7 @@ define i32 @f128_libcall(fp128 %v0, fp128 %v1, fp128 %v2, fp128 %v3, i32 %a, i32
17321736
; CHECK64-NEXT: .cfi_restore w21
17331737
; CHECK64-NEXT: .cfi_restore w22
17341738
; CHECK64-NEXT: .cfi_restore w28
1739+
; CHECK64-NEXT: .cfi_restore vg
17351740
; CHECK64-NEXT: .cfi_restore w30
17361741
; CHECK64-NEXT: .cfi_restore w29
17371742
; CHECK64-NEXT: .cfi_restore b8
@@ -1835,6 +1840,7 @@ define i32 @f128_libcall(fp128 %v0, fp128 %v1, fp128 %v2, fp128 %v3, i32 %a, i32
18351840
; CHECK1024-NEXT: .cfi_restore w21
18361841
; CHECK1024-NEXT: .cfi_restore w22
18371842
; CHECK1024-NEXT: .cfi_restore w28
1843+
; CHECK1024-NEXT: .cfi_restore vg
18381844
; CHECK1024-NEXT: .cfi_restore w30
18391845
; CHECK1024-NEXT: .cfi_restore w29
18401846
; CHECK1024-NEXT: .cfi_restore b8
@@ -1974,6 +1980,7 @@ define i32 @svecc_call(<4 x i16> %P0, ptr %P1, i32 %P2, <vscale x 16 x i8> %P3,
19741980
; CHECK0-NEXT: .cfi_restore w26
19751981
; CHECK0-NEXT: .cfi_restore w27
19761982
; CHECK0-NEXT: .cfi_restore w28
1983+
; CHECK0-NEXT: .cfi_restore vg
19771984
; CHECK0-NEXT: .cfi_restore w30
19781985
; CHECK0-NEXT: .cfi_restore w29
19791986
; CHECK0-NEXT: ret
@@ -2101,6 +2108,7 @@ define i32 @svecc_call(<4 x i16> %P0, ptr %P1, i32 %P2, <vscale x 16 x i8> %P3,
21012108
; CHECK64-NEXT: .cfi_restore w26
21022109
; CHECK64-NEXT: .cfi_restore w27
21032110
; CHECK64-NEXT: .cfi_restore w28
2111+
; CHECK64-NEXT: .cfi_restore vg
21042112
; CHECK64-NEXT: .cfi_restore w30
21052113
; CHECK64-NEXT: .cfi_restore w29
21062114
; CHECK64-NEXT: ret
@@ -2234,6 +2242,7 @@ define i32 @svecc_call(<4 x i16> %P0, ptr %P1, i32 %P2, <vscale x 16 x i8> %P3,
22342242
; CHECK1024-NEXT: .cfi_restore w26
22352243
; CHECK1024-NEXT: .cfi_restore w27
22362244
; CHECK1024-NEXT: .cfi_restore w28
2245+
; CHECK1024-NEXT: .cfi_restore vg
22372246
; CHECK1024-NEXT: .cfi_restore w30
22382247
; CHECK1024-NEXT: .cfi_restore w29
22392248
; CHECK1024-NEXT: ret
@@ -2364,6 +2373,7 @@ define i32 @svecc_alloca_call(<4 x i16> %P0, ptr %P1, i32 %P2, <vscale x 16 x i8
23642373
; CHECK0-NEXT: .cfi_restore w26
23652374
; CHECK0-NEXT: .cfi_restore w27
23662375
; CHECK0-NEXT: .cfi_restore w28
2376+
; CHECK0-NEXT: .cfi_restore vg
23672377
; CHECK0-NEXT: .cfi_restore w30
23682378
; CHECK0-NEXT: .cfi_restore w29
23692379
; CHECK0-NEXT: ret
@@ -2490,6 +2500,7 @@ define i32 @svecc_alloca_call(<4 x i16> %P0, ptr %P1, i32 %P2, <vscale x 16 x i8
24902500
; CHECK64-NEXT: .cfi_restore w26
24912501
; CHECK64-NEXT: .cfi_restore w27
24922502
; CHECK64-NEXT: .cfi_restore w28
2503+
; CHECK64-NEXT: .cfi_restore vg
24932504
; CHECK64-NEXT: .cfi_restore w30
24942505
; CHECK64-NEXT: .cfi_restore w29
24952506
; CHECK64-NEXT: ret
@@ -2622,6 +2633,7 @@ define i32 @svecc_alloca_call(<4 x i16> %P0, ptr %P1, i32 %P2, <vscale x 16 x i8
26222633
; CHECK1024-NEXT: .cfi_restore w26
26232634
; CHECK1024-NEXT: .cfi_restore w27
26242635
; CHECK1024-NEXT: .cfi_restore w28
2636+
; CHECK1024-NEXT: .cfi_restore vg
26252637
; CHECK1024-NEXT: .cfi_restore w30
26262638
; CHECK1024-NEXT: .cfi_restore w29
26272639
; CHECK1024-NEXT: ret
@@ -2872,6 +2884,7 @@ define i32 @vastate(i32 %x) "aarch64_inout_za" "aarch64_pstate_sm_enabled" "targ
28722884
; CHECK0-NEXT: .cfi_def_cfa_offset 0
28732885
; CHECK0-NEXT: .cfi_restore w19
28742886
; CHECK0-NEXT: .cfi_restore w20
2887+
; CHECK0-NEXT: .cfi_restore vg
28752888
; CHECK0-NEXT: .cfi_restore w30
28762889
; CHECK0-NEXT: .cfi_restore w29
28772890
; CHECK0-NEXT: .cfi_restore b8
@@ -2947,6 +2960,7 @@ define i32 @vastate(i32 %x) "aarch64_inout_za" "aarch64_pstate_sm_enabled" "targ
29472960
; CHECK64-NEXT: .cfi_def_cfa_offset 0
29482961
; CHECK64-NEXT: .cfi_restore w19
29492962
; CHECK64-NEXT: .cfi_restore w20
2963+
; CHECK64-NEXT: .cfi_restore vg
29502964
; CHECK64-NEXT: .cfi_restore w30
29512965
; CHECK64-NEXT: .cfi_restore w29
29522966
; CHECK64-NEXT: .cfi_restore b8
@@ -3031,6 +3045,7 @@ define i32 @vastate(i32 %x) "aarch64_inout_za" "aarch64_pstate_sm_enabled" "targ
30313045
; CHECK1024-NEXT: .cfi_restore w19
30323046
; CHECK1024-NEXT: .cfi_restore w20
30333047
; CHECK1024-NEXT: .cfi_restore w28
3048+
; CHECK1024-NEXT: .cfi_restore vg
30343049
; CHECK1024-NEXT: .cfi_restore w30
30353050
; CHECK1024-NEXT: .cfi_restore w29
30363051
; CHECK1024-NEXT: .cfi_restore b8
@@ -3283,6 +3298,7 @@ define i32 @svecc_call_dynamic_alloca(<4 x i16> %P0, i32 %P1, i32 %P2, <vscale x
32833298
; CHECK0-NEXT: .cfi_restore w26
32843299
; CHECK0-NEXT: .cfi_restore w27
32853300
; CHECK0-NEXT: .cfi_restore w28
3301+
; CHECK0-NEXT: .cfi_restore vg
32863302
; CHECK0-NEXT: .cfi_restore w30
32873303
; CHECK0-NEXT: .cfi_restore w29
32883304
; CHECK0-NEXT: ret
@@ -3421,6 +3437,7 @@ define i32 @svecc_call_dynamic_alloca(<4 x i16> %P0, i32 %P1, i32 %P2, <vscale x
34213437
; CHECK64-NEXT: .cfi_restore w26
34223438
; CHECK64-NEXT: .cfi_restore w27
34233439
; CHECK64-NEXT: .cfi_restore w28
3440+
; CHECK64-NEXT: .cfi_restore vg
34243441
; CHECK64-NEXT: .cfi_restore w30
34253442
; CHECK64-NEXT: .cfi_restore w29
34263443
; CHECK64-NEXT: ret
@@ -3566,6 +3583,7 @@ define i32 @svecc_call_dynamic_alloca(<4 x i16> %P0, i32 %P1, i32 %P2, <vscale x
35663583
; CHECK1024-NEXT: .cfi_restore w26
35673584
; CHECK1024-NEXT: .cfi_restore w27
35683585
; CHECK1024-NEXT: .cfi_restore w28
3586+
; CHECK1024-NEXT: .cfi_restore vg
35693587
; CHECK1024-NEXT: .cfi_restore w30
35703588
; CHECK1024-NEXT: .cfi_restore w29
35713589
; CHECK1024-NEXT: ret
@@ -3699,6 +3717,7 @@ define i32 @svecc_call_realign(<4 x i16> %P0, i32 %P1, i32 %P2, <vscale x 16 x i
36993717
; CHECK0-NEXT: .cfi_restore w26
37003718
; CHECK0-NEXT: .cfi_restore w27
37013719
; CHECK0-NEXT: .cfi_restore w28
3720+
; CHECK0-NEXT: .cfi_restore vg
37023721
; CHECK0-NEXT: .cfi_restore w30
37033722
; CHECK0-NEXT: .cfi_restore w29
37043723
; CHECK0-NEXT: ret
@@ -3827,6 +3846,7 @@ define i32 @svecc_call_realign(<4 x i16> %P0, i32 %P1, i32 %P2, <vscale x 16 x i
38273846
; CHECK64-NEXT: .cfi_restore w26
38283847
; CHECK64-NEXT: .cfi_restore w27
38293848
; CHECK64-NEXT: .cfi_restore w28
3849+
; CHECK64-NEXT: .cfi_restore vg
38303850
; CHECK64-NEXT: .cfi_restore w30
38313851
; CHECK64-NEXT: .cfi_restore w29
38323852
; CHECK64-NEXT: ret
@@ -3961,6 +3981,7 @@ define i32 @svecc_call_realign(<4 x i16> %P0, i32 %P1, i32 %P2, <vscale x 16 x i
39613981
; CHECK1024-NEXT: .cfi_restore w26
39623982
; CHECK1024-NEXT: .cfi_restore w27
39633983
; CHECK1024-NEXT: .cfi_restore w28
3984+
; CHECK1024-NEXT: .cfi_restore vg
39643985
; CHECK1024-NEXT: .cfi_restore w30
39653986
; CHECK1024-NEXT: .cfi_restore w29
39663987
; CHECK1024-NEXT: ret

0 commit comments

Comments
 (0)