1# Copyright (C) 2003 Free Software Foundation, Inc.
2
3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
5# the Free Software Foundation; either version 2 of the License, or
6# (at your option) any later version.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11# GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with this program; if not, write to the Free Software
15# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
16
17# Please email any bugs, comments, and/or additions to this file to:
18# bug-gdb@prep.ai.mit.edu
19
20# This file was written by Michael Snyder (msnyder@redhat.com)
21
22if $tracelevel then {
23	strace $tracelevel
24}
25
26if ![istarget "h8300*-*-*"] {
27    verbose "Tests ignored for all but h8300s based targets."
28    return
29}
30
31set prms_id 0
32set bug_id 0
33
34set testfile "t07_ari3"
35set srcfile ${srcdir}/${subdir}/${testfile}.s
36set objfile ${objdir}/${subdir}/${testfile}.o
37set binfile ${objdir}/${subdir}/${testfile}.x
38
39set asm-flags "";
40set link-flags "-m h8300sxelf";
41
42
43if {[target_assemble $srcfile $objfile "${asm-flags}"] != ""} then {
44     gdb_suppress_entire_file "Testcase assembly failed, so all tests in this file will automatically fail."
45}
46
47if {[target_link $objfile $binfile "${link-flags}"] != ""} then {
48     gdb_suppress_entire_file "Testcase link failed, so all tests in this file will automatically fail."
49}
50
51gdb_start
52gdb_reinitialize_dir $srcdir/$subdir
53gdb_load $binfile
54
55gdb_test "x /i _start" "neg.b\tr1h" \
56	"neg.b r1h"
57gdb_test "x" "neg.b\t@er1" \
58	"neg.b @er1"
59gdb_test "x" "neg.b\t@\\(0x3(:2|),er1\\)" \
60	"neg.b @(0x3:2,er1)"
61gdb_test "x" "neg.b\t@er1\\+" \
62	"neg.b @er1+"
63gdb_test "x" "neg.b\t@-er1" \
64	"neg.b @-er1"
65gdb_test "x" "neg.b\t@\\+er1" \
66	"neg.b @+er1"
67gdb_test "x" "neg.b\t@er1-" \
68	"neg.b @er1-"
69gdb_test "x" "neg.b\t@\\(0x1234(:16|),er1\\)" \
70	"neg.b @(0x1234:16,er1)"
71gdb_test "x" "neg.b\t@\\(0x12345678(:32|),er1\\)" \
72	"neg.b @(0x12345678:32,er1)"
73gdb_test "x" "neg.b\t@\\(0x1234(:16|),r2l.b\\)" \
74	"neg.b @(0x1234:16,r2l.b)"
75gdb_test "x" "neg.b\t@\\(0x1234(:16|),r2.w\\)" \
76	"neg.b @(0x1234:16,r2.w)"
77gdb_test "x" "neg.b\t@\\(0x1234(:16|),er2.l\\)" \
78	"neg.b @(0x1234:16,er2.l)"
79gdb_test "x" "neg.b\t@\\(0x12345678(:32|),r2l.b\\)" \
80	"neg.b @(0x12345678:32,r2l.b)"
81gdb_test "x" "neg.b\t@\\(0x12345678(:32|),r2.w\\)" \
82	"neg.b @(0x12345678:32,r2.w)"
83gdb_test "x" "neg.b\t@\\(0x12345678(:32|),er2.l\\)" \
84	"neg.b @(0x12345678:32,er2.l)"
85gdb_test "x" "neg.b\t@0x12(:8|)" \
86	"neg.b @0x12:8"
87gdb_test "x" "neg.b\t@0x1234(:16|)" \
88	"neg.b @0x1234:16"
89gdb_test "x" "neg.b\t@0x12345678(:32|)" \
90	"neg.b @0x12345678:32"
91gdb_test "x" "neg.w\tr1" \
92	"neg.w r1"
93gdb_test "x" "neg.w\t@er1" \
94	"neg.w @er1"
95gdb_test "x" "neg.w\t@\\(0x6(:2|),er1\\)" \
96	"neg.w @(0x6:2,er1)"
97gdb_test "x" "neg.w\t@er1\\+" \
98	"neg.w @er1+"
99gdb_test "x" "neg.w\t@-er1" \
100	"neg.w @-er1"
101gdb_test "x" "neg.w\t@\\+er1" \
102	"neg.w @+er1"
103gdb_test "x" "neg.w\t@er1-" \
104	"neg.w @er1-"
105gdb_test "x" "neg.w\t@\\(0x1234(:16|),er1\\)" \
106	"neg.w @(0x1234:16,er1)"
107gdb_test "x" "neg.w\t@\\(0x12345678(:32|),er1\\)" \
108	"neg.w @(0x12345678:32,er1)"
109gdb_test "x" "neg.w\t@\\(0x1234(:16|),r2l.b\\)" \
110	"neg.w @(0x1234:16,r2l.b)"
111gdb_test "x" "neg.w\t@\\(0x1234(:16|),r2.w\\)" \
112	"neg.w @(0x1234:16,r2.w)"
113gdb_test "x" "neg.w\t@\\(0x1234(:16|),er2.l\\)" \
114	"neg.w @(0x1234:16,er2.l)"
115gdb_test "x" "neg.w\t@\\(0x12345678(:32|),r2l.b\\)" \
116	"neg.w @(0x12345678:32,r2l.b)"
117gdb_test "x" "neg.w\t@\\(0x12345678(:32|),r2.w\\)" \
118	"neg.w @(0x12345678:32,r2.w)"
119gdb_test "x" "neg.w\t@\\(0x12345678(:32|),er2.l\\)" \
120	"neg.w @(0x12345678:32,er2.l)"
121gdb_test "x" "neg.w\t@0x1234(:16|)" \
122	"neg.w @0x1234:16"
123gdb_test "x" "neg.w\t@0x12345678(:32|)" \
124	"neg.w @0x12345678:32"
125gdb_test "x" "neg.l\ter1" \
126	"neg.l er1"
127gdb_test "x" "neg.l\t@er1" \
128	"neg.l @er1"
129gdb_test "x" "neg.l\t@\\(0xc(:2|),er1\\)" \
130	"neg.l @(0xc:2,er1)"
131gdb_test "x" "neg.l\t@er1\\+" \
132	"neg.l @er1+"
133gdb_test "x" "neg.l\t@-er1" \
134	"neg.l @-er1"
135gdb_test "x" "neg.l\t@\\+er1" \
136	"neg.l @+er1"
137gdb_test "x" "neg.l\t@er1-" \
138	"neg.l @er1-"
139gdb_test "x" "neg.l\t@\\(0x1234(:16|),er1\\)" \
140	"neg.l @(0x1234:16,er1)"
141gdb_test "x" "neg.l\t@\\(0x12345678(:32|),er1\\)" \
142	"neg.l @(0x12345678:32,er1)"
143gdb_test "x" "neg.l\t@\\(0x1234(:16|),r2l.b\\)" \
144	"neg.l @(0x1234:16,r2l.b)"
145gdb_test "x" "neg.l\t@\\(0x1234(:16|),r2.w\\)" \
146	"neg.l @(0x1234:16,r2.w)"
147gdb_test "x" "neg.l\t@\\(0x1234(:16|),er2.l\\)" \
148	"neg.l @(0x1234:16,er2.l)"
149gdb_test "x" "neg.l\t@\\(0x12345678(:32|),r2l.b\\)" \
150	"neg.l @(0x12345678:32,r2l.b)"
151gdb_test "x" "neg.l\t@\\(0x12345678(:32|),r2.w\\)" \
152	"neg.l @(0x12345678:32,r2.w)"
153gdb_test "x" "neg.l\t@\\(0x12345678(:32|),er2.l\\)" \
154	"neg.l @(0x12345678:32,er2.l)"
155gdb_test "x" "neg.l\t@0x1234(:16|)" \
156	"neg.l @0x1234:16"
157gdb_test "x" "neg.l\t@0x12345678(:32|)" \
158	"neg.l @0x12345678:32"
159gdb_test "x" "tas\t@er1" \
160	"tas @er1"
161gdb_test "x" "extu.w\tr1" \
162	"extu.w r1"
163gdb_test "x" "extu.w\t@er1" \
164	"extu.w @er1"
165gdb_test "x" "extu.w\t@\\(0x6(:2|),er1\\)" \
166	"extu.w @(0x6:2,er1)"
167gdb_test "x" "extu.w\t@er1\\+" \
168	"extu.w @er1+"
169gdb_test "x" "extu.w\t@-er1" \
170	"extu.w @-er1"
171gdb_test "x" "extu.w\t@\\+er1" \
172	"extu.w @+er1"
173gdb_test "x" "extu.w\t@er1-" \
174	"extu.w @er1-"
175gdb_test "x" "extu.w\t@\\(0x1234(:16|),er1\\)" \
176	"extu.w @(0x1234:16,er1)"
177gdb_test "x" "extu.w\t@\\(0x12345678(:32|),er1\\)" \
178	"extu.w @(0x12345678:32,er1)"
179gdb_test "x" "extu.w\t@\\(0x1234(:16|),r2l.b\\)" \
180	"extu.w @(0x1234:16,r2l.b)"
181gdb_test "x" "extu.w\t@\\(0x1234(:16|),r2.w\\)" \
182	"extu.w @(0x1234:16,r2.w)"
183gdb_test "x" "extu.w\t@\\(0x1234(:16|),er2.l\\)" \
184	"extu.w @(0x1234:16,er2.l)"
185gdb_test "x" "extu.w\t@\\(0x12345678(:32|),r2l.b\\)" \
186	"extu.w @(0x12345678:32,r2l.b)"
187gdb_test "x" "extu.w\t@\\(0x12345678(:32|),r2.w\\)" \
188	"extu.w @(0x12345678:32,r2.w)"
189gdb_test "x" "extu.w\t@\\(0x12345678(:32|),er2.l\\)" \
190	"extu.w @(0x12345678:32,er2.l)"
191gdb_test "x" "extu.w\t@0x1234(:16|)" \
192	"extu.w @0x1234:16"
193gdb_test "x" "extu.w\t@0x12345678(:32|)" \
194	"extu.w @0x12345678:32"
195gdb_test "x" "extu.l\ter1" \
196	"extu.l er1"
197gdb_test "x" "extu.l\t@er1" \
198	"extu.l @er1"
199gdb_test "x" "extu.l\t@\\(0xc(:2|),er1\\)" \
200	"extu.l @(0xc:2,er1)"
201gdb_test "x" "extu.l\t@er1\\+" \
202	"extu.l @er1+"
203gdb_test "x" "extu.l\t@-er1" \
204	"extu.l @-er1"
205gdb_test "x" "extu.l\t@\\+er1" \
206	"extu.l @+er1"
207gdb_test "x" "extu.l\t@er1-" \
208	"extu.l @er1-"
209gdb_test "x" "extu.l\t@\\(0x1234(:16|),er1\\)" \
210	"extu.l @(0x1234:16,er1)"
211gdb_test "x" "extu.l\t@\\(0x12345678(:32|),er1\\)" \
212	"extu.l @(0x12345678:32,er1)"
213gdb_test "x" "extu.l\t@\\(0x1234(:16|),r2l.b\\)" \
214	"extu.l @(0x1234:16,r2l.b)"
215gdb_test "x" "extu.l\t@\\(0x1234(:16|),r2.w\\)" \
216	"extu.l @(0x1234:16,r2.w)"
217gdb_test "x" "extu.l\t@\\(0x1234(:16|),er2.l\\)" \
218	"extu.l @(0x1234:16,er2.l)"
219gdb_test "x" "extu.l\t@\\(0x12345678(:32|),r2l.b\\)" \
220	"extu.l @(0x12345678:32,r2l.b)"
221gdb_test "x" "extu.l\t@\\(0x12345678(:32|),r2.w\\)" \
222	"extu.l @(0x12345678:32,r2.w)"
223gdb_test "x" "extu.l\t@\\(0x12345678(:32|),er2.l\\)" \
224	"extu.l @(0x12345678:32,er2.l)"
225gdb_test "x" "extu.l\t@0x1234(:16|)" \
226	"extu.l @0x1234:16"
227gdb_test "x" "extu.l\t@0x12345678(:32|)" \
228	"extu.l @0x12345678:32"
229gdb_test "x" "extu.l\t#2,er1" \
230	"extu.l #2,er1"
231gdb_test "x" "extu.l\t#2,@er1" \
232	"extu.l #2,@er1"
233gdb_test "x" "extu.l\t#2,@\\(0xc(:2|),er1\\)" \
234	"extu.l #2,@(0xc:2,er1)"
235gdb_test "x" "extu.l\t#2,@er1\\+" \
236	"extu.l #2,@er1+"
237gdb_test "x" "extu.l\t#2,@-er1" \
238	"extu.l #2,@-er1"
239gdb_test "x" "extu.l\t#2,@\\+er1" \
240	"extu.l #2,@+er1"
241gdb_test "x" "extu.l\t#2,@er1-" \
242	"extu.l #2,@er1-"
243gdb_test "x" "extu.l\t#2,@\\(0x1234(:16|),er1\\)" \
244	"extu.l #2,@(0x1234:16,er1)"
245gdb_test "x" "extu.l\t#2,@\\(0x12345678(:32|),er1\\)" \
246	"extu.l #2,@(0x12345678:32,er1)"
247gdb_test "x" "extu.l\t#2,@\\(0x1234(:16|),r2l.b\\)" \
248	"extu.l #2,@(0x1234:16,r2l.b)"
249gdb_test "x" "extu.l\t#2,@\\(0x1234(:16|),r2.w\\)" \
250	"extu.l #2,@(0x1234:16,r2.w)"
251gdb_test "x" "extu.l\t#2,@\\(0x1234(:16|),er2.l\\)" \
252	"extu.l #2,@(0x1234:16,er2.l)"
253gdb_test "x" "extu.l\t#2,@\\(0x12345678(:32|),r2l.b\\)" \
254	"extu.l #2,@(0x12345678:32,r2l.b)"
255gdb_test "x" "extu.l\t#2,@\\(0x12345678(:32|),r2.w\\)" \
256	"extu.l #2,@(0x12345678:32,r2.w)"
257gdb_test "x" "extu.l\t#2,@\\(0x12345678(:32|),er2.l\\)" \
258	"extu.l #2,@(0x12345678:32,er2.l)"
259gdb_test "x" "extu.l\t#2,@0x1234(:16|)" \
260	"extu.l #2,@0x1234:16"
261gdb_test "x" "extu.l\t#2,@0x12345678(:32|)" \
262	"extu.l #2,@0x12345678:32"
263gdb_test "x" "exts.w\tr1" \
264	"exts.w r1"
265gdb_test "x" "exts.w\t@er1" \
266	"exts.w @er1"
267gdb_test "x" "exts.w\t@\\(0x6(:2|),er1\\)" \
268	"exts.w @(0x6:2,er1)"
269gdb_test "x" "exts.w\t@er1\\+" \
270	"exts.w @er1+"
271gdb_test "x" "exts.w\t@-er1" \
272	"exts.w @-er1"
273gdb_test "x" "exts.w\t@\\+er1" \
274	"exts.w @+er1"
275gdb_test "x" "exts.w\t@er1-" \
276	"exts.w @er1-"
277gdb_test "x" "exts.w\t@\\(0x1234(:16|),er1\\)" \
278	"exts.w @(0x1234:16,er1)"
279gdb_test "x" "exts.w\t@\\(0x12345678(:32|),er1\\)" \
280	"exts.w @(0x12345678:32,er1)"
281gdb_test "x" "exts.w\t@\\(0x1234(:16|),r2l.b\\)" \
282	"exts.w @(0x1234:16,r2l.b)"
283gdb_test "x" "exts.w\t@\\(0x1234(:16|),r2.w\\)" \
284	"exts.w @(0x1234:16,r2.w)"
285gdb_test "x" "exts.w\t@\\(0x1234(:16|),er2.l\\)" \
286	"exts.w @(0x1234:16,er2.l)"
287gdb_test "x" "exts.w\t@\\(0x12345678(:32|),r2l.b\\)" \
288	"exts.w @(0x12345678:32,r2l.b)"
289gdb_test "x" "exts.w\t@\\(0x12345678(:32|),r2.w\\)" \
290	"exts.w @(0x12345678:32,r2.w)"
291gdb_test "x" "exts.w\t@\\(0x12345678(:32|),er2.l\\)" \
292	"exts.w @(0x12345678:32,er2.l)"
293gdb_test "x" "exts.w\t@0x1234(:16|)" \
294	"exts.w @0x1234:16"
295gdb_test "x" "exts.w\t@0x12345678(:32|)" \
296	"exts.w @0x12345678:32"
297gdb_test "x" "exts.l\ter1" \
298	"exts.l er1"
299gdb_test "x" "exts.l\t@er1" \
300	"exts.l @er1"
301gdb_test "x" "exts.l\t@\\(0xc(:2|),er1\\)" \
302	"exts.l @(0xc:2,er1)"
303gdb_test "x" "exts.l\t@er1\\+" \
304	"exts.l @er1+"
305gdb_test "x" "exts.l\t@-er1" \
306	"exts.l @-er1"
307gdb_test "x" "exts.l\t@\\+er1" \
308	"exts.l @+er1"
309gdb_test "x" "exts.l\t@er1-" \
310	"exts.l @er1-"
311gdb_test "x" "exts.l\t@\\(0x1234(:16|),er1\\)" \
312	"exts.l @(0x1234:16,er1)"
313gdb_test "x" "exts.l\t@\\(0x12345678(:32|),er1\\)" \
314	"exts.l @(0x12345678:32,er1)"
315gdb_test "x" "exts.l\t@\\(0x1234(:16|),r2l.b\\)" \
316	"exts.l @(0x1234:16,r2l.b)"
317gdb_test "x" "exts.l\t@\\(0x1234(:16|),r2.w\\)" \
318	"exts.l @(0x1234:16,r2.w)"
319gdb_test "x" "exts.l\t@\\(0x1234(:16|),er2.l\\)" \
320	"exts.l @(0x1234:16,er2.l)"
321gdb_test "x" "exts.l\t@\\(0x12345678(:32|),r2l.b\\)" \
322	"exts.l @(0x12345678:32,r2l.b)"
323gdb_test "x" "exts.l\t@\\(0x12345678(:32|),r2.w\\)" \
324	"exts.l @(0x12345678:32,r2.w)"
325gdb_test "x" "exts.l\t@\\(0x12345678(:32|),er2.l\\)" \
326	"exts.l @(0x12345678:32,er2.l)"
327gdb_test "x" "exts.l\t@0x1234(:16|)" \
328	"exts.l @0x1234:16"
329gdb_test "x" "exts.l\t@0x12345678(:32|)" \
330	"exts.l @0x12345678:32"
331gdb_test "x" "exts.l\t#2,er1" \
332	"exts.l #2,er1"
333gdb_test "x" "exts.l\t#2,@er1" \
334	"exts.l #2,@er1"
335gdb_test "x" "exts.l\t#2,@\\(0xc(:2|),er1\\)" \
336	"exts.l #2,@(0xc:2,er1)"
337gdb_test "x" "exts.l\t#2,@er1\\+" \
338	"exts.l #2,@er1+"
339gdb_test "x" "exts.l\t#2,@-er1" \
340	"exts.l #2,@-er1"
341gdb_test "x" "exts.l\t#2,@\\+er1" \
342	"exts.l #2,@+er1"
343gdb_test "x" "exts.l\t#2,@er1-" \
344	"exts.l #2,@er1-"
345gdb_test "x" "exts.l\t#2,@\\(0x1234(:16|),er1\\)" \
346	"exts.l #2,@(0x1234:16,er1)"
347gdb_test "x" "exts.l\t#2,@\\(0x12345678(:32|),er1\\)" \
348	"exts.l #2,@(0x12345678:32,er1)"
349gdb_test "x" "exts.l\t#2,@\\(0x1234(:16|),r2l.b\\)" \
350	"exts.l #2,@(0x1234:16,r2l.b)"
351gdb_test "x" "exts.l\t#2,@\\(0x1234(:16|),r2.w\\)" \
352	"exts.l #2,@(0x1234:16,r2.w)"
353gdb_test "x" "exts.l\t#2,@\\(0x1234(:16|),er2.l\\)" \
354	"exts.l #2,@(0x1234:16,er2.l)"
355gdb_test "x" "exts.l\t#2,@\\(0x12345678(:32|),r2l.b\\)" \
356	"exts.l #2,@(0x12345678:32,r2l.b)"
357gdb_test "x" "exts.l\t#2,@\\(0x12345678(:32|),r2.w\\)" \
358	"exts.l #2,@(0x12345678:32,r2.w)"
359gdb_test "x" "exts.l\t#2,@\\(0x12345678(:32|),er2.l\\)" \
360	"exts.l #2,@(0x12345678:32,er2.l)"
361gdb_test "x" "exts.l\t#2,@0x1234(:16|)" \
362	"exts.l #2,@0x1234:16"
363gdb_test "x" "exts.l\t#2,@0x12345678(:32|)" \
364	"exts.l #2,@0x12345678:32"
365