xref: /netbsd-src/external/gpl3/gdb/dist/sim/testsuite/bfin/c_dsp32shiftim_lhalf_rp.s (revision 4b169a6ba595ae283ca507b26b15fdff40495b1c)
1//Original:/testcases/core/c_dsp32shiftim_lhalf_rp/c_dsp32shiftim_lhalf_rp.dsp
2// Spec Reference: dspshiftimm dreg_lo(hi) = lshift (dreg_lo(hi) by imm5)
3# mach: bfin
4
5.include "testutils.inc"
6	start
7
8
9
10// lshift : positive data, count (+)=left (half reg)
11// d_lo = lshift (d_lo BY d_lo)
12// RLx by RLx
13imm32 r0, 0x00000000;
14R0.L = -1;
15imm32 r1, 0x90000001;
16imm32 r2, 0x90000002;
17imm32 r3, 0x90000003;
18imm32 r4, 0x90000004;
19imm32 r5, 0x90000005;
20imm32 r6, 0x90000006;
21imm32 r7, 0x90000007;
22R0.L = R0.L << 0;
23R1.L = R1.L >> 1;
24R2.L = R2.L >> 2;
25R3.L = R3.L >> 3;
26R4.L = R4.L >> 4;
27R5.L = R5.L >> 5;
28R6.L = R6.L >> 6;
29R7.L = R7.L >> 7;
30CHECKREG r0, 0x0000FFFF;
31CHECKREG r1, 0x90000000;
32CHECKREG r2, 0x90000000;
33CHECKREG r3, 0x90000000;
34CHECKREG r4, 0x90000000;
35CHECKREG r5, 0x90000000;
36CHECKREG r6, 0x90000000;
37CHECKREG r7, 0x90000000;
38
39imm32 r0, 0x00001001;
40R1.L = -1;
41imm32 r2, 0xa0002002;
42imm32 r3, 0xa0003003;
43imm32 r4, 0xa0004004;
44imm32 r5, 0xa0005005;
45imm32 r6, 0xa0006006;
46imm32 r7, 0xa0007007;
47R0.L = R0.L >> 1;
48R1.L = R1.L >> 1;
49R2.L = R2.L >> 1;
50R3.L = R3.L >> 1;
51R4.L = R4.L >> 1;
52R5.L = R5.L >> 1;
53R6.L = R6.L >> 1;
54R7.L = R7.L >> 1;
55CHECKREG r0, 0x00000800;
56CHECKREG r1, 0x90007FFF;
57CHECKREG r2, 0xA0001001;
58CHECKREG r3, 0xA0001801;
59CHECKREG r4, 0xA0002002;
60CHECKREG r5, 0xA0002802;
61CHECKREG r6, 0xA0003003;
62CHECKREG r7, 0xA0003803;
63
64
65imm32 r0, 0xb0001001;
66imm32 r1, 0xb0001001;
67R2.L = -15;
68imm32 r3, 0xb0003003;
69imm32 r4, 0xb0004004;
70imm32 r5, 0xb0005005;
71imm32 r6, 0xb0006006;
72imm32 r7, 0xb0007007;
73R0.L = R0.L >> 15;
74R1.L = R1.L >> 15;
75R2.L = LSHIFT R2.L BY R2.L;
76R3.L = R3.L >> 15;
77R4.L = R4.L >> 15;
78R5.L = R5.L >> 15;
79R6.L = R6.L >> 15;
80R7.L = R7.L >> 15;
81CHECKREG r0, 0xb0000000;
82CHECKREG r1, 0xb0000000;
83CHECKREG r2, 0xA0000001;
84CHECKREG r3, 0xB0000000;
85CHECKREG r4, 0xb0000000;
86CHECKREG r5, 0xb0000000;
87CHECKREG r6, 0xb0000000;
88CHECKREG r7, 0xB0000000;
89
90imm32 r0, 0xc0001001;
91imm32 r1, 0xc0001001;
92imm32 r2, 0xc0002002;
93R3.L = -16;
94imm32 r4, 0xc0004004;
95imm32 r5, 0xc0005005;
96imm32 r6, 0xc0006006;
97imm32 r7, 0xc0007007;
98R0.L = R0.L >> 13;
99R1.L = R1.L >> 13;
100R2.L = R2.L >> 13;
101R3.L = R3.L >> 13;
102R4.L = R4.L >> 13;
103R5.L = R5.L >> 13;
104R6.L = R6.L >> 13;
105R7.L = R7.L >> 13;
106CHECKREG r0, 0xc0000000;
107CHECKREG r1, 0xc0000000;
108CHECKREG r2, 0xC0000001;
109CHECKREG r3, 0xB0000007;
110CHECKREG r4, 0xC0000002;
111CHECKREG r5, 0xC0000002;
112CHECKREG r6, 0xC0000003;
113CHECKREG r7, 0xC0000003;
114
115// RHx by RLx
116imm32 r0, 0x0000c000;
117imm32 r1, 0x0001c000;
118imm32 r2, 0x0002c000;
119imm32 r3, 0x0003c000;
120imm32 r4, 0x0004c000;
121imm32 r5, 0x0005c000;
122imm32 r6, 0x0006c000;
123imm32 r7, 0x0007c000;
124R0.L = R0.H << 0;
125R1.L = R1.H << 0;
126R2.L = R2.H << 0;
127R3.L = R3.H << 0;
128R4.L = R4.H << 0;
129R5.L = R5.H << 0;
130R6.L = R6.H << 0;
131R7.L = R7.H << 0;
132CHECKREG r0, 0x00000000;
133CHECKREG r1, 0x00010001;
134CHECKREG r2, 0x00020002;
135CHECKREG r3, 0x00030003;
136CHECKREG r4, 0x00040004;
137CHECKREG r5, 0x00050005;
138CHECKREG r6, 0x00060006;
139CHECKREG r7, 0x00070007;
140
141imm32 r0, 0x10010000;
142R1.L = -1;
143imm32 r2, 0x20020000;
144imm32 r3, 0x30030000;
145imm32 r4, 0x40040000;
146imm32 r5, 0x50050000;
147imm32 r6, 0x60060000;
148imm32 r7, 0x70070000;
149R0.L = R0.H >> 1;
150R1.L = R1.H >> 1;
151R2.L = R2.H >> 1;
152R3.L = R3.H >> 1;
153R4.L = R4.H >> 1;
154R5.L = R5.H >> 1;
155R6.L = R6.H >> 1;
156R7.L = R7.H >> 1;
157CHECKREG r0, 0x10010800;
158CHECKREG r1, 0x00010000;
159CHECKREG r2, 0x20021001;
160CHECKREG r3, 0x30031801;
161CHECKREG r4, 0x40042002;
162CHECKREG r5, 0x50052802;
163CHECKREG r6, 0x60063003;
164CHECKREG r7, 0x70073803;
165
166
167imm32 r0, 0x1001e000;
168imm32 r1, 0x1001e000;
169R2.L = -15;
170imm32 r3, 0x3003e000;
171imm32 r4, 0x4004e000;
172imm32 r5, 0x5005e000;
173imm32 r6, 0x6006e000;
174imm32 r7, 0x7007e000;
175R0.L = R0.H >> 15;
176R1.L = R1.H >> 15;
177R2.L = R2.H >> 15;
178R3.L = R3.H >> 15;
179R4.L = R4.H >> 15;
180R5.L = R5.H >> 15;
181R6.L = R6.H >> 15;
182R7.L = R7.H >> 15;
183CHECKREG r0, 0x10010000;
184CHECKREG r1, 0x10010000;
185CHECKREG r2, 0x20020000;
186CHECKREG r3, 0x30030000;
187CHECKREG r4, 0x40040000;
188CHECKREG r5, 0x50050000;
189CHECKREG r6, 0x60060000;
190CHECKREG r7, 0x70070000;
191
192imm32 r0, 0x1001f001;
193imm32 r1, 0x1001f001;
194imm32 r2, 0x2002f002;
195R3.L = -16;
196imm32 r4, 0x4004f004;
197imm32 r5, 0x5005f005;
198imm32 r6, 0x6006f006;
199imm32 r7, 0x7007f007;
200R0.L = R0.H >> 13;
201R1.L = R1.H >> 13;
202R2.L = R2.H >> 13;
203R3.L = R3.H >> 13;
204R4.L = R4.H >> 13;
205R5.L = R5.H >> 13;
206R6.L = R6.H >> 13;
207R7.L = R7.H >> 13;
208CHECKREG r0, 0x10010000;
209CHECKREG r1, 0x10010000;
210CHECKREG r2, 0x20020001;
211CHECKREG r3, 0x30030001;
212CHECKREG r4, 0x40040002;
213CHECKREG r5, 0x50050002;
214CHECKREG r6, 0x60060003;
215CHECKREG r7, 0x70070003;
216
217// RLx by RLx
218imm32 r0, 0x00001001;
219imm32 r1, 0x00001001;
220imm32 r2, 0x00001002;
221imm32 r3, 0x00001003;
222imm32 r4, 0x00001000;
223imm32 r5, 0x00001005;
224imm32 r6, 0x00001006;
225imm32 r7, 0x00001007;
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, 0x00001001;
235CHECKREG r1, 0x00001001;
236CHECKREG r2, 0x00001002;
237CHECKREG r3, 0x00001003;
238CHECKREG r4, 0x00001000;
239CHECKREG r5, 0x00001005;
240CHECKREG r6, 0x00001006;
241CHECKREG r7, 0x00001007;
242
243imm32 r0, 0x00002001;
244imm32 r1, 0x00002001;
245imm32 r2, 0x00002002;
246imm32 r3, 0x00002003;
247imm32 r4, 0x00002004;
248R5.L = -1;
249imm32 r6, 0x00000006;
250imm32 r7, 0x00000007;
251R0.H = R0.L >> 5;
252R1.H = R1.L >> 5;
253R2.H = R2.L >> 5;
254R3.H = R3.L >> 5;
255R4.H = R4.L >> 5;
256R5.H = R5.L >> 5;
257R6.H = R6.L >> 5;
258R7.H = R7.L >> 5;
259CHECKREG r0, 0x01002001;
260CHECKREG r1, 0x01002001;
261CHECKREG r2, 0x01002002;
262CHECKREG r3, 0x01002003;
263CHECKREG r4, 0x01002004;
264CHECKREG r5, 0x07FFFFFF;
265CHECKREG r6, 0x00000006;
266CHECKREG r7, 0x00000007;
267
268
269imm32 r0, 0x30001001;
270imm32 r1, 0x30001001;
271imm32 r1, 0x30002002;
272imm32 r3, 0x30003003;
273imm32 r4, 0x30004004;
274imm32 r5, 0x30005005;
275R6.L = -15;
276imm32 r7, 0x00007007;
277R0.H = R0.L >> 15;
278R1.H = R1.L >> 15;
279R2.H = R2.L >> 15;
280R3.H = R3.L >> 15;
281R4.H = R4.L >> 15;
282R5.H = R5.L >> 15;
283R6.H = R6.L >> 15;
284R7.H = R7.L >> 15;
285CHECKREG r0, 0x00001001;
286CHECKREG r1, 0x00002002;
287CHECKREG r2, 0x00002002;
288CHECKREG r3, 0x00003003;
289CHECKREG r4, 0x00004004;
290CHECKREG r5, 0x00005005;
291CHECKREG r6, 0x0001FFF1;
292CHECKREG r7, 0x00007007;
293
294imm32 r0, 0x40001001;
295imm32 r1, 0x40002001;
296imm32 r2, 0x40002002;
297imm32 r3, 0x40003003;
298imm32 r4, 0x40004004;
299imm32 r5, 0x40005005;
300imm32 r6, 0x40006006;
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, 0x00201001;
311CHECKREG r1, 0x00402001;
312CHECKREG r2, 0x00402002;
313CHECKREG r3, 0x00603003;
314CHECKREG r4, 0x00804004;
315CHECKREG r5, 0x00A05005;
316CHECKREG r6, 0x00C06006;
317CHECKREG r7, 0x01FFFFF0;
318
319// RHx by RLx
320imm32 r0, 0x50010000;
321imm32 r1, 0x50010000;
322imm32 r2, 0x50020000;
323imm32 r3, 0x50030000;
324R4.L = -1;
325imm32 r5, 0x50050000;
326imm32 r6, 0x50060000;
327imm32 r7, 0x50070000;
328R0.H = R0.H >> 1;
329R1.H = R1.H >> 1;
330R2.H = R2.H >> 1;
331R3.H = R3.H >> 1;
332R4.H = R4.H >> 1;
333R5.H = R5.H >> 1;
334R6.H = R6.H >> 1;
335R7.H = R7.H >> 1;
336CHECKREG r0, 0x28000000;
337CHECKREG r1, 0x28000000;
338CHECKREG r2, 0x28010000;
339CHECKREG r3, 0x28010000;
340CHECKREG r4, 0x0040FFFF;
341CHECKREG r5, 0x28020000;
342CHECKREG r6, 0x28030000;
343CHECKREG r7, 0x28030000;
344
345imm32 r0, 0x10010000;
346imm32 r1, 0x10010000;
347imm32 r2, 0x20020000;
348imm32 r3, 0x30030000;
349imm32 r4, 0x40040000;
350R5.L = -1;
351imm32 r6, 0x60060000;
352imm32 r7, 0x70070000;
353R0.H = R0.H >> 5;
354R1.H = R1.H >> 5;
355R2.H = R2.H >> 5;
356R3.H = R3.H >> 5;
357R4.H = R4.H >> 5;
358R5.H = R5.H >> 5;
359R6.H = R6.H >> 5;
360R7.H = R7.H >> 5;
361CHECKREG r0, 0x00800000;
362CHECKREG r1, 0x00800000;
363CHECKREG r2, 0x01000000;
364CHECKREG r3, 0x01800000;
365CHECKREG r4, 0x02000000;
366CHECKREG r5, 0x0140FFFF;
367CHECKREG r6, 0x03000000;
368CHECKREG r7, 0x03800000;
369
370
371imm32 r0, 0x10010000;
372imm32 r1, 0x10010000;
373imm32 r2, 0x20020000;
374imm32 r3, 0x30030000;
375imm32 r4, 0x40040000;
376imm32 r5, 0x50050000;
377R6.L = -15;
378imm32 r7, 0x70070000;
379R0.L = R0.H >> 6;
380R1.L = R1.H >> 6;
381R2.L = R2.H >> 6;
382R3.L = R3.H >> 6;
383R4.L = R4.H >> 6;
384R5.L = R5.H >> 6;
385R6.L = R6.H >> 6;
386R7.L = R7.H >> 6;
387CHECKREG r0, 0x10010040;
388CHECKREG r1, 0x10010040;
389CHECKREG r2, 0x20020080;
390CHECKREG r3, 0x300300C0;
391CHECKREG r4, 0x40040100;
392CHECKREG r5, 0x50050140;
393CHECKREG r6, 0x0300000C;
394CHECKREG r7, 0x700701C0;
395
396imm32 r0, 0x10010000;
397imm32 r1, 0x10010000;
398imm32 r2, 0x20020000;
399imm32 r2, 0x30030000;
400imm32 r4, 0x40040000;
401imm32 r5, 0x50050000;
402imm32 r6, 0x60060000;
403R7.L = -16;
404R0.H = R0.H >> 15;
405R1.H = R1.H >> 15;
406R2.H = R2.H >> 15;
407R3.H = R3.H >> 15;
408R4.H = R4.H >> 15;
409R5.H = R5.H >> 15;
410R6.H = R6.H >> 15;
411R7.H = R7.H >> 15;
412CHECKREG r0, 0x00000000;
413CHECKREG r1, 0x00000000;
414CHECKREG r2, 0x00000000;
415CHECKREG r3, 0x000000C0;
416CHECKREG r4, 0x00000000;
417CHECKREG r5, 0x00000000;
418CHECKREG r6, 0x00000000;
419CHECKREG r7, 0x0000FFF0;
420
421pass
422