1 // Check that we generate the packed unwind info format whe possible.
3 // For tests that don
't generate packed unwind info, we still check that
4 // the epilog was packed (so that the testcase otherwise had all other
5 // preconditions for possibly making packed unwind info).
7 // REQUIRES: aarch64-registered-target
8 // RUN: llvm-mc -filetype=obj -triple aarch64-windows %s -o %t.o
9 // RUN: llvm-readobj --unwind %t.o | FileCheck %s
11 // CHECK: UnwindInformation [
12 // CHECK-NEXT: RuntimeFunction {
13 // CHECK-NEXT: Function: func1
14 // CHECK-NEXT: Fragment: No
15 // CHECK-NEXT: FunctionLength: 88
16 // CHECK-NEXT: RegF: 7
17 // CHECK-NEXT: RegI: 10
18 // CHECK-NEXT: HomedParameters: No
20 // CHECK-NEXT: FrameSize: 160
21 // CHECK-NEXT: Prologue [
22 // CHECK-NEXT: sub sp, sp, #16
23 // CHECK-NEXT: stp d14, d15, [sp, #128]
24 // CHECK-NEXT: stp d12, d13, [sp, #112]
25 // CHECK-NEXT: stp d10, d11, [sp, #96]
26 // CHECK-NEXT: stp d8, d9, [sp, #80]
27 // CHECK-NEXT: stp x27, x28, [sp, #64]
28 // CHECK-NEXT: stp x25, x26, [sp, #48]
29 // CHECK-NEXT: stp x23, x24, [sp, #32]
30 // CHECK-NEXT: stp x21, x22, [sp, #16]
31 // CHECK-NEXT: stp x19, x20, [sp, #-144]!
35 // CHECK-NEXT: RuntimeFunction {
36 // CHECK-NEXT: Function: func2
37 // CHECK-NEXT: Fragment: No
38 // CHECK-NEXT: FunctionLength: 48
39 // CHECK-NEXT: RegF: 2
40 // CHECK-NEXT: RegI: 3
41 // CHECK-NEXT: HomedParameters: No
43 // CHECK-NEXT: FrameSize: 48
44 // CHECK-NEXT: Prologue [
45 // CHECK-NEXT: str d10, [sp, #40]
46 // CHECK-NEXT: stp d8, d9, [sp, #24]
47 // CHECK-NEXT: str x21, [sp, #16]
48 // CHECK-NEXT: stp x19, x20, [sp, #-48]!
52 // CHECK-NEXT: RuntimeFunction {
53 // CHECK-NEXT: Function: func3
54 // CHECK-NEXT: Fragment: No
55 // CHECK-NEXT: FunctionLength: 32
56 // CHECK-NEXT: RegF: 3
57 // CHECK-NEXT: RegI: 1
58 // CHECK-NEXT: HomedParameters: No
60 // CHECK-NEXT: FrameSize: 48
61 // CHECK-NEXT: Prologue [
62 // CHECK-NEXT: stp d10, d11, [sp, #24]
63 // CHECK-NEXT: stp d8, d9, [sp, #8]
64 // CHECK-NEXT: str x19, [sp, #-48]!
68 // CHECK-NEXT: RuntimeFunction {
69 // CHECK-NEXT: Function: func4
70 // CHECK-NEXT: Fragment: No
71 // CHECK-NEXT: FunctionLength: 24
72 // CHECK-NEXT: RegF: 1
73 // CHECK-NEXT: RegI: 0
74 // CHECK-NEXT: HomedParameters: No
76 // CHECK-NEXT: FrameSize: 48
77 // CHECK-NEXT: Prologue [
78 // CHECK-NEXT: sub sp, sp, #32
79 // CHECK-NEXT: stp d8, d9, [sp, #-16]!
83 // CHECK-NEXT: RuntimeFunction {
84 // CHECK-NEXT: Function: notpacked_func5
85 // CHECK-NEXT: ExceptionRecord:
86 // CHECK-NEXT: ExceptionData {
87 // CHECK: RuntimeFunction {
88 // CHECK-NEXT: Function: func6
89 // CHECK-NEXT: Fragment: No
90 // CHECK-NEXT: FunctionLength: 24
91 // CHECK-NEXT: RegF: 0
92 // CHECK-NEXT: RegI: 0
93 // CHECK-NEXT: HomedParameters: No
95 // CHECK-NEXT: FrameSize: 32
96 // CHECK-NEXT: Prologue [
97 // CHECK-NEXT: sub sp, sp, #16
98 // CHECK-NEXT: str lr, [sp, #-16]!
102 // CHECK-NEXT: RuntimeFunction {
103 // CHECK-NEXT: Function: func7
104 // CHECK-NEXT: Fragment: No
105 // CHECK-NEXT: FunctionLength: 24
106 // CHECK-NEXT: RegF: 0
107 // CHECK-NEXT: RegI: 2
108 // CHECK-NEXT: HomedParameters: No
110 // CHECK-NEXT: FrameSize: 32
111 // CHECK-NEXT: Prologue [
112 // CHECK-NEXT: str lr, [sp, #16]
113 // CHECK-NEXT: stp x19, x20, [sp, #-32]!
117 // CHECK-NEXT: RuntimeFunction {
118 // CHECK-NEXT: Function: func8
119 // CHECK-NEXT: Fragment: No
120 // CHECK-NEXT: FunctionLength: 32
121 // CHECK-NEXT: RegF: 0
122 // CHECK-NEXT: RegI: 3
123 // CHECK-NEXT: HomedParameters: No
125 // CHECK-NEXT: FrameSize: 48
126 // CHECK-NEXT: Prologue [
127 // CHECK-NEXT: sub sp, sp, #16
128 // CHECK-NEXT: stp x21, lr, [sp, #16]
129 // CHECK-NEXT: stp x19, x20, [sp, #-32]!
133 // CHECK-NEXT: RuntimeFunction {
134 // CHECK-NEXT: Function: func9
135 // CHECK-NEXT: Fragment: No
136 // CHECK-NEXT: FunctionLength: 32
137 // CHECK-NEXT: RegF: 0
138 // CHECK-NEXT: RegI: 2
139 // CHECK-NEXT: HomedParameters: No
141 // CHECK-NEXT: FrameSize: 48
142 // CHECK-NEXT: Prologue [
143 // CHECK-NEXT: mov x29, sp
144 // CHECK-NEXT: stp x29, lr, [sp, #-32]!
145 // CHECK-NEXT: stp x19, x20, [sp, #-16]!
149 // CHECK-NEXT: RuntimeFunction {
150 // CHECK-NEXT: Function: func10
151 // CHECK-NEXT: Fragment: No
152 // CHECK-NEXT: FunctionLength: 24
153 // CHECK-NEXT: RegF: 0
154 // CHECK-NEXT: RegI: 0
155 // CHECK-NEXT: HomedParameters: No
157 // CHECK-NEXT: FrameSize: 32
158 // CHECK-NEXT: Prologue [
159 // CHECK-NEXT: mov x29, sp
160 // CHECK-NEXT: stp x29, lr, [sp, #-32]!
164 // CHECK-NEXT: RuntimeFunction {
165 // CHECK-NEXT: Function: func11
166 // CHECK-NEXT: Fragment: No
167 // CHECK-NEXT: FunctionLength: 40
168 // CHECK-NEXT: RegF: 0
169 // CHECK-NEXT: RegI: 2
170 // CHECK-NEXT: HomedParameters: No
172 // CHECK-NEXT: FrameSize: 544
173 // CHECK-NEXT: Prologue [
174 // CHECK-NEXT: mov x29, sp
175 // CHECK-NEXT: stp x29, lr, [sp, #0]
176 // CHECK-NEXT: sub sp, sp, #528
177 // CHECK-NEXT: stp x19, x20, [sp, #-16]!
181 // CHECK-NEXT: RuntimeFunction {
182 // CHECK-NEXT: Function: func12
183 // CHECK-NEXT: Fragment: No
184 // CHECK-NEXT: FunctionLength: 48
185 // CHECK-NEXT: RegF: 0
186 // CHECK-NEXT: RegI: 2
187 // CHECK-NEXT: HomedParameters: No
189 // CHECK-NEXT: FrameSize: 4112
190 // CHECK-NEXT: Prologue [
191 // CHECK-NEXT: mov x29, sp
192 // CHECK-NEXT: stp x29, lr, [sp, #0]
193 // CHECK-NEXT: sub sp, sp, #16
194 // CHECK-NEXT: sub sp, sp, #4080
195 // CHECK-NEXT: stp x19, x20, [sp, #-16]!
199 // CHECK-NEXT: RuntimeFunction {
200 // CHECK-NEXT: Function: func13
201 // CHECK-NEXT: Fragment: No
202 // CHECK-NEXT: FunctionLength: 32
203 // CHECK-NEXT: RegF: 0
204 // CHECK-NEXT: RegI: 2
205 // CHECK-NEXT: HomedParameters: No
207 // CHECK-NEXT: FrameSize: 4112
208 // CHECK-NEXT: Prologue [
209 // CHECK-NEXT: sub sp, sp, #16
210 // CHECK-NEXT: sub sp, sp, #4080
211 // CHECK-NEXT: stp x19, x20, [sp, #-16]!
215 // CHECK-NEXT: RuntimeFunction {
216 // CHECK-NEXT: Function: func14
217 // CHECK-NEXT: Fragment: No
218 // CHECK-NEXT: FunctionLength: 32
219 // CHECK-NEXT: RegF: 2
220 // CHECK-NEXT: RegI: 0
221 // CHECK-NEXT: HomedParameters: No
223 // CHECK-NEXT: FrameSize: 32
224 // CHECK-NEXT: Prologue [
225 // CHECK-NEXT: str d10, [sp, #24]
226 // CHECK-NEXT: stp d8, d9, [sp, #8]
227 // CHECK-NEXT: str lr, [sp, #-32]!
231 // CHECK-NEXT: RuntimeFunction {
232 // CHECK-NEXT: Function: func15
233 // CHECK-NEXT: Fragment: No
234 // CHECK-NEXT: FunctionLength: 20
235 // CHECK-NEXT: RegF: 0
236 // CHECK-NEXT: RegI: 0
237 // CHECK-NEXT: HomedParameters: No
239 // CHECK-NEXT: FrameSize: 32
240 // CHECK-NEXT: Prologue [
241 // CHECK-NEXT: mov x29, sp
242 // CHECK-NEXT: stp x29, lr, [sp, #-32]!
246 // CHECK-NEXT: RuntimeFunction {
247 // CHECK-NEXT: Function: func16
248 // CHECK-NEXT: Fragment: No
249 // CHECK-NEXT: FunctionLength: 28
250 // CHECK-NEXT: RegF: 0
251 // CHECK-NEXT: RegI: 0
252 // CHECK-NEXT: HomedParameters: No
254 // CHECK-NEXT: FrameSize: 32
255 // CHECK-NEXT: Prologue [
256 // CHECK-NEXT: mov x29, sp
257 // CHECK-NEXT: stp x29, lr, [sp, #-32]!
258 // CHECK-NEXT: pacibsp
262 // CHECK-NEXT: RuntimeFunction {
263 // CHECK-NEXT: Function: func17
264 // CHECK-NEXT: Fragment: No
265 // CHECK-NEXT: FunctionLength: 40
266 // CHECK-NEXT: RegF: 0
267 // CHECK-NEXT: RegI: 2
268 // CHECK-NEXT: HomedParameters: No
270 // CHECK-NEXT: FrameSize: 48
271 // CHECK-NEXT: Prologue [
272 // CHECK-NEXT: mov x29, sp
273 // CHECK-NEXT: stp x29, lr, [sp, #-32]!
274 // CHECK-NEXT: stp x19, x20, [sp, #-16]!
275 // CHECK-NEXT: pacibsp
279 // CHECK-NEXT: RuntimeFunction {
280 // CHECK-NEXT: Function: func18
281 // CHECK-NEXT: Fragment: No
282 // CHECK-NEXT: FunctionLength: 56
283 // CHECK-NEXT: RegF: 0
284 // CHECK-NEXT: RegI: 2
285 // CHECK-NEXT: HomedParameters: No
287 // CHECK-NEXT: FrameSize: 4112
288 // CHECK-NEXT: Prologue [
289 // CHECK-NEXT: mov x29, sp
290 // CHECK-NEXT: stp x29, lr, [sp, #0]
291 // CHECK-NEXT: sub sp, sp, #16
292 // CHECK-NEXT: sub sp, sp, #4080
293 // CHECK-NEXT: stp x19, x20, [sp, #-16]!
294 // CHECK-NEXT: pacibsp
298 // CHECK: RuntimeFunction {
299 // CHECK-NEXT: Function: nonpacked1
300 // CHECK-NEXT: ExceptionRecord:
301 // CHECK-NEXT: ExceptionData {
302 // CHECK: EpiloguePacked: Yes
303 // CHECK: RuntimeFunction {
304 // CHECK-NEXT: Function: nonpacked2
305 // CHECK-NEXT: ExceptionRecord:
306 // CHECK-NEXT: ExceptionData {
307 // CHECK: EpiloguePacked: Yes
308 // CHECK: RuntimeFunction {
309 // CHECK-NEXT: Function: nonpacked3
310 // CHECK-NEXT: ExceptionRecord:
311 // CHECK-NEXT: ExceptionData {
312 // CHECK: EpiloguePacked: Yes
313 // CHECK: RuntimeFunction {
314 // CHECK-NEXT: Function: nonpacked4
315 // CHECK-NEXT: ExceptionRecord:
316 // CHECK-NEXT: ExceptionData {
317 // CHECK: EpiloguePacked: Yes
318 // CHECK: RuntimeFunction {
319 // CHECK-NEXT: Function: nonpacked5
320 // CHECK-NEXT: ExceptionRecord:
321 // CHECK-NEXT: ExceptionData {
322 // CHECK: EpiloguePacked: Yes
323 // CHECK: RuntimeFunction {
324 // CHECK-NEXT: Function: nonpacked6
325 // CHECK-NEXT: ExceptionRecord:
326 // CHECK-NEXT: ExceptionData {
327 // CHECK: EpiloguePacked: Yes
328 // CHECK: RuntimeFunction {
329 // CHECK-NEXT: Function: nonpacked7
330 // CHECK-NEXT: ExceptionRecord:
331 // CHECK-NEXT: ExceptionData {
332 // CHECK: EpiloguePacked: Yes
333 // CHECK: RuntimeFunction {
334 // CHECK-NEXT: Function: nonpacked8
335 // CHECK-NEXT: ExceptionRecord:
336 // CHECK-NEXT: ExceptionData {
337 // CHECK: EpiloguePacked: Yes
338 // CHECK: RuntimeFunction {
339 // CHECK-NEXT: Function: nonpacked9
340 // CHECK-NEXT: ExceptionRecord:
341 // CHECK-NEXT: ExceptionData {
342 // CHECK: EpiloguePacked: Yes
343 // CHECK: RuntimeFunction {
344 // CHECK-NEXT: Function: nonpacked10
345 // CHECK-NEXT: ExceptionRecord:
346 // CHECK-NEXT: ExceptionData {
347 // CHECK: EpiloguePacked: Yes
348 // CHECK: RuntimeFunction {
349 // CHECK-NEXT: Function: nonpacked11
350 // CHECK-NEXT: ExceptionRecord:
351 // CHECK-NEXT: ExceptionData {
352 // CHECK: EpiloguePacked: Yes
353 // CHECK: RuntimeFunction {
354 // CHECK-NEXT: Function: nonpacked12
355 // CHECK-NEXT: ExceptionRecord:
356 // CHECK-NEXT: ExceptionData {
357 // CHECK: EpiloguePacked: Yes
358 // CHECK: RuntimeFunction {
359 // CHECK-NEXT: Function: nonpacked13
360 // CHECK-NEXT: ExceptionRecord:
361 // CHECK-NEXT: ExceptionData {
362 // CHECK: EpiloguePacked: Yes
363 // CHECK: RuntimeFunction {
364 // CHECK-NEXT: Function: nonpacked14
365 // CHECK-NEXT: ExceptionRecord:
366 // CHECK-NEXT: ExceptionData {
367 // CHECK: EpiloguePacked: Yes
368 // CHECK: RuntimeFunction {
369 // CHECK-NEXT: Function: nonpacked15
370 // CHECK-NEXT: ExceptionRecord:
371 // CHECK-NEXT: ExceptionData {
372 // CHECK: EpiloguePacked: Yes
373 // CHECK: RuntimeFunction {
374 // CHECK-NEXT: Function: nonpacked16
375 // CHECK-NEXT: ExceptionRecord:
376 // CHECK-NEXT: ExceptionData {
377 // CHECK: EpiloguePacked: Yes
383 stp x19, x20, [sp, #-144]!
384 .seh_save_r19r20_x 144
385 stp x21, x22, [sp, #16]
386 .seh_save_regp x21, 16
387 stp x23, x24, [sp, #32]
389 stp x25, x26, [sp, #48]
391 stp x27, x28, [sp, #64]
393 stp d8, d9, [sp, #80]
394 .seh_save_fregp d8, 80
395 stp d10, d11, [sp, #96]
396 .seh_save_fregp d10, 96
397 stp d12, d13, [sp, #112]
398 .seh_save_fregp d12, 112
399 stp d14, d15, [sp, #128]
400 .seh_save_fregp d14, 128
408 ldp d14, d15, [sp, #128]
409 .seh_save_fregp d14, 128
410 ldp d12, d13, [sp, #112]
411 .seh_save_fregp d12, 112
412 ldp d10, d11, [sp, #96]
413 .seh_save_fregp d10, 96
414 ldp d8, d9, [sp, #80]
415 .seh_save_fregp d8, 80
416 ldp x27, x28, [sp, #64]
418 ldp x25, x26, [sp, #48]
420 ldp x23, x24, [sp, #32]
422 ldp x21, x22, [sp, #16]
424 ldp x19, x20, [sp], #144
425 .seh_save_regp_x x19, 144
432 stp x19, x20, [sp, #-48]!
433 .seh_save_r19r20_x 48
435 .seh_save_reg x21, 16
436 stp d8, d9, [sp, #24]
437 .seh_save_fregp d8, 24
439 .seh_save_freg d10, 40
448 .seh_save_freg d10, 40
449 ldp d8, d9, [sp, #24]
450 .seh_save_fregp d8, 24
452 .seh_save_reg x21, 16
453 ldp x19, x20, [sp], #48
454 .seh_save_r19r20_x 48
462 .seh_save_reg_x x19, 48
464 .seh_save_fregp d8, 8
465 stp d10, d11, [sp, #24]
466 .seh_save_fregp d10, 24
470 ldp d10, d11, [sp, #24]
471 .seh_save_fregp d10, 24
473 .seh_save_fregp d8, 8
475 .seh_save_reg_x x19, 48
482 stp d8, d9, [sp, #-16]!
483 .seh_save_fregp_x d8, 16
491 ldp d8, d9, [sp], #16
492 .seh_save_fregp_x d8, 16
498 .seh_proc notpacked_func5
500 .seh_save_reg_x x19, 80
501 stp x0, x1, [sp, #16]
503 stp x2, x3, [sp, #32]
505 stp x4, x5, [sp, #48]
507 stp x6, x7, [sp, #64]
525 .seh_save_reg_x x19, 80
533 .seh_save_reg_x lr, 16
542 .seh_save_reg_x lr, 16
549 stp x19, x20, [sp, #-32]!
550 .seh_save_r19r20_x 32
558 ldp x19, x20, [sp], #32
559 .seh_save_r19r20_x 32
566 stp x19, x20, [sp, #-32]!
567 .seh_save_r19r20_x 32
568 stp x21, lr, [sp, #16]
569 .seh_save_lrpair x21, 16
577 ldp x21, lr, [sp, #16]
578 .seh_save_lrpair x21, 16
579 ldp x19, x20, [sp], #32
580 .seh_save_r19r20_x 32
587 stp x19, x20, [sp, #-16]!
588 .seh_save_r19r20_x 16
589 stp x29, lr, [sp, #-32]!
598 ldp x29, lr, [sp], #32
600 ldp x19, x20, [sp], #16
601 .seh_save_r19r20_x 16
608 stp x29, lr, [sp, #-32]!
617 ldp x29, lr, [sp], #32
625 stp x19, x20, [sp, #-16]!
626 .seh_save_r19r20_x 16
629 stp x29, lr, [sp, #0]
638 ldp x29, lr, [sp, #0]
642 ldp x19, x20, [sp], #16
643 .seh_save_r19r20_x 16
650 stp x19, x20, [sp, #-16]!
651 .seh_save_r19r20_x 16
656 stp x29, lr, [sp, #0]
665 ldp x29, lr, [sp, #0]
671 ldp x19, x20, [sp], #16
672 .seh_save_r19r20_x 16
679 stp x19, x20, [sp, #-16]!
680 .seh_save_r19r20_x 16
692 ldp x19, x20, [sp], #16
693 .seh_save_r19r20_x 16
701 .seh_save_reg_x lr, 32
703 .seh_save_fregp d8, 8
705 .seh_save_freg d10, 24
710 .seh_save_freg d10, 24
712 .seh_save_fregp d8, 8
714 .seh_save_reg_x lr, 32
721 stp x29, lr, [sp, #-32]!
728 // Epilogue missing the .seh_set_fp, but still generating packed info.
729 ldp x29, lr, [sp], #32
739 stp x29, lr, [sp, #-32]!
746 ldp x29, lr, [sp], #32
758 stp x19, x20, [sp, #-16]!
759 .seh_save_r19r20_x 16
760 stp x29, lr, [sp, #-32]!
769 ldp x29, lr, [sp], #32
771 ldp x19, x20, [sp], #16
772 .seh_save_r19r20_x 16
783 stp x19, x20, [sp, #-16]!
784 .seh_save_r19r20_x 16
789 stp x29, lr, [sp, #0]
798 ldp x29, lr, [sp, #0]
804 ldp x19, x20, [sp], #16
805 .seh_save_r19r20_x 16
814 // Can't be packed; can
't save integer registers after float registers.
815 stp d8, d9, [sp, #-32]!
816 .seh_save_fregp_x d8, 32
817 stp x19, x20, [sp, #16]!
818 .seh_save_regp x19, 16
822 ldp x19, x20, [sp, #16]
823 .seh_save_regp x19, 16
824 ldp d8, d9, [sp], #32
825 .seh_save_fregp_x d8, 32
832 // Can't be packed; x21
/x22 aren
't saved in the expected spot
833 stp x19, x20, [sp, #-48]!
834 .seh_save_r19r20_x 48
835 stp x21, x22, [sp, #32]
836 .seh_save_regp x21, 32
840 ldp x21, x22, [sp, #32]
841 .seh_save_regp x21, 32
842 ldp x19, x20, [sp], #48
843 .seh_save_r19r20_x 48
850 // Can't be packed; x29
/x30 can
't be treated as the other saved registers
851 stp x19, x20, [sp, #-96]!
852 .seh_save_r19r20_x 96
853 stp x21, x22, [sp, #16]
855 stp x23, x24, [sp, #32]
857 stp x25, x26, [sp, #48]
859 stp x27, x28, [sp, #64]
861 stp x29, x30, [sp, #80]
866 ldp x29, x30, [sp, #80]
868 ldp x27, x28, [sp, #64]
870 ldp x25, x26, [sp, #48]
872 ldp x23, x24, [sp, #32]
874 ldp x21, x22, [sp, #16]
876 ldp x19, x20, [sp], #96
877 .seh_save_r19r20_x 96
884 // Can't be packed; more predecrement for x19
/x20 than used for
885 // corresponding RegI
/RegF
/LR saves
886 stp x19
, x20
, [sp
, #-32]!
887 .seh_save_r19r20_x 32
891 ldp x19
, x20
, [sp
], #32
892 .seh_save_r19r20_x 32
899 // Can
't be packed; can't save
LR twice
900 stp x19
, x20
, [sp
, #-32]!
901 .seh_save_r19r20_x 32
913 ldp x19
, x20
, [sp
], #32
914 .seh_save_r19r20_x 32
921 // Can
't be packed; can't save
LR both standalone
(CR 1) and as FPLR
(CR 3)
922 stp x19
, x20
, [sp
, #-32]!
923 .seh_save_r19r20_x 32
926 stp x29
, lr, [sp
, #-16]!
935 ldp x29
, lr, [sp
], #32
939 ldp x19
, x20
, [sp
], #32
940 .seh_save_r19r20_x 32
947 // Can
't be packed; too many saved FP regs
948 stp d8, d9, [sp, #-80]!
949 .seh_save_fregp_x d8, 80
950 stp d10, d11, [sp, #16]
951 .seh_save_fregp d10, 16
952 stp d12, d13, [sp, #32]
953 .seh_save_fregp d12, 32
954 stp d14, d15, [sp, #48]
955 .seh_save_fregp d14, 48
956 stp d16, d17, [sp, #64]
961 ldp d16, d17, [sp, #64]
963 ldp d14, d15, [sp, #48]
964 .seh_save_fregp d14, 48
965 ldp d12, d13, [sp, #32]
966 .seh_save_fregp d12, 32
967 ldp d10, d11, [sp, #16]
968 .seh_save_fregp d10, 16
969 ldp d8, d9, [sp], #80
970 .seh_save_fregp_x d8, 80
977 // Can't be packed; Can
't handle only a single FP reg
979 .seh_save_freg_x d8, 16
984 .seh_save_freg_x d8, 16
991 // Can't be packed; can
't have a separate stack adjustment with save_fplr_x
994 stp x29, lr, [sp, #-16]!
1003 ldp x29, lr, [sp], #32
1012 .seh_proc nonpacked10
1013 // Can't be packed; wrong predecrement
1014 stp x19
, x20
, [sp
, #-16]!
1015 .seh_save_r19r20_x 16
1016 stp x21
, x22
, [sp
, #16]
1021 ldp x21
, x22
, [sp
, #16]
1023 ldp x19
, x20
, [sp
], #16
1024 .seh_save_r19r20_x 16
1030 .seh_proc nonpacked11
1031 // Can
't be packed; too big stack allocation
1033 .seh_stackalloc 4080
1035 .seh_stackalloc 8192
1040 .seh_stackalloc 8192
1042 .seh_stackalloc 4080
1048 .seh_proc nonpacked12
1049 // Can't be packed; missing
.seh_set_fp
1050 stp x29
, lr, [sp
, #-32]!
1055 ldp x29
, lr, [sp
], #32
1062 .seh_proc nonpacked13
1063 // Can
't be packed; not doing a packed info if .seh_handlerdata is used
1080 .seh_proc nonpacked14
1081 // Can't be packed;
a signed return address can only
be expressed if
1082 // we save both x29
and lr on the stack.
1086 .seh_save_reg_x lr, 32
1091 .seh_save_reg_x lr, 32
1099 .seh_proc nonpacked15
1100 // Can
't be packed; a signed return address can only be expressed if
1101 // we save both x29 and lr on the stack.
1104 stp x19, x20, [sp, #-32]!
1105 .seh_save_r19r20_x 32
1106 stp x21, lr, [sp, #16]
1107 .seh_save_lrpair x21, 16
1115 ldp x21, lr, [sp, #16]
1116 .seh_save_lrpair x21, 16
1117 ldp x19, x20, [sp], #32
1118 .seh_save_r19r20_x 32
1126 .seh_proc nonpacked16
1127 // Make sure we correctly analyze .seh_save_any_reg_p
1128 stp x29, x30, [sp, #-176]!
1129 .seh_save_fplr_x 176
1130 stp q6, q7, [sp, #16]
1131 .seh_save_any_reg_p q6, 16
1132 stp q8, q9, [sp, #48]
1133 .seh_save_any_reg_p q8, 48
1134 stp q10, q11, [sp, #80]
1135 .seh_save_any_reg_p q10, 80
1136 stp q12, q13, [sp, #112]
1137 .seh_save_any_reg_p q12, 112
1138 stp q14, q15, [sp, #144]
1139 .seh_save_any_reg_p q14, 144
1145 ldp q14, q15, [sp, #144]
1146 .seh_save_any_reg_p q14, 144
1147 ldp q12, q13, [sp, #112]
1148 .seh_save_any_reg_p q12, 112
1149 ldp q10, q11, [sp, #80]
1150 .seh_save_any_reg_p q10, 80
1151 ldp q8, q9, [sp, #48]
1152 .seh_save_any_reg_p q8, 48
1153 ldp q6, q7, [sp, #16]
1154 .seh_save_any_reg_p q6, 16
1155 ldp x29, x30, [sp], #176
1156 .seh_save_fplr_x 176