1//Original:/testcases/core/c_dsp32shiftim_lhalf_lp/c_dsp32shiftim_lhalf_lp.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 imm5)
12// RLx by imm5
13imm32 r0, 0x00100a00;
14imm32 r1, 0x00100a01;
15imm32 r2, 0x00100a02;
16imm32 r3, 0x00100a03;
17imm32 r4, 0x00100a04;
18imm32 r5, 0x00100a05;
19imm32 r6, 0x00100a06;
20imm32 r7, 0x00100a07;
21R7.L = R0.L << 0;
22R0.L = R1.L << 1;
23R1.L = R2.L << 2;
24R2.L = R3.L << 3;
25R3.L = R4.L << 4;
26R4.L = R5.L << 5;
27R5.L = R6.L << 6;
28R6.L = R7.L << 7;
29CHECKREG r1, 0x00102808;
30CHECKREG r0, 0x00101402;
31CHECKREG r2, 0x00105018;
32CHECKREG r3, 0x0010A040;
33CHECKREG r4, 0x001040A0;
34CHECKREG r5, 0x00108180;
35CHECKREG r6, 0x00100000;
36CHECKREG r7, 0x00100A00;
37
38imm32 r0, 0x00200018;
39imm32 r1, 0x00200019;
40imm32 r2, 0x0020001a;
41imm32 r3, 0x0020001b;
42imm32 r4, 0x0020001c;
43imm32 r5, 0x0020001d;
44imm32 r6, 0x0020001e;
45imm32 r7, 0x0020001f;
46R2.L = R0.L << 8;
47R3.L = R1.L << 9;
48R4.L = R2.L << 10;
49R5.L = R3.L << 11;
50R6.L = R4.L << 12;
51R7.L = R5.L << 13;
52R0.L = R6.L << 14;
53R1.L = R7.L << 15;
54CHECKREG r0, 0x00200000;
55CHECKREG r1, 0x00200000;
56CHECKREG r2, 0x00201800;
57CHECKREG r3, 0x00203200;
58CHECKREG r4, 0x00200000;
59CHECKREG r5, 0x00200000;
60CHECKREG r6, 0x00200000;
61CHECKREG r7, 0x00200000;
62
63imm32 r0, 0x05002001;
64imm32 r1, 0x05002001;
65imm32 r2, 0x0500000f;
66imm32 r3, 0x05002003;
67imm32 r4, 0x05002004;
68imm32 r5, 0x05002005;
69imm32 r6, 0x05002006;
70imm32 r7, 0x05002007;
71R3.L = R0.L << 0;
72R4.L = R1.L << 1;
73R5.L = R2.L << 2;
74R6.L = R3.L << 3;
75R7.L = R4.L << 4;
76R0.L = R5.L << 5;
77R1.L = R6.L << 6;
78R2.L = R7.L << 7;
79CHECKREG r0, 0x05000780;
80CHECKREG r1, 0x05000200;
81CHECKREG r2, 0x05001000;
82CHECKREG r3, 0x05002001;
83CHECKREG r4, 0x05004002;
84CHECKREG r5, 0x0500003C;
85CHECKREG r6, 0x05000008;
86CHECKREG r7, 0x05000020;
87
88imm32 r0, 0x03000031;
89imm32 r1, 0x03000031;
90imm32 r2, 0x03000032;
91imm32 r3, 0x03000030;
92imm32 r4, 0x03000034;
93imm32 r5, 0x03000035;
94imm32 r6, 0x03000036;
95imm32 r7, 0x03000037;
96R4.L = R0.L << 8;
97R5.L = R1.L << 9;
98R6.L = R2.L << 10;
99R7.L = R3.L << 11;
100R0.L = R4.L << 12;
101R1.L = R5.L << 13;
102R2.L = R6.L << 14;
103R3.L = R7.L << 15;
104CHECKREG r0, 0x03000000;
105CHECKREG r1, 0x03000000;
106CHECKREG r2, 0x03000000;
107CHECKREG r3, 0x03000000;
108CHECKREG r4, 0x03003100;
109CHECKREG r5, 0x03006200;
110CHECKREG r6, 0x0300C800;
111CHECKREG r7, 0x03008000;
112// RHx by RLx
113imm32 r0, 0x03000000;
114imm32 r1, 0x03000000;
115imm32 r2, 0x03000000;
116imm32 r3, 0x03000000;
117imm32 r4, 0x03003100;
118imm32 r5, 0x03006200;
119imm32 r6, 0x0300C800;
120imm32 r7, 0x03008000;
121R5.L = R0.H << 0;
122R6.L = R1.H << 1;
123R7.L = R2.H << 2;
124R0.L = R3.H << 3;
125R1.L = R4.H << 4;
126R2.L = R5.H << 5;
127R3.L = R6.H << 6;
128R4.L = R7.H << 7;
129CHECKREG r0, 0x03001800;
130CHECKREG r1, 0x03003000;
131CHECKREG r2, 0x03006000;
132CHECKREG r3, 0x0300C000;
133CHECKREG r4, 0x03008000;
134CHECKREG r5, 0x03000300;
135CHECKREG r6, 0x03000600;
136CHECKREG r7, 0x03000C00;
137
138imm32 r0, 0x05018000;
139imm32 r1, 0x05018001;
140imm32 r2, 0x05028000;
141imm32 r3, 0x05038000;
142imm32 r4, 0x05048000;
143imm32 r5, 0x05058000;
144imm32 r6, 0x05068000;
145imm32 r7, 0x05078000;
146R6.L = R0.H << 8;
147R7.L = R1.H << 9;
148R0.L = R2.H << 10;
149R1.L = R3.H << 11;
150R2.L = R4.H << 12;
151R3.L = R5.H << 13;
152R4.L = R6.H << 14;
153R5.L = R7.H << 15;
154CHECKREG r0, 0x05010800;
155CHECKREG r1, 0x05011800;
156CHECKREG r2, 0x05024000;
157CHECKREG r3, 0x0503A000;
158CHECKREG r4, 0x05048000;
159CHECKREG r5, 0x05058000;
160CHECKREG r6, 0x05060100;
161CHECKREG r7, 0x05070200;
162
163
164imm32 r0, 0x60019000;
165imm32 r1, 0x60019000;
166imm32 r2, 0x6002900f;
167imm32 r3, 0x60039000;
168imm32 r4, 0x60049000;
169imm32 r5, 0x60059000;
170imm32 r6, 0x60069000;
171imm32 r7, 0x60079000;
172R7.L = R0.H << 0;
173R0.L = R1.H << 1;
174R1.L = R2.H << 2;
175R2.L = R3.H << 3;
176R3.L = R4.H << 4;
177R4.L = R5.H << 5;
178R5.L = R6.H << 6;
179R6.L = R7.H << 7;
180CHECKREG r0, 0x6001C002;
181CHECKREG r1, 0x60018008;
182CHECKREG r2, 0x60020018;
183CHECKREG r3, 0x60030040;
184CHECKREG r4, 0x600400A0;
185CHECKREG r5, 0x60050180;
186CHECKREG r6, 0x60060380;
187CHECKREG r7, 0x60076001;
188
189imm32 r0, 0x70010001;
190imm32 r1, 0x70010001;
191imm32 r2, 0x70020002;
192imm32 r3, 0x77030010;
193imm32 r4, 0x70040004;
194imm32 r5, 0x70050005;
195imm32 r6, 0x70060006;
196imm32 r7, 0x70070007;
197R0.L = R0.H << 8;
198R1.L = R1.H << 9;
199R2.L = R2.H << 10;
200R3.L = R3.H << 11;
201R4.L = R4.H << 12;
202R5.L = R5.H << 13;
203R6.L = R6.H << 14;
204R7.L = R7.H << 15;
205CHECKREG r0, 0x70010100;
206CHECKREG r1, 0x70010200;
207CHECKREG r2, 0x70020800;
208CHECKREG r3, 0x77031800;
209CHECKREG r4, 0x70044000;
210CHECKREG r5, 0x7005A000;
211CHECKREG r6, 0x70068000;
212CHECKREG r7, 0x70078000;
213
214// d_hi = lshft (d_lo BY d_lo)
215// RLx by RLx
216imm32 r0, 0xa8000000;
217imm32 r1, 0xa8000001;
218imm32 r2, 0xa8000002;
219imm32 r3, 0xa8000003;
220imm32 r4, 0xa8000004;
221imm32 r5, 0xa8000005;
222imm32 r6, 0xa8000006;
223imm32 r7, 0xa8000007;
224R0.H = R0.L << 0;
225R1.H = R1.L << 1;
226R2.H = R2.L << 2;
227R3.H = R3.L << 3;
228R4.H = R4.L << 4;
229R5.H = R5.L << 5;
230R6.H = R6.L << 6;
231R7.H = R7.L << 7;
232CHECKREG r0, 0x00000000;
233CHECKREG r1, 0x00020001;
234CHECKREG r2, 0x00080002;
235CHECKREG r3, 0x00180003;
236CHECKREG r4, 0x00400004;
237CHECKREG r5, 0x00A00005;
238CHECKREG r6, 0x01800006;
239CHECKREG r7, 0x03800007;
240
241imm32 r0, 0xf0090001;
242imm32 r1, 0xf0090001;
243imm32 r2, 0xf0090002;
244imm32 r3, 0xf0090003;
245imm32 r4, 0xf0090004;
246imm32 r5, 0xf0090005;
247imm32 r6, 0xf0000006;
248imm32 r7, 0xf0000007;
249R1.H = R0.L << 8;
250R2.H = R1.L << 9;
251R3.H = R2.L << 10;
252R4.H = R3.L << 11;
253R5.H = R4.L << 12;
254R6.H = R5.L << 13;
255R7.H = R6.L << 14;
256R0.H = R7.L << 15;
257CHECKREG r1, 0x01000001;
258CHECKREG r2, 0x02000002;
259CHECKREG r3, 0x08000003;
260CHECKREG r4, 0x18000004;
261CHECKREG r5, 0x40000005;
262CHECKREG r6, 0xA0000006;
263CHECKREG r7, 0x80000007;
264CHECKREG r0, 0x80000001;
265
266
267imm32 r0, 0x07000001;
268imm32 r1, 0x07000001;
269imm32 r2, 0x0700000f;
270imm32 r3, 0x07000003;
271imm32 r4, 0x07000004;
272imm32 r5, 0x07000005;
273imm32 r6, 0x07000006;
274imm32 r7, 0x07000007;
275R3.H = R0.L << 0;
276R4.H = R1.L << 1;
277R5.H = R2.L << 2;
278R6.H = R3.L << 3;
279R7.H = R4.L << 4;
280R0.H = R5.L << 5;
281R1.H = R6.L << 6;
282R2.H = R7.L << 7;
283CHECKREG r0, 0x00A00001;
284CHECKREG r1, 0x01800001;
285CHECKREG r2, 0x0380000F;
286CHECKREG r3, 0x00010003;
287CHECKREG r4, 0x00020004;
288CHECKREG r5, 0x003C0005;
289CHECKREG r6, 0x00180006;
290CHECKREG r7, 0x00400007;
291
292imm32 r0, 0x00000501;
293imm32 r1, 0x00000501;
294imm32 r2, 0x00000502;
295imm32 r3, 0x00000510;
296imm32 r4, 0x00000504;
297imm32 r5, 0x00000505;
298imm32 r6, 0x00000506;
299imm32 r7, 0x00000507;
300R4.H = R0.L << 8;
301R5.H = R1.L << 9;
302R6.H = R2.L << 10;
303R7.H = R3.L << 11;
304R0.H = R4.L << 12;
305R1.H = R5.L << 13;
306R2.H = R6.L << 14;
307R3.H = R7.L << 15;
308CHECKREG r0, 0x40000501;
309CHECKREG r1, 0xA0000501;
310CHECKREG r2, 0x80000502;
311CHECKREG r3, 0x80000510;
312CHECKREG r4, 0x01000504;
313CHECKREG r5, 0x02000505;
314CHECKREG r6, 0x08000506;
315CHECKREG r7, 0x80000507;
316
317imm32 r0, 0x00a00800;
318imm32 r1, 0x00a10800;
319imm32 r2, 0x00a20800;
320imm32 r3, 0x00a30800;
321imm32 r4, 0x00a40800;
322imm32 r5, 0x00a50800;
323imm32 r6, 0x00a60800;
324imm32 r7, 0x00a70800;
325R5.H = R0.H << 0;
326R6.H = R1.H << 1;
327R7.H = R2.H << 2;
328R0.H = R3.H << 3;
329R1.H = R4.H << 4;
330R2.H = R5.H << 5;
331R3.H = R6.H << 6;
332R4.H = R7.H << 7;
333CHECKREG r0, 0x05180800;
334CHECKREG r1, 0x0A400800;
335CHECKREG r2, 0x14000800;
336CHECKREG r3, 0x50800800;
337CHECKREG r4, 0x44000800;
338CHECKREG r5, 0x00A00800;
339CHECKREG r6, 0x01420800;
340CHECKREG r7, 0x02880800;
341
342imm32 r0, 0x0c010000;
343imm32 r1, 0x0c010001;
344imm32 r2, 0x0c020000;
345imm32 r3, 0x0c030000;
346imm32 r4, 0x0c040000;
347imm32 r5, 0x0c050000;
348imm32 r6, 0x0c060000;
349imm32 r7, 0x0c070000;
350R6.H = R0.H << 8;
351R7.H = R1.H << 9;
352R0.H = R2.H << 10;
353R1.H = R3.H << 11;
354R2.H = R4.H << 12;
355R3.H = R5.H << 13;
356R4.H = R6.H << 14;
357R5.H = R7.H << 15;
358CHECKREG r0, 0x08000000;
359CHECKREG r1, 0x18000001;
360CHECKREG r2, 0x40000000;
361CHECKREG r3, 0xA0000000;
362CHECKREG r4, 0x00000000;
363CHECKREG r5, 0x00000000;
364CHECKREG r6, 0x01000000;
365CHECKREG r7, 0x02000000;
366
367
368imm32 r0, 0x00b10000;
369imm32 r1, 0x00b10000;
370imm32 r2, 0x00b2000f;
371imm32 r3, 0x00b30000;
372imm32 r4, 0x00b40000;
373imm32 r5, 0x00b50000;
374imm32 r6, 0x00b60000;
375imm32 r7, 0x00b70000;
376R7.L = R0.H << 0;
377R0.L = R1.H << 1;
378R1.L = R2.H << 2;
379R2.L = R3.H << 3;
380R3.L = R4.H << 4;
381R4.L = R5.H << 5;
382R5.L = R6.H << 6;
383R6.L = R7.H << 7;
384CHECKREG r0, 0x00B10162;
385CHECKREG r1, 0x00B102C8;
386CHECKREG r2, 0x00B20598;
387CHECKREG r3, 0x00B30B40;
388CHECKREG r4, 0x00B416A0;
389CHECKREG r5, 0x00B52D80;
390CHECKREG r6, 0x00B65B80;
391CHECKREG r7, 0x00B700B1;
392
393imm32 r0, 0x0a010700;
394imm32 r1, 0x0a010700;
395imm32 r2, 0x0a020700;
396imm32 r3, 0x0a030710;
397imm32 r4, 0x0a040700;
398imm32 r5, 0x0a050700;
399imm32 r6, 0x0a060700;
400imm32 r7, 0x0a070700;
401R0.H = R0.H << 8;
402R1.H = R1.H << 9;
403R2.H = R2.H << 10;
404R3.H = R3.H << 11;
405R4.H = R4.H << 12;
406R5.H = R5.H << 13;
407R6.H = R6.H << 14;
408R7.H = R7.H << 15;
409CHECKREG r0, 0x01000700;
410CHECKREG r1, 0x02000700;
411CHECKREG r2, 0x08000700;
412CHECKREG r3, 0x18000710;
413CHECKREG r4, 0x40000700;
414CHECKREG r5, 0xA0000700;
415CHECKREG r6, 0x80000700;
416CHECKREG r7, 0x80000700;
417
418pass
419