xref: /netbsd-src/external/gpl3/gdb/dist/sim/testsuite/bfin/c_dsp32shiftim_ahalf_rp.s (revision 4b169a6ba595ae283ca507b26b15fdff40495b1c)
1//Original:/testcases/core/c_dsp32shiftim_ahalf_rp/c_dsp32shiftim_ahalf_rp.dsp
2// Spec Reference: dspshiftimm dreg_lo(hi) = ashift (dreg_lo(hi) by imm5)
3# mach: bfin
4
5.include "testutils.inc"
6	start
7
8// Ashift : positive data, count (+)=right (half reg)
9// d_lo = ashft (d_lo BY d_lo)
10// RLx by RLx
11imm32 r0, 0x00000000;
12R0.L = -1;
13imm32 r1, 0x00010001;
14imm32 r2, 0x00010002;
15imm32 r3, 0x00010003;
16imm32 r4, 0x00010004;
17imm32 r5, 0x00010005;
18imm32 r6, 0x00010006;
19imm32 r7, 0x00010007;
20R0.L = R0.L >>> 1;
21R1.L = R1.L >>> 1;
22R2.L = R2.L >>> 1;
23R3.L = R3.L >>> 1;
24R4.L = R4.L >>> 1;
25R5.L = R5.L >>> 1;
26R6.L = R6.L >>> 1;
27R7.L = R7.L >>> 1;
28CHECKREG r0, 0x0000FFFF;
29CHECKREG r1, 0x00010000;
30CHECKREG r2, 0x00010001;
31CHECKREG r3, 0x00010001;
32CHECKREG r4, 0x00010002;
33CHECKREG r5, 0x00010002;
34CHECKREG r6, 0x00010003;
35CHECKREG r7, 0x00010003;
36
37imm32 r0, 0x00201001;
38R1.L = -1;
39imm32 r2, 0x00202002;
40imm32 r3, 0x00203003;
41imm32 r4, 0x00204004;
42imm32 r5, 0x00205005;
43imm32 r6, 0x00206006;
44imm32 r7, 0x00207007;
45R7.L = R0.L >>> 5;
46R0.L = R1.L >>> 5;
47R1.L = R2.L >>> 5;
48R2.L = R3.L >>> 5;
49R3.L = R4.L >>> 5;
50R4.L = R5.L >>> 5;
51R5.L = R6.L >>> 5;
52R6.L = R7.L >>> 5;
53CHECKREG r0, 0x0020FFFF;
54CHECKREG r1, 0x00010100;
55CHECKREG r2, 0x00200180;
56CHECKREG r3, 0x00200200;
57CHECKREG r4, 0x00200280;
58CHECKREG r5, 0x00200300;
59CHECKREG r6, 0x00200004;
60CHECKREG r7, 0x00200080;
61
62
63imm32 r0, 0x03001001;
64imm32 r1, 0x03001001;
65R2.L = -15;
66imm32 r3, 0x03003003;
67imm32 r4, 0x03004004;
68imm32 r5, 0x03005005;
69imm32 r6, 0x03006006;
70imm32 r7, 0x03007007;
71R6.L = R0.L >>> 2;
72R7.L = R1.L >>> 2;
73R0.L = R2.L >>> 2;
74R1.L = R3.L >>> 2;
75R2.L = R4.L >>> 2;
76R3.L = R5.L >>> 2;
77R4.L = R6.L >>> 2;
78R5.L = R7.L >>> 2;
79CHECKREG r0, 0x0300FFFC;
80CHECKREG r1, 0x03000C00;
81CHECKREG r2, 0x00201001;
82CHECKREG r3, 0x03001401;
83CHECKREG r4, 0x03000100;
84CHECKREG r5, 0x03000100;
85CHECKREG r6, 0x03000400;
86CHECKREG r7, 0x03000400;
87
88imm32 r0, 0x40001001;
89imm32 r1, 0x40001001;
90imm32 r2, 0x40002002;
91R3.L = -16;
92imm32 r4, 0x40004004;
93imm32 r5, 0x40005005;
94imm32 r6, 0x40006006;
95imm32 r7, 0x40007007;
96R5.L = R0.L >>> 13;
97R6.L = R1.L >>> 13;
98R7.L = R2.L >>> 13;
99R0.L = R3.L >>> 13;
100R1.L = R4.L >>> 13;
101R2.L = R5.L >>> 13;
102R3.L = R6.L >>> 13;
103R4.L = R7.L >>> 13;
104CHECKREG r0, 0x4000FFFF;
105CHECKREG r1, 0x40000002;
106CHECKREG r2, 0x40000000;
107CHECKREG r3, 0x03000000;
108CHECKREG r4, 0x40000000;
109CHECKREG r5, 0x40000000;
110CHECKREG r6, 0x40000000;
111CHECKREG r7, 0x40000001;
112
113// d_lo = ashift (d_hi BY d_lo)
114// RHx by RLx
115imm32 r0, 0x50000000;
116imm32 r1, 0x50010000;
117imm32 r2, 0x50020000;
118imm32 r3, 0x50030000;
119imm32 r4, 0x50040000;
120imm32 r5, 0x50050000;
121imm32 r6, 0x50060000;
122imm32 r7, 0x50070000;
123R3.L = R0.H >>> 10;
124R4.L = R1.H >>> 10;
125R5.L = R2.H >>> 10;
126R6.L = R3.H >>> 10;
127R7.L = R4.H >>> 10;
128R0.L = R5.H >>> 10;
129R1.L = R6.H >>> 10;
130R2.L = R7.H >>> 10;
131CHECKREG r0, 0x50000014;
132CHECKREG r1, 0x50010014;
133CHECKREG r2, 0x50020014;
134CHECKREG r3, 0x50030014;
135CHECKREG r4, 0x50040014;
136CHECKREG r5, 0x50050014;
137CHECKREG r6, 0x50060014;
138CHECKREG r7, 0x50070014;
139
140imm32 r0, 0x10016000;
141R1.L = -1;
142imm32 r2, 0x20026000;
143imm32 r3, 0x30036000;
144imm32 r4, 0x40046000;
145imm32 r5, 0x50056000;
146imm32 r6, 0x60060000;
147imm32 r7, 0x70076000;
148R0.L = R0.H >>> 11;
149R1.L = R1.H >>> 11;
150R2.L = R2.H >>> 11;
151R3.L = R3.H >>> 11;
152R4.L = R4.H >>> 11;
153R5.L = R5.H >>> 11;
154R6.L = R6.H >>> 11;
155R7.L = R7.H >>> 11;
156CHECKREG r0, 0x10010002;
157CHECKREG r1, 0x5001000A;
158CHECKREG r2, 0x20020004;
159CHECKREG r3, 0x30030006;
160CHECKREG r4, 0x40040008;
161CHECKREG r5, 0x5005000A;
162CHECKREG r6, 0x6006000C;
163CHECKREG r7, 0x7007000E;
164
165
166imm32 r0, 0x10010700;
167imm32 r1, 0x10010700;
168R2.L = -15;
169imm32 r3, 0x30030700;
170imm32 r4, 0x40040000;
171imm32 r5, 0x50050700;
172imm32 r6, 0x60060000;
173imm32 r7, 0x70070700;
174R0.L = R0.H >>> 15;
175R1.L = R1.H >>> 15;
176R2.L = R2.H >>> 15;
177R3.L = R3.H >>> 15;
178R4.L = R4.H >>> 15;
179R5.L = R5.H >>> 15;
180R6.L = R6.H >>> 15;
181R7.L = R7.H >>> 15;
182CHECKREG r0, 0x10010000;
183CHECKREG r1, 0x10010000;
184CHECKREG r2, 0x20020000;
185CHECKREG r3, 0x30030000;
186CHECKREG r4, 0x40040000;
187CHECKREG r5, 0x50050000;
188CHECKREG r6, 0x60060000;
189CHECKREG r7, 0x70070000;
190
191imm32 r0, 0x18010001;
192imm32 r1, 0x18010001;
193imm32 r2, 0x28020002;
194R3.L = -16;
195imm32 r4, 0x48040004;
196imm32 r5, 0x58050005;
197imm32 r6, 0x68060006;
198imm32 r7, 0x78070007;
199R0.L = R0.H >>> 13;
200R1.L = R1.H >>> 13;
201R2.L = R2.H >>> 13;
202R3.L = R3.H >>> 13;
203R4.L = R4.H >>> 13;
204R5.L = R5.H >>> 13;
205R6.L = R6.H >>> 13;
206R7.L = R7.H >>> 13;
207CHECKREG r0, 0x18010000;
208CHECKREG r1, 0x18010000;
209CHECKREG r2, 0x28020001;
210CHECKREG r3, 0x30030001;
211CHECKREG r4, 0x48040002;
212CHECKREG r5, 0x58050002;
213CHECKREG r6, 0x68060003;
214CHECKREG r7, 0x78070003;
215
216// d_hi = ashft (d_lo BY d_lo)
217// RLx by RLx
218imm32 r0, 0x09000091;
219imm32 r1, 0x09000091;
220imm32 r2, 0x09000092;
221imm32 r3, 0x09000093;
222imm32 r4, 0x09000090;
223imm32 r5, 0x09000095;
224imm32 r6, 0x09000096;
225imm32 r7, 0x09000097;
226R0.H = R0.L >>> 14;
227R1.H = R1.L >>> 14;
228R2.H = R2.L >>> 14;
229R3.H = R3.L >>> 14;
230R4.H = R4.L >>> 14;
231R5.H = R5.L >>> 14;
232R6.H = R6.L >>> 14;
233R7.H = R7.L >>> 14;
234CHECKREG r0, 0x00000091;
235CHECKREG r1, 0x00000091;
236CHECKREG r2, 0x00000092;
237CHECKREG r3, 0x00000093;
238CHECKREG r4, 0x00000090;
239CHECKREG r5, 0x00000095;
240CHECKREG r6, 0x00000096;
241CHECKREG r7, 0x00000097;
242
243imm32 r0, 0xa0000001;
244imm32 r1, 0xa0000001;
245imm32 r2, 0xa0000002;
246imm32 r3, 0xa0000003;
247imm32 r4, 0xa0000004;
248R5.L = -1;
249imm32 r6, 0xa0000006;
250imm32 r7, 0xa0000007;
251R0.H = R0.L >>> 15;
252R1.H = R1.L >>> 15;
253R2.H = R2.L >>> 15;
254R3.H = R3.L >>> 15;
255R4.H = R4.L >>> 15;
256R5.H = R5.L >>> 15;
257R6.H = R6.L >>> 15;
258R7.H = R7.L >>> 15;
259CHECKREG r0, 0x00000001;
260CHECKREG r1, 0x00000001;
261CHECKREG r2, 0x00000002;
262CHECKREG r3, 0x00000003;
263CHECKREG r4, 0x00000004;
264CHECKREG r5, 0xFFFFFFFF;
265CHECKREG r6, 0x00000006;
266CHECKREG r7, 0x00000007;
267
268
269imm32 r0, 0xb0001001;
270imm32 r1, 0xb0001001;
271imm32 r1, 0xb0002002;
272imm32 r3, 0xb0003003;
273imm32 r4, 0xb0004004;
274imm32 r5, 0xb0005005;
275R6.L = -15;
276imm32 r7, 0xb0007007;
277R0.H = R0.L >>> 6;
278R1.H = R1.L >>> 6;
279R2.H = R2.L >>> 6;
280R3.H = R3.L >>> 6;
281R4.H = R4.L >>> 6;
282R5.H = R5.L >>> 6;
283R6.H = R6.L >>> 6;
284R7.H = R7.L >>> 6;
285CHECKREG r0, 0x00401001;
286CHECKREG r1, 0x00802002;
287CHECKREG r2, 0x00000002;
288CHECKREG r3, 0x00C03003;
289CHECKREG r4, 0x01004004;
290CHECKREG r5, 0x01405005;
291CHECKREG r6, 0xFFFFFFF1;
292CHECKREG r7, 0x01C07007;
293
294imm32 r0, 0x0c001c01;
295imm32 r1, 0x0c002c01;
296imm32 r2, 0x0c002c02;
297imm32 r3, 0x0c003c03;
298imm32 r4, 0x0c004c04;
299imm32 r5, 0x0c005c05;
300imm32 r6, 0x0c006c06;
301R7.L = -16;
302R0.H = R0.L >>> 7;
303R1.H = R1.L >>> 7;
304R2.H = R2.L >>> 7;
305R3.H = R3.L >>> 7;
306R4.H = R4.L >>> 7;
307R5.H = R5.L >>> 7;
308R6.H = R6.L >>> 7;
309R7.H = R7.L >>> 7;
310CHECKREG r0, 0x00381C01;
311CHECKREG r1, 0x00582C01;
312CHECKREG r2, 0x00582C02;
313CHECKREG r3, 0x00783C03;
314CHECKREG r4, 0x00984C04;
315CHECKREG r5, 0x00B85C05;
316CHECKREG r6, 0x00D86C06;
317CHECKREG r7, 0xFFFFFFF0;
318
319// d_lo = ashft (d_hi BY d_lo)
320// RHx by RLx
321imm32 r0, 0x0d01d000;
322imm32 r1, 0x0d01d000;
323imm32 r2, 0x0d02d000;
324imm32 r3, 0x0d03d000;
325R4.L = -1;
326imm32 r5, 0x0d05d000;
327imm32 r6, 0x0d06d000;
328imm32 r7, 0x0d07d000;
329R0.H = R0.H >>> 4;
330R1.H = R1.H >>> 4;
331R2.H = R2.H >>> 4;
332R3.H = R3.H >>> 4;
333R4.H = R4.H >>> 4;
334R5.H = R5.H >>> 4;
335R6.H = R6.H >>> 4;
336R7.H = R6.H >>> 4;
337CHECKREG r0, 0x00D0D000;
338CHECKREG r1, 0x00D0D000;
339CHECKREG r2, 0x00D0D000;
340CHECKREG r3, 0x00D0D000;
341CHECKREG r4, 0x0009FFFF;
342CHECKREG r5, 0x00D0D000;
343CHECKREG r6, 0x00D0D000;
344CHECKREG r7, 0x000DD000;
345
346imm32 r0, 0x1e010000;
347imm32 r1, 0x1e010000;
348imm32 r2, 0x2e020000;
349imm32 r3, 0x3e030000;
350imm32 r4, 0x4e040000;
351R5.L = -1;
352imm32 r6, 0x6e060000;
353imm32 r7, 0x7e070000;
354R7.H = R0.H >>> 15;
355R6.H = R1.H >>> 15;
356R0.H = R2.H >>> 15;
357R1.H = R3.H >>> 15;
358R2.H = R4.H >>> 15;
359R3.H = R5.H >>> 15;
360R4.H = R6.H >>> 15;
361R5.H = R7.H >>> 15;
362CHECKREG r0, 0x00000000;
363CHECKREG r1, 0x00000000;
364CHECKREG r2, 0x00000000;
365CHECKREG r3, 0x00000000;
366CHECKREG r4, 0x00000000;
367CHECKREG r5, 0x0000FFFF;
368CHECKREG r6, 0x00000000;
369CHECKREG r7, 0x00000000;
370
371imm32 r0, 0x1f010000;
372imm32 r1, 0x1f010000;
373imm32 r2, 0x2f020000;
374imm32 r3, 0x3f030000;
375imm32 r4, 0x4f040000;
376imm32 r5, 0x5f050000;
377R6.L = -15;
378imm32 r7, 0x70070000;
379R6.H = R0.H >>> 6;
380R7.H = R1.H >>> 6;
381R5.H = R2.H >>> 6;
382R0.H = R3.H >>> 6;
383R1.H = R4.H >>> 6;
384R2.H = R5.H >>> 6;
385R3.H = R6.H >>> 6;
386R4.H = R7.H >>> 6;
387CHECKREG r0, 0x00FC0000;
388CHECKREG r1, 0x013C0000;
389CHECKREG r2, 0x00020000;
390CHECKREG r3, 0x00010000;
391CHECKREG r4, 0x00010000;
392CHECKREG r5, 0x00BC0000;
393CHECKREG r6, 0x007CFFF1;
394CHECKREG r7, 0x007C0000;
395
396imm32 r0, 0x11010a00;
397imm32 r1, 0x11010b00;
398imm32 r2, 0x21020d00;
399imm32 r2, 0x31030c00;
400imm32 r4, 0x41040d00;
401imm32 r5, 0x51050e00;
402imm32 r6, 0x610600f0;
403R7.L = -16;
404R5.H = R0.H >>> 7;
405R6.H = R1.H >>> 7;
406R7.H = R2.H >>> 7;
407R2.H = R3.H >>> 7;
408R3.H = R4.H >>> 7;
409R4.H = R5.H >>> 7;
410R0.H = R6.H >>> 7;
411R1.H = R7.H >>> 7;
412CHECKREG r0, 0x00000A00;
413CHECKREG r1, 0x00000B00;
414CHECKREG r2, 0x00000C00;
415CHECKREG r3, 0x00820000;
416CHECKREG r4, 0x00000D00;
417CHECKREG r5, 0x00220E00;
418CHECKREG r6, 0x002200F0;
419CHECKREG r7, 0x0062FFF0;
420pass
421