xref: /netbsd-src/external/gpl3/gdb/dist/sim/testsuite/bfin/ashift.s (revision 4b169a6ba595ae283ca507b26b15fdff40495b1c)
1# Blackfin testcase for ashift
2# mach: bfin
3
4	.include "testutils.inc"
5
6	.macro ashift_test in:req, shift:req, out:req, opt
7	r0 = \in (Z);
8	r2.L = \shift;
9	r2.h = ASHIFT R0.L BY R2.L \opt;
10	DBGA (r2.h, \out);
11	.endm
12
13	start
14
15	/*
16	 * 16-bit ashift and lshift uses a 6-bit signed  magnitude, which
17	 * gives a range from -32 to 31.  In the case where the  magnitude
18	 * is -32, make sure the answer is correct.
19	 */
20
21ashift_test 0x8001,  33, 0xffff;
22ashift_test 0x8001,  32, 0xffff;
23ashift_test 0x8001,  31, 0x0000;
24ashift_test 0x8001,  30, 0x0000;
25ashift_test 0x8001,  29, 0x0000;
26ashift_test 0x8001,  28, 0x0000;
27ashift_test 0x8001,  27, 0x0000;
28ashift_test 0x8001,  26, 0x0000;
29ashift_test 0x8001,  25, 0x0000;
30ashift_test 0x8001,  24, 0x0000;
31ashift_test 0x8001,  23, 0x0000;
32ashift_test 0x8001,  22, 0x0000;
33ashift_test 0x8001,  21, 0x0000;
34ashift_test 0x8001,  20, 0x0000;
35ashift_test 0x8001,  19, 0x0000;
36ashift_test 0x8001,  18, 0x0000;
37ashift_test 0x8001,  17, 0x0000;
38ashift_test 0x8001,  16, 0x0000;
39ashift_test 0x8001,  15, 0x8000;
40ashift_test 0x8001,  14, 0x4000;
41ashift_test 0x8001,  13, 0x2000;
42ashift_test 0x8001,  12, 0x1000;
43ashift_test 0x8001,  11, 0x0800;
44ashift_test 0x8001,  10, 0x0400;
45ashift_test 0x8001,   9, 0x0200;
46ashift_test 0x8001,   8, 0x0100;
47ashift_test 0x8001,   7, 0x0080;
48ashift_test 0x8001,   6, 0x0040;
49ashift_test 0x8001,   5, 0x0020;
50ashift_test 0x8001,   4, 0x0010;
51ashift_test 0x8001,   3, 0x0008;
52ashift_test 0x8001,   2, 0x0004;
53ashift_test 0x8001,   1, 0x0002;
54ashift_test 0x8001,   0, 0x8001;
55ashift_test 0x8001,  -1, 0xc000;
56ashift_test 0x8001,  -2, 0xe000;
57ashift_test 0x8001,  -3, 0xf000;
58ashift_test 0x8001,  -4, 0xf800;
59ashift_test 0x8001,  -5, 0xfc00;
60ashift_test 0x8001,  -6, 0xfe00;
61ashift_test 0x8001,  -7, 0xff00;
62ashift_test 0x8001,  -8, 0xff80;
63ashift_test 0x8001,  -9, 0xffc0;
64ashift_test 0x8001, -10, 0xffe0;
65ashift_test 0x8001, -11, 0xfff0;
66ashift_test 0x8001, -12, 0xfff8;
67ashift_test 0x8001, -13, 0xfffc;
68ashift_test 0x8001, -14, 0xfffe;
69ashift_test 0x8001, -15, 0xffff;
70ashift_test 0x8001, -16, 0xffff;
71ashift_test 0x8001, -17, 0xffff;
72ashift_test 0x8001, -18, 0xffff;
73ashift_test 0x8001, -19, 0xffff;
74ashift_test 0x8001, -20, 0xffff;
75ashift_test 0x8001, -21, 0xffff;
76ashift_test 0x8001, -22, 0xffff;
77ashift_test 0x8001, -23, 0xffff;
78ashift_test 0x8001, -24, 0xffff;
79ashift_test 0x8001, -25, 0xffff;
80ashift_test 0x8001, -26, 0xffff;
81ashift_test 0x8001, -27, 0xffff;
82ashift_test 0x8001, -28, 0xffff;
83ashift_test 0x8001, -29, 0xffff;
84ashift_test 0x8001, -30, 0xffff;
85ashift_test 0x8001, -31, 0xffff;
86ashift_test 0x8001, -32, 0xffff;
87ashift_test 0x8001, -33, 0x0;
88ashift_test 0x8001, -34, 0x0;
89
90ashift_test 0x8001,  33, 0xffff, (S);
91ashift_test 0x8001,  32, 0xffff, (S);
92ashift_test 0x8001,  31, 0x8000, (S);
93ashift_test 0x8001,  30, 0x8000, (S);
94ashift_test 0x8001,  29, 0x8000, (S);
95ashift_test 0x8001,  28, 0x8000, (S);
96ashift_test 0x8001,  27, 0x8000, (S);
97ashift_test 0x8001,  26, 0x8000, (S);
98ashift_test 0x8001,  25, 0x8000, (S);
99ashift_test 0x8001,  24, 0x8000, (S);
100ashift_test 0x8001,  23, 0x8000, (S);
101ashift_test 0x8001,  22, 0x8000, (S);
102ashift_test 0x8001,  21, 0x8000, (S);
103ashift_test 0x8001,  20, 0x8000, (S);
104ashift_test 0x8001,  19, 0x8000, (S);
105ashift_test 0x8001,  18, 0x8000, (S);
106ashift_test 0x8001,  17, 0x8000, (S);
107ashift_test 0x8001,  16, 0x8000, (S);
108ashift_test 0x8001,  15, 0x8000, (S);
109ashift_test 0x8001,  14, 0x8000, (S);
110ashift_test 0x8001,  13, 0x8000, (S);
111ashift_test 0x8001,  12, 0x8000, (S);
112ashift_test 0x8001,  11, 0x8000, (S);
113ashift_test 0x8001,  10, 0x8000, (S);
114ashift_test 0x8001,   9, 0x8000, (S);
115ashift_test 0x8001,   8, 0x8000, (S);
116ashift_test 0x8001,   7, 0x8000, (S);
117ashift_test 0x8001,   6, 0x8000, (S);
118ashift_test 0x8001,   5, 0x8000, (S);
119ashift_test 0x8001,   4, 0x8000, (S);
120ashift_test 0x8001,   3, 0x8000, (S);
121ashift_test 0x8001,   2, 0x8000, (S);
122ashift_test 0x8001,   1, 0x8000, (S);
123ashift_test 0x8001,   0, 0x8001, (S);
124ashift_test 0x8001,  -1, 0xc000, (S);
125ashift_test 0x8001,  -2, 0xe000, (S);
126ashift_test 0x8001,  -3, 0xf000, (S);
127ashift_test 0x8001,  -4, 0xf800, (S);
128ashift_test 0x8001,  -5, 0xfc00, (S);
129ashift_test 0x8001,  -6, 0xfe00, (S);
130ashift_test 0x8001,  -7, 0xff00, (S);
131ashift_test 0x8001,  -8, 0xff80, (S);
132ashift_test 0x8001,  -9, 0xffc0, (S);
133ashift_test 0x8001, -10, 0xffe0, (S);
134ashift_test 0x8001, -11, 0xfff0, (S);
135ashift_test 0x8001, -12, 0xfff8, (S);
136ashift_test 0x8001, -13, 0xfffc, (S);
137ashift_test 0x8001, -14, 0xfffe, (S);
138ashift_test 0x8001, -15, 0xffff, (S);
139ashift_test 0x8001, -16, 0xffff, (S);
140ashift_test 0x8001, -17, 0xffff, (S);
141ashift_test 0x8001, -18, 0xffff, (S);
142ashift_test 0x8001, -19, 0xffff, (S);
143ashift_test 0x8001, -20, 0xffff, (S);
144ashift_test 0x8001, -21, 0xffff, (S);
145ashift_test 0x8001, -22, 0xffff, (S);
146ashift_test 0x8001, -23, 0xffff, (S);
147ashift_test 0x8001, -24, 0xffff, (S);
148ashift_test 0x8001, -25, 0xffff, (S);
149ashift_test 0x8001, -26, 0xffff, (S);
150ashift_test 0x8001, -27, 0xffff, (S);
151ashift_test 0x8001, -28, 0xffff, (S);
152ashift_test 0x8001, -29, 0xffff, (S);
153ashift_test 0x8001, -30, 0xffff, (S);
154ashift_test 0x8001, -31, 0xffff, (S);
155ashift_test 0x8001, -32, 0xffff, (S);
156ashift_test 0x8001, -33, 0x8000, (S);
157ashift_test 0x8001, -34, 0x8000, (S);
158
159
160ashift_test 0x4002,  33, 0x0;
161ashift_test 0x4002,  32, 0x0;
162ashift_test 0x4002,  31, 0x0;
163ashift_test 0x4002,  30, 0x0;
164ashift_test 0x4002,  20, 0x0;
165ashift_test 0x4002,  19, 0x0;
166ashift_test 0x4002,  18, 0x0;
167ashift_test 0x4002,  17, 0x0;
168ashift_test 0x4002,  16, 0x0;
169ashift_test 0x4002,  15, 0x0;
170ashift_test 0x4002,  14, 0x8000;
171ashift_test 0x4002,  13, 0x4000;
172ashift_test 0x4002,  12, 0x2000;
173ashift_test 0x4002,  11, 0x1000;
174ashift_test 0x4002,  10, 0x0800;
175ashift_test 0x4002,   9, 0x0400;
176ashift_test 0x4002,   8, 0x0200;
177ashift_test 0x4002,   7, 0x0100;
178ashift_test 0x4002,   6, 0x0080;
179ashift_test 0x4002,   5, 0x0040;
180ashift_test 0x4002,   4, 0x0020;
181ashift_test 0x4002,   3, 0x0010;
182ashift_test 0x4002,   2, 0x0008;
183ashift_test 0x4002,   1, 0x8004;
184ashift_test 0x4002,   0, 0x4002;
185ashift_test 0x4002,  -1, 0x2001;
186ashift_test 0x4002,  -2, 0x1000;
187ashift_test 0x4002,  -3, 0x0800;
188ashift_test 0x4002,  -4, 0x0400;
189ashift_test 0x4002,  -5, 0x0200;
190ashift_test 0x4002,  -6, 0x0100;
191ashift_test 0x4002,  -7, 0x0080;
192ashift_test 0x4002,  -8, 0x0040;
193ashift_test 0x4002,  -9, 0x0020;
194ashift_test 0x4002, -10, 0x0010;
195ashift_test 0x4002, -11, 0x0008;
196ashift_test 0x4002, -12, 0x0004;
197ashift_test 0x4002, -13, 0x0002;
198ashift_test 0x4002, -14, 0x0001;
199ashift_test 0x4002, -15, 0x0;
200ashift_test 0x4002, -16, 0x0;
201ashift_test 0x4002, -17, 0x0;
202ashift_test 0x4002, -31, 0x0;
203ashift_test 0x4002, -32, 0x0;
204ashift_test 0x4002, -33, 0x0;
205ashift_test 0x4002, -34, 0x0;
206
207ashift_test 0x4002,  33, 0x0, (S);
208ashift_test 0x4002,  32, 0x0, (S);
209ashift_test 0x4002,  31, 0x7fff, (S);
210ashift_test 0x4002,  30, 0x7fff, (S);
211ashift_test 0x4002,  20, 0x7fff, (S);
212ashift_test 0x4002,  19, 0x7fff, (S);
213ashift_test 0x4002,  18, 0x7fff, (S);
214ashift_test 0x4002,  17, 0x7fff, (S);
215ashift_test 0x4002,  16, 0x7fff, (S);
216ashift_test 0x4002,  15, 0x7fff, (S);
217ashift_test 0x4002,  14, 0x7fff, (S);
218ashift_test 0x4002,  13, 0x7fff, (S);
219ashift_test 0x4002,  12, 0x7fff, (S);
220ashift_test 0x4002,  11, 0x7fff, (S);
221ashift_test 0x4002,  10, 0x7fff, (S);
222ashift_test 0x4002,   9, 0x7fff, (S);
223ashift_test 0x4002,   8, 0x7fff, (S);
224ashift_test 0x4002,   7, 0x7fff, (S);
225ashift_test 0x4002,   6, 0x7fff, (S);
226ashift_test 0x4002,   5, 0x7fff, (S);
227ashift_test 0x4002,   4, 0x7fff, (S);
228ashift_test 0x4002,   3, 0x7fff, (S);
229ashift_test 0x4002,   2, 0x7fff, (S);
230ashift_test 0x4002,   1, 0x7fff, (S);
231ashift_test 0x4002,   0, 0x4002, (S);
232ashift_test 0x4002,  -1, 0x2001, (S);
233ashift_test 0x4002,  -2, 0x1000, (S);
234ashift_test 0x4002,  -3, 0x0800, (S);
235ashift_test 0x4002,  -4, 0x0400, (S);
236ashift_test 0x4002,  -5, 0x0200, (S);
237ashift_test 0x4002,  -6, 0x0100, (S);
238ashift_test 0x4002,  -7, 0x0080, (S);
239ashift_test 0x4002,  -8, 0x0040, (S);
240ashift_test 0x4002,  -9, 0x0020, (S);
241ashift_test 0x4002, -10, 0x0010, (S);
242ashift_test 0x4002, -11, 0x0008, (S);
243ashift_test 0x4002, -12, 0x0004, (S);
244ashift_test 0x4002, -13, 0x0002, (S);
245ashift_test 0x4002, -14, 0x0001, (S);
246ashift_test 0x4002, -15, 0x0000, (S);
247ashift_test 0x4002, -16, 0x0000, (S);
248ashift_test 0x4002, -17, 0x0000, (S);
249ashift_test 0x4002, -31, 0x0000, (S);
250ashift_test 0x4002, -32, 0x0000, (S);
251ashift_test 0x4002, -33, 0x7fff, (S);
252ashift_test 0x4002, -34, 0x7fff, (S);
253
254ashift_test 0x0001,  33, 0x0000, (S);
255ashift_test 0x0001,  32, 0x0000, (S);
256ashift_test 0x0001,  31, 0x7fff, (S);
257ashift_test 0x0001,  30, 0x7fff, (S);
258ashift_test 0x0001,  29, 0x7fff, (S);
259ashift_test 0x0001,  28, 0x7fff, (S);
260ashift_test 0x0001,  27, 0x7fff, (S);
261ashift_test 0x0001,  26, 0x7fff, (S);
262ashift_test 0x0001,  25, 0x7fff, (S);
263ashift_test 0x0001,  24, 0x7fff, (S);
264ashift_test 0x0001,  23, 0x7fff, (S);
265ashift_test 0x0001,  22, 0x7fff, (S);
266ashift_test 0x0001,  21, 0x7fff, (S);
267ashift_test 0x0001,  20, 0x7fff, (S);
268ashift_test 0x0001,  19, 0x7fff, (S);
269ashift_test 0x0001,  18, 0x7fff, (S);
270ashift_test 0x0001,  17, 0x7fff, (S);
271ashift_test 0x0001,  16, 0x7fff, (S);
272ashift_test 0x0001,  15, 0x7fff, (S);
273ashift_test 0x0001,  14, 0x4000, (S);
274ashift_test 0x0001,  13, 0x2000, (S);
275ashift_test 0x0001,  12, 0x1000, (S);
276ashift_test 0x0001,  11, 0x0800, (S);
277ashift_test 0x0001,  10, 0x0400, (S);
278ashift_test 0x0001,   9, 0x0200, (S);
279ashift_test 0x0001,   8, 0x0100, (S);
280ashift_test 0x0001,   7, 0x0080, (S);
281ashift_test 0x0001,   6, 0x0040, (S);
282ashift_test 0x0001,   5, 0x0020, (S);
283ashift_test 0x0001,   4, 0x0010, (S);
284ashift_test 0x0001,   3, 0x0008, (S);
285ashift_test 0x0001,   2, 0x0004, (S);
286ashift_test 0x0001,   1, 0x0002, (S);
287ashift_test 0x0001,   0, 0x0001, (S);
288ashift_test 0x0001,  -1, 0x0000, (S);
289ashift_test 0x0001,  -2, 0x0000, (S);
290ashift_test 0x0001,  -3, 0x0000, (S);
291ashift_test 0x0001,  -4, 0x0000, (S);
292ashift_test 0x0001,  -5, 0x0000, (S);
293ashift_test 0x0001,  -6, 0x0000, (S);
294ashift_test 0x0001,  -7, 0x0000, (S);
295ashift_test 0x0001,  -8, 0x0000, (S);
296ashift_test 0x0001,  -9, 0x0000, (S);
297ashift_test 0x0001, -10, 0x0000, (S);
298ashift_test 0x0001, -11, 0x0000, (S);
299ashift_test 0x0001, -12, 0x0000, (S);
300ashift_test 0x0001, -13, 0x0000, (S);
301ashift_test 0x0001, -14, 0x0, (S);
302ashift_test 0x0001, -15, 0x0, (S);
303ashift_test 0x0001, -16, 0x0, (S);
304ashift_test 0x0001, -17, 0x0, (S);
305ashift_test 0x0001, -18, 0x0, (S);
306ashift_test 0x0001, -19, 0x0, (S);
307ashift_test 0x0001, -20, 0x0, (S);
308ashift_test 0x0001, -21, 0x0, (S);
309ashift_test 0x0001, -22, 0x0, (S);
310ashift_test 0x0001, -23, 0x0, (S);
311ashift_test 0x0001, -24, 0x0, (S);
312ashift_test 0x0001, -25, 0x0, (S);
313ashift_test 0x0001, -26, 0x0, (S);
314ashift_test 0x0001, -27, 0x0, (S);
315ashift_test 0x0001, -28, 0x0, (S);
316ashift_test 0x0001, -29, 0x0, (S);
317ashift_test 0x0001, -30, 0x0, (S);
318ashift_test 0x0001, -31, 0x0, (S);
319ashift_test 0x0001, -32, 0x0, (S);
320ashift_test 0x0001, -33, 0x7fff, (S);
321ashift_test 0x0001, -34, 0x7fff, (S);
322
323	pass
324