arm_instructions.s revision 9dec507ecb212a7c94659e9b5a9da66cb4b39ea3
1@ RUN: llvm-mc -mcpu=cortex-a8 -triple arm-unknown-unknown -show-encoding %s | FileCheck %s
2
3@ CHECK: nop
4@ CHECK: encoding: [0x00,0xf0,0x20,0xe3]
5        nop
6
7@ CHECK: nopeq
8@ CHECK: encoding: [0x00,0xf0,0x20,0x03]
9        nopeq
10
11@ CHECK: trap
12@ CHECK: encoding: [0xfe,0xde,0xff,0xe7]
13        trap
14
15@ CHECK: bx	lr
16@ CHECK: encoding: [0x1e,0xff,0x2f,0xe1]
17        bx lr
18
19@ CHECK: vqdmull.s32	q8, d17, d16
20@ CHECK: encoding: [0xa0,0x0d,0xe1,0xf2]
21        vqdmull.s32     q8, d17, d16
22
23@ CHECK: ldmia r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8]
24@ CHECK: ldmia r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8]
25@ CHECK: ldmib r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe9]
26@ CHECK: ldmda r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x12,0xe8]
27@ CHECK: ldmdb r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x12,0xe9]
28@ CHECK: ldmia r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8]
29        ldm       r2, {r1,r3-r6,sp}
30        ldmia     r2, {r1,r3-r6,sp}
31        ldmib     r2, {r1,r3-r6,sp}
32        ldmda     r2, {r1,r3-r6,sp}
33        ldmdb     r2, {r1,r3-r6,sp}
34        ldmfd     r2, {r1,r3-r6,sp}
35
36@ CHECK: stmia r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x82,0xe8]
37@ CHECK: stmia r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x82,0xe8]
38@ CHECK: stmib r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x82,0xe9]
39@ CHECK: stmda r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x02,0xe8]
40@ CHECK: stmdb r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x02,0xe9]
41@ CHECK: stmdb r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x02,0xe9]
42        stm       r2, {r1,r3-r6,sp}
43        stmia     r2, {r1,r3-r6,sp}
44        stmib     r2, {r1,r3-r6,sp}
45        stmda     r2, {r1,r3-r6,sp}
46        stmdb     r2, {r1,r3-r6,sp}
47        stmfd     r2, {r1,r3-r6,sp}
48
49@ CHECK: ldmia r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xb2,0xe8]
50@ CHECK: ldmib r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xb2,0xe9]
51@ CHECK: ldmda r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x32,0xe8]
52@ CHECK: ldmdb r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x32,0xe9]
53        ldmia     r2!, {r1,r3-r6,sp}
54        ldmib     r2!, {r1,r3-r6,sp}
55        ldmda     r2!, {r1,r3-r6,sp}
56        ldmdb     r2!, {r1,r3-r6,sp}
57
58@ CHECK: stmia r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa2,0xe8]
59@ CHECK: stmib r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa2,0xe9]
60@ CHECK: stmda r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x22,0xe8]
61@ CHECK: stmdb r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x22,0xe9]
62        stmia     r2!, {r1,r3-r6,sp}
63        stmib     r2!, {r1,r3-r6,sp}
64        stmda     r2!, {r1,r3-r6,sp}
65        stmdb     r2!, {r1,r3-r6,sp}
66
67@ CHECK: and	r1, r2, r3 @ encoding: [0x03,0x10,0x02,0xe0]
68        and r1,r2,r3
69
70@ FIXME: This is wrong, we are dropping the 's' for now.
71@ CHECK-FIXME: ands	r1, r2, r3 @ encoding: [0x03,0x10,0x12,0xe0]
72        ands r1,r2,r3
73
74@ CHECK: eor	r1, r2, r3 @ encoding: [0x03,0x10,0x22,0xe0]
75        eor r1,r2,r3
76
77@ FIXME: This is wrong, we are dropping the 's' for now.
78@ CHECK-FIXME: eors	r1, r2, r3 @ encoding: [0x03,0x10,0x32,0xe0]
79        eors r1,r2,r3
80
81@ CHECK: sub	r1, r2, r3 @ encoding: [0x03,0x10,0x42,0xe0]
82        sub r1,r2,r3
83
84@ FIXME: This is wrong, we are dropping the 's' for now.
85@ CHECK-FIXME: subs	r1, r2, r3 @ encoding: [0x03,0x10,0x52,0xe0]
86        subs r1,r2,r3
87
88@ CHECK: add	r1, r2, r3 @ encoding: [0x03,0x10,0x82,0xe0]
89        add r1,r2,r3
90
91@ FIXME: This is wrong, we are dropping the 's' for now.
92@ CHECK-FIXME: adds	r1, r2, r3 @ encoding: [0x03,0x10,0x92,0xe0]
93        adds r1,r2,r3
94
95@ CHECK: adc	r1, r2, r3 @ encoding: [0x03,0x10,0xa2,0xe0]
96        adc r1,r2,r3
97
98@ CHECK: sbc	r1, r2, r3 @ encoding: [0x03,0x10,0xc2,0xe0]
99        sbc r1,r2,r3
100
101@ CHECK: orr	r1, r2, r3 @ encoding: [0x03,0x10,0x82,0xe1]
102        orr r1,r2,r3
103
104@ FIXME: This is wrong, we are dropping the 's' for now.
105@ CHECK-FIXME: orrs	r1, r2, r3 @ encoding: [0x03,0x10,0x92,0xe1]
106        orrs r1,r2,r3
107
108@ CHECK: bic	r1, r2, r3 @ encoding: [0x03,0x10,0xc2,0xe1]
109        bic r1,r2,r3
110
111@ FIXME: This is wrong, we are dropping the 's' for now.
112@ CHECK-FIXME: bics	r1, r2, r3 @ encoding: [0x03,0x10,0xd2,0xe1]
113        bics r1,r2,r3
114
115@ CHECK: mov	r1, r2 @ encoding: [0x02,0x10,0xa0,0xe1]
116        mov r1,r2
117
118@ CHECK: mvn	r1, r2 @ encoding: [0x02,0x10,0xe0,0xe1]
119        mvn r1,r2
120
121@ FIXME: This is wrong, we are dropping the 's' for now.
122@ CHECK-FIXME: mvns	r1, r2 @ encoding: [0x02,0x10,0xf0,0xe1]
123        mvns r1,r2
124
125@ CHECK: rsb	r1, r2, r3 @ encoding: [0x03,0x10,0x62,0xe0]
126        rsb r1,r2,r3
127
128@ CHECK: rsc	r1, r2, r3 @ encoding: [0x03,0x10,0xe2,0xe0]
129        rsc r1,r2,r3
130
131@ FIXME: This is broken, CCOut operands don't work correctly when their presence
132@ may depend on flags.
133@ CHECK-FIXME:: mlas	r1, r2, r3, r4 @ encoding: [0x92,0x43,0x31,0xe0]
134@        mlas r1,r2,r3,r4
135
136@ CHECK: bfi  r0, r0, #5, #7 @ encoding: [0x90,0x02,0xcb,0xe7]
137        bfi  r0, r0, #5, #7
138
139@ CHECK: bkpt  #10 @ encoding: [0x7a,0x00,0x20,0xe1]
140        bkpt  #10
141
142@ CHECK: isb sy @ encoding: [0x6f,0xf0,0x7f,0xf5]
143        isb
144@ CHECK: mrs  r8, cpsr @ encoding: [0x00,0x80,0x0f,0xe1]
145        mrs  r8, cpsr
146
147@ CHECK: mcr  p7, #1, r5, c1, c1, #4 @ encoding: [0x91,0x57,0x21,0xee]
148        mcr  p7, #1, r5, c1, c1, #4
149@ CHECK: mrc  p14, #0, r1, c1, c2, #4 @ encoding: [0x92,0x1e,0x11,0xee]
150        mrc  p14, #0, r1, c1, c2, #4
151@ CHECK: mcrr  p7, #1, r5, r4, c1 @ encoding: [0x11,0x57,0x44,0xec]
152        mcrr  p7, #1, r5, r4, c1
153@ CHECK: mrrc  p7, #1, r5, r4, c1 @ encoding: [0x11,0x57,0x54,0xec]
154        mrrc  p7, #1, r5, r4, c1
155
156@ CHECK: mcr2  p7, #1, r5, c1, c1, #4 @ encoding: [0x91,0x57,0x21,0xfe]
157        mcr2  p7, #1, r5, c1, c1, #4
158@ CHECK: mrc2  p14, #0, r1, c1, c2, #4 @ encoding: [0x92,0x1e,0x11,0xfe]
159        mrc2  p14, #0, r1, c1, c2, #4
160@ CHECK: mcrr2  p7, #1, r5, r4, c1 @ encoding: [0x11,0x57,0x44,0xfc]
161        mcrr2  p7, #1, r5, r4, c1
162@ CHECK: mrrc2  p7, #1, r5, r4, c1 @ encoding: [0x11,0x57,0x54,0xfc]
163        mrrc2  p7, #1, r5, r4, c1
164
165@ CHECK: cdp  p7, #1, c1, c1, c1, #4 @ encoding: [0x81,0x17,0x11,0xee]
166        cdp  p7, #1, c1, c1, c1, #4
167@ CHECK: cdp2  p7, #1, c1, c1, c1, #4 @ encoding: [0x81,0x17,0x11,0xfe]
168        cdp2  p7, #1, c1, c1, c1, #4
169
170@ CHECK: qadd  r1, r2, r3 @ encoding: [0x52,0x10,0x03,0xe1]
171        qadd  r1, r2, r3
172
173@ CHECK: qsub  r1, r2, r3 @ encoding: [0x52,0x10,0x23,0xe1]
174        qsub  r1, r2, r3
175
176@ CHECK: qdadd  r1, r2, r3 @ encoding: [0x52,0x10,0x43,0xe1]
177        qdadd  r1, r2, r3
178
179@ CHECK: qdsub  r1, r2, r3 @ encoding: [0x52,0x10,0x63,0xe1]
180        qdsub  r1, r2, r3
181
182@ CHECK: wfe @ encoding: [0x02,0xf0,0x20,0xe3]
183        wfe
184
185@ CHECK: wfi @ encoding: [0x03,0xf0,0x20,0xe3]
186        wfi
187
188@ CHECK: yield @ encoding: [0x01,0xf0,0x20,0xe3]
189        yield
190
191@ CHECK: nop @ encoding: [0x00,0xf0,0x20,0xe3]
192        nop
193
194@ CHECK: cpsie  aif @ encoding: [0xc0,0x01,0x08,0xf1]
195        cpsie  aif
196
197@ CHECK: cps  #15 @ encoding: [0x0f,0x00,0x02,0xf1]
198        cps  #15
199
200@ CHECK: cpsie  if, #10 @ encoding: [0xca,0x00,0x0a,0xf1]
201        cpsie  if, #10
202
203@ CHECK: msr  cpsr_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
204        msr  apsr, r0
205
206@ CHECK: msr  cpsr_s, r0 @ encoding: [0x00,0xf0,0x24,0xe1]
207        msr  apsr_g, r0
208
209@ CHECK: msr  cpsr_f, r0 @ encoding: [0x00,0xf0,0x28,0xe1]
210        msr  apsr_nzcvq, r0
211
212@ CHECK: msr  cpsr_fs, r0 @ encoding: [0x00,0xf0,0x2c,0xe1]
213        msr  apsr_nzcvqg, r0
214
215@ CHECK: msr  cpsr_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
216        msr  cpsr_fc, r0
217
218@ CHECK: msr  cpsr_c, r0 @ encoding: [0x00,0xf0,0x21,0xe1]
219        msr  cpsr_c, r0
220
221@ CHECK: msr  cpsr_x, r0 @ encoding: [0x00,0xf0,0x22,0xe1]
222        msr  cpsr_x, r0
223
224@ CHECK: msr  cpsr_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
225        msr  cpsr_fc, r0
226
227@ CHECK: msr  cpsr_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
228        msr  cpsr_all, r0
229
230@ CHECK: msr  cpsr_fsx, r0 @ encoding: [0x00,0xf0,0x2e,0xe1]
231        msr  cpsr_fsx, r0
232
233@ CHECK: msr  spsr_fc, r0 @ encoding: [0x00,0xf0,0x69,0xe1]
234        msr  spsr_fc, r0
235
236@ CHECK: msr  spsr_fsxc, r0 @ encoding: [0x00,0xf0,0x6f,0xe1]
237        msr  spsr_fsxc, r0
238
239@ CHECK: msr  cpsr_fsxc, r0 @ encoding: [0x00,0xf0,0x2f,0xe1]
240        msr  cpsr_fsxc, r0
241
242@ CHECK: add	r1, r2, r3, lsl r4      @ encoding: [0x13,0x14,0x82,0xe0]
243  add r1, r2, r3, lsl r4
244
245@ CHECK: strexb  r0, r1, [r2] @ encoding: [0x91,0x0f,0xc2,0xe1]
246        strexb  r0, r1, [r2]
247
248@ CHECK: strexh  r0, r1, [r2] @ encoding: [0x91,0x0f,0xe2,0xe1]
249        strexh  r0, r1, [r2]
250
251@ CHECK: strex  r0, r1, [r2] @ encoding: [0x91,0x0f,0x82,0xe1]
252        strex  r0, r1, [r2]
253
254@ CHECK: strexd  r0, r2, r3, [r1] @ encoding: [0x92,0x0f,0xa1,0xe1]
255        strexd  r0, r2, r3, [r1]
256
257@ CHECK: ldrexb  r0, [r0] @ encoding: [0x9f,0x0f,0xd0,0xe1]
258        ldrexb  r0, [r0]
259
260@ CHECK: ldrexh  r0, [r0] @ encoding: [0x9f,0x0f,0xf0,0xe1]
261        ldrexh  r0, [r0]
262
263@ CHECK: ldrex  r0, [r0] @ encoding: [0x9f,0x0f,0x90,0xe1]
264        ldrex  r0, [r0]
265
266@ CHECK: ldrexd  r0, r1, [r0] @ encoding: [0x9f,0x0f,0xb0,0xe1]
267        ldrexd  r0, r1, [r0]
268
269@ CHECK: ssat16  r0, #7, r0 @ encoding: [0x30,0x0f,0xa6,0xe6]
270        ssat16  r0, #7, r0
271
272