Make it clear in which sections these relocations are.
[oota-llvm.git] / test / MC / ARM / eh-directive-vsave.s
1 @ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \
2 @ RUN:   | llvm-readobj -s -sd -sr | FileCheck %s
3
4 @ Check the .vsave directive
5
6 @ The .vsave directive records the VFP registers which are pushed to the
7 @ stack.  There are two different opcodes:
8 @
9 @     0xC800: pop d[(16+x+y):(16+x)]    @ d[16+x+y]-d[16+x] must be consecutive
10 @     0xC900: pop d[(x+y):x]            @ d[x+y]-d[x] must be consecutive
11
12
13         .syntax unified
14
15 @-------------------------------------------------------------------------------
16 @ TEST1
17 @-------------------------------------------------------------------------------
18         .section        .TEST1
19         .globl  func1a
20         .align  2
21         .type   func1a,%function
22         .fnstart
23 func1a:
24         .vsave  {d0}
25         vpush   {d0}
26         vpop    {d0}
27         bx      lr
28         .personality __gxx_personality_v0
29         .handlerdata
30         .fnend
31
32         .globl  func1b
33         .align  2
34         .type   func1b,%function
35         .fnstart
36 func1b:
37         .vsave  {d0, d1, d2, d3}
38         vpush   {d0, d1, d2, d3}
39         vpop    {d0, d1, d2, d3}
40         bx      lr
41         .personality __gxx_personality_v0
42         .handlerdata
43         .fnend
44
45         .globl  func1c
46         .align  2
47         .type   func1c,%function
48         .fnstart
49 func1c:
50         .vsave  {d0, d1, d2, d3, d4, d5, d6, d7}
51         vpush   {d0, d1, d2, d3, d4, d5, d6, d7}
52         vpop    {d0, d1, d2, d3, d4, d5, d6, d7}
53         bx      lr
54         .personality __gxx_personality_v0
55         .handlerdata
56         .fnend
57
58         .globl  func1d
59         .align  2
60         .type   func1d,%function
61         .fnstart
62 func1d:
63         .vsave  {d2, d3, d4, d5, d6, d7}
64         vpush   {d2, d3, d4, d5, d6, d7}
65         vpop    {d2, d3, d4, d5, d6, d7}
66         bx      lr
67         .personality __gxx_personality_v0
68         .handlerdata
69         .fnend
70
71 @ CHECK: Section {
72 @ CHECK:   Name: .ARM.extab.TEST1
73 @ CHECK:   SectionData (
74 @ CHECK:     0000: 00000000 B000C900 00000000 B003C900  |................|
75 @ CHECK:     0010: 00000000 B007C900 00000000 B025C900  |.............%..|
76 @ CHECK:   )
77 @ CHECK: }
78
79
80
81 @-------------------------------------------------------------------------------
82 @ TEST2
83 @-------------------------------------------------------------------------------
84         .section        .TEST2
85         .globl  func2a
86         .align  2
87         .type   func2a,%function
88         .fnstart
89 func2a:
90         .vsave  {d16}
91         vpush   {d16}
92         vpop    {d16}
93         bx      lr
94         .personality __gxx_personality_v0
95         .handlerdata
96         .fnend
97
98         .globl  func2b
99         .align  2
100         .type   func2b,%function
101         .fnstart
102 func2b:
103         .vsave  {d16, d17, d18, d19}
104         vpush   {d16, d17, d18, d19}
105         vpop    {d16, d17, d18, d19}
106         bx      lr
107         .personality __gxx_personality_v0
108         .handlerdata
109         .fnend
110
111         .globl  func2c
112         .align  2
113         .type   func2c,%function
114         .fnstart
115 func2c:
116         .vsave  {d16, d17, d18, d19, d20, d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, d31}
117         vpush   {d16, d17, d18, d19, d20, d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, d31}
118         vpop    {d16, d17, d18, d19, d20, d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, d31}
119         bx      lr
120         .personality __gxx_personality_v0
121         .handlerdata
122         .fnend
123
124 @ CHECK: Section {
125 @ CHECK:   Name: .ARM.extab.TEST2
126 @ CHECK:   SectionData (
127 @ CHECK:     0000: 00000000 B000C800 00000000 B003C800  |................|
128 @ CHECK:     0010: 00000000 B00FC800                    |........|
129 @ CHECK:   )
130 @ CHECK: }