1//Original:/testcases/core/c_dsp32shift_lhalf_rn/c_dsp32shift_lhalf_rn.dsp
2// Spec Reference: dsp32shift lshift
3# mach: bfin
4
5.include "testutils.inc"
6	start
7
8
9
10
11// lshift : positive data, count (+)=left (half reg)
12// d_lo = lshift (d_lo BY d_lo)
13// RLx by RLx
14imm32 r0, 0x00000000;
15R0.L = -1;
16imm32 r1, 0x00008001;
17imm32 r2, 0x00008002;
18imm32 r3, 0x00008003;
19imm32 r4, 0x00008004;
20imm32 r5, 0x00008005;
21imm32 r6, 0x00008006;
22imm32 r7, 0x00008007;
23//rl0 = lshift (rl0 by rl0);
24R1.L = LSHIFT R1.L BY R0.L;
25R2.L = LSHIFT R2.L BY R0.L;
26R3.L = LSHIFT R3.L BY R0.L;
27R4.L = LSHIFT R4.L BY R0.L;
28R5.L = LSHIFT R5.L BY R0.L;
29R6.L = LSHIFT R6.L BY R0.L;
30R7.L = LSHIFT R7.L BY R0.L;
31//CHECKREG r0, 0x00000000;
32CHECKREG r1, 0x00004000;
33CHECKREG r2, 0x00004001;
34CHECKREG r3, 0x00004001;
35CHECKREG r4, 0x00004002;
36CHECKREG r5, 0x00004002;
37CHECKREG r6, 0x00004003;
38CHECKREG r7, 0x00004003;
39
40imm32 r0, 0x00008001;
41R1.L = -1;
42imm32 r2, 0x00008002;
43imm32 r3, 0x00008003;
44imm32 r4, 0x00008004;
45imm32 r5, 0x00008005;
46imm32 r6, 0x00008006;
47imm32 r7, 0x00008007;
48R0.L = LSHIFT R0.L BY R1.L;
49//rl1 = lshift (rl1 by rl1);
50R2.L = LSHIFT R2.L BY R1.L;
51R3.L = LSHIFT R3.L BY R1.L;
52R4.L = LSHIFT R4.L BY R1.L;
53R5.L = LSHIFT R5.L BY R1.L;
54R6.L = LSHIFT R6.L BY R1.L;
55R7.L = LSHIFT R7.L BY R1.L;
56CHECKREG r0, 0x00004000;
57//CHECKREG r1, 0x00000001;
58CHECKREG r2, 0x00004001;
59CHECKREG r3, 0x00004001;
60CHECKREG r4, 0x00004002;
61CHECKREG r5, 0x00004002;
62CHECKREG r6, 0x00004003;
63CHECKREG r7, 0x00004003;
64
65
66imm32 r0, 0x00008001;
67imm32 r1, 0x00008001;
68R2.L = -15;
69imm32 r3, 0x00008003;
70imm32 r4, 0x00008004;
71imm32 r5, 0x00008005;
72imm32 r6, 0x00008006;
73imm32 r7, 0x00008007;
74R0.L = LSHIFT R0.L BY R2.L;
75R1.L = LSHIFT R1.L BY R2.L;
76//rl2 = lshift (rl2 by rl2);
77R3.L = LSHIFT R3.L BY R2.L;
78R4.L = LSHIFT R4.L BY R2.L;
79R5.L = LSHIFT R5.L BY R2.L;
80R6.L = LSHIFT R6.L BY R2.L;
81R7.L = LSHIFT R7.L BY R2.L;
82CHECKREG r0, 0x00000001;
83CHECKREG r1, 0x00000001;
84//CHECKREG r2, 0x0000000f;
85CHECKREG r3, 0x00000001;
86CHECKREG r4, 0x00000001;
87CHECKREG r5, 0x00000001;
88CHECKREG r6, 0x00000001;
89CHECKREG r7, 0x00000001;
90
91imm32 r0, 0x00008001;
92imm32 r1, 0x00008001;
93imm32 r2, 0x00008002;
94R3.L = -16;
95imm32 r4, 0x00008004;
96imm32 r5, 0x00008005;
97imm32 r6, 0x00008006;
98imm32 r7, 0x00008007;
99R0.L = LSHIFT R0.L BY R3.L;
100R1.L = LSHIFT R1.L BY R3.L;
101R2.L = LSHIFT R2.L BY R3.L;
102//rl3 = lshift (rl3 by rl3);
103R4.L = LSHIFT R4.L BY R3.L;
104R5.L = LSHIFT R5.L BY R3.L;
105R6.L = LSHIFT R6.L BY R3.L;
106R7.L = LSHIFT R7.L BY R3.L;
107CHECKREG r0, 0x00000000;
108CHECKREG r1, 0x00000000;
109CHECKREG r2, 0x00000000;
110//CHECKREG r3, 0x00000010;
111CHECKREG r4, 0x00000000;
112CHECKREG r5, 0x00000000;
113CHECKREG r6, 0x00000000;
114CHECKREG r7, 0x00000000;
115
116// d_lo = ashft (d_hi BY d_lo)
117// RHx by RLx
118imm32 r0, 0x00000000;
119imm32 r1, 0x80010000;
120imm32 r2, 0x80020000;
121imm32 r3, 0x80030000;
122imm32 r4, 0x80040000;
123imm32 r5, 0x80050000;
124imm32 r6, 0x80060000;
125imm32 r7, 0x80070000;
126R0.L = LSHIFT R0.H BY R0.L;
127R1.L = LSHIFT R1.H BY R0.L;
128R2.L = LSHIFT R2.H BY R0.L;
129R3.L = LSHIFT R3.H BY R0.L;
130R4.L = LSHIFT R4.H BY R0.L;
131R5.L = LSHIFT R5.H BY R0.L;
132R6.L = LSHIFT R6.H BY R0.L;
133R7.L = LSHIFT R7.H BY R0.L;
134CHECKREG r0, 0x00000000;
135CHECKREG r1, 0x80018001;
136CHECKREG r2, 0x80028002;
137CHECKREG r3, 0x80038003;
138CHECKREG r4, 0x80048004;
139CHECKREG r5, 0x80058005;
140CHECKREG r6, 0x80068006;
141CHECKREG r7, 0x80078007;
142
143imm32 r0, 0x80010000;
144R1.L = -1;
145imm32 r2, 0x80020000;
146imm32 r3, 0x80030000;
147imm32 r4, 0x80040000;
148imm32 r5, 0x80050000;
149imm32 r6, 0x80060000;
150imm32 r7, 0x80070000;
151R0.L = LSHIFT R0.H BY R1.L;
152//rl1 = lshift (rh1 by rl1);
153R2.L = LSHIFT R2.H BY R1.L;
154R3.L = LSHIFT R3.H BY R1.L;
155R4.L = LSHIFT R4.H BY R1.L;
156R5.L = LSHIFT R5.H BY R1.L;
157R6.L = LSHIFT R6.H BY R1.L;
158R7.L = LSHIFT R7.H BY R1.L;
159CHECKREG r0, 0x80014000;
160//CHECKREG r1, 0x00010001;
161CHECKREG r2, 0x80024001;
162CHECKREG r3, 0x80034001;
163CHECKREG r4, 0x80044002;
164CHECKREG r5, 0x80054002;
165CHECKREG r6, 0x80064003;
166CHECKREG r7, 0x80074003;
167
168
169imm32 r0, 0xa0010000;
170imm32 r1, 0xa0010000;
171R2.L = -15;
172imm32 r3, 0xa0030000;
173imm32 r4, 0xa0040000;
174imm32 r5, 0xa0050000;
175imm32 r6, 0xa0060000;
176imm32 r7, 0xa0070000;
177R0.L = LSHIFT R0.H BY R2.L;
178R1.L = LSHIFT R1.H BY R2.L;
179//rl2 = lshift (rh2 by rl2);
180R3.L = LSHIFT R3.H BY R2.L;
181R4.L = LSHIFT R4.H BY R2.L;
182R5.L = LSHIFT R5.H BY R2.L;
183R6.L = LSHIFT R6.H BY R2.L;
184R7.L = LSHIFT R7.H BY R2.L;
185CHECKREG r0, 0xa0010001;
186CHECKREG r1, 0xa0010001;
187//CHECKREG r2, 0x2002000f;
188CHECKREG r3, 0xa0030001;
189CHECKREG r4, 0xa0040001;
190CHECKREG r5, 0xa0050001;
191CHECKREG r6, 0xa0060001;
192CHECKREG r7, 0xa0070001;
193
194imm32 r0, 0xb0010001;
195imm32 r1, 0xb0010001;
196imm32 r2, 0xb0020002;
197R3.L = -16;
198imm32 r4, 0xb0040004;
199imm32 r5, 0xb0050005;
200imm32 r6, 0xb0060006;
201imm32 r7, 0xb0070007;
202R0.L = LSHIFT R0.H BY R3.L;
203R1.L = LSHIFT R1.H BY R3.L;
204R2.L = LSHIFT R2.H BY R3.L;
205//rl3 = lshift (rh3 by rl3);
206R4.L = LSHIFT R4.H BY R3.L;
207R5.L = LSHIFT R5.H BY R3.L;
208R6.L = LSHIFT R6.H BY R3.L;
209R7.L = LSHIFT R7.H BY R3.L;
210CHECKREG r0, 0xb0010000;
211CHECKREG r1, 0xb0010000;
212CHECKREG r2, 0xb0020000;
213//CHECKREG r3, 0x30030010;
214CHECKREG r4, 0xb0040000;
215CHECKREG r5, 0xb0050000;
216CHECKREG r6, 0xb0060000;
217CHECKREG r7, 0xb0070000;
218
219// d_hi = ashft (d_lo BY d_lo)
220// RLx by RLx
221imm32 r0, 0x00000001;
222imm32 r1, 0x00000001;
223imm32 r2, 0x00000002;
224imm32 r3, 0x00000003;
225imm32 r4, 0x00000000;
226imm32 r5, 0x00000005;
227imm32 r6, 0x00000006;
228imm32 r7, 0x00000007;
229R0.H = LSHIFT R0.L BY R4.L;
230R1.H = LSHIFT R1.L BY R4.L;
231R2.H = LSHIFT R2.L BY R4.L;
232R3.H = LSHIFT R3.L BY R4.L;
233//rh4 = lshift (rl4 by rl4);
234R5.H = LSHIFT R5.L BY R4.L;
235R6.H = LSHIFT R6.L BY R4.L;
236R7.H = LSHIFT R7.L BY R4.L;
237CHECKREG r0, 0x00010001;
238CHECKREG r1, 0x00010001;
239CHECKREG r2, 0x00020002;
240CHECKREG r3, 0x00030003;
241//CHECKREG r4, 0x00040004;
242CHECKREG r5, 0x00050005;
243CHECKREG r6, 0x00060006;
244CHECKREG r7, 0x00070007;
245
246imm32 r0, 0x00008001;
247imm32 r1, 0x00008001;
248imm32 r2, 0x00008002;
249imm32 r3, 0x00008003;
250imm32 r4, 0x00008004;
251R5.L = -1;
252imm32 r6, 0x00008006;
253imm32 r7, 0x00008007;
254R0.H = LSHIFT R0.L BY R5.L;
255R1.H = LSHIFT R1.L BY R5.L;
256R2.H = LSHIFT R2.L BY R5.L;
257R3.H = LSHIFT R3.L BY R5.L;
258R4.H = LSHIFT R4.L BY R5.L;
259//rh5 = lshift (rl5 by rl5);
260R6.H = LSHIFT R6.L BY R5.L;
261R7.H = LSHIFT R7.L BY R5.L;
262CHECKREG r0, 0x40008001;
263CHECKREG r1, 0x40008001;
264CHECKREG r2, 0x40018002;
265CHECKREG r3, 0x40018003;
266CHECKREG r4, 0x40028004;
267//CHECKREG r5, 0x00020005;
268CHECKREG r6, 0x40038006;
269CHECKREG r7, 0x40038007;
270
271
272imm32 r0, 0x00009001;
273imm32 r1, 0x00009001;
274imm32 r2, 0x00009002;
275imm32 r3, 0x00009003;
276imm32 r4, 0x00009004;
277imm32 r5, 0x00009005;
278R6.L = -15;
279imm32 r7, 0x00009007;
280R0.H = LSHIFT R0.L BY R6.L;
281R1.H = LSHIFT R1.L BY R6.L;
282R2.H = LSHIFT R2.L BY R6.L;
283R3.H = LSHIFT R3.L BY R6.L;
284R4.H = LSHIFT R4.L BY R6.L;
285R5.H = LSHIFT R5.L BY R6.L;
286//rh6 = lshift (rl6 by rl6);
287R7.H = LSHIFT R7.L BY R6.L;
288CHECKREG r0, 0x00019001;
289CHECKREG r1, 0x00019001;
290CHECKREG r2, 0x00019002;
291CHECKREG r3, 0x00019003;
292CHECKREG r4, 0x00019004;
293CHECKREG r5, 0x00019005;
294//CHECKREG r6, 0x00006006;
295CHECKREG r7, 0x00019007;
296
297imm32 r0, 0x0000a001;
298imm32 r1, 0x0000a001;
299imm32 r2, 0x0000a002;
300imm32 r3, 0x0000a003;
301imm32 r4, 0x0000a004;
302imm32 r5, 0x0000a005;
303imm32 r6, 0x0000a006;
304R7.L = -16;
305R0.H = LSHIFT R0.L BY R7.L;
306R1.H = LSHIFT R1.L BY R7.L;
307R2.H = LSHIFT R2.L BY R7.L;
308R3.H = LSHIFT R3.L BY R7.L;
309R4.H = LSHIFT R4.L BY R7.L;
310R5.H = LSHIFT R5.L BY R7.L;
311R6.H = LSHIFT R6.L BY R7.L;
312R7.H = LSHIFT R7.L BY R7.L;
313CHECKREG r0, 0x0000a001;
314CHECKREG r1, 0x0000a001;
315CHECKREG r2, 0x0000a002;
316CHECKREG r3, 0x0000a003;
317CHECKREG r4, 0x0000a004;
318CHECKREG r5, 0x0000a005;
319CHECKREG r6, 0x0000a006;
320//CHECKREG r7, 0x00007007;
321
322// d_lo = ashft (d_hi BY d_lo)
323// RHx by RLx
324imm32 r0, 0x80010000;
325imm32 r1, 0x80010000;
326imm32 r2, 0x80020000;
327imm32 r3, 0x80030000;
328R4.L = -1;
329imm32 r5, 0x80050000;
330imm32 r6, 0x80060000;
331imm32 r7, 0x80070000;
332R0.H = LSHIFT R0.H BY R4.L;
333R1.H = LSHIFT R1.H BY R4.L;
334R2.H = LSHIFT R2.H BY R4.L;
335R3.H = LSHIFT R3.H BY R4.L;
336//rh4 = lshift (rh4 by rl4);
337R5.H = LSHIFT R5.H BY R4.L;
338R6.H = LSHIFT R6.H BY R4.L;
339R7.H = LSHIFT R7.H BY R4.L;
340CHECKREG r0, 0x40000000;
341CHECKREG r1, 0x40000000;
342CHECKREG r2, 0x40010000;
343CHECKREG r3, 0x40010000;
344//CHECKREG r4, 0x00020000;
345CHECKREG r5, 0x40020000;
346CHECKREG r6, 0x40030000;
347CHECKREG r7, 0x40030000;
348
349imm32 r0, 0x80010000;
350imm32 r1, 0x80010000;
351imm32 r2, 0x80020000;
352imm32 r3, 0x80030000;
353imm32 r4, 0x80040000;
354R5.L = -1;
355imm32 r6, 0x80060000;
356imm32 r7, 0x80070000;
357R0.H = LSHIFT R0.H BY R5.L;
358R1.H = LSHIFT R1.H BY R5.L;
359R2.H = LSHIFT R2.H BY R5.L;
360R3.H = LSHIFT R3.H BY R5.L;
361R4.H = LSHIFT R4.H BY R5.L;
362//rh5 = lshift (rh5 by rl5);
363R6.H = LSHIFT R6.H BY R5.L;
364R7.H = LSHIFT R7.H BY R5.L;
365CHECKREG r0, 0x40000000;
366CHECKREG r1, 0x40000000;
367CHECKREG r2, 0x40010000;
368CHECKREG r3, 0x40010000;
369CHECKREG r4, 0x40020000;
370//CHECKREG r5, 0x28020000;
371CHECKREG r6, 0x40030000;
372CHECKREG r7, 0x40030000;
373
374
375imm32 r0, 0xd0010000;
376imm32 r1, 0xd0010000;
377imm32 r2, 0xd0020000;
378imm32 r3, 0xd0030000;
379imm32 r4, 0xd0040000;
380imm32 r5, 0xd0050000;
381R6.L = -15;
382imm32 r7, 0xd0070000;
383R0.L = LSHIFT R0.H BY R6.L;
384R1.L = LSHIFT R1.H BY R6.L;
385R2.L = LSHIFT R2.H BY R6.L;
386R3.L = LSHIFT R3.H BY R6.L;
387R4.L = LSHIFT R4.H BY R6.L;
388R5.L = LSHIFT R5.H BY R6.L;
389//rl6 = lshift (rh6 by rl6);
390R7.L = LSHIFT R7.H BY R6.L;
391CHECKREG r0, 0xd0010001;
392CHECKREG r1, 0xd0010001;
393CHECKREG r2, 0xd0020001;
394CHECKREG r3, 0xd0030001;
395CHECKREG r4, 0xd0040001;
396CHECKREG r5, 0xd0050001;
397//CHECKREG r6, 0x60060000;
398CHECKREG r7, 0xd0070001;
399
400imm32 r0, 0xe0010000;
401imm32 r1, 0xe0010000;
402imm32 r2, 0xe0020000;
403imm32 r3, 0xe0030000;
404imm32 r4, 0xe0040000;
405imm32 r5, 0xe0050000;
406imm32 r6, 0xe0060000;
407R7.L = -16;
408R0.H = LSHIFT R0.H BY R7.L;
409R1.H = LSHIFT R1.H BY R7.L;
410R2.H = LSHIFT R2.H BY R7.L;
411R3.H = LSHIFT R3.H BY R7.L;
412R4.H = LSHIFT R4.H BY R7.L;
413R5.H = LSHIFT R5.H BY R7.L;
414R6.H = LSHIFT R6.H BY R7.L;
415//rh7 = lshift (rh7 by rl7);
416CHECKREG r0, 0x00000000;
417CHECKREG r1, 0x00000000;
418CHECKREG r2, 0x00000000;
419CHECKREG r3, 0x00000000;
420CHECKREG r4, 0x00000000;
421CHECKREG r5, 0x00000000;
422CHECKREG r6, 0x00000000;
423//CHECKREG r7, -16;
424
425pass
426