2011-05-31 Paul Brook <paul@codesourcery.com>
[deliverable/binutils-gdb.git] / gas / testsuite / gas / arm / sp-pc-validations-bad-t.s
CommitLineData
5be8be5d
DG
1.syntax unified
2.thumb
3
4.macro it_test opcode operands:vararg
5itt eq
6\opcode\()eq r15, \operands
7moveq r0, r0
8.endm
9
10.macro it_testw opcode operands:vararg
11itt eq
12\opcode\()eq.w r15, \operands
13moveq r0, r0
14.endm
15
16.macro LOAD operands:vararg
17it_test ldr, \operands
18.endm
19
20.macro LOADw operands:vararg
21it_testw ldr, \operands
22.endm
23
24@ Loads ===============================================================
25
26@ LDR (register)
27LOAD [r0]
28LOAD [r0,#0]
29LOAD [sp]
30LOAD [sp,#0]
31LOADw [r0]
32LOADw [r0,#0]
33LOAD [r0,#-4]
34LOAD [r0],#4
35LOAD [r0,#0]!
36
37@ LDR (literal)
38LOAD label
39LOADw label
40LOADw [pc, #-0]
41
42@ LDR (register)
43LOAD [r0, r1]
44LOADw [r0, r1]
45LOADw [r0, r1, LSL #2]
46
47@ LDRB (immediate, Thumb)
48ldrb pc, [r0,#4] @ low reg
49@ldrb r0, [pc,#4] @ ALLOWED!
50ldrb.w sp, [r0,#4] @ Unpredictable
51ldrb.w pc, [r0,#4] @ => PLD
52ldrb pc, [r0, #-4] @ => PLD
53@ LDRB<c><q> <Rt>, [<Rn>, #+<imm>] => See LDRBT
54ldrb pc, [r0],#4 @ BadReg
55ldrb sp, [r0],#4 @ ditto
56ldrb pc,[r0,#4]! @ ditto
57ldrb sp,[r0,#4]! @ ditto
58
59@ LDRB (literal)
60ldrb pc,label @ => PLD
61ldrb pc,[PC,#-0] @ => PLD (special case)
62ldrb sp,label @ Unpredictable
63ldrb sp,[PC,#-0] @ ditto
64
65@ LDRB (register)
66ldrb pc,[r0,r1] @ low reg
67ldrb r0,[pc,r1] @ ditto
68ldrb r0,[r1,pc] @ ditto
69ldrb.w pc,[r0,r1,LSL #1] @ => PLD
70ldrb.w sp,[r0,r1] @ Unpredictable
71ldrb.w r2,[r0,pc,LSL #2] @ BadReg
72ldrb.w r2,[r0,sp,LSL #2] @ ditto
73
74@ LDRBT
75ldrbt pc, [r0, #4] @ BadReg
76ldrbt sp, [r0, #4] @ ditto
77
78@ LDRD (immediate)
79ldrd pc, r0, [r1] @ BadReg
80ldrd sp, r0, [r1] @ ditto
81ldrd r0, pc, [r1] @ ditto
82ldrd r0, sp, [r1] @ ditto
83ldrd pc, r0, [r1], #4 @ ditto
84ldrd sp, r0, [r1], #4 @ ditto
85ldrd r0, pc, [r1], #4 @ ditto
86ldrd r0, sp, [r1], #4 @ ditto
87ldrd pc, r0, [r1, #4]! @ ditto
88ldrd sp, r0, [r1, #4]! @ ditto
89ldrd r0, pc, [r1, #4]! @ ditto
90ldrd r0, sp, [r1, #4]! @ ditto
91
92@ LDRD (literal)
93ldrd pc, r0, label @ BadReg
94ldrd sp, r0, label @ ditto
95ldrd r0, pc, label @ ditto
96ldrd r0, sp, label @ ditto
97ldrd pc, r0, [pc, #-0] @ ditto
98ldrd sp, r0, [pc, #-0] @ ditto
99ldrd r0, pc, [pc, #-0] @ ditto
100ldrd r0, sp, [pc, #-0] @ ditto
101
102@ LDRD (register): ARM only
103
104@ LDREX/B/D/H
105ldrex pc, [r0] @ BadReg
106ldrex sp, [r0] @ ditto
107ldrex r0, [pc] @ Unpredictable
108ldrexb pc, [r0] @ BadReg
109ldrexb sp, [r0] @ ditto
110ldrexb r0, [pc] @ Unpredictable
111ldrexd pc, r0, [r1] @ BadReg
112ldrexd sp, r0, [r1] @ ditto
113ldrexd r0, pc, [r1] @ ditto
114ldrexd r0, sp, [r1] @ ditto
115ldrexd r0, r1, [pc] @ Unpredictable
116ldrexh pc, [r0] @ BadReg
117ldrexh sp, [r0] @ ditto
118ldrexh r0, [pc] @ Unpredictable
119
120@ LDRH (immediate)
121ldrh pc, [r0] @ low reg
122ldrh pc, [r0, #4] @ ditto
123@ldrh r0, [pc] @ ALLOWED!
124@ldrh r0, [pc, #4] @ ditto
125ldrh.w pc, [r0] @ => Unallocated memory hints
126ldrh.w pc, [r0, #4] @ ditto
127ldrh.w sp, [r0] @ Unpredictable
128ldrh.w sp, [r0, #4] @ ditto
129ldrh pc, [r0, #-3] @ => Unallocated memory hint
130@ LDRH<c><q> <Rt>, [<Rn>, #+<imm>] => See LDRHT
131ldrh pc,[r0],#4 @ BadReg
132ldrh sp,[r0],#4 @ ditto
133ldrh pc,[r0,#4]! @ ditto
134ldrh sp,[r0,#4]! @ ditto
135
136@ LDRH (literal)
137ldrh pc, label @ Unallocated memory hint
138ldrh pc, [pc, #-0] @ ditto
139ldrh sp, label @ Unpredictable
140ldrh sp, [pc, #-0] @ ditto
141
142@ LDRH (register)
143ldrh pc, [r0, r1] @ low reg
144ldrh r0, [pc, r1] @ ditto
145ldrh r0, [r1, pc] @ ditto
146ldrh.w pc,[r0,r1,LSL #1] @ => Unallocated memory hints
147ldrh.w sp,[r0,r1,LSL #1] @ Unpredictable
148ldrh.w r2,[r0,pc,LSL #1] @ ditto
149ldrh.w r2,[r0,sp,LSL #1] @ ditto
150
151@ LDRHT
152ldrht pc, [r0, #4] @ BadReg
153ldrht sp, [r0, #4] @ ditto
154
155@ LDRSB (immediate)
156ldrsb pc, [r0, #4] @ => PLI
157@ldrsb r0, [pc, #4] => LDRSB (literal)
158ldrsb sp, [r0, #4] @ Unpredictable
159ldrsb pc, [r0, #-4] @ => PLI
160ldrsb sp,[r0,#-4] @ BadReg
161ldrsb pc,[r0],#4 @ ditto
162ldrsb sp,[r0],#4 @ ditto
163ldrsb pc,[r0,#4]! @ ditto
164ldrsb sp,[r0,#4]! @ ditto
165
166@ LDRSB (literal)
167ldrsb pc, label @ => PLI
168ldrsb pc, [pc, #-0] @ => PLI
169ldrsb sp, label @ Unpredictable
170ldrsb sp, [pc, #-0] @ ditto
171
172@ LDRSB (register)
173ldrsb pc, [r0, r1] @ low reg
174ldrsb r0, [pc, r1] @ ditto
175ldrsb r0, [r1, pc] @ ditto
176ldrsb.w pc, [r0, r1, LSL #2] @ => PLI
177@ldrsb.w r0, [pc, r0, LSL #2] => LDRSB (literal)
178ldrsb.w sp, [r0, r1, LSL #2] @ Unpredictable
179ldrsb.w r2, [r0, pc, LSL #2] @ ditto
180ldrsb.w r2, [r0, sp, LSL #2] @ ditto
181
182@ LDRSBT
183@ldrsbt r0, [pc, #4] => LDRSB (literal)
184ldrsbt pc, [r0, #4] @ BadReg
185ldrsbt sp, [r0, #4] @ ditto
186
187@ LDRSH (immediate)
188@ldrsh r0,[pc,#4] => LDRSH (literal)
189ldrsh pc,[r0,#4] @ => Unallocated memory hints
190ldrsh sp,[r0,#4] @ Unpredictable
191ldrsh pc, [r0, #-4] @ => Unallocated memory hints
192ldrsh pc,[r0],#4 @ BadReg
193ldrsh pc,[r0,#4]! @ ditto
194ldrsh sp,[r0,#-4] @ ditto
195ldrsh sp,[r0],#4 @ ditto
196ldrsh sp,[r0,#4]! @ ditto
197
198@ LDRSH (literal)
199ldrsh pc, label @ => Unallocated memory hints
200ldrsh sp, label @ Unpredictable
201ldrsh sp, [pc,#-0] @ ditto
202
203@ LDRSH (register)
204ldrsh pc,[r0,r1] @ low reg
205ldrsh r0,[pc,r1] @ ditto
206ldrsh r0,[r1,pc] @ ditto
207@ldrsh.w r0,[pc,r1,LSL #3] => LDRSH (literal)
208ldrsh.w pc,[r0,r1,LSL #3] @ => Unallocated memory hints
209ldrsh.w sp,[r0,r1,LSL #3] @ Unpredictable
210ldrsh.w r0,[r1,sp,LSL #3] @ BadReg
211ldrsh.w r0,[r1,pc,LSL #3] @ ditto
212
213@ LDRSHT
214@ldrsht r0,[pc,#4] => LDRSH (literal)
215ldrsht pc,[r0,#4] @ BadReg
216ldrsht sp,[r0,#4] @ ditto
217
218@ LDRT
219@ldrt r0,[pc,#4] => LDR (literal)
220ldrt pc,[r0,#4] @ BadReg
221ldrt sp,[r0,#4] @ ditto
222
223@ Stores ==============================================================
224
225@ STR (immediate, Thumb)
226str pc, [r0, #4] @ Unpredictable
227str.w r0, [pc, #4] @ Undefined
228str r0, [pc, #-4] @ ditto
229str r0, [pc], #4 @ ditto
230str r0, [pc, #4]! @ ditto
231
232@ STR (register)
233str.w r0,[pc,r1] @ Undefined
234str.w r0,[pc,r1,LSL #2] @ ditto
235@str.w pc,[r0,r1{,LSL #<imm2>}] @ Unpredictable
236@str.w r1,[r0,sp{,LSL #<imm2>}] @ ditto
237@str.w r1,[r0,pc{,LSL #<imm2>}] @ ditto
238
239@ STRB (immediate, Thumb)
240strb.w r0,[pc,#4] @ Undefined
241strb.w pc,[r0,#4] @ Unpredictable
242strb.w sp,[r0,#4] @ ditto
243strb r0,[pc,#-4] @ Undefined
244strb r0,[pc],#4 @ ditto
245strb r0,[pc,#4]! @ ditto
246strb pc,[r0,#-4] @ Unpredictable
247strb pc,[r0],#4 @ ditto
248strb pc,[r0,#4]! @ ditto
249strb sp,[r0,#-4] @ ditto
250strb sp,[r0],#4 @ ditto
251strb sp,[r0,#4]! @ ditto
252
253@ STRB (register)
254strb.w r0,[pc,r1] @ Undefined
255strb.w r0,[pc,r1,LSL #2] @ ditto
256strb.w pc,[r0,r1] @ Unpredictable
257strb.w pc,[r0,r1,LSL #2] @ ditto
258strb.w sp,[r0,r1] @ ditto
259strb.w sp,[r0,r1,LSL #2] @ ditto
260strb.w r0,[r1,pc] @ ditto
261strb.w r0,[r1,pc,LSL #2] @ ditto
262strb.w r0,[r1,sp] @ ditto
263strb.w r0,[r1,sp,LSL #2] @ ditto
264
265@ STRBT
266strbt r0,[pc,#4] @ Undefined
267strbt pc,[r0,#4] @ Unpredictable
268strbt sp,[r0,#4] @ ditto
269
270@ STRD (immediate)
271strd r0,r1,[pc,#4] @ Unpredictable
272strd r0,r1,[pc],#4 @ ditto
273strd r0,r1,[pc,#4]! @ ditto
274strd pc,r0,[r1,#4] @ ditto
275strd pc,r0,[r1],#4 @ ditto
276strd pc,r0,[r1,#4]! @ ditto
277strd sp,r0,[r1,#4] @ ditto
278strd sp,r0,[r1],#4 @ ditto
279strd sp,r0,[r1,#4]! @ ditto
280strd r0,pc,[r1,#4] @ ditto
281strd r0,pc,[r1],#4 @ ditto
282strd r0,pc,[r1,#4]! @ ditto
283strd r0,sp,[r1,#4] @ ditto
284strd r0,sp,[r1],#4 @ ditto
285strd r0,sp,[r1,#4]! @ ditto
286
287@ STRD (register)
288@No thumb.
289
290@ STREX
291strex pc,r0,[r1] @ Unpredictable
292strex pc,r0,[r1,#4] @ ditto
293strex sp,r0,[r1] @ ditto
294strex sp,r0,[r1,#4] @ ditto
295strex r0,pc,[r1] @ ditto
296strex r0,pc,[r1,#4] @ ditto
297strex r0,sp,[r1] @ ditto
298strex r0,sp,[r1,#4] @ ditto
299strex r0,r1,[pc] @ ditto
300strex r0,r1,[pc,#4] @ ditto
301
302@ STREXB
303strexb pc,r0,[r1] @ Unpredictable
304strexb sp,r0,[r1] @ ditto
305strexb r0,pc,[r1] @ ditto
306strexb r0,sp,[r1] @ ditto
307strexb r0,r1,[pc] @ ditto
308
309@ STREXD
310strexd pc,r0,r1,[r2] @ Unpredictable
311strexd sp,r0,r1,[r2] @ ditto
312strexd r0,pc,r1,[r2] @ ditto
313strexd r0,sp,r1,[r2] @ ditto
314strexd r0,r1,pc,[r2] @ ditto
315strexd r0,r1,sp,[r2] @ ditto
316strexd r0,r1,r2,[pc] @ ditto
317
318@ STREXH
319strexh pc,r0,[r1] @ Unpredictable
320strexh sp,r0,[r1] @ ditto
321strexh r0,pc,[r1] @ ditto
322strexh r0,sp,[r1] @ ditto
323strexh r0,r1,[pc] @ ditto
324
325@ STRH (immediate, Thumb)
326strh.w r0,[pc] @ Undefined
327strh.w r0,[pc,#4] @ ditto
328strh r0,[pc,#-4] @ ditto
329strh r0,[pc],#4 @ ditto
330strh r0,[pc,#4]! @ ditto
331
332@ STRH (register)
333strh.w r0,[pc,r1] @ Undefined
334strh.w r0,[pc,r1,LSL #2] @ ditto
335strh.w pc,[r0,#4] @ Unpredictable
336strh.w pc,[r0] @ ditto
337strh.w sp,[r0,#4] @ ditto
338strh.w sp,[r0] @ ditto
339strh pc,[r0,#-4] @ ditto
340strh pc,[r0],#4 @ ditto
341strh pc,[r0,#4]! @ ditto
342strh sp,[r0,#-4] @ ditto
343strh sp,[r0],#4 @ ditto
344strh sp,[r0,#4]! @ ditto
345strh.w pc,[r0,r1] @ ditto
346strh.w sp,[r0,r1] @ ditto
347strh.w r0,[r1,pc] @ ditto
348strh.w r0,[r1,sp] @ ditto
349strh.w pc,[r0,r1,LSL #2] @ ditto
350strh.w sp,[r0,r1,LSL #2] @ ditto
351strh.w r0,[r1,pc,LSL #2] @ ditto
352strh.w r0,[r1,sp,LSL #2] @ ditto
353
354@ STRHT
355strht r0,[pc,#4] @ Undefined
356strht pc,[r0,#4] @ Unpredictable
357strht sp,[pc,#4] @ ditto
358
359@ STRT
360strt r0,[pc,#4] @ Undefined
361strt pc,[r0,#4] @ Unpredictable
362strt sp,[r0,#4] @ ditto
363
364@ ============================================================================
365
366.label:
367ldr r0, [r1]
This page took 0.091656 seconds and 4 git commands to generate.