[mips] Add initial release notes for MIPS32.
[oota-llvm.git] / test / MC / ARM / thumb2-branches.s
1 @ RUN: llvm-mc -triple=thumbv7-apple-darwin -mcpu=cortex-a8 -show-encoding < %s | FileCheck %s
2
3 @------------------------------------------------------------------------------
4 @ unconditional branches accept narrow suffix and encode to short encodings
5 @------------------------------------------------------------------------------
6
7          b.n    #-2048
8          b.n    #2046
9
10 @ CHECK: b      #-2048                  @ encoding: [0x00,0xe4]
11 @ CHECK: b      #2046                   @ encoding: [0xff,0xe3]
12
13 @------------------------------------------------------------------------------
14 @ unconditional branches accept wide suffix and encode to wide encodings
15 @------------------------------------------------------------------------------
16
17          b.w    #-2048
18          b.w    #2046
19          b.w    #-1677216
20          b.w    #1677214
21
22 @ CHECK: b.w    #-2048                  @ encoding: [0xff,0xf7,0x00,0xbc]
23 @ CHECK: b.w    #2046                   @ encoding: [0x00,0xf0,0xff,0xbb]
24 @ CHECK: b.w    #-1677216               @ encoding: [0x66,0xf6,0x30,0xbc]
25 @ CHECK: b.w    #1677214                @ encoding: [0x99,0xf1,0xcf,0xbb]
26
27 @------------------------------------------------------------------------------
28 @ unconditional branches without width suffix encode depending of offset size
29 @------------------------------------------------------------------------------
30
31          b      #-2048
32          b      #2046
33          b      #-2050
34          b      #2048
35          b      #-1677216
36          b      #1677214
37
38 @ CHECK: b      #-2048                  @ encoding: [0x00,0xe4]
39 @ CHECK: b      #2046                   @ encoding: [0xff,0xe3]
40 @ CHECK: b.w    #-2050                  @ encoding: [0xff,0xf7,0xff,0xbb]
41 @ CHECK: b.w    #2048                   @ encoding: [0x00,0xf0,0x00,0xbc]
42 @ CHECK: b.w    #-1677216               @ encoding: [0x66,0xf6,0x30,0xbc]
43 @ CHECK: b.w    #1677214                @ encoding: [0x99,0xf1,0xcf,0xbb]
44
45 @------------------------------------------------------------------------------
46 @ unconditional branches with width narrow suffix in IT block 
47 @------------------------------------------------------------------------------
48
49          it     eq
50          beq.n  #-2048
51          it     ne
52          bne.n  #-2046
53
54 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
55 @ CHECK: beq    #-2048                  @ encoding: [0x00,0xe4] 
56 @ CHECK: it     ne                      @ encoding: [0x18,0xbf] 
57 @ CHECK: bne    #-2046                  @ encoding: [0x01,0xe4]
58
59 @------------------------------------------------------------------------------
60 @ unconditional branches with wide suffix in IT block
61 @------------------------------------------------------------------------------
62
63          it     gt
64          bgt.w  #-2048
65          it     le
66          ble.w  #2046
67          it     ge
68          bge.w  #-1677216
69          it     lt
70          blt.w  #1677214
71
72 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
73 @ CHECK: bgt.w  #-2048                  @ encoding: [0xff,0xf7,0x00,0xbc]
74 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
75 @ CHECK: ble.w  #2046                   @ encoding: [0x00,0xf0,0xff,0xbb]
76 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
77 @ CHECK: bge.w  #-1677216               @ encoding: [0x66,0xf6,0x30,0xbc]
78 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
79 @ CHECK: blt.w  #1677214                @ encoding: [0x99,0xf1,0xcf,0xbb]
80
81 @------------------------------------------------------------------------------
82 @ conditional branches accept narrow suffix and encode to short encodings
83 @------------------------------------------------------------------------------
84
85          beq.n    #-256
86          bne.n    #254
87
88 @ CHECK: beq    #-256                   @ encoding: [0x80,0xd0]
89 @ CHECK: bne    #254                    @ encoding: [0x7f,0xd1]
90
91 @------------------------------------------------------------------------------
92 @ unconditional branches accept wide suffix and encode to wide encodings
93 @------------------------------------------------------------------------------
94
95          bmi.w    #-256
96          bne.w    #254
97          blt.w    #-1048576
98          bge.w    #1048574
99
100 @ CHECK: bmi.w  #-256                   @ encoding: [0x3f,0xf5,0x80,0xaf]
101 @ CHECK: bne.w  #254                    @ encoding: [0x40,0xf0,0x7f,0x80]
102 @ CHECK: blt.w  #-1048576               @ encoding: [0xc0,0xf6,0x00,0x80]
103 @ CHECK: bge.w  #1048574                @ encoding: [0xbf,0xf2,0xff,0xaf]
104
105 @------------------------------------------------------------------------------
106 @ unconditional branches without width suffix encode depending of offset size
107 @------------------------------------------------------------------------------
108
109          bne     #-256
110          bgt     #254
111          bne     #-258
112          bgt     #256
113          bne     #-1048576
114          bgt     #1048574
115
116 @ CHECK: bne    #-256                   @ encoding: [0x80,0xd1]
117 @ CHECK: bgt    #254                    @ encoding: [0x7f,0xdc]
118 @ CHECK: bne.w  #-258                   @ encoding: [0x7f,0xf4,0x7f,0xaf]
119 @ CHECK: bgt.w  #256                    @ encoding: [0x00,0xf3,0x80,0x80]
120 @ CHECK: bne.w  #-1048576               @ encoding: [0x40,0xf4,0x00,0x80]
121 @ CHECK: bgt.w  #1048574                @ encoding: [0x3f,0xf3,0xff,0xaf]
122
123 @------------------------------------------------------------------------------
124 @ same branch insturction encoding to conditional or unconditional depending
125 @ on whether it is in an IT block or not
126 @------------------------------------------------------------------------------
127
128          it     eq
129          addeq  r0, r1
130          bne    #128
131
132 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
133 @ CHECK: addeq  r0, r1                  @ encoding: [0x08,0x44]
134 @ CHECK: bne    #128                    @ encoding: [0x40,0xd1]
135
136          ite    eq
137          addeq  r0, r1
138          bne    #128
139
140 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
141 @ CHECK: addeq  r0, r1                  @ encoding: [0x08,0x44]
142 @ CHECK: bne    #128                    @ encoding: [0x40,0xe0]
143
144 @ RUN: llvm-mc -triple=thumbv7-apple-darwin -mcpu=cortex-a8 -show-encoding < %s | FileCheck %s
145
146 @------------------------------------------------------------------------------
147 @ unconditional branches accept narrow suffix and encode to short encodings
148 @------------------------------------------------------------------------------
149
150          b.n    #-2048
151          b.n    #2046
152
153 @ CHECK: b      #-2048                  @ encoding: [0x00,0xe4]
154 @ CHECK: b      #2046                   @ encoding: [0xff,0xe3]
155
156 @------------------------------------------------------------------------------
157 @ unconditional branches accept wide suffix and encode to wide encodings
158 @------------------------------------------------------------------------------
159
160          b.w    #-2048
161          b.w    #2046
162          b.w    #-1677216
163          b.w    #1677214
164
165 @ CHECK: b.w    #-2048                  @ encoding: [0xff,0xf7,0x00,0xbc]
166 @ CHECK: b.w    #2046                   @ encoding: [0x00,0xf0,0xff,0xbb]
167 @ CHECK: b.w    #-1677216               @ encoding: [0x66,0xf6,0x30,0xbc]
168 @ CHECK: b.w    #1677214                @ encoding: [0x99,0xf1,0xcf,0xbb]
169
170 @------------------------------------------------------------------------------
171 @ unconditional branches without width suffix encode depending of offset size
172 @------------------------------------------------------------------------------
173
174          b      #-2048
175          b      #2046
176          b      #-2050
177          b      #2048
178          b      #-1677216
179          b      #1677214
180
181 @ CHECK: b      #-2048                  @ encoding: [0x00,0xe4]
182 @ CHECK: b      #2046                   @ encoding: [0xff,0xe3]
183 @ CHECK: b.w    #-2050                  @ encoding: [0xff,0xf7,0xff,0xbb]
184 @ CHECK: b.w    #2048                   @ encoding: [0x00,0xf0,0x00,0xbc]
185 @ CHECK: b.w    #-1677216               @ encoding: [0x66,0xf6,0x30,0xbc]
186 @ CHECK: b.w    #1677214                @ encoding: [0x99,0xf1,0xcf,0xbb]
187
188 @------------------------------------------------------------------------------
189 @ unconditional branches with width narrow suffix in IT block 
190 @------------------------------------------------------------------------------
191
192          it     eq
193          beq.n  #-2048
194          it     ne
195          bne.n  #-2046
196
197 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
198 @ CHECK: beq    #-2048                  @ encoding: [0x00,0xe4] 
199 @ CHECK: it     ne                      @ encoding: [0x18,0xbf] 
200 @ CHECK: bne    #-2046                  @ encoding: [0x01,0xe4]
201
202 @------------------------------------------------------------------------------
203 @ unconditional branches with wide suffix in IT block
204 @------------------------------------------------------------------------------
205
206          it     gt
207          bgt.w  #-2048
208          it     le
209          ble.w  #2046
210          it     ge
211          bge.w  #-1677216
212          it     lt
213          blt.w  #1677214
214
215 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
216 @ CHECK: bgt.w  #-2048                  @ encoding: [0xff,0xf7,0x00,0xbc]
217 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
218 @ CHECK: ble.w  #2046                   @ encoding: [0x00,0xf0,0xff,0xbb]
219 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
220 @ CHECK: bge.w  #-1677216               @ encoding: [0x66,0xf6,0x30,0xbc]
221 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
222 @ CHECK: blt.w  #1677214                @ encoding: [0x99,0xf1,0xcf,0xbb]
223
224 @------------------------------------------------------------------------------
225 @ conditional branches accept narrow suffix and encode to short encodings
226 @------------------------------------------------------------------------------
227
228          beq.n    #-256
229          bne.n    #254
230
231 @ CHECK: beq    #-256                   @ encoding: [0x80,0xd0]
232 @ CHECK: bne    #254                    @ encoding: [0x7f,0xd1]
233
234 @------------------------------------------------------------------------------
235 @ unconditional branches accept wide suffix and encode to wide encodings
236 @------------------------------------------------------------------------------
237
238          bmi.w    #-256
239          bne.w    #254
240          blt.w    #-1048576
241          bge.w    #1048574
242
243 @ CHECK: bmi.w  #-256                   @ encoding: [0x3f,0xf5,0x80,0xaf]
244 @ CHECK: bne.w  #254                    @ encoding: [0x40,0xf0,0x7f,0x80]
245 @ CHECK: blt.w  #-1048576               @ encoding: [0xc0,0xf6,0x00,0x80]
246 @ CHECK: bge.w  #1048574                @ encoding: [0xbf,0xf2,0xff,0xaf]
247
248 @------------------------------------------------------------------------------
249 @ unconditional branches without width suffix encode depending of offset size
250 @------------------------------------------------------------------------------
251
252          bne     #-256
253          bgt     #254
254          bne     #-258
255          bgt     #256
256          bne     #-1048576
257          bgt     #1048574
258
259 @ CHECK: bne    #-256                   @ encoding: [0x80,0xd1]
260 @ CHECK: bgt    #254                    @ encoding: [0x7f,0xdc]
261 @ CHECK: bne.w  #-258                   @ encoding: [0x7f,0xf4,0x7f,0xaf]
262 @ CHECK: bgt.w  #256                    @ encoding: [0x00,0xf3,0x80,0x80]
263 @ CHECK: bne.w  #-1048576               @ encoding: [0x40,0xf4,0x00,0x80]
264 @ CHECK: bgt.w  #1048574                @ encoding: [0x3f,0xf3,0xff,0xaf]
265
266 @------------------------------------------------------------------------------
267 @ same branch insturction encoding to conditional or unconditional depending
268 @ on whether it is in an IT block or not
269 @------------------------------------------------------------------------------
270
271          it     eq
272          addeq  r0, r1
273          bne    #128
274
275 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
276 @ CHECK: addeq  r0, r1                  @ encoding: [0x08,0x44]
277 @ CHECK: bne    #128                    @ encoding: [0x40,0xd1]
278
279          ite    eq
280          addeq  r0, r1
281          bne    #128
282
283 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
284 @ CHECK: addeq  r0, r1                  @ encoding: [0x08,0x44]
285 @ CHECK: bne    #128                    @ encoding: [0x40,0xe0]
286