xref: /aosp_15_r20/external/llvm/test/MC/ARM/eh-directive-save.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker@ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \
2*9880d681SAndroid Build Coastguard Worker@ RUN:   | llvm-readobj -s -sd | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker@ Check the .save directive
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker@ The .save directive records the GPR registers which are pushed to the
7*9880d681SAndroid Build Coastguard Worker@ stack.  There are 4 different unwind opcodes:
8*9880d681SAndroid Build Coastguard Worker@
9*9880d681SAndroid Build Coastguard Worker@     0xB100: pop r[3:0]
10*9880d681SAndroid Build Coastguard Worker@     0xA0:   pop r[(4+x):4]		@ r[4+x]-r[4] must be consecutive.
11*9880d681SAndroid Build Coastguard Worker@     0xA8:   pop r14, r[(4+x):4]	@ r[4+x]-r[4] must be consecutive.
12*9880d681SAndroid Build Coastguard Worker@     0x8000: pop r[15:4]
13*9880d681SAndroid Build Coastguard Worker@
14*9880d681SAndroid Build Coastguard Worker@ If register list specifed by .save directive is possible to be encoded
15*9880d681SAndroid Build Coastguard Worker@ by 0xA0 or 0xA8, then the assembler should prefer them over 0x8000.
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Worker	.syntax unified
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
21*9880d681SAndroid Build Coastguard Worker@ TEST1
22*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
23*9880d681SAndroid Build Coastguard Worker	.section	.TEST1
24*9880d681SAndroid Build Coastguard Worker	.globl	func1a
25*9880d681SAndroid Build Coastguard Worker	.align	2
26*9880d681SAndroid Build Coastguard Worker	.type	func1a,%function
27*9880d681SAndroid Build Coastguard Worker	.fnstart
28*9880d681SAndroid Build Coastguard Workerfunc1a:
29*9880d681SAndroid Build Coastguard Worker	.save	{r0}
30*9880d681SAndroid Build Coastguard Worker	push	{r0}
31*9880d681SAndroid Build Coastguard Worker	pop	{r0}
32*9880d681SAndroid Build Coastguard Worker	bx	lr
33*9880d681SAndroid Build Coastguard Worker	.personality __gxx_personality_v0
34*9880d681SAndroid Build Coastguard Worker	.handlerdata
35*9880d681SAndroid Build Coastguard Worker	.fnend
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Worker	.globl	func1b
38*9880d681SAndroid Build Coastguard Worker	.align	2
39*9880d681SAndroid Build Coastguard Worker	.type	func1b,%function
40*9880d681SAndroid Build Coastguard Worker	.fnstart
41*9880d681SAndroid Build Coastguard Workerfunc1b:
42*9880d681SAndroid Build Coastguard Worker	.save	{r0, r1}
43*9880d681SAndroid Build Coastguard Worker	push	{r0, r1}
44*9880d681SAndroid Build Coastguard Worker	pop	{r0, r1}
45*9880d681SAndroid Build Coastguard Worker	bx	lr
46*9880d681SAndroid Build Coastguard Worker	.personality __gxx_personality_v0
47*9880d681SAndroid Build Coastguard Worker	.handlerdata
48*9880d681SAndroid Build Coastguard Worker	.fnend
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Worker	.globl	func1c
51*9880d681SAndroid Build Coastguard Worker	.align	2
52*9880d681SAndroid Build Coastguard Worker	.type	func1c,%function
53*9880d681SAndroid Build Coastguard Worker	.fnstart
54*9880d681SAndroid Build Coastguard Workerfunc1c:
55*9880d681SAndroid Build Coastguard Worker	.save	{r0, r2}
56*9880d681SAndroid Build Coastguard Worker	push	{r0, r2}
57*9880d681SAndroid Build Coastguard Worker	pop	{r0, r2}
58*9880d681SAndroid Build Coastguard Worker	bx	lr
59*9880d681SAndroid Build Coastguard Worker	.personality __gxx_personality_v0
60*9880d681SAndroid Build Coastguard Worker	.handlerdata
61*9880d681SAndroid Build Coastguard Worker	.fnend
62*9880d681SAndroid Build Coastguard Worker
63*9880d681SAndroid Build Coastguard Worker	.globl	func1d
64*9880d681SAndroid Build Coastguard Worker	.align	2
65*9880d681SAndroid Build Coastguard Worker	.type	func1d,%function
66*9880d681SAndroid Build Coastguard Worker	.fnstart
67*9880d681SAndroid Build Coastguard Workerfunc1d:
68*9880d681SAndroid Build Coastguard Worker	.save	{r1, r2}
69*9880d681SAndroid Build Coastguard Worker	push	{r1, r2}
70*9880d681SAndroid Build Coastguard Worker	pop	{r1, r2}
71*9880d681SAndroid Build Coastguard Worker	bx	lr
72*9880d681SAndroid Build Coastguard Worker	.personality __gxx_personality_v0
73*9880d681SAndroid Build Coastguard Worker	.handlerdata
74*9880d681SAndroid Build Coastguard Worker	.fnend
75*9880d681SAndroid Build Coastguard Worker
76*9880d681SAndroid Build Coastguard Worker	.globl	func1e
77*9880d681SAndroid Build Coastguard Worker	.align	2
78*9880d681SAndroid Build Coastguard Worker	.type	func1e,%function
79*9880d681SAndroid Build Coastguard Worker	.fnstart
80*9880d681SAndroid Build Coastguard Workerfunc1e:
81*9880d681SAndroid Build Coastguard Worker	.save	{r0, r1, r2, r3}
82*9880d681SAndroid Build Coastguard Worker	push	{r0, r1, r2, r3}
83*9880d681SAndroid Build Coastguard Worker	pop	{r0, r1, r2, r3}
84*9880d681SAndroid Build Coastguard Worker	bx	lr
85*9880d681SAndroid Build Coastguard Worker	.personality __gxx_personality_v0
86*9880d681SAndroid Build Coastguard Worker	.handlerdata
87*9880d681SAndroid Build Coastguard Worker	.fnend
88*9880d681SAndroid Build Coastguard Worker
89*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
90*9880d681SAndroid Build Coastguard Worker@ The assembler should emit 0xB000 unwind opcode.
91*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
92*9880d681SAndroid Build Coastguard Worker@ CHECK: Section {
93*9880d681SAndroid Build Coastguard Worker@ CHECK:   Name: .ARM.extab.TEST1
94*9880d681SAndroid Build Coastguard Worker@ CHECK:   SectionData (
95*9880d681SAndroid Build Coastguard Worker@ CHECK:     0000: 00000000 B001B100 00000000 B003B100  |................|
96*9880d681SAndroid Build Coastguard Worker@ CHECK:     0010: 00000000 B005B100 00000000 B006B100  |................|
97*9880d681SAndroid Build Coastguard Worker@ CHECK:     0020: 00000000 B00FB100                    |........|
98*9880d681SAndroid Build Coastguard Worker@ CHECK:   )
99*9880d681SAndroid Build Coastguard Worker@ CHECK: }
100*9880d681SAndroid Build Coastguard Worker
101*9880d681SAndroid Build Coastguard Worker
102*9880d681SAndroid Build Coastguard Worker
103*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
104*9880d681SAndroid Build Coastguard Worker@ TEST2
105*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
106*9880d681SAndroid Build Coastguard Worker	.section	.TEST2
107*9880d681SAndroid Build Coastguard Worker	.globl	func2a
108*9880d681SAndroid Build Coastguard Worker	.align	2
109*9880d681SAndroid Build Coastguard Worker	.type	func2a,%function
110*9880d681SAndroid Build Coastguard Worker	.fnstart
111*9880d681SAndroid Build Coastguard Workerfunc2a:
112*9880d681SAndroid Build Coastguard Worker	.save	{r4}
113*9880d681SAndroid Build Coastguard Worker	push	{r4}
114*9880d681SAndroid Build Coastguard Worker	pop	{r4}
115*9880d681SAndroid Build Coastguard Worker	bx	lr
116*9880d681SAndroid Build Coastguard Worker	.personality __gxx_personality_v0
117*9880d681SAndroid Build Coastguard Worker	.handlerdata
118*9880d681SAndroid Build Coastguard Worker	.fnend
119*9880d681SAndroid Build Coastguard Worker
120*9880d681SAndroid Build Coastguard Worker	.globl	func2b
121*9880d681SAndroid Build Coastguard Worker	.align	2
122*9880d681SAndroid Build Coastguard Worker	.type	func2b,%function
123*9880d681SAndroid Build Coastguard Worker	.fnstart
124*9880d681SAndroid Build Coastguard Workerfunc2b:
125*9880d681SAndroid Build Coastguard Worker	.save	{r4, r5}
126*9880d681SAndroid Build Coastguard Worker	push	{r4, r5}
127*9880d681SAndroid Build Coastguard Worker	pop	{r4, r5}
128*9880d681SAndroid Build Coastguard Worker	bx	lr
129*9880d681SAndroid Build Coastguard Worker	.personality __gxx_personality_v0
130*9880d681SAndroid Build Coastguard Worker	.handlerdata
131*9880d681SAndroid Build Coastguard Worker	.fnend
132*9880d681SAndroid Build Coastguard Worker
133*9880d681SAndroid Build Coastguard Worker	.globl	func2c
134*9880d681SAndroid Build Coastguard Worker	.align	2
135*9880d681SAndroid Build Coastguard Worker	.type	func2c,%function
136*9880d681SAndroid Build Coastguard Worker	.fnstart
137*9880d681SAndroid Build Coastguard Workerfunc2c:
138*9880d681SAndroid Build Coastguard Worker	.save	{r4, r5, r6, r7, r8, r9, r10, r11}
139*9880d681SAndroid Build Coastguard Worker	push	{r4, r5, r6, r7, r8, r9, r10, r11}
140*9880d681SAndroid Build Coastguard Worker	pop	{r4, r5, r6, r7, r8, r9, r10, r11}
141*9880d681SAndroid Build Coastguard Worker	bx	lr
142*9880d681SAndroid Build Coastguard Worker	.personality __gxx_personality_v0
143*9880d681SAndroid Build Coastguard Worker	.handlerdata
144*9880d681SAndroid Build Coastguard Worker	.fnend
145*9880d681SAndroid Build Coastguard Worker
146*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
147*9880d681SAndroid Build Coastguard Worker@ The assembler should emit 0xA0 unwind opcode.
148*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
149*9880d681SAndroid Build Coastguard Worker@ CHECK: Section {
150*9880d681SAndroid Build Coastguard Worker@ CHECK:   Name: .ARM.extab.TEST2
151*9880d681SAndroid Build Coastguard Worker@ CHECK:   SectionData (
152*9880d681SAndroid Build Coastguard Worker@ CHECK:     0000: 00000000 B0B0A000 00000000 B0B0A100  |................|
153*9880d681SAndroid Build Coastguard Worker@ CHECK:     0010: 00000000 B0B0A700                    |........|
154*9880d681SAndroid Build Coastguard Worker@ CHECK:   )
155*9880d681SAndroid Build Coastguard Worker@ CHECK: }
156*9880d681SAndroid Build Coastguard Worker
157*9880d681SAndroid Build Coastguard Worker
158*9880d681SAndroid Build Coastguard Worker
159*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
160*9880d681SAndroid Build Coastguard Worker@ TEST3
161*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
162*9880d681SAndroid Build Coastguard Worker	.section	.TEST3
163*9880d681SAndroid Build Coastguard Worker	.globl	func3a
164*9880d681SAndroid Build Coastguard Worker	.align	2
165*9880d681SAndroid Build Coastguard Worker	.type	func3a,%function
166*9880d681SAndroid Build Coastguard Worker	.fnstart
167*9880d681SAndroid Build Coastguard Workerfunc3a:
168*9880d681SAndroid Build Coastguard Worker	.save	{r4, r14}
169*9880d681SAndroid Build Coastguard Worker	push	{r4, r14}
170*9880d681SAndroid Build Coastguard Worker	pop	{r4, r14}
171*9880d681SAndroid Build Coastguard Worker	bx	lr
172*9880d681SAndroid Build Coastguard Worker	.personality __gxx_personality_v0
173*9880d681SAndroid Build Coastguard Worker	.handlerdata
174*9880d681SAndroid Build Coastguard Worker	.fnend
175*9880d681SAndroid Build Coastguard Worker
176*9880d681SAndroid Build Coastguard Worker	.globl	func3b
177*9880d681SAndroid Build Coastguard Worker	.align	2
178*9880d681SAndroid Build Coastguard Worker	.type	func3b,%function
179*9880d681SAndroid Build Coastguard Worker	.fnstart
180*9880d681SAndroid Build Coastguard Workerfunc3b:
181*9880d681SAndroid Build Coastguard Worker	.save	{r4, r5, r14}
182*9880d681SAndroid Build Coastguard Worker	push	{r4, r5, r14}
183*9880d681SAndroid Build Coastguard Worker	pop	{r4, r5, r14}
184*9880d681SAndroid Build Coastguard Worker	bx	lr
185*9880d681SAndroid Build Coastguard Worker	.personality __gxx_personality_v0
186*9880d681SAndroid Build Coastguard Worker	.handlerdata
187*9880d681SAndroid Build Coastguard Worker	.fnend
188*9880d681SAndroid Build Coastguard Worker
189*9880d681SAndroid Build Coastguard Worker	.globl	func3c
190*9880d681SAndroid Build Coastguard Worker	.align	2
191*9880d681SAndroid Build Coastguard Worker	.type	func3c,%function
192*9880d681SAndroid Build Coastguard Worker	.fnstart
193*9880d681SAndroid Build Coastguard Workerfunc3c:
194*9880d681SAndroid Build Coastguard Worker	.save	{r4, r5, r6, r7, r8, r9, r10, r11, r14}
195*9880d681SAndroid Build Coastguard Worker	push	{r4, r5, r6, r7, r8, r9, r10, r11, r14}
196*9880d681SAndroid Build Coastguard Worker	pop	{r4, r5, r6, r7, r8, r9, r10, r11, r14}
197*9880d681SAndroid Build Coastguard Worker	bx	lr
198*9880d681SAndroid Build Coastguard Worker	.personality __gxx_personality_v0
199*9880d681SAndroid Build Coastguard Worker	.handlerdata
200*9880d681SAndroid Build Coastguard Worker	.fnend
201*9880d681SAndroid Build Coastguard Worker
202*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
203*9880d681SAndroid Build Coastguard Worker@ The assembler should emit 0xA8 unwind opcode.
204*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
205*9880d681SAndroid Build Coastguard Worker@ CHECK: Section {
206*9880d681SAndroid Build Coastguard Worker@ CHECK:   Name: .ARM.extab.TEST3
207*9880d681SAndroid Build Coastguard Worker@ CHECK:   SectionData (
208*9880d681SAndroid Build Coastguard Worker@ CHECK:     0000: 00000000 B0B0A800 00000000 B0B0A900  |................|
209*9880d681SAndroid Build Coastguard Worker@ CHECK:     0010: 00000000 B0B0AF00                    |........|
210*9880d681SAndroid Build Coastguard Worker@ CHECK:   )
211*9880d681SAndroid Build Coastguard Worker@ CHECK: }
212*9880d681SAndroid Build Coastguard Worker
213*9880d681SAndroid Build Coastguard Worker
214*9880d681SAndroid Build Coastguard Worker
215*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
216*9880d681SAndroid Build Coastguard Worker@ TEST4
217*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
218*9880d681SAndroid Build Coastguard Worker	.section	.TEST4
219*9880d681SAndroid Build Coastguard Worker	.globl	func4a
220*9880d681SAndroid Build Coastguard Worker	.align	2
221*9880d681SAndroid Build Coastguard Worker	.type	func4a,%function
222*9880d681SAndroid Build Coastguard Worker	.fnstart
223*9880d681SAndroid Build Coastguard Workerfunc4a:
224*9880d681SAndroid Build Coastguard Worker	.save	{r4, r5, r6, r7, r8, r9, r10, r11, r12, r14}
225*9880d681SAndroid Build Coastguard Worker	push	{r4, r5, r6, r7, r8, r9, r10, r11, r12, r14}
226*9880d681SAndroid Build Coastguard Worker	pop	{r4, r5, r6, r7, r8, r9, r10, r11, r12, r14}
227*9880d681SAndroid Build Coastguard Worker	bx	lr
228*9880d681SAndroid Build Coastguard Worker	.personality __gxx_personality_v0
229*9880d681SAndroid Build Coastguard Worker	.handlerdata
230*9880d681SAndroid Build Coastguard Worker	.fnend
231*9880d681SAndroid Build Coastguard Worker
232*9880d681SAndroid Build Coastguard Worker	.globl	func4b
233*9880d681SAndroid Build Coastguard Worker	.align	2
234*9880d681SAndroid Build Coastguard Worker	.type	func4b,%function
235*9880d681SAndroid Build Coastguard Worker	.fnstart
236*9880d681SAndroid Build Coastguard Workerfunc4b:
237*9880d681SAndroid Build Coastguard Worker	@ Note: r7 is missing intentionally.
238*9880d681SAndroid Build Coastguard Worker	.save	{r4, r5, r6, r8, r9, r10, r11}
239*9880d681SAndroid Build Coastguard Worker	push	{r4, r5, r6, r8, r9, r10, r11}
240*9880d681SAndroid Build Coastguard Worker	pop	{r4, r5, r6, r8, r9, r10, r11}
241*9880d681SAndroid Build Coastguard Worker	bx	lr
242*9880d681SAndroid Build Coastguard Worker	.personality __gxx_personality_v0
243*9880d681SAndroid Build Coastguard Worker	.handlerdata
244*9880d681SAndroid Build Coastguard Worker	.fnend
245*9880d681SAndroid Build Coastguard Worker
246*9880d681SAndroid Build Coastguard Worker	.globl	func4c
247*9880d681SAndroid Build Coastguard Worker	.align	2
248*9880d681SAndroid Build Coastguard Worker	.type	func4c,%function
249*9880d681SAndroid Build Coastguard Worker	.fnstart
250*9880d681SAndroid Build Coastguard Workerfunc4c:
251*9880d681SAndroid Build Coastguard Worker	@ Note: r7 is missing intentionally.
252*9880d681SAndroid Build Coastguard Worker	.save	{r4, r5, r6, r8, r9, r10, r11, r14}
253*9880d681SAndroid Build Coastguard Worker	push	{r4, r5, r6, r8, r9, r10, r11, r14}
254*9880d681SAndroid Build Coastguard Worker	pop	{r4, r5, r6, r8, r9, r10, r11, r14}
255*9880d681SAndroid Build Coastguard Worker	bx	lr
256*9880d681SAndroid Build Coastguard Worker	.personality __gxx_personality_v0
257*9880d681SAndroid Build Coastguard Worker	.handlerdata
258*9880d681SAndroid Build Coastguard Worker	.fnend
259*9880d681SAndroid Build Coastguard Worker
260*9880d681SAndroid Build Coastguard Worker	.globl	func4d
261*9880d681SAndroid Build Coastguard Worker	.align	2
262*9880d681SAndroid Build Coastguard Worker	.type	func4d,%function
263*9880d681SAndroid Build Coastguard Worker	.fnstart
264*9880d681SAndroid Build Coastguard Workerfunc4d:
265*9880d681SAndroid Build Coastguard Worker	@ Note: The register list is not start with r4.
266*9880d681SAndroid Build Coastguard Worker	.save	{r5, r6, r7}
267*9880d681SAndroid Build Coastguard Worker	push	{r5, r6, r7}
268*9880d681SAndroid Build Coastguard Worker	pop	{r5, r6, r7}
269*9880d681SAndroid Build Coastguard Worker	bx	lr
270*9880d681SAndroid Build Coastguard Worker	.personality __gxx_personality_v0
271*9880d681SAndroid Build Coastguard Worker	.handlerdata
272*9880d681SAndroid Build Coastguard Worker	.fnend
273*9880d681SAndroid Build Coastguard Worker
274*9880d681SAndroid Build Coastguard Worker	.globl	func4e
275*9880d681SAndroid Build Coastguard Worker	.align	2
276*9880d681SAndroid Build Coastguard Worker	.type	func4e,%function
277*9880d681SAndroid Build Coastguard Worker	.fnstart
278*9880d681SAndroid Build Coastguard Workerfunc4e:
279*9880d681SAndroid Build Coastguard Worker	@ Note: The register list is not start with r4.
280*9880d681SAndroid Build Coastguard Worker	.save	{r5, r6, r7, r14}
281*9880d681SAndroid Build Coastguard Worker	push	{r5, r6, r7, r14}
282*9880d681SAndroid Build Coastguard Worker	pop	{r5, r6, r7, r14}
283*9880d681SAndroid Build Coastguard Worker	bx	lr
284*9880d681SAndroid Build Coastguard Worker	.personality __gxx_personality_v0
285*9880d681SAndroid Build Coastguard Worker	.handlerdata
286*9880d681SAndroid Build Coastguard Worker	.fnend
287*9880d681SAndroid Build Coastguard Worker
288*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
289*9880d681SAndroid Build Coastguard Worker@ The assembler should emit 0x8000 unwind opcode.
290*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
291*9880d681SAndroid Build Coastguard Worker@ CHECK: Section {
292*9880d681SAndroid Build Coastguard Worker@ CHECK:   Name: .ARM.extab.TEST4
293*9880d681SAndroid Build Coastguard Worker@ CHECK:   SectionData (
294*9880d681SAndroid Build Coastguard Worker@ CHECK:     0000: 00000000 B0FF8500 00000000 B0F78000  |................|
295*9880d681SAndroid Build Coastguard Worker@ CHECK:     0010: 00000000 B0F78400 00000000 B00E8000  |................|
296*9880d681SAndroid Build Coastguard Worker@ CHECK:     0020: 00000000 B00E8400                    |........|
297*9880d681SAndroid Build Coastguard Worker@ CHECK:   )
298*9880d681SAndroid Build Coastguard Worker@ CHECK: }
299*9880d681SAndroid Build Coastguard Worker
300*9880d681SAndroid Build Coastguard Worker
301*9880d681SAndroid Build Coastguard Worker
302*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
303*9880d681SAndroid Build Coastguard Worker@ TEST5
304*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
305*9880d681SAndroid Build Coastguard Worker	.section	.TEST5
306*9880d681SAndroid Build Coastguard Worker	.globl	func5a
307*9880d681SAndroid Build Coastguard Worker	.align	2
308*9880d681SAndroid Build Coastguard Worker	.type	func5a,%function
309*9880d681SAndroid Build Coastguard Worker	.fnstart
310*9880d681SAndroid Build Coastguard Workerfunc5a:
311*9880d681SAndroid Build Coastguard Worker	.save	{r0, r1, r2, r3, r4, r5, r6}
312*9880d681SAndroid Build Coastguard Worker	push	{r0, r1, r2, r3, r4, r5, r6}
313*9880d681SAndroid Build Coastguard Worker	pop	{r0, r1, r2, r3, r4, r5, r6}
314*9880d681SAndroid Build Coastguard Worker	bx	lr
315*9880d681SAndroid Build Coastguard Worker	.personality __gxx_personality_v0
316*9880d681SAndroid Build Coastguard Worker	.handlerdata
317*9880d681SAndroid Build Coastguard Worker	.fnend
318*9880d681SAndroid Build Coastguard Worker
319*9880d681SAndroid Build Coastguard Worker	.globl	func5b
320*9880d681SAndroid Build Coastguard Worker	.align	2
321*9880d681SAndroid Build Coastguard Worker	.type	func5b,%function
322*9880d681SAndroid Build Coastguard Worker	.fnstart
323*9880d681SAndroid Build Coastguard Workerfunc5b:
324*9880d681SAndroid Build Coastguard Worker	.save	{r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r14}
325*9880d681SAndroid Build Coastguard Worker	push	{r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r14}
326*9880d681SAndroid Build Coastguard Worker	pop	{r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r14}
327*9880d681SAndroid Build Coastguard Worker	bx	lr
328*9880d681SAndroid Build Coastguard Worker	.personality __gxx_personality_v0
329*9880d681SAndroid Build Coastguard Worker	.handlerdata
330*9880d681SAndroid Build Coastguard Worker	.fnend
331*9880d681SAndroid Build Coastguard Worker
332*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
333*9880d681SAndroid Build Coastguard Worker@ Check the order of unwind opcode to pop registers.
334*9880d681SAndroid Build Coastguard Worker@ 0xB10F "pop {r0-r3}" should be emitted before 0xA2 "pop {r4-r6}".
335*9880d681SAndroid Build Coastguard Worker@ 0xB10F "pop {r0-r3}" should be emitted before 0x85FF "pop {r4-r12, r14}".
336*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
337*9880d681SAndroid Build Coastguard Worker@ CHECK: Section {
338*9880d681SAndroid Build Coastguard Worker@ CHECK:   Name: .ARM.extab.TEST5
339*9880d681SAndroid Build Coastguard Worker@ CHECK:   SectionData (
340*9880d681SAndroid Build Coastguard Worker@ CHECK:     0000: 00000000 A20FB100 00000000 850FB101  |................|
341*9880d681SAndroid Build Coastguard Worker@ CHECK:     0010: B0B0B0FF                             |....|
342*9880d681SAndroid Build Coastguard Worker@ CHECK:   )
343*9880d681SAndroid Build Coastguard Worker@ CHECK: }
344