1//Original:/testcases/core/c_dsp32shift_lhalf_ln/c_dsp32shift_lhalf_ln.dsp
2// Spec Reference: dsp32shift lshift
3# mach: bfin
4
5.include "testutils.inc"
6	start
7
8
9
10// lshift : neg data, count (+)=left (half reg)
11// d_lo = lshift (d_lo BY d_lo)
12// RLx by RLx
13imm32 r0, 0x00000000;
14imm32 r1, 0x0000c001;
15imm32 r2, 0x0000c002;
16imm32 r3, 0x0000c003;
17imm32 r4, 0x0000c004;
18imm32 r5, 0x0000c005;
19imm32 r6, 0x0000c006;
20imm32 r7, 0x0000c007;
21R0.L = LSHIFT R0.L BY R0.L;
22R1.L = LSHIFT R1.L BY R0.L;
23R2.L = LSHIFT R2.L BY R0.L;
24R3.L = LSHIFT R3.L BY R0.L;
25R4.L = LSHIFT R4.L BY R0.L;
26R5.L = LSHIFT R5.L BY R0.L;
27R6.L = LSHIFT R6.L BY R0.L;
28R7.L = LSHIFT R7.L BY R0.L;
29CHECKREG r0, 0x00000000;
30CHECKREG r1, 0x0000c001;
31CHECKREG r2, 0x0000c002;
32CHECKREG r3, 0x0000c003;
33CHECKREG r4, 0x0000c004;
34CHECKREG r5, 0x0000c005;
35CHECKREG r6, 0x0000c006;
36CHECKREG r7, 0x0000c007;
37
38imm32 r0, 0x00008001;
39imm32 r1, 0x00000001;
40imm32 r2, 0x0000d002;
41imm32 r3, 0x0000e003;
42imm32 r4, 0x0000f004;
43imm32 r5, 0x0000c005;
44imm32 r6, 0x0000d006;
45imm32 r7, 0x0000e007;
46R0.L = LSHIFT R0.L BY R1.L;
47//rl1 = lshift (rl1 by rl1);
48R2.L = LSHIFT R2.L BY R1.L;
49R3.L = LSHIFT R3.L BY R1.L;
50R4.L = LSHIFT R4.L BY R1.L;
51R5.L = LSHIFT R5.L BY R1.L;
52R6.L = LSHIFT R6.L BY R1.L;
53R7.L = LSHIFT R7.L BY R1.L;
54//CHECKREG r0, 0x00008002; /* why fail with real data R0 = 0x00000002 */
55CHECKREG r1, 0x00000001;
56CHECKREG r2, 0x0000a004;
57CHECKREG r3, 0x0000c006;
58CHECKREG r4, 0x0000e008;
59CHECKREG r5, 0x0000800a;
60CHECKREG r6, 0x0000a00c;
61CHECKREG r7, 0x0000c00e;
62
63
64imm32 r0, 0x0000c001;
65imm32 r1, 0x0000d001;
66imm32 r2, 0x0000000f;
67imm32 r3, 0x0000e003;
68imm32 r4, 0x0000f004;
69imm32 r5, 0x0000f005;
70imm32 r6, 0x0000f006;
71imm32 r7, 0x0000f007;
72R0.L = LSHIFT R0.L BY R2.L;
73R1.L = LSHIFT R1.L BY R2.L;
74//rl2 = lshift (rl2 by rl2);
75R3.L = LSHIFT R3.L BY R2.L;
76R4.L = LSHIFT R4.L BY R2.L;
77R5.L = LSHIFT R5.L BY R2.L;
78R6.L = LSHIFT R6.L BY R2.L;
79R7.L = LSHIFT R7.L BY R2.L;
80CHECKREG r0, 0x00008000;
81CHECKREG r1, 0x00008000;
82CHECKREG r2, 0x0000000f;
83CHECKREG r3, 0x00008000;
84CHECKREG r4, 0x00000000;
85CHECKREG r5, 0x00008000;
86CHECKREG r6, 0x00000000;
87CHECKREG r7, 0x00008000;
88
89imm32 r0, 0x00009001;
90imm32 r1, 0x0000a001;
91imm32 r2, 0x0000b002;
92imm32 r3, 0x00000010;
93imm32 r4, 0x0000c004;
94imm32 r5, 0x0000d005;
95imm32 r6, 0x0000e006;
96imm32 r7, 0x0000f007;
97R0.L = LSHIFT R0.L BY R3.L;
98R1.L = LSHIFT R1.L BY R3.L;
99R2.L = LSHIFT R2.L BY R3.L;
100//rl3 = lshift (rl3 by rl3);
101R4.L = LSHIFT R4.L BY R3.L;
102R5.L = LSHIFT R5.L BY R3.L;
103R6.L = LSHIFT R6.L BY R3.L;
104R7.L = LSHIFT R7.L BY R3.L;
105CHECKREG r0, 0x00000000;
106CHECKREG r1, 0x00000000;
107CHECKREG r2, 0x00000000;
108CHECKREG r3, 0x00000010;
109CHECKREG r4, 0x00000000;
110CHECKREG r5, 0x00000000;
111CHECKREG r6, 0x00000000;
112CHECKREG r7, 0x00000000;
113
114// d_lo = lshft (d_hi BY d_lo)
115// RHx by RLx
116imm32 r0, 0x00000000;
117imm32 r1, 0x00010000;
118imm32 r2, 0x00020000;
119imm32 r3, 0x00030000;
120imm32 r4, 0x00040000;
121imm32 r5, 0x00050000;
122imm32 r6, 0x00060000;
123imm32 r7, 0x00070000;
124R0.L = LSHIFT R0.H BY R0.L;
125R1.L = LSHIFT R1.H BY R0.L;
126R2.L = LSHIFT R2.H BY R0.L;
127R3.L = LSHIFT R3.H BY R0.L;
128R4.L = LSHIFT R4.H BY R0.L;
129R5.L = LSHIFT R5.H BY R0.L;
130R6.L = LSHIFT R6.H BY R0.L;
131R7.L = LSHIFT R7.H BY R0.L;
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, 0x90010000;
142imm32 r1, 0x00010001;
143imm32 r2, 0x90020000;
144imm32 r3, 0x90030000;
145imm32 r4, 0x90040000;
146imm32 r5, 0x90050000;
147imm32 r6, 0x90060000;
148imm32 r7, 0x90070000;
149R0.L = LSHIFT R0.H BY R1.L;
150//rl1 = lshift (rh1 by rl1);
151R2.L = LSHIFT R2.H BY R1.L;
152R3.L = LSHIFT R3.H BY R1.L;
153R4.L = LSHIFT R4.H BY R1.L;
154R5.L = LSHIFT R5.H BY R1.L;
155R6.L = LSHIFT R6.H BY R1.L;
156R7.L = LSHIFT R7.H BY R1.L;
157CHECKREG r0, 0x90012002;
158CHECKREG r1, 0x00010001;
159CHECKREG r2, 0x90022004;
160CHECKREG r3, 0x90032006;
161CHECKREG r4, 0x90042008;
162CHECKREG r5, 0x9005200a;
163CHECKREG r6, 0x9006200c;
164CHECKREG r7, 0x9007200e;
165
166
167imm32 r0, 0xa0010000;
168imm32 r1, 0xa0010000;
169imm32 r2, 0xa002000f;
170imm32 r3, 0xa0030000;
171imm32 r4, 0xa0040000;
172imm32 r5, 0xa0050000;
173imm32 r6, 0xa0060000;
174imm32 r7, 0xa0070000;
175R0.L = LSHIFT R0.H BY R2.L;
176R1.L = LSHIFT R1.H BY R2.L;
177//rl2 = lshift (rh2 by rl2);
178R3.L = LSHIFT R3.H BY R2.L;
179R4.L = LSHIFT R4.H BY R2.L;
180R5.L = LSHIFT R5.H BY R2.L;
181R6.L = LSHIFT R6.H BY R2.L;
182R7.L = LSHIFT R7.H BY R2.L;
183CHECKREG r0, 0xa0018000;
184CHECKREG r1, 0xa0018000;
185CHECKREG r2, 0xa002000f;
186CHECKREG r3, 0xa0038000;
187CHECKREG r4, 0xa0040000;
188CHECKREG r5, 0xa0058000;
189CHECKREG r6, 0xa0060000;
190CHECKREG r7, 0xa0078000;
191
192imm32 r0, 0xc0010001;
193imm32 r1, 0xc0010001;
194imm32 r2, 0xc0020002;
195imm32 r3, 0xc0030010;
196imm32 r4, 0xc0040004;
197imm32 r5, 0xc0050005;
198imm32 r6, 0xc0060006;
199imm32 r7, 0xc0070007;
200R0.L = LSHIFT R0.H BY R3.L;
201R1.L = LSHIFT R1.H BY R3.L;
202R2.L = LSHIFT R2.H BY R3.L;
203//rl3 = lshift (rh3 by rl3);
204R4.L = LSHIFT R4.H BY R3.L;
205R5.L = LSHIFT R5.H BY R3.L;
206R6.L = LSHIFT R6.H BY R3.L;
207R7.L = LSHIFT R7.H BY R3.L;
208CHECKREG r0, 0xc0010000;
209CHECKREG r1, 0xc0010000;
210CHECKREG r2, 0xc0020000;
211CHECKREG r3, 0xc0030010;
212CHECKREG r4, 0xc0040000;
213CHECKREG r5, 0xc0050000;
214CHECKREG r6, 0xc0060000;
215CHECKREG r7, 0xc0070000;
216
217// d_hi = lshft (d_lo BY d_lo)
218// RLx by RLx
219imm32 r0, 0x00000000;
220imm32 r1, 0x00000001;
221imm32 r2, 0x00000002;
222imm32 r3, 0x00000003;
223imm32 r4, 0x00000004;
224imm32 r5, 0x00000005;
225imm32 r6, 0x00000006;
226imm32 r7, 0x00000007;
227R0.H = LSHIFT R0.L BY R0.L;
228R1.H = LSHIFT R1.L BY R0.L;
229R2.H = LSHIFT R2.L BY R0.L;
230R3.H = LSHIFT R3.L BY R0.L;
231R4.H = LSHIFT R4.L BY R0.L;
232R5.H = LSHIFT R5.L BY R0.L;
233R6.H = LSHIFT R6.L BY R0.L;
234R7.H = LSHIFT R7.L BY R0.L;
235CHECKREG r0, 0x00000000;
236CHECKREG r1, 0x00010001;
237CHECKREG r2, 0x00020002;
238CHECKREG r3, 0x00030003;
239CHECKREG r4, 0x00040004;
240CHECKREG r5, 0x00050005;
241CHECKREG r6, 0x00060006;
242CHECKREG r7, 0x00070007;
243
244imm32 r0, 0x0000d001;
245imm32 r1, 0x00000001;
246imm32 r2, 0x0000d002;
247imm32 r3, 0x0000d003;
248imm32 r4, 0x0000d004;
249imm32 r5, 0x0000d005;
250imm32 r6, 0x0000d006;
251imm32 r7, 0x0000d007;
252R0.H = LSHIFT R0.L BY R1.L;
253R1.H = LSHIFT R1.L BY R1.L;
254R2.H = LSHIFT R2.L BY R1.L;
255R3.H = LSHIFT R3.L BY R1.L;
256R4.H = LSHIFT R4.L BY R1.L;
257R5.H = LSHIFT R5.L BY R1.L;
258R6.H = LSHIFT R6.L BY R1.L;
259R7.H = LSHIFT R7.L BY R1.L;
260CHECKREG r0, 0xa002d001;
261CHECKREG r1, 0x00020001;
262CHECKREG r2, 0xa004d002;
263CHECKREG r3, 0xa006d003;
264CHECKREG r4, 0xa008d004;
265CHECKREG r5, 0xa00ad005;
266CHECKREG r6, 0xa00cd006;
267CHECKREG r7, 0xa00ed007;
268
269
270imm32 r0, 0x0000e001;
271imm32 r1, 0x0000e001;
272imm32 r2, 0x0000000f;
273imm32 r3, 0x0000e003;
274imm32 r4, 0x0000e004;
275imm32 r5, 0x0000e005;
276imm32 r6, 0x0000e006;
277imm32 r7, 0x0000e007;
278R0.H = LSHIFT R0.L BY R2.L;
279R1.H = LSHIFT R1.L BY R2.L;
280//rh2 = lshift (rl2 by rl2);
281R3.H = LSHIFT R3.L BY R2.L;
282R4.H = LSHIFT R4.L BY R2.L;
283R5.H = LSHIFT R5.L BY R2.L;
284R6.H = LSHIFT R6.L BY R2.L;
285R7.H = LSHIFT R7.L BY R2.L;
286CHECKREG r0, 0x8000e001;
287CHECKREG r1, 0x8000e001;
288CHECKREG r2, 0x0000000f;
289CHECKREG r3, 0x8000e003;
290CHECKREG r4, 0x0000e004;
291CHECKREG r5, 0x8000e005;
292CHECKREG r6, 0x0000e006;
293CHECKREG r7, 0x8000e007;
294
295imm32 r0, 0x0000f001;
296imm32 r1, 0x0000f001;
297imm32 r2, 0x0000f002;
298imm32 r3, 0x00000010;
299imm32 r4, 0x0000f004;
300imm32 r5, 0x0000f005;
301imm32 r6, 0x0000f006;
302imm32 r7, 0x0000f007;
303R0.H = LSHIFT R0.L BY R3.L;
304R1.H = LSHIFT R1.L BY R3.L;
305R2.H = LSHIFT R2.L BY R3.L;
306R3.H = LSHIFT R3.L BY R3.L;
307R4.H = LSHIFT R4.L BY R3.L;
308R5.H = LSHIFT R5.L BY R3.L;
309R6.H = LSHIFT R6.L BY R3.L;
310R7.H = LSHIFT R7.L BY R3.L;
311CHECKREG r0, 0x0000f001;
312CHECKREG r1, 0x0000f001;
313CHECKREG r2, 0x0000f002;
314CHECKREG r3, 0x00000010;
315CHECKREG r4, 0x0000f004;
316CHECKREG r5, 0x0000f005;
317CHECKREG r6, 0x0000f006;
318CHECKREG r7, 0x0000f007;
319
320// d_lo = lshft (d_hi BY d_lo)
321// RHx by RLx
322imm32 r0, 0x00000000;
323imm32 r1, 0x00010000;
324imm32 r2, 0x00020000;
325imm32 r3, 0x00030000;
326imm32 r4, 0x00040000;
327imm32 r5, 0x00050000;
328imm32 r6, 0x00060000;
329imm32 r7, 0x00070000;
330R0.H = LSHIFT R0.H BY R0.L;
331R1.H = LSHIFT R1.H BY R0.L;
332R2.H = LSHIFT R2.H BY R0.L;
333R3.H = LSHIFT R3.H BY R0.L;
334R4.H = LSHIFT R4.H BY R0.L;
335R5.H = LSHIFT R5.H BY R0.L;
336R6.H = LSHIFT R6.H BY R0.L;
337R7.H = LSHIFT R7.H BY R0.L;
338CHECKREG r0, 0x00000000;
339CHECKREG r1, 0x00010000;
340CHECKREG r2, 0x00020000;
341CHECKREG r3, 0x00030000;
342CHECKREG r4, 0x00040000;
343CHECKREG r5, 0x00050000;
344CHECKREG r6, 0x00060000;
345CHECKREG r7, 0x00070000;
346
347imm32 r0, 0xa0010000;
348imm32 r1, 0x00010001;
349imm32 r2, 0xa0020000;
350imm32 r3, 0xa0030000;
351imm32 r4, 0xa0040000;
352imm32 r5, 0xa0050000;
353imm32 r6, 0xa0060000;
354imm32 r7, 0xa0070000;
355R0.H = LSHIFT R0.H BY R1.L;
356R1.H = LSHIFT R1.H BY R1.L;
357R2.H = LSHIFT R2.H BY R1.L;
358R3.H = LSHIFT R3.H BY R1.L;
359R4.H = LSHIFT R4.H BY R1.L;
360R5.H = LSHIFT R5.H BY R1.L;
361R6.H = LSHIFT R6.H BY R1.L;
362R7.H = LSHIFT R7.H BY R1.L;
363CHECKREG r0, 0x40020000;
364CHECKREG r1, 0x00020001;
365CHECKREG r2, 0x40040000;
366CHECKREG r3, 0x40060000;
367CHECKREG r4, 0x40080000;
368CHECKREG r5, 0x400a0000;
369CHECKREG r6, 0x400c0000;
370CHECKREG r7, 0x400e0000;
371
372
373imm32 r0, 0xb0010000;
374imm32 r1, 0xb0010000;
375imm32 r2, 0xb002000f;
376imm32 r3, 0xb0030000;
377imm32 r4, 0xb0040000;
378imm32 r5, 0xb0050000;
379imm32 r6, 0xb0060000;
380imm32 r7, 0xb0070000;
381R0.L = LSHIFT R0.H BY R2.L;
382R1.L = LSHIFT R1.H BY R2.L;
383//rl2 = lshift (rh2 by rl2);
384R3.L = LSHIFT R3.H BY R2.L;
385R4.L = LSHIFT R4.H BY R2.L;
386R5.L = LSHIFT R5.H BY R2.L;
387R6.L = LSHIFT R6.H BY R2.L;
388R7.L = LSHIFT R7.H BY R2.L;
389CHECKREG r0, 0xb0018000;
390CHECKREG r1, 0xb0018000;
391CHECKREG r2, 0xb002000f;
392CHECKREG r3, 0xb0038000;
393CHECKREG r4, 0xb0040000;
394CHECKREG r5, 0xb0058000;
395CHECKREG r6, 0xb0060000;
396CHECKREG r7, 0xb0078000;
397
398imm32 r0, 0xd0010000;
399imm32 r1, 0xd0010000;
400imm32 r2, 0xd0020000;
401imm32 r3, 0xd0030010;
402imm32 r4, 0xd0040000;
403imm32 r5, 0xd0050000;
404imm32 r6, 0xd0060000;
405imm32 r7, 0xd0070000;
406R0.H = LSHIFT R0.H BY R3.L;
407R1.H = LSHIFT R1.H BY R3.L;
408R2.H = LSHIFT R2.H BY R3.L;
409R3.H = LSHIFT R3.H BY R3.L;
410R4.H = LSHIFT R4.H BY R3.L;
411R5.H = LSHIFT R5.H BY R3.L;
412R6.H = LSHIFT R6.H BY R3.L;
413R7.H = LSHIFT R7.H BY R3.L;
414CHECKREG r0, 0x00000000;
415CHECKREG r1, 0x00000000;
416CHECKREG r2, 0x00000000;
417CHECKREG r3, 0x00000010;
418CHECKREG r4, 0x00000000;
419CHECKREG r5, 0x00000000;
420CHECKREG r6, 0x00000000;
421CHECKREG r7, 0x00000000;
422pass
423