1//Original:/testcases/core/c_dsp32shiftim_ahalf_ln/c_dsp32shiftim_ahalf_ln.dsp
2// Spec Reference: dspshiftimm dreg_lo(hi) = ashift (dreg_lo(hi) by imm5)
3# mach: bfin
4
5.include "testutils.inc"
6	start
7
8// Ashift : neg data, count (+)=left (half reg)
9// d_lo = ashft (d_lo BY d_lo)
10// RLx by RLx
11imm32 r0, 0x1000c000;
12imm32 r1, 0x1000c001;
13imm32 r2, 0x1000c002;
14imm32 r3, 0x1000c003;
15imm32 r4, 0x1000c004;
16imm32 r5, 0x1000c005;
17imm32 r6, 0x1000c006;
18imm32 r7, 0x1000c007;
19R0.L = R0.L << 1;
20R1.L = R1.L << 1;
21R2.L = R2.L << 1;
22R3.L = R3.L << 1;
23R4.L = R4.L << 1;
24R5.L = R5.L << 1;
25R6.L = R6.L << 1;
26R7.L = R7.L << 1;
27CHECKREG r0, 0x10008000;
28CHECKREG r1, 0x10008002;
29CHECKREG r2, 0x10008004;
30CHECKREG r3, 0x10008006;
31CHECKREG r4, 0x10008008;
32CHECKREG r5, 0x1000800A;
33CHECKREG r6, 0x1000800C;
34CHECKREG r7, 0x1000800E;
35
36imm32 r0, 0x20008001;
37imm32 r1, 0x20000001;
38imm32 r2, 0x2000d002;
39imm32 r3, 0x2000e003;
40imm32 r4, 0x2000f004;
41imm32 r5, 0x2000c005;
42imm32 r6, 0x2000d006;
43imm32 r7, 0x2000e007;
44R7.L = R0.L << 1;
45R6.L = R1.L << 1;
46R5.L = R2.L << 1;
47R4.L = R3.L << 1;
48R3.L = R4.L << 1;
49R2.L = R5.L << 1;
50R1.L = R6.L << 1;
51R0.L = R7.L << 1;
52
53imm32 r0, 0x3000c001;
54imm32 r1, 0x3000d001;
55imm32 r2, 0x3000000f;
56imm32 r3, 0x3000e003;
57imm32 r4, 0x3000f004;
58imm32 r5, 0x3000f005;
59imm32 r6, 0x3000f006;
60imm32 r7, 0x3000f007;
61R6.L = R0.L << 12;
62R7.L = R1.L << 12;
63R5.L = R2.L << 12;
64R4.L = R3.L << 12;
65R3.L = R4.L << 12;
66R2.L = R5.L << 12;
67R1.L = R6.L << 12;
68R0.L = R7.L << 12;
69CHECKREG r1, 0x30000000;
70CHECKREG r0, 0x30000000;
71CHECKREG r2, 0x30000000;
72CHECKREG r3, 0x30000000;
73CHECKREG r4, 0x30003000;
74CHECKREG r5, 0x3000F000;
75CHECKREG r6, 0x30001000;
76CHECKREG r7, 0x30001000;
77
78imm32 r0, 0x40009001;
79imm32 r1, 0x4000a001;
80imm32 r2, 0x4000b002;
81imm32 r3, 0x40000010;
82imm32 r4, 0x4000c004;
83imm32 r5, 0x4000d005;
84imm32 r6, 0x4000e006;
85imm32 r7, 0x4000f007;
86R5.L = R0.L << 13;
87R6.L = R1.L << 13;
88R7.L = R2.L << 13;
89R0.L = R3.L << 13;
90R1.L = R4.L << 13;
91R2.L = R5.L << 13;
92R3.L = R6.L << 13;
93R4.L = R7.L << 13;
94CHECKREG r0, 0x40000000;
95CHECKREG r1, 0x40008000;
96CHECKREG r2, 0x40000000;
97CHECKREG r3, 0x40000000;
98CHECKREG r4, 0x40000000;
99CHECKREG r5, 0x40002000;
100CHECKREG r6, 0x40002000;
101CHECKREG r7, 0x40004000;
102
103imm32 r0, 0x00005000;
104imm32 r1, 0x00015000;
105imm32 r2, 0x00025000;
106imm32 r3, 0x00035000;
107imm32 r4, 0x00045000;
108imm32 r5, 0x00055000;
109imm32 r6, 0x00065000;
110imm32 r7, 0x00075500;
111R0.L = R0.H << 10;
112R1.L = R1.H << 10;
113R2.L = R2.H << 10;
114R3.L = R3.H << 10;
115R4.L = R4.H << 10;
116R5.L = R5.H << 10;
117R6.L = R6.H << 10;
118R7.L = R7.H << 10;
119CHECKREG r0, 0x00000000;
120CHECKREG r1, 0x00010400;
121CHECKREG r2, 0x00020800;
122CHECKREG r3, 0x00030C00;
123CHECKREG r4, 0x00041000;
124CHECKREG r5, 0x00051400;
125CHECKREG r6, 0x00061800;
126CHECKREG r7, 0x00071C00;
127
128imm32 r0, 0x90010000;
129imm32 r1, 0x90010001;
130imm32 r2, 0x90020000;
131imm32 r3, 0x90030000;
132imm32 r4, 0x90040000;
133imm32 r5, 0x90050000;
134imm32 r6, 0x90060000;
135imm32 r7, 0x90070000;
136R2.L = R0.H << 11;
137R3.L = R1.H << 11;
138R4.L = R2.H << 11;
139R5.L = R3.H << 11;
140R6.L = R4.H << 11;
141R7.L = R5.H << 11;
142R0.L = R6.H << 11;
143R1.L = R7.H << 11;
144CHECKREG r0, 0x90013000;
145CHECKREG r1, 0x90013800;
146CHECKREG r2, 0x90020800;
147CHECKREG r3, 0x90030800;
148CHECKREG r4, 0x90041000;
149CHECKREG r5, 0x90051800;
150CHECKREG r6, 0x90062000;
151CHECKREG r7, 0x90072800;
152
153
154imm32 r0, 0xa0010600;
155imm32 r1, 0xa0010600;
156imm32 r2, 0xa002060f;
157imm32 r3, 0xa0030600;
158imm32 r4, 0xa0040600;
159imm32 r5, 0xa0050600;
160imm32 r6, 0xa0060600;
161imm32 r7, 0xa0070600;
162R0.L = R0.H << 12;
163R1.L = R1.H << 12;
164R2.L = R2.H << 12;
165R3.L = R3.H << 12;
166R4.L = R4.H << 12;
167R5.L = R5.H << 12;
168R6.L = R6.H << 12;
169R7.L = R7.H << 12;
170CHECKREG r0, 0xA0011000;
171CHECKREG r1, 0xA0011000;
172CHECKREG r2, 0xA0022000;
173CHECKREG r3, 0xA0033000;
174CHECKREG r4, 0xA0044000;
175CHECKREG r5, 0xA0055000;
176CHECKREG r6, 0xA0066000;
177CHECKREG r7, 0xA0077000;
178
179imm32 r0, 0xc0010701;
180imm32 r1, 0xc0010701;
181imm32 r2, 0xc0020702;
182imm32 r3, 0xc0030710;
183imm32 r4, 0xc0040704;
184imm32 r5, 0xc0050705;
185imm32 r6, 0xc0060706;
186imm32 r7, 0xc0070707;
187R0.L = R0.H << 13;
188R1.L = R1.H << 13;
189R2.L = R2.H << 13;
190R3.L = R3.H << 13;
191R4.L = R4.H << 13;
192R5.L = R5.H << 13;
193R6.L = R6.H << 13;
194R7.L = R7.H << 13;
195CHECKREG r0, 0xC0012000;
196CHECKREG r1, 0xC0012000;
197CHECKREG r2, 0xC0024000;
198CHECKREG r3, 0xC0036000;
199CHECKREG r4, 0xC0048000;
200CHECKREG r5, 0xC005A000;
201CHECKREG r6, 0xC006C000;
202CHECKREG r7, 0xC007E000;
203
204imm32 r0, 0x00008000;
205imm32 r1, 0x00008001;
206imm32 r2, 0x00008002;
207imm32 r3, 0x00008003;
208imm32 r4, 0x00008004;
209imm32 r5, 0x00008005;
210imm32 r6, 0x00008006;
211imm32 r7, 0x00008007;
212R0.H = R0.L << 0;
213R1.H = R1.L << 1;
214R2.H = R2.L << 2;
215R3.H = R3.L << 3;
216R4.H = R4.L << 4;
217R5.H = R5.L << 5;
218R6.H = R6.L << 6;
219R7.H = R7.L << 7;
220CHECKREG r0, 0x80008000;
221CHECKREG r1, 0x00028001;
222CHECKREG r2, 0x00088002;
223CHECKREG r3, 0x00188003;
224CHECKREG r4, 0x00408004;
225CHECKREG r5, 0x00A08005;
226CHECKREG r6, 0x01808006;
227CHECKREG r7, 0x03808007;
228
229imm32 r0, 0x0000d001;
230imm32 r1, 0x00000001;
231imm32 r2, 0x0000d002;
232imm32 r3, 0x0000d003;
233imm32 r4, 0x0000d004;
234imm32 r5, 0x0000d005;
235imm32 r6, 0x0000d006;
236imm32 r7, 0x0000d007;
237R2.H = R0.L << 8;
238R3.H = R1.L << 9;
239R4.H = R2.L << 10;
240R5.H = R3.L << 11;
241R6.H = R4.L << 12;
242R7.H = R5.L << 13;
243R0.H = R6.L << 14;
244R1.H = R7.L << 15;
245CHECKREG r0, 0x8000D001;
246CHECKREG r1, 0x80000001;
247CHECKREG r2, 0x0100D002;
248CHECKREG r3, 0x0200D003;
249CHECKREG r4, 0x0800D004;
250CHECKREG r5, 0x1800D005;
251CHECKREG r6, 0x4000D006;
252CHECKREG r7, 0xA000D007;
253
254imm32 r0, 0x0000e001;
255imm32 r1, 0x0000e001;
256imm32 r2, 0x0000000f;
257imm32 r3, 0x0000e003;
258imm32 r4, 0x0000e004;
259imm32 r5, 0x0000e005;
260imm32 r6, 0x0000e006;
261imm32 r7, 0x0000e007;
262R0.H = R0.L << 12;
263R1.H = R1.L << 12;
264R2.H = R2.L << 12;
265R3.H = R3.L << 12;
266R4.H = R4.L << 12;
267R5.H = R5.L << 12;
268R6.H = R6.L << 12;
269R7.H = R7.L << 12;
270CHECKREG r0, 0x1000E001;
271CHECKREG r1, 0x1000E001;
272CHECKREG r2, 0xF000000F;
273CHECKREG r3, 0x3000E003;
274CHECKREG r4, 0x4000E004;
275CHECKREG r5, 0x5000E005;
276CHECKREG r6, 0x6000E006;
277CHECKREG r7, 0x7000E007;
278
279imm32 r0, 0x0000f001;
280imm32 r1, 0x0000f001;
281imm32 r2, 0x0000f002;
282imm32 r3, 0x00000010;
283imm32 r4, 0x0000f004;
284imm32 r5, 0x0000f005;
285imm32 r6, 0x0000f006;
286imm32 r7, 0x0000f007;
287R5.H = R0.L << 13;
288R6.H = R1.L << 13;
289R7.H = R2.L << 13;
290R0.H = R3.L << 13;
291R1.H = R4.L << 13;
292R2.H = R5.L << 13;
293R3.H = R6.L << 13;
294R4.H = R7.L << 13;
295CHECKREG r0, 0x0000F001;
296CHECKREG r1, 0x8000F001;
297CHECKREG r2, 0xA000F002;
298CHECKREG r3, 0xC0000010;
299CHECKREG r4, 0xE000F004;
300CHECKREG r5, 0x2000F005;
301CHECKREG r6, 0x2000F006;
302CHECKREG r7, 0x4000F007;
303
304// d_lo = ashift (d_hi BY d_lo)
305// RHx by RLx
306imm32 r0, 0x90000000;
307imm32 r1, 0x90010000;
308imm32 r2, 0x90020000;
309imm32 r3, 0x90030000;
310imm32 r4, 0x90040000;
311imm32 r5, 0x90050000;
312imm32 r6, 0x90060000;
313imm32 r7, 0x90070000;
314R4.H = R0.H << 10;
315R5.H = R1.H << 10;
316R6.H = R2.H << 10;
317R7.H = R3.H << 10;
318R0.H = R4.H << 10;
319R1.H = R5.H << 10;
320R2.H = R6.H << 10;
321R3.H = R7.H << 10;
322CHECKREG r0, 0x00000000;
323CHECKREG r1, 0x00000000;
324CHECKREG r2, 0x00000000;
325CHECKREG r3, 0x00000000;
326CHECKREG r4, 0x00000000;
327CHECKREG r5, 0x04000000;
328CHECKREG r6, 0x08000000;
329CHECKREG r7, 0x0C000000;
330
331imm32 r0, 0xa0010000;
332imm32 r1, 0x00010001;
333imm32 r2, 0xa0020000;
334imm32 r3, 0xa0030000;
335imm32 r4, 0xa0040000;
336imm32 r5, 0xa0050000;
337imm32 r6, 0xa0060000;
338imm32 r7, 0xa0070000;
339R7.H = R0.H << 11;
340R0.H = R1.H << 11;
341R1.H = R2.H << 11;
342R2.H = R3.H << 11;
343R3.H = R4.H << 11;
344R4.H = R5.H << 11;
345R5.H = R6.H << 11;
346R6.H = R7.H << 11;
347CHECKREG r0, 0x08000000;
348CHECKREG r1, 0x10000001;
349CHECKREG r2, 0x18000000;
350CHECKREG r3, 0x20000000;
351CHECKREG r4, 0x28000000;
352CHECKREG r5, 0x30000000;
353CHECKREG r6, 0x00000000;
354CHECKREG r7, 0x08000000;
355
356
357imm32 r0, 0xb0010000;
358imm32 r1, 0xb0010000;
359imm32 r2, 0xb002000f;
360imm32 r3, 0xb0030000;
361imm32 r4, 0xb0040000;
362imm32 r5, 0xb0050000;
363imm32 r6, 0xb0060000;
364imm32 r7, 0xb0070000;
365R6.H = R0.H << 12;
366R7.H = R1.H << 12;
367R0.H = R2.H << 12;
368R1.H = R3.H << 12;
369R2.H = R4.H << 12;
370R3.H = R5.H << 12;
371R4.H = R6.H << 12;
372R5.H = R7.H << 12;
373CHECKREG r0, 0x20000000;
374CHECKREG r1, 0x30000000;
375CHECKREG r2, 0x4000000F;
376CHECKREG r3, 0x50000000;
377CHECKREG r4, 0x00000000;
378CHECKREG r5, 0x00000000;
379CHECKREG r6, 0x10000000;
380CHECKREG r7, 0x10000000;
381
382imm32 r0, 0xd0010000;
383imm32 r1, 0xd0010000;
384imm32 r2, 0xd0020000;
385imm32 r3, 0xd0030010;
386imm32 r4, 0xd0040000;
387imm32 r5, 0xd0050000;
388imm32 r6, 0xd0060000;
389imm32 r7, 0xd0070000;
390R5.H = R0.H << 3;
391R6.H = R1.H << 3;
392R7.H = R2.H << 3;
393R0.H = R3.H << 3;
394R1.H = R4.H << 3;
395R2.H = R5.H << 3;
396R3.H = R6.H << 3;
397R4.H = R7.H << 3;
398CHECKREG r0, 0x80180000;
399CHECKREG r1, 0x80200000;
400CHECKREG r2, 0x00400000;
401CHECKREG r3, 0x00400010;
402CHECKREG r4, 0x00800000;
403CHECKREG r5, 0x80080000;
404CHECKREG r6, 0x80080000;
405CHECKREG r7, 0x80100000;
406pass
407