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