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 "t06_ari2"
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" "addx(.b|)\t#0x12(:8|),r1h" \
56	"addx.b #0x12:8,r1h"
57gdb_test "x" "addx(.b|)\t#0x12(:8|),@er1" \
58	"addx.b #0x12:8,@er1"
59gdb_test "x" "addx(.b|)\t#0x12(:8|),@er1-" \
60	"addx.b #0x12:8,@er1-"
61gdb_test "x" "addx(.b|)\tr3h,r1h" \
62	"addx.b r3h,r1h"
63gdb_test "x" "addx(.b|)\tr3h,@er1" \
64	"addx.b r3h,@er1"
65gdb_test "x" "addx(.b|)\tr3h,@er1-" \
66	"addx.b r3h,@er1-"
67gdb_test "x" "addx(.b|)\t@er3,r1h" \
68	"addx.b @er3,r1h"
69gdb_test "x" "addx(.b|)\t@er3,@er1" \
70	"addx.b @er3,@er1"
71gdb_test "x" "addx(.b|)\t@er3-,r1h" \
72	"addx.b @er3-,r1h"
73gdb_test "x" "addx(.b|)\t@er3-,@er1-" \
74	"addx.b @er3-,@er1-"
75gdb_test "x" "addx.w\t#0x1234(:16|),r1" \
76	"addx.w #0x1234:16,r1"
77gdb_test "x" "addx.w\t#0x1234(:16|),@er1" \
78	"addx.w #0x1234:16,@er1"
79gdb_test "x" "addx.w\t#0x1234(:16|),@er1-" \
80	"addx.w #0x1234:16,@er1-"
81gdb_test "x" "addx.w\tr3,r1" \
82	"addx.w r3,r1"
83gdb_test "x" "addx.w\tr3,@er1" \
84	"addx.w r3,@er1"
85gdb_test "x" "addx.w\tr3,@er1-" \
86	"addx.w r3,@er1-"
87gdb_test "x" "addx.w\t@er3,r1" \
88	"addx.w @er3,r1"
89gdb_test "x" "addx.w\t@er3,@er1" \
90	"addx.w @er3,@er1"
91gdb_test "x" "addx.w\t@er3-,r1" \
92	"addx.w @er3-,r1"
93gdb_test "x" "addx.w\t@er3-,@er1-" \
94	"addx.w @er3-,@er1-"
95gdb_test "x" "addx.l\t#0x12345678(:32|),er1" \
96	"addx.l #0x12345678:32,er1"
97gdb_test "x" "addx.l\t#0x12345678(:32|),@er1" \
98	"addx.l #0x12345678:32,@er1"
99gdb_test "x" "addx.l\t#0x12345678(:32|),@er1-" \
100	"addx.l #0x12345678:32,@er1-"
101gdb_test "x" "addx.l\ter3,er1" \
102	"addx.l er3,er1"
103gdb_test "x" "addx.l\ter3,@er1" \
104	"addx.l er3,@er1"
105gdb_test "x" "addx.l\ter3,@er1-" \
106	"addx.l er3,@er1-"
107gdb_test "x" "addx.l\t@er3,er1" \
108	"addx.l @er3,er1"
109gdb_test "x" "addx.l\t@er3,@er1" \
110	"addx.l @er3,@er1"
111gdb_test "x" "addx.l\t@er3-,er1" \
112	"addx.l @er3-,er1"
113gdb_test "x" "addx.l\t@er3-,@er1-" \
114	"addx.l @er3-,@er1-"
115gdb_test "x" "subx(.b|)\t#0x12(:8|),r1h" \
116	"subx.b #0x12:8,r1h"
117gdb_test "x" "subx(.b|)\t#0x12(:8|),@er1" \
118	"subx.b #0x12:8,@er1"
119gdb_test "x" "subx(.b|)\t#0x12(:8|),@er1-" \
120	"subx.b #0x12:8,@er1-"
121gdb_test "x" "subx(.b|)\tr3h,r1h" \
122	"subx.b r3h,r1h"
123gdb_test "x" "subx(.b|)\tr3h,@er1" \
124	"subx.b r3h,@er1"
125gdb_test "x" "subx(.b|)\tr3h,@er1-" \
126	"subx.b r3h,@er1-"
127gdb_test "x" "subx(.b|)\t@er3,r1h" \
128	"subx.b @er3,r1h"
129gdb_test "x" "subx(.b|)\t@er3,@er1" \
130	"subx.b @er3,@er1"
131gdb_test "x" "subx(.b|)\t@er3-,r1h" \
132	"subx.b @er3-,r1h"
133gdb_test "x" "subx(.b|)\t@er3-,@er1-" \
134	"subx.b @er3-,@er1-"
135gdb_test "x" "subx.w\t#0x1234(:16|),r1" \
136	"subx.w #0x1234:16,r1"
137gdb_test "x" "subx.w\t#0x1234(:16|),@er1" \
138	"subx.w #0x1234:16,@er1"
139gdb_test "x" "subx.w\t#0x1234(:16|),@er1-" \
140	"subx.w #0x1234:16,@er1-"
141gdb_test "x" "subx.w\tr3,r1" \
142	"subx.w r3,r1"
143gdb_test "x" "subx.w\tr3,@er1" \
144	"subx.w r3,@er1"
145gdb_test "x" "subx.w\tr3,@er1-" \
146	"subx.w r3,@er1-"
147gdb_test "x" "subx.w\t@er3,r1" \
148	"subx.w @er3,r1"
149gdb_test "x" "subx.w\t@er3,@er1" \
150	"subx.w @er3,@er1"
151gdb_test "x" "subx.w\t@er3-,r1" \
152	"subx.w @er3-,r1"
153gdb_test "x" "subx.w\t@er3-,@er1-" \
154	"subx.w @er3-,@er1-"
155gdb_test "x" "subx.l\t#0x12345678(:32|),er1" \
156	"subx.l #0x12345678:32,er1"
157gdb_test "x" "subx.l\t#0x12345678(:32|),@er1" \
158	"subx.l #0x12345678:32,@er1"
159gdb_test "x" "subx.l\t#0x12345678(:32|),@er1-" \
160	"subx.l #0x12345678:32,@er1-"
161gdb_test "x" "subx.l\ter3,er1" \
162	"subx.l er3,er1"
163gdb_test "x" "subx.l\ter3,@er1" \
164	"subx.l er3,@er1"
165gdb_test "x" "subx.l\ter3,@er1-" \
166	"subx.l er3,@er1-"
167gdb_test "x" "subx.l\t@er3,er1" \
168	"subx.l @er3,er1"
169gdb_test "x" "subx.l\t@er3,@er1" \
170	"subx.l @er3,@er1"
171gdb_test "x" "subx.l\t@er3-,er1" \
172	"subx.l @er3-,er1"
173gdb_test "x" "subx.l\t@er3-,@er1-" \
174	"subx.l @er3-,@er1-"
175gdb_test "x" "inc(.b|)\tr1h" \
176	"inc.b r1h"
177gdb_test "x" "inc(.w|)\t#1,r1" \
178	"inc.w #1,r1"
179gdb_test "x" "inc(.w|)\t#2,r1" \
180	"inc.w #2,r1"
181gdb_test "x" "inc(.l|)\t#1,er1" \
182	"inc.l #1,er1"
183gdb_test "x" "inc(.l|)\t#2,er1" \
184	"inc.l #2,er1"
185gdb_test "x" "dec(.b|)\tr1h" \
186	"dec.b r1h"
187gdb_test "x" "dec(.w|)\t#1,r1" \
188	"dec.w #1,r1"
189gdb_test "x" "dec(.w|)\t#2,r1" \
190	"dec.w #2,r1"
191gdb_test "x" "dec(.l|)\t#1,er1" \
192	"dec.l #1,er1"
193gdb_test "x" "dec(.l|)\t#2,er1" \
194	"dec.l #2,er1"
195gdb_test "x" "adds(.l|)\t#1,er1" \
196	"adds.l #1,er1"
197gdb_test "x" "adds(.l|)\t#2,er1" \
198	"adds.l #2,er1"
199gdb_test "x" "adds(.l|)\t#4,er1" \
200	"adds.l #4,er1"
201gdb_test "x" "subs(.l|)\t#1,er1" \
202	"subs.l #1,er1"
203gdb_test "x" "subs(.l|)\t#2,er1" \
204	"subs.l #2,er1"
205gdb_test "x" "subs(.l|)\t#4,er1" \
206	"subs.l #4,er1"
207gdb_test "x" "daa(.b|)\tr1h" \
208	"daa.b r1h"
209gdb_test "x" "das(.b|)\tr1h" \
210	"das.b r1h"
211gdb_test "x" "mulxu.b\t#0xf(:4|),r1" \
212	"mulxu.b #0xf:4,r1"
213gdb_test "x" "mulxu.b\tr3h,r1" \
214	"mulxu.b r3h,r1"
215gdb_test "x" "mulxu.w\t#0xf(:4|),er1" \
216	"mulxu.w #0xf:4,er1"
217gdb_test "x" "mulxu.w\tr3,er1" \
218	"mulxu.w r3,er1"
219gdb_test "x" "divxu.b\t#0xf(:4|),r1" \
220	"divxu.b #0xf:4,r1"
221gdb_test "x" "divxu.b\tr3h,r1" \
222	"divxu.b r3h,r1"
223gdb_test "x" "divxu.w\t#0xf(:4|),er1" \
224	"divxu.w #0xf:4,er1"
225gdb_test "x" "divxu.w\tr3,er1" \
226	"divxu.w r3,er1"
227gdb_test "x" "mulxs.b\t#0xf(:4|),r1" \
228	"mulxs.b #0xf:4,r1"
229gdb_test "x" "mulxs.b\tr3h,r1" \
230	"mulxs.b r3h,r1"
231gdb_test "x" "mulxs.w\t#0xf(:4|),er1" \
232	"mulxs.w #0xf:4,er1"
233gdb_test "x" "mulxs.w\tr3,er1" \
234	"mulxs.w r3,er1"
235gdb_test "x" "divxs.b\t#0xf(:4|),r1" \
236	"divxs.b #0xf:4,r1"
237gdb_test "x" "divxs.b\tr3h,r1" \
238	"divxs.b r3h,r1"
239gdb_test "x" "divxs.w\t#0xf(:4|),er1" \
240	"divxs.w #0xf:4,er1"
241gdb_test "x" "divxs.w\tr3,er1" \
242	"divxs.w r3,er1"
243gdb_test "x" "mulu.w\t#0xf(:4|),r1" \
244	"mulu.w #0xf:4,r1"
245gdb_test "x" "mulu.w\tr3,r1" \
246	"mulu.w r3,r1"
247gdb_test "x" "mulu.l\t#0xf(:4|),er1" \
248	"mulu.l #0xf:4,er1"
249gdb_test "x" "mulu.l\ter3,er1" \
250	"mulu.l er3,er1"
251gdb_test "x" "mulu/u.l\t#0xf(:4|),er1" \
252	"mulu/u.l #0xf:4,er1"
253gdb_test "x" "mulu/u.l\ter3,er1" \
254	"mulu/u.l er3,er1"
255gdb_test "x" "muls.w\t#0xf(:4|),r1" \
256	"muls.w #0xf:4,r1"
257gdb_test "x" "muls.w\tr3,r1" \
258	"muls.w r3,r1"
259gdb_test "x" "muls.l\t#0xf(:4|),er1" \
260	"muls.l #0xf:4,er1"
261gdb_test "x" "muls.l\ter3,er1" \
262	"muls.l er3,er1"
263gdb_test "x" "muls/u.l\t#0xf(:4|),er1" \
264	"muls/u.l #0xf:4,er1"
265gdb_test "x" "muls/u.l\ter3,er1" \
266	"muls/u.l er3,er1"
267gdb_test "x" "divu.w\t#0xf(:4|),r1" \
268	"divu.w #0xf:4,r1"
269gdb_test "x" "divu.w\tr3,r1" \
270	"divu.w r3,r1"
271gdb_test "x" "divu.l\t#0xf(:4|),er1" \
272	"divu.l #0xf:4,er1"
273gdb_test "x" "divu.l\ter3,er1" \
274	"divu.l er3,er1"
275gdb_test "x" "divs.w\t#0xf(:4|),r1" \
276	"divs.w #0xf:4,r1"
277gdb_test "x" "divs.w\tr3,r1" \
278	"divs.w r3,r1"
279gdb_test "x" "divs.l\t#0xf(:4|),er1" \
280	"divs.l #0xf:4,er1"
281gdb_test "x" "divs.l\ter3,er1" \
282	"divs.l er3,er1"
283