xref: /llvm-project/llvm/test/tools/llvm-readobj/COFF/arm-unwind-packed.s (revision d4257fbbba234cdbb8d1973c508ee1aa1adcb4f2)
1// REQUIRES: arm-registered-target
2// RUN: llvm-mc -filetype=obj -triple thumbv7-windows-gnu %s -o %t.o
3// RUN: llvm-readobj --unwind %t.o | FileCheck --strict-whitespace %s
4
5// CHECK:       RuntimeFunction {
6// CHECK-NEXT:    Function: func6
7// CHECK-NEXT:    Fragment: No
8// CHECK-NEXT:    FunctionLength: 8
9// CHECK-NEXT:    ReturnType: bx <reg>
10// CHECK-NEXT:    HomedParameters: No
11// CHECK-NEXT:    Reg: 7
12// CHECK-NEXT:    R: 1
13// CHECK-NEXT:    LinkRegister: No
14// CHECK-NEXT:    Chaining: No
15// CHECK-NEXT:    StackAdjustment: 0
16// CHECK-NEXT:    Prologue [
17// CHECK-NEXT:    ]
18// CHECK-NEXT:    Epilogue [
19// CHECK-NEXT:      bx <reg>
20// CHECK-NEXT:    ]
21// CHECK-NEXT:  }
22// CHECK-NEXT:  RuntimeFunction {
23// CHECK-NEXT:    Function: func7
24// CHECK-NEXT:    Fragment: No
25// CHECK-NEXT:    FunctionLength: 8
26// CHECK-NEXT:    ReturnType: bx <reg>
27// CHECK-NEXT:    HomedParameters: No
28// CHECK-NEXT:    Reg: 0
29// CHECK-NEXT:    R: 0
30// CHECK-NEXT:    LinkRegister: No
31// CHECK-NEXT:    Chaining: No
32// CHECK-NEXT:    StackAdjustment: 0
33// CHECK-NEXT:    Prologue [
34// CHECK-NEXT:      push {r4}
35// CHECK-NEXT:    ]
36// CHECK-NEXT:    Epilogue [
37// CHECK-NEXT:      pop {r4}
38// CHECK-NEXT:      bx <reg>
39// CHECK-NEXT:    ]
40// CHECK-NEXT:  }
41// CHECK-NEXT:  RuntimeFunction {
42// CHECK-NEXT:    Function: func8
43// CHECK-NEXT:    Fragment: No
44// CHECK-NEXT:    FunctionLength: 10
45// CHECK-NEXT:    ReturnType: bx <reg>
46// CHECK-NEXT:    HomedParameters: No
47// CHECK-NEXT:    Reg: 0
48// CHECK-NEXT:    R: 0
49// CHECK-NEXT:    LinkRegister: Yes
50// CHECK-NEXT:    Chaining: No
51// CHECK-NEXT:    StackAdjustment: 0
52// CHECK-NEXT:    Prologue [
53// CHECK-NEXT:      push {r4, lr}
54// CHECK-NEXT:    ]
55// CHECK-NEXT:    Epilogue [
56// CHECK-NEXT:      pop {r4, lr}
57// CHECK-NEXT:      bx <reg>
58// CHECK-NEXT:    ]
59// CHECK-NEXT:  }
60// CHECK-NEXT:  RuntimeFunction {
61// CHECK-NEXT:    Function: func9
62// CHECK-NEXT:    Fragment: No
63// CHECK-NEXT:    FunctionLength: 24
64// CHECK-NEXT:    ReturnType: b.w <target>
65// CHECK-NEXT:    HomedParameters: No
66// CHECK-NEXT:    Reg: 0
67// CHECK-NEXT:    R: 1
68// CHECK-NEXT:    LinkRegister: Yes
69// CHECK-NEXT:    Chaining: No
70// CHECK-NEXT:    StackAdjustment: 32
71// CHECK-NEXT:    Prologue [
72// CHECK-NEXT:      sub sp, sp, #32
73// CHECK-NEXT:      vpush {d8}
74// CHECK-NEXT:      push {lr}
75// CHECK-NEXT:    ]
76// CHECK-NEXT:    Epilogue [
77// CHECK-NEXT:      add sp, sp, #32
78// CHECK-NEXT:      vpop {d8}
79// CHECK-NEXT:      pop {lr}
80// CHECK-NEXT:      b.w <target>
81// CHECK-NEXT:    ]
82// CHECK-NEXT:  }
83// CHECK-NEXT:  RuntimeFunction {
84// CHECK-NEXT:    Function: func10
85// CHECK-NEXT:    Fragment: No
86// CHECK-NEXT:    FunctionLength: 26
87// CHECK-NEXT:    ReturnType: bx <reg>
88// CHECK-NEXT:    HomedParameters: No
89// CHECK-NEXT:    Reg: 1
90// CHECK-NEXT:    R: 1
91// CHECK-NEXT:    LinkRegister: Yes
92// CHECK-NEXT:    Chaining: Yes
93// CHECK-NEXT:    StackAdjustment: 16
94// CHECK-NEXT:    Prologue [
95// CHECK-NEXT:      sub sp, sp, #16
96// CHECK-NEXT:      vpush {d8-d9}
97// CHECK-NEXT:      mov r11, sp
98// CHECK-NEXT:      push {r11, lr}
99// CHECK-NEXT:    ]
100// CHECK-NEXT:    Epilogue [
101// CHECK-NEXT:      add sp, sp, #16
102// CHECK-NEXT:      vpop {d8-d9}
103// CHECK-NEXT:      pop {r11, lr}
104// CHECK-NEXT:      bx <reg>
105// CHECK-NEXT:    ]
106// CHECK-NEXT:  }
107// CHECK-NEXT:  RuntimeFunction {
108// CHECK-NEXT:    Function: func11
109// CHECK-NEXT:    Fragment: No
110// CHECK-NEXT:    FunctionLength: 24
111// CHECK-NEXT:    ReturnType: pop {pc}
112// CHECK-NEXT:    HomedParameters: No
113// CHECK-NEXT:    Reg: 1
114// CHECK-NEXT:    R: 1
115// CHECK-NEXT:    LinkRegister: Yes
116// CHECK-NEXT:    Chaining: Yes
117// CHECK-NEXT:    StackAdjustment: 16
118// CHECK-NEXT:    Prologue [
119// CHECK-NEXT:      sub sp, sp, #16
120// CHECK-NEXT:      vpush {d8-d9}
121// CHECK-NEXT:      mov r11, sp
122// CHECK-NEXT:      push {r11, lr}
123// CHECK-NEXT:    ]
124// CHECK-NEXT:    Epilogue [
125// CHECK-NEXT:      add sp, sp, #16
126// CHECK-NEXT:      vpop {d8-d9}
127// CHECK-NEXT:      pop {r11, pc}
128// CHECK-NEXT:    ]
129// CHECK-NEXT:  }
130// CHECK-NEXT:  RuntimeFunction {
131// CHECK-NEXT:    Function: func12
132// CHECK-NEXT:    Fragment: No
133// CHECK-NEXT:    FunctionLength: 18
134// CHECK-NEXT:    ReturnType: b.w <target>
135// CHECK-NEXT:    HomedParameters: No
136// CHECK-NEXT:    Reg: 6
137// CHECK-NEXT:    R: 1
138// CHECK-NEXT:    LinkRegister: No
139// CHECK-NEXT:    Chaining: No
140// CHECK-NEXT:    StackAdjustment: 16
141// CHECK-NEXT:    Prologue [
142// CHECK-NEXT:      sub sp, sp, #16
143// CHECK-NEXT:      vpush {d8-d14}
144// CHECK-NEXT:    ]
145// CHECK-NEXT:    Epilogue [
146// CHECK-NEXT:      add sp, sp, #16
147// CHECK-NEXT:      vpop {d8-d14}
148// CHECK-NEXT:      b.w <target>
149// CHECK-NEXT:    ]
150// CHECK-NEXT:  }
151// CHECK-NEXT:  RuntimeFunction {
152// CHECK-NEXT:    Function: func13
153// CHECK-NEXT:    Fragment: No
154// CHECK-NEXT:    FunctionLength: 18
155// CHECK-NEXT:    ReturnType: pop {pc}
156// CHECK-NEXT:    HomedParameters: No
157// CHECK-NEXT:    Reg: 6
158// CHECK-NEXT:    R: 0
159// CHECK-NEXT:    LinkRegister: Yes
160// CHECK-NEXT:    Chaining: Yes
161// CHECK-NEXT:    StackAdjustment: 20
162// CHECK-NEXT:    Prologue [
163// CHECK-NEXT:      sub sp, sp, #20
164// CHECK-NEXT:      add.w r11, sp, #28
165// CHECK-NEXT:      push {r4-r11, lr}
166// CHECK-NEXT:    ]
167// CHECK-NEXT:    Epilogue [
168// CHECK-NEXT:      add sp, sp, #20
169// CHECK-NEXT:      pop {r4-r11, pc}
170// CHECK-NEXT:    ]
171// CHECK-NEXT:  }
172// CHECK-NEXT:  RuntimeFunction {
173// CHECK-NEXT:    Function: func14
174// CHECK-NEXT:    Fragment: No
175// CHECK-NEXT:    FunctionLength: 14
176// CHECK-NEXT:    ReturnType: pop {pc}
177// CHECK-NEXT:    HomedParameters: No
178// CHECK-NEXT:    Reg: 7
179// CHECK-NEXT:    R: 0
180// CHECK-NEXT:    LinkRegister: Yes
181// CHECK-NEXT:    Chaining: No
182// CHECK-NEXT:    StackAdjustment: 20
183// CHECK-NEXT:    Prologue [
184// CHECK-NEXT:      sub sp, sp, #20
185// CHECK-NEXT:      push {r4-r11, lr}
186// CHECK-NEXT:    ]
187// CHECK-NEXT:    Epilogue [
188// CHECK-NEXT:      add sp, sp, #20
189// CHECK-NEXT:      pop {r4-r11, pc}
190// CHECK-NEXT:    ]
191// CHECK-NEXT:  }
192// CHECK-NEXT:  RuntimeFunction {
193// CHECK-NEXT:    Function: func15
194// CHECK-NEXT:    Fragment: No
195// CHECK-NEXT:    FunctionLength: 20
196// CHECK-NEXT:    ReturnType: pop {pc}
197// CHECK-NEXT:    HomedParameters: Yes
198// CHECK-NEXT:    Reg: 0
199// CHECK-NEXT:    R: 0
200// CHECK-NEXT:    LinkRegister: Yes
201// CHECK-NEXT:    Chaining: No
202// CHECK-NEXT:    StackAdjustment: 512
203// CHECK-NEXT:    Prologue [
204// CHECK-NEXT:      sub sp, sp, #512
205// CHECK-NEXT:      push {r4, lr}
206// CHECK-NEXT:      push {r0-r3}
207// CHECK-NEXT:    ]
208// CHECK-NEXT:    Epilogue [
209// CHECK-NEXT:      add sp, sp, #512
210// CHECK-NEXT:      pop {r4}
211// CHECK-NEXT:      ldr pc, [sp], #20
212// CHECK-NEXT:    ]
213// CHECK-NEXT:  }
214// CHECK-NEXT:  RuntimeFunction {
215// CHECK-NEXT:    Function: func16
216// CHECK-NEXT:    Fragment: No
217// CHECK-NEXT:    FunctionLength: 20
218// CHECK-NEXT:    ReturnType: b.w <target>
219// CHECK-NEXT:    HomedParameters: Yes
220// CHECK-NEXT:    Reg: 7
221// CHECK-NEXT:    R: 1
222// CHECK-NEXT:    LinkRegister: Yes
223// CHECK-NEXT:    Chaining: Yes
224// CHECK-NEXT:    StackAdjustment: 0
225// CHECK-NEXT:    Prologue [
226// CHECK-NEXT:      mov r11, sp
227// CHECK-NEXT:      push {r11, lr}
228// CHECK-NEXT:      push {r0-r3}
229// CHECK-NEXT:    ]
230// CHECK-NEXT:    Epilogue [
231// CHECK-NEXT:      pop {r11, lr}
232// CHECK-NEXT:      add sp, sp, #16
233// CHECK-NEXT:      b.w <target>
234// CHECK-NEXT:    ]
235// CHECK-NEXT:  }
236// CHECK-NEXT:  RuntimeFunction {
237// CHECK-NEXT:    Function: func17
238// CHECK-NEXT:    Fragment: No
239// CHECK-NEXT:    FunctionLength: 20
240// CHECK-NEXT:    ReturnType: bx <reg>
241// CHECK-NEXT:    HomedParameters: Yes
242// CHECK-NEXT:    Reg: 0
243// CHECK-NEXT:    R: 0
244// CHECK-NEXT:    LinkRegister: No
245// CHECK-NEXT:    Chaining: No
246// CHECK-NEXT:    StackAdjustment: 512
247// CHECK-NEXT:    Prologue [
248// CHECK-NEXT:      sub sp, sp, #512
249// CHECK-NEXT:      push {r4}
250// CHECK-NEXT:      push {r0-r3}
251// CHECK-NEXT:    ]
252// CHECK-NEXT:    Epilogue [
253// CHECK-NEXT:      add sp, sp, #512
254// CHECK-NEXT:      pop {r4}
255// CHECK-NEXT:      add sp, sp, #16
256// CHECK-NEXT:      bx <reg>
257// CHECK-NEXT:    ]
258// CHECK-NEXT:  }
259// CHECK-NEXT:  RuntimeFunction {
260// CHECK-NEXT:    Function: func18
261// CHECK-NEXT:    Fragment: No
262// CHECK-NEXT:    FunctionLength: 6
263// CHECK-NEXT:    ReturnType: pop {pc}
264// CHECK-NEXT:    HomedParameters: No
265// CHECK-NEXT:    Reg: 7
266// CHECK-NEXT:    R: 1
267// CHECK-NEXT:    LinkRegister: Yes
268// CHECK-NEXT:    Chaining: No
269// CHECK-NEXT:    StackAdjustment: 4
270// CHECK-NEXT:    Prologue [
271// CHECK-NEXT:      push {r3, lr}
272// CHECK-NEXT:    ]
273// CHECK-NEXT:    Epilogue [
274// CHECK-NEXT:      pop {r3, pc}
275// CHECK-NEXT:    ]
276// CHECK-NEXT:  }
277// CHECK-NEXT:  RuntimeFunction {
278// CHECK-NEXT:    Function: func19
279// CHECK-NEXT:    Fragment: No
280// CHECK-NEXT:    FunctionLength: 12
281// CHECK-NEXT:    ReturnType: bx <reg>
282// CHECK-NEXT:    HomedParameters: Yes
283// CHECK-NEXT:    Reg: 0
284// CHECK-NEXT:    R: 0
285// CHECK-NEXT:    LinkRegister: No
286// CHECK-NEXT:    Chaining: No
287// CHECK-NEXT:    StackAdjustment: 16
288// CHECK-NEXT:    Prologue [
289// CHECK-NEXT:      push {r0-r4}
290// CHECK-NEXT:      push {r0-r3}
291// CHECK-NEXT:    ]
292// CHECK-NEXT:    Epilogue [
293// CHECK-NEXT:      pop {r0-r4}
294// CHECK-NEXT:      add sp, sp, #16
295// CHECK-NEXT:      bx <reg>
296// CHECK-NEXT:    ]
297// CHECK-NEXT:  }
298// CHECK-NEXT:  RuntimeFunction {
299// CHECK-NEXT:    Function: func20
300// CHECK-NEXT:    Fragment: No
301// CHECK-NEXT:    FunctionLength: 14
302// CHECK-NEXT:    ReturnType: bx <reg>
303// CHECK-NEXT:    HomedParameters: Yes
304// CHECK-NEXT:    Reg: 0
305// CHECK-NEXT:    R: 0
306// CHECK-NEXT:    LinkRegister: No
307// CHECK-NEXT:    Chaining: No
308// CHECK-NEXT:    StackAdjustment: 16
309// CHECK-NEXT:    Prologue [
310// CHECK-NEXT:      push {r0-r4}
311// CHECK-NEXT:      push {r0-r3}
312// CHECK-NEXT:    ]
313// CHECK-NEXT:    Epilogue [
314// CHECK-NEXT:      add sp, sp, #16
315// CHECK-NEXT:      pop {r4}
316// CHECK-NEXT:      add sp, sp, #16
317// CHECK-NEXT:      bx <reg>
318// CHECK-NEXT:    ]
319// CHECK-NEXT:  }
320// CHECK-NEXT:  RuntimeFunction {
321// CHECK-NEXT:    Function: func21
322// CHECK-NEXT:    Fragment: No
323// CHECK-NEXT:    FunctionLength: 14
324// CHECK-NEXT:    ReturnType: bx <reg>
325// CHECK-NEXT:    HomedParameters: Yes
326// CHECK-NEXT:    Reg: 0
327// CHECK-NEXT:    R: 0
328// CHECK-NEXT:    LinkRegister: No
329// CHECK-NEXT:    Chaining: No
330// CHECK-NEXT:    StackAdjustment: 16
331// CHECK-NEXT:    Prologue [
332// CHECK-NEXT:      sub sp, sp, #16
333// CHECK-NEXT:      push {r4}
334// CHECK-NEXT:      push {r0-r3}
335// CHECK-NEXT:    ]
336// CHECK-NEXT:    Epilogue [
337// CHECK-NEXT:      pop {r0-r4}
338// CHECK-NEXT:      add sp, sp, #16
339// CHECK-NEXT:      bx <reg>
340// CHECK-NEXT:    ]
341// CHECK-NEXT:  }
342// CHECK-NEXT:  RuntimeFunction {
343// CHECK-NEXT:    Function: func22
344// CHECK-NEXT:    Fragment: Yes
345// CHECK-NEXT:    FunctionLength: 14
346// CHECK-NEXT:    ReturnType: pop {pc}
347// CHECK-NEXT:    HomedParameters: Yes
348// CHECK-NEXT:    Reg: 0
349// CHECK-NEXT:    R: 0
350// CHECK-NEXT:    LinkRegister: Yes
351// CHECK-NEXT:    Chaining: No
352// CHECK-NEXT:    StackAdjustment: 512
353// CHECK-NEXT:    Prologue [
354// CHECK-NEXT:      sub sp, sp, #512
355// CHECK-NEXT:      push {r4, lr}
356// CHECK-NEXT:      push {r0-r3}
357// CHECK-NEXT:    ]
358// CHECK-NEXT:    Epilogue [
359// CHECK-NEXT:      add sp, sp, #512
360// CHECK-NEXT:      pop {r4}
361// CHECK-NEXT:      ldr pc, [sp], #20
362// CHECK-NEXT:    ]
363// CHECK-NEXT:  }
364// CHECK-NEXT:  RuntimeFunction {
365// CHECK-NEXT:    Function: func23
366// CHECK-NEXT:    Fragment: No
367// CHECK-NEXT:    FunctionLength: 12
368// CHECK-NEXT:    ReturnType: (no epilogue)
369// CHECK-NEXT:    HomedParameters: Yes
370// CHECK-NEXT:    Reg: 0
371// CHECK-NEXT:    R: 0
372// CHECK-NEXT:    LinkRegister: Yes
373// CHECK-NEXT:    Chaining: No
374// CHECK-NEXT:    StackAdjustment: 512
375// CHECK-NEXT:    Prologue [
376// CHECK-NEXT:      sub sp, sp, #512
377// CHECK-NEXT:      push {r4, lr}
378// CHECK-NEXT:      push {r0-r3}
379// CHECK-NEXT:    ]
380// CHECK-NEXT:  }
381// CHECK-NEXT:  RuntimeFunction {
382// CHECK-NEXT:    Function: func24
383// CHECK-NEXT:    Fragment: No
384// CHECK-NEXT:    FunctionLength: 16
385// CHECK-NEXT:    ReturnType: pop {pc}
386// CHECK-NEXT:    HomedParameters: No
387// CHECK-NEXT:    Reg: 3
388// CHECK-NEXT:    R: 0
389// CHECK-NEXT:    LinkRegister: Yes
390// CHECK-NEXT:    Chaining: Yes
391// CHECK-NEXT:    StackAdjustment: 8
392// CHECK-NEXT:    Prologue [
393// CHECK-NEXT:      add.w r11, sp, #24
394// CHECK-NEXT:      push {r2-r7, r11, lr}
395// CHECK-NEXT:    ]
396// CHECK-NEXT:    Epilogue [
397// CHECK-NEXT:      add sp, sp, #8
398// CHECK-NEXT:      pop {r4-r7, r11, pc}
399// CHECK-NEXT:    ]
400// CHECK-NEXT:  }
401// CHECK-NEXT:  RuntimeFunction {
402// CHECK-NEXT:    Function: func25
403// CHECK-NEXT:    Fragment: No
404// CHECK-NEXT:    FunctionLength: 16
405// CHECK-NEXT:    ReturnType: pop {pc}
406// CHECK-NEXT:    HomedParameters: No
407// CHECK-NEXT:    Reg: 3
408// CHECK-NEXT:    R: 0
409// CHECK-NEXT:    LinkRegister: Yes
410// CHECK-NEXT:    Chaining: Yes
411// CHECK-NEXT:    StackAdjustment: 8
412// CHECK-NEXT:    Prologue [
413// CHECK-NEXT:      sub sp, sp, #8
414// CHECK-NEXT:      add.w r11, sp, #16
415// CHECK-NEXT:      push {r4-r7, r11, lr}
416// CHECK-NEXT:    ]
417// CHECK-NEXT:    Epilogue [
418// CHECK-NEXT:      pop {r2-r7, r11, pc}
419// CHECK-NEXT:    ]
420// CHECK-NEXT:  }
421// CHECK-NEXT:  RuntimeFunction {
422// CHECK-NEXT:    Function: func26
423// CHECK-NEXT:    Fragment: No
424// CHECK-NEXT:    FunctionLength: 8
425// CHECK-NEXT:    ReturnType: bx <reg>
426// CHECK-NEXT:    HomedParameters: No
427// CHECK-NEXT:    Reg: 7
428// CHECK-NEXT:    R: 1
429// CHECK-NEXT:    LinkRegister: No
430// CHECK-NEXT:    Chaining: No
431// CHECK-NEXT:    StackAdjustment: 12
432// CHECK-NEXT:    Prologue [
433// CHECK-NEXT:      push {r1-r3}
434// CHECK-NEXT:    ]
435// CHECK-NEXT:    Epilogue [
436// CHECK-NEXT:      add sp, sp, #12
437// CHECK-NEXT:      bx <reg>
438// CHECK-NEXT:    ]
439// CHECK-NEXT:  }
440// CHECK-NEXT:  RuntimeFunction {
441// CHECK-NEXT:    Function: func27
442// CHECK-NEXT:    Fragment: No
443// CHECK-NEXT:    FunctionLength: 8
444// CHECK-NEXT:    ReturnType: bx <reg>
445// CHECK-NEXT:    HomedParameters: No
446// CHECK-NEXT:    Reg: 7
447// CHECK-NEXT:    R: 1
448// CHECK-NEXT:    LinkRegister: No
449// CHECK-NEXT:    Chaining: No
450// CHECK-NEXT:    StackAdjustment: 12
451// CHECK-NEXT:    Prologue [
452// CHECK-NEXT:      sub sp, sp, #12
453// CHECK-NEXT:    ]
454// CHECK-NEXT:    Epilogue [
455// CHECK-NEXT:      pop {r1-r3}
456// CHECK-NEXT:      bx <reg>
457// CHECK-NEXT:    ]
458// CHECK-NEXT:  }
459// CHECK-NEXT:  RuntimeFunction {
460// CHECK-NEXT:    Function: func28
461// CHECK-NEXT:    Fragment: No
462// CHECK-NEXT:    FunctionLength: 8
463// CHECK-NEXT:    ReturnType: bx <reg>
464// CHECK-NEXT:    HomedParameters: No
465// CHECK-NEXT:    Reg: 0
466// CHECK-NEXT:    R: 1
467// CHECK-NEXT:    LinkRegister: No
468// CHECK-NEXT:    Chaining: No
469// CHECK-NEXT:    StackAdjustment: 4
470// CHECK-NEXT:    Prologue [
471// CHECK-NEXT:      vpush {d8}
472// CHECK-NEXT:      push {r3}
473// CHECK-NEXT:    ]
474// CHECK-NEXT:    Epilogue [
475// CHECK-NEXT:      vpop {d8}
476// CHECK-NEXT:      pop {r3}
477// CHECK-NEXT:      bx <reg>
478// CHECK-NEXT:    ]
479// CHECK-NEXT:  }
480// CHECK-NEXT:  RuntimeFunction {
481// CHECK-NEXT:    Function: func29
482// CHECK-NEXT:    Fragment: Yes
483// CHECK-NEXT:    FunctionLength: 6
484// CHECK-NEXT:    ReturnType: pop {pc}
485// CHECK-NEXT:    HomedParameters: No
486// CHECK-NEXT:    Reg: 2
487// CHECK-NEXT:    R: 0
488// CHECK-NEXT:    LinkRegister: Yes
489// CHECK-NEXT:    Chaining: No
490// CHECK-NEXT:    StackAdjustment: 16
491// CHECK-NEXT:    Prologue [
492// CHECK-NEXT:      sub sp, sp, #16
493// CHECK-NEXT:      push {r4-r6, lr}
494// CHECK-NEXT:    ]
495// CHECK-NEXT:    Epilogue [
496// CHECK-NEXT:      add sp, sp, #16
497// CHECK-NEXT:      pop {r4-r6, pc}
498// CHECK-NEXT:    ]
499// CHECK-NEXT:  }
500
501        .thumb
502        .syntax unified
503
504func6:
505        nop
506        nop
507        nop
508        bx lr
509
510func7:
511        push {r4}
512        nop
513        pop {r4}
514        bx lr
515
516func8:
517        push {r4,lr}
518        nop
519        pop {r4,lr}
520        bx lr
521
522func9:
523        push {lr}
524        vpush {d8}
525        sub sp, sp, #32
526        nop
527        add sp, sp, #32
528        vpop {d8}
529        pop {lr}
530        b tailcall
531
532func10:
533        push {r11,lr}
534        mov r11, sp
535        vpush {d8-d9}
536        sub sp, sp, #16
537        nop
538        add sp, sp, #16
539        vpop {d8-d9}
540        pop {r11,lr}
541        bx lr
542
543func11:
544        push {r11,lr}
545        mov r11, sp
546        vpush {d8-d9}
547        sub sp, sp, #16
548        nop
549        add sp, sp, #16
550        vpop {d8-d9}
551        pop {r11,pc}
552
553func12:
554        vpush {d8-d14}
555        sub sp, sp, #16
556        nop
557        add sp, sp, #16
558        vpop {d8-d14}
559        b tailcall
560
561func13:
562        push {r4-r11,lr}
563        add r11, sp, #0x1c
564        sub sp, sp, #20
565        nop
566        add sp, sp, #20
567        pop {r4-r11,pc}
568
569func14:
570        push {r4-r11,lr}
571        sub sp, sp, #20
572        nop
573        add sp, sp, #20
574        pop {r4-r11,pc}
575
576func15:
577        push {r0-r3}
578        push {r4,lr}
579        sub sp, sp, #512
580        nop
581        add sp, sp, #512
582        pop {r4}
583        ldr pc, [sp], #20
584
585func16:
586        push {r0-r3}
587        push {r11,lr}
588        mov r11, sp
589        nop
590        pop {r11, lr}
591        add sp, sp, #16
592        b tailcall
593
594func17:
595        push {r0-r3}
596        push {r4}
597        sub sp, sp, #512
598        nop
599        add sp, sp, #512
600        pop {r4}
601        add sp, sp, #16
602        bx lr
603
604func18:
605        push {r3,lr}
606        nop
607        pop {r3,pc}
608
609func19:
610        push {r0-r3}
611        push {r0-r4}
612        nop
613        pop {r0-r4}
614        add sp, sp, #16
615        bx lr
616
617func20:
618        push {r0-r3}
619        push {r0-r4}
620        nop
621        add sp, sp, #16
622        pop {r4}
623        add sp, sp, #16
624        bx lr
625
626func21:
627        push {r0-r3}
628        push {r4}
629        sub sp, sp, #16
630        nop
631        pop {r0-r4}
632        add sp, sp, #16
633        bx lr
634
635func22:
636        nop
637        nop
638        add sp, sp, #512
639        pop {r4}
640        ldr pc, [sp], #20
641
642func23:
643        push {r0-r3}
644        push {r4,lr}
645        sub sp, sp, #512
646        nop
647        nop
648
649func24:
650        push {r2-r7,r11,lr}
651        add r11, sp, #24
652        nop
653        add sp, sp, #8
654        pop {r4-r7,r11,pc}
655
656func25:
657        push {r4-r7,r11,lr}
658        add r11, sp, #16
659        sub sp, sp, #8
660        nop
661        pop {r2-r7,r11,pc}
662
663func26:
664        push {r1-r3}
665        nop
666        add sp, sp, #12
667        bx lr
668
669func27:
670        sub sp, sp, #12
671        nop
672        pop {r1-r3}
673        bx lr
674
675func28:
676        push {r3}
677        vpush {d8}
678        nop
679        vpop {d8}
680        pop {r3}
681        bx lr
682
683func29:
684        nop
685        pop {r4-r11,pc}
686
687        .section .pdata,"dr"
688        .rva func6
689        .long 0x000f2011
690        .rva func7
691        .long 0x00002011
692        .rva func8
693        .long 0x00102015
694        .rva func9
695        .long 0x02184031
696        .rva func10
697        .long 0x01392035
698        .rva func11
699        .long 0x01390031
700        .rva func12
701        .long 0x010e4025
702        .rva func13
703        .long 0x01760025
704        .rva func14
705        .long 0x0157001d
706        .rva func15
707        .long 0x20108029
708        .rva func16
709        .long 0x003fc029
710        .rva func17
711        .long 0x2000a029
712        .rva func18
713        .long 0xff1f000d
714        .rva func19
715        .long 0xffc0a019
716        .rva func20
717        .long 0xfdc0a01d
718        .rva func21
719        .long 0xfec0a01d
720        .rva func22
721        .long 0x2010801e
722        .rva func23
723        .long 0x2010e019
724        .rva func24
725        .long 0xfd730021
726        .rva func25
727        .long 0xfe730021
728        .rva func26
729        .long 0xfd8f2011
730        .rva func27
731        .long 0xfe8f2011
732        .rva func28
733        .long 0xff082011
734        .rva func29
735        .long 0x0112000e
736