Port more encoding tests over to Thumb2 decoding tests.
[oota-llvm.git] / test / MC / Disassembler / ARM / thumb2.txt
1 # RUN: llvm-mc -triple=thumbv7-apple-darwin -disassemble < %s | FileCheck %s
2
3 #------------------------------------------------------------------------------
4 # ADC (immediate)
5 #------------------------------------------------------------------------------
6 # CHECK: adc r0, r1, #4
7 # CHECK: adcs r0, r1, #0
8 # CHECK: adc r1, r2, #255
9 # CHECK: adc r3, r7, #5570645
10 # CHECK: adc r8, r12, #2852170240
11 # CHECK: adc r9, r7, #2779096485
12 # CHECK: adc r5, r3, #2264924160
13 # CHECK: adc r4, r2, #2139095040
14 # CHECK: adc r4, r2, #1664
15
16 0x41 0xf1 0x04 0x00
17 0x51 0xf1 0x00 0x00
18 0x42 0xf1 0xff 0x01
19 0x47 0xf1 0x55 0x13
20 0x4c 0xf1 0xaa 0x28
21 0x47 0xf1 0xa5 0x39
22 0x43 0xf1 0x07 0x45
23 0x42 0xf1 0xff 0x44
24 0x42 0xf5 0xd0 0x64
25
26 #------------------------------------------------------------------------------
27 # ADC (register)
28 #------------------------------------------------------------------------------
29 # CHECK: adc.w r4, r5, r6
30 # CHECK: adcs.w r4, r5, r6
31 # CHECK: adc.w r9, r1, r3
32 # CHECK: adcs.w r9, r1, r3
33 # CHECK: adc.w r0, r1, r3, ror #4
34 # CHECK: adcs.w  r0, r1, r3, lsl #7
35 # CHECK: adc.w r0, r1, r3, lsr #31
36 # CHECK: adcs.w  r0, r1, r3, asr #32
37
38 0x45 0xeb 0x06 0x04
39 0x55 0xeb 0x06 0x04
40 0x41 0xeb 0x03 0x09
41 0x51 0xeb 0x03 0x09
42 0x41 0xeb 0x33 0x10
43 0x51 0xeb 0xc3 0x10
44 0x41 0xeb 0xd3 0x70
45 0x51 0xeb 0x23 0x00
46
47
48 #------------------------------------------------------------------------------
49 # ADD (immediate)
50 #------------------------------------------------------------------------------
51 # CHECK: itet eq
52 # CHECK: addeq r1, r2, #4
53 # CHECK: addwne r5, r3, #1023
54 # CHECK: addweq r4, r5, #293
55 # CHECK: add.w r2, sp, #1024
56 # CHECK: add.w r2, r8, #65280
57 # CHECK: addw r2, r3, #257
58 # CHECK: add.w r12, r6, #256
59 # CHECK: addw r12, r6, #256
60 # CHECK: adds.w r1, r2, #496
61
62 0x0a 0xbf
63 0x11 0x1d
64 0x03 0xf2 0xff 0x35
65 0x05 0xf2 0x25 0x14
66 0x0d 0xf5 0x80 0x62
67 0x08 0xf5 0x7f 0x42
68 0x03 0xf2 0x01 0x12
69 0x06 0xf5 0x80 0x7c
70 0x06 0xf2 0x00 0x1c
71 0x12 0xf5 0xf8 0x71
72
73
74 #------------------------------------------------------------------------------
75 # ADD (register)
76 #------------------------------------------------------------------------------
77 # CHECK: add.w r1, r2, r8
78 # CHECK: add.w r5, r9, r2, asr #32
79 # CHECK: adds.w r7, r3, r1, lsl #31
80 # CHECK: adds.w r0, r3, r6, lsr #25
81 # CHECK: add.w r4, r8, r1, ror #12
82
83 0x02 0xeb 0x08 0x01
84 0x09 0xeb 0x22 0x05
85 0x13 0xeb 0xc1 0x77
86 0x13 0xeb 0x56 0x60
87 0x08 0xeb 0x31 0x34
88
89
90 #------------------------------------------------------------------------------
91 # FIXME: ADR
92 #------------------------------------------------------------------------------
93
94 #------------------------------------------------------------------------------
95 # AND (immediate)
96 #------------------------------------------------------------------------------
97 # CHECK: and r2, r5, #1044480
98 # CHECK: ands r3, r12, #15
99 # CHECK: and r1, r1, #255
100
101 0x05 0xf4 0x7f 0x22
102 0x1c 0xf0 0x0f 0x03
103 0x01 0xf0 0xff 0x01
104
105
106 #------------------------------------------------------------------------------
107 # AND (register)
108 #------------------------------------------------------------------------------
109 # CHECK: and.w r4, r9, r8
110 # CHECK: and.w r1, r4, r8, asr #3
111 # CHECK: ands.w r2, r1, r7, lsl #1
112 # CHECK: ands.w r4, r5, r2, lsr #20
113 # CHECK: and.w r9, r12, r1, ror #17
114
115 0x09 0xea 0x08 0x04
116 0x04 0xea 0xe8 0x01
117 0x11 0xea 0x47 0x02
118 0x15 0xea 0x12 0x54
119 0x0c 0xea 0x71 0x49
120
121 #------------------------------------------------------------------------------
122 # ASR (immediate)
123 #------------------------------------------------------------------------------
124 # CHECK: asr.w r2, r3, #12
125 # CHECK: asrs.w r8, r3, #32
126 # CHECK: asrs.w r2, r3, #1
127 # CHECK: asr.w r2, r3, #4
128 # CHECK: asrs.w r2, r12, #15
129
130 # CHECK: asr.w r3, r3, #19
131 # CHECK: asrs.w r8, r8, #2
132 # CHECK: asrs.w r7, r7, #5
133 # CHECK: asr.w r12, r12, #21
134
135 0x4f 0xea 0x23 0x32
136 0x5f 0xea 0x23 0x08
137 0x5f 0xea 0x63 0x02
138 0x4f 0xea 0x23 0x12
139 0x5f 0xea 0xec 0x32
140
141 0x4f 0xea 0xe3 0x43
142 0x5f 0xea 0xa8 0x08
143 0x5f 0xea 0x67 0x17
144 0x4f 0xea 0x6c 0x5c
145
146
147 #------------------------------------------------------------------------------
148 # ASR (register)
149 #------------------------------------------------------------------------------
150 # CHECK: asr.w r3, r4, r2
151 # CHECK: asr.w r1, r1, r2
152 # CHECK: asrs.w r3, r4, r8
153
154 0x44 0xfa 0x02 0xf3
155 0x41 0xfa 0x02 0xf1
156 0x54 0xfa 0x08 0xf3
157
158 #------------------------------------------------------------------------------
159 # B
160 #------------------------------------------------------------------------------
161 # CHECK: bmi.w   #-183396
162
163 0x13 0xf5 0xce 0xa9
164
165
166 #------------------------------------------------------------------------------
167 # BFC
168 #------------------------------------------------------------------------------
169 # CHECK: bfc r5, #3, #17
170 # CHECK: it lo
171 # CHECK: bfclo r5, #3, #17
172
173 0x6f 0xf3 0xd3 0x05
174 0x38 0xbf
175 0x6f 0xf3 0xd3 0x05
176
177
178 #------------------------------------------------------------------------------
179 # BFI
180 #------------------------------------------------------------------------------
181 # CHECK: bfi r5, r2, #3, #17
182 # CHECK: it ne
183 # CHECK: bfine r5, r2, #3, #17
184
185 0x62 0xf3 0xd3 0x05
186 0x18 0xbf
187 0x62 0xf3 0xd3 0x05
188
189
190 #------------------------------------------------------------------------------
191 # BIC
192 #------------------------------------------------------------------------------
193 # CHECK: bic r10, r1, #15
194 # CHECK: bic.w r12, r3, r6
195 # CHECK: bic.w r11, r2, r6, lsl #12
196 # CHECK: bic.w r8, r4, r1, lsr #11
197 # CHECK: bic.w r7, r5, r7, lsr #15
198 # CHECK: bic.w r6, r7, r9, asr #32
199 # CHECK: bic.w r5, r6, r8, ror #1
200
201 # CHECK: bic r1, r1, #15
202 # CHECK: bic.w r1, r1, r1
203 # CHECK: bic.w r4, r4, r2, lsl #31
204 # CHECK: bic.w r6, r6, r3, lsr #12
205 # CHECK: bic.w r7, r7, r4, lsr #7
206 # CHECK: bic.w r8, r8, r5, asr #15
207 # CHECK: bic.w r12, r12, r6, ror #29
208
209 0x21 0xf0 0x0f 0x0a
210 0x23 0xea 0x06 0x0c
211 0x22 0xea 0x06 0x3b
212 0x24 0xea 0xd1 0x28
213 0x25 0xea 0xd7 0x37
214 0x27 0xea 0x29 0x06
215 0x26 0xea 0x78 0x05
216
217 0x21 0xf0 0x0f 0x01
218 0x21 0xea 0x01 0x01
219 0x24 0xea 0xc2 0x74
220 0x26 0xea 0x13 0x36
221 0x27 0xea 0xd4 0x17
222 0x28 0xea 0xe5 0x38
223 0x2c 0xea 0x76 0x7c
224
225
226 #------------------------------------------------------------------------------
227 # BXJ
228 #------------------------------------------------------------------------------
229 # CHECK: bxj r5
230 # CHECK: it ne
231 # CHECK: bxjne r7
232
233 0xc5 0xf3 0x00 0x8f
234 0x18 0xbf
235 0xc7 0xf3 0x00 0x8f
236
237
238 #------------------------------------------------------------------------------
239 # CBZ/CBNZ
240 #------------------------------------------------------------------------------
241 # CHECK: cbnz    r7, #6
242 # CHECK: cbnz    r7, #12
243
244 0x1f 0xb9
245 0x37 0xb9
246
247
248 #------------------------------------------------------------------------------
249 # IT
250 #------------------------------------------------------------------------------
251 # Test encodings of a few full IT blocks, not just the IT instruction
252
253 # CHECK: iteet eq
254 # CHECK: addeq r0, r1, r2
255 # CHECK: nopne
256 # CHECK: subne r5, r6, r7
257 # CHECK: addeq r1, r2, #4
258
259 0x0d 0xbf
260 0x88 0x18
261 0x00 0xbf
262 0xf5 0x1b
263 0x11 0x1d
264
265 # CHECK: ittee ls
266 # CHECK: addls r0, r1, r2
267 # CHECK: nopls
268 # CHECK: subhi r5, r6, r7
269 # CHECK: addhi r1, r2, #4
270
271 0x99 0xbf
272 0x88 0x18
273 0x00 0xbf
274 0xf5 0x1b
275 0x11 0x1d