1//Original:/testcases/core/c_dsp32shift_lf/c_dsp32shift_lf.dsp
2// Spec Reference: dsp32shift lshift
3# mach: bfin
4
5.include "testutils.inc"
6	start
7
8
9
10// lshift : mix data, count (+)= (half reg)
11// d_reg = lshift (d BY d_lo)
12// Rx by RLx
13imm32 r0, 0x01210001;
14imm32 r1, 0x12315678;
15imm32 r2, 0x23416789;
16imm32 r3, 0x3451789a;
17imm32 r4, 0x856189ab;
18imm32 r5, 0x96719abc;
19imm32 r6, 0xa781abcd;
20imm32 r7, 0xb891bcde;
21R7 = LSHIFT R0 BY R0.L;
22R6 = LSHIFT R1 BY R0.L;
23R0 = LSHIFT R2 BY R0.L;
24R1 = LSHIFT R3 BY R0.L;
25R2 = LSHIFT R4 BY R0.L;
26R3 = LSHIFT R5 BY R0.L;
27R4 = LSHIFT R6 BY R0.L;
28R5 = LSHIFT R7 BY R0.L;
29CHECKREG r0, 0x4682CF12;
30CHECKREG r1, 0xE2680000;
31CHECKREG r2, 0x26AC0000;
32CHECKREG r3, 0x6AF00000;
33CHECKREG r4, 0xB3C00000;
34CHECKREG r5, 0x00080000;
35CHECKREG r6, 0x2462ACF0;
36CHECKREG r7, 0x02420002;
37
38imm32 r0, 0x01220002;
39imm32 r1, 0x12325678;
40imm32 r2, 0x23426789;
41imm32 r3, 0x3452789a;
42imm32 r4, 0x956289ab;
43imm32 r5, 0xa6729abc;
44imm32 r6, 0xb782abcd;
45imm32 r7, 0xc892bcde;
46R1.L = 2;
47R3 = LSHIFT R0 BY R1.L;
48R4 = LSHIFT R1 BY R1.L;
49R5 = LSHIFT R2 BY R1.L;
50R6 = LSHIFT R3 BY R1.L;
51R7 = LSHIFT R4 BY R1.L;
52R0 = LSHIFT R5 BY R1.L;
53R1 = LSHIFT R6 BY R1.L;
54R2 = LSHIFT R7 BY R1.L;
55CHECKREG r0, 0x34267890;
56CHECKREG r1, 0x48800080;
57CHECKREG r2, 0x23200020;
58CHECKREG r3, 0x04880008;
59CHECKREG r4, 0x48C80008;
60CHECKREG r5, 0x8D099E24;
61CHECKREG r6, 0x12200020;
62CHECKREG r7, 0x23200020;
63
64imm32 r0, 0x01230002;
65imm32 r1, 0x12335678;
66imm32 r2, 0x23436789;
67imm32 r3, 0x3453789a;
68imm32 r4, 0x456389ab;
69imm32 r5, 0x56739abc;
70imm32 r6, 0x6783abcd;
71imm32 r7, 0x789abcde;
72R2 = 14;
73R0 = LSHIFT R4 BY R2.L;
74R1 = LSHIFT R5 BY R2.L;
75R2 = LSHIFT R6 BY R2.L;
76R3 = LSHIFT R7 BY R2.L;
77CHECKREG r0, 0xE26AC000;
78CHECKREG r1, 0xE6AF0000;
79CHECKREG r2, 0xEAF34000;
80CHECKREG r3, 0x789ABCDE;
81
82imm32 r0, 0x01240002;
83imm32 r1, 0x12345678;
84imm32 r2, 0x23446789;
85imm32 r3, 0x3454789a;
86imm32 r4, 0xa56489ab;
87imm32 r5, 0xb6749abc;
88imm32 r6, 0xc784abcd;
89imm32 r7, 0xd894bcde;
90R3.L = 15;
91R4 = LSHIFT R0 BY R3.L;
92R5 = LSHIFT R1 BY R3.L;
93R6 = LSHIFT R2 BY R3.L;
94R7 = LSHIFT R3 BY R3.L;
95R0 = LSHIFT R4 BY R3.L;
96R1 = LSHIFT R5 BY R3.L;
97R2 = LSHIFT R6 BY R3.L;
98R3 = LSHIFT R7 BY R3.L;
99CHECKREG r0, 0x80000000;
100CHECKREG r1, 0x00000000;
101CHECKREG r2, 0x40000000;
102CHECKREG r3, 0xC0000000;
103CHECKREG r4, 0x00010000;
104CHECKREG r5, 0x2B3C0000;
105CHECKREG r6, 0x33C48000;
106CHECKREG r7, 0x00078000;
107
108imm32 r0, 0x01250002;
109imm32 r1, 0x12355678;
110imm32 r2, 0x23456789;
111imm32 r3, 0x3455789a;
112imm32 r4, 0x456589ab;
113imm32 r5, 0x56759abc;
114imm32 r6, 0x6785abcd;
115imm32 r7, 0x7895bcde;
116R4.L = -1;
117R7 = LSHIFT R0 BY R4.L;
118R6 = LSHIFT R1 BY R4.L;
119R5 = LSHIFT R2 BY R4.L;
120R3 = LSHIFT R4 BY R4.L;
121R2 = LSHIFT R5 BY R4.L;
122R1 = LSHIFT R6 BY R4.L;
123R0 = LSHIFT R7 BY R4.L;
124R4 = LSHIFT R3 BY R4.L;
125CHECKREG r0, 0x00494000;
126CHECKREG r1, 0x048D559E;
127CHECKREG r2, 0x08D159E2;
128CHECKREG r3, 0x22B2FFFF;
129CHECKREG r4, 0x11597FFF;
130CHECKREG r5, 0x11A2B3C4;
131CHECKREG r6, 0x091AAB3C;
132CHECKREG r7, 0x00928001;
133
134imm32 r0, 0x01260002;
135imm32 r1, 0x82365678;
136imm32 r2, 0x93466789;
137imm32 r3, 0xa456789a;
138imm32 r4, 0xb56689ab;
139imm32 r5, 0xc6769abc;
140imm32 r6, 0xd786abcd;
141imm32 r7, 0xe896bcde;
142R5.L = -8;
143R6 = LSHIFT R0 BY R5.L;
144R7 = LSHIFT R1 BY R5.L;
145R0 = LSHIFT R2 BY R5.L;
146R1 = LSHIFT R3 BY R5.L;
147R2 = LSHIFT R4 BY R5.L;
148R3 = LSHIFT R5 BY R5.L;
149R4 = LSHIFT R6 BY R5.L;
150R5 = LSHIFT R7 BY R5.L;
151CHECKREG r0, 0x00934667;
152CHECKREG r1, 0x00A45678;
153CHECKREG r2, 0x00B56689;
154CHECKREG r3, 0x00C676FF;
155CHECKREG r4, 0x00000126;
156CHECKREG r5, 0x00008236;
157CHECKREG r6, 0x00012600;
158CHECKREG r7, 0x00823656;
159
160imm32 r0, 0x01270002;
161imm32 r1, 0x12375678;
162imm32 r2, 0x23476789;
163imm32 r3, 0x3457789a;
164imm32 r4, 0x456789ab;
165imm32 r5, 0x56779abc;
166imm32 r6, 0x6787abcd;
167imm32 r7, 0x7897bcde;
168R6.L = -15;
169R7 = LSHIFT R0 BY R6.L;
170R0 = LSHIFT R1 BY R6.L;
171R1 = LSHIFT R2 BY R6.L;
172R2 = LSHIFT R3 BY R6.L;
173R3 = LSHIFT R4 BY R6.L;
174R4 = LSHIFT R5 BY R6.L;
175R5 = LSHIFT R6 BY R6.L;
176R6 = LSHIFT R7 BY R6.L;
177CHECKREG r0, 0x0000246E;
178CHECKREG r1, 0x0000468E;
179CHECKREG r2, 0x000068AE;
180CHECKREG r3, 0x00008ACF;
181CHECKREG r4, 0x0000ACEF;
182CHECKREG r5, 0x0000CF0F;
183CHECKREG r6, 0x00000000;
184CHECKREG r7, 0x0000024E;
185
186imm32 r0, 0x01280002;
187imm32 r1, 0x82385678;
188imm32 r2, 0x93486789;
189imm32 r3, 0xa458789a;
190imm32 r4, 0xb56889ab;
191imm32 r5, 0xc6789abc;
192imm32 r6, 0xd788abcd;
193imm32 r7, 0xe898bcde;
194R7.L = -16;
195R0 = LSHIFT R0 BY R7.L;
196R1 = LSHIFT R1 BY R7.L;
197R2 = LSHIFT R2 BY R7.L;
198R3 = LSHIFT R3 BY R7.L;
199R4 = LSHIFT R4 BY R7.L;
200R5 = LSHIFT R5 BY R7.L;
201R6 = LSHIFT R6 BY R7.L;
202R7 = LSHIFT R7 BY R7.L;
203CHECKREG r0, 0x00000128;
204CHECKREG r1, 0x00008238;
205CHECKREG r2, 0x00009348;
206CHECKREG r3, 0x0000A458;
207CHECKREG r4, 0x0000B568;
208CHECKREG r5, 0x0000C678;
209CHECKREG r6, 0x0000D788;
210CHECKREG r7, 0x0000E898;
211
212imm32 r0, 0x81290002;
213imm32 r1, 0x92395678;
214imm32 r2, 0xa3496789;
215imm32 r3, 0xb459789a;
216imm32 r4, 0xc56989ab;
217imm32 r5, 0xd6799abc;
218imm32 r6, 0xe789abcd;
219imm32 r7, 0xf899bcde;
220R0.L = 4;
221//r0 = lshift (r0 by rl0);
222R1 = LSHIFT R1 BY R0.L;
223R2 = LSHIFT R2 BY R0.L;
224R3 = LSHIFT R3 BY R0.L;
225R4 = LSHIFT R4 BY R0.L;
226R5 = LSHIFT R5 BY R0.L;
227R6 = LSHIFT R6 BY R0.L;
228R7 = LSHIFT R7 BY R0.L;
229CHECKREG r1, 0x23956780;
230CHECKREG r2, 0x34967890;
231CHECKREG r3, 0x459789A0;
232CHECKREG r4, 0x56989AB0;
233CHECKREG r5, 0x6799ABC0;
234CHECKREG r6, 0x789ABCD0;
235CHECKREG r7, 0x899BCDE0;
236
237imm32 r0, 0x012a0002;
238imm32 r1, 0x123a5678;
239imm32 r2, 0x234a6789;
240imm32 r3, 0x345a789a;
241imm32 r4, 0x456a89ab;
242imm32 r5, 0x567a9abc;
243imm32 r6, 0x678aabcd;
244imm32 r7, 0xf89abcde;
245R1.L = 2;
246R7 = LSHIFT R0 BY R1.L;
247R6 = LSHIFT R1 BY R1.L;
248R5 = LSHIFT R2 BY R1.L;
249R4 = LSHIFT R3 BY R1.L;
250R3 = LSHIFT R4 BY R1.L;
251R2 = LSHIFT R5 BY R1.L;
252R0 = LSHIFT R6 BY R1.L;
253R1 = LSHIFT R7 BY R1.L;
254CHECKREG r0, 0x23A00020;
255CHECKREG r1, 0x12A00020;
256CHECKREG r2, 0x34A67890;
257CHECKREG r3, 0x45A789A0;
258CHECKREG r4, 0xD169E268;
259CHECKREG r5, 0x8D299E24;
260CHECKREG r6, 0x48E80008;
261CHECKREG r7, 0x04A80008;
262
263
264imm32 r0, 0x012b0002;
265imm32 r1, 0x123b5678;
266imm32 r2, 0x234b6789;
267imm32 r3, 0x345b789a;
268imm32 r4, 0x456b89ab;
269imm32 r5, 0x567b9abc;
270imm32 r6, 0x678babcd;
271imm32 r7, 0x789bbcde;
272R2.L = 15;
273R0 = LSHIFT R0 BY R2.L;
274R1 = LSHIFT R1 BY R2.L;
275R3 = LSHIFT R3 BY R2.L;
276R4 = LSHIFT R4 BY R2.L;
277R5 = LSHIFT R5 BY R2.L;
278R6 = LSHIFT R6 BY R2.L;
279R7 = LSHIFT R7 BY R2.L;
280R2 = LSHIFT R2 BY R2.L;
281CHECKREG r0, 0x80010000;
282CHECKREG r1, 0xAB3C0000;
283CHECKREG r2, 0x80078000;
284CHECKREG r3, 0xBC4D0000;
285CHECKREG r4, 0xC4D58000;
286CHECKREG r5, 0xCD5E0000;
287CHECKREG r6, 0xD5E68000;
288CHECKREG r7, 0xDE6F0000;
289
290imm32 r0, 0x012c0002;
291imm32 r1, 0x123c5678;
292imm32 r2, 0x234c6789;
293imm32 r3, 0x345c789a;
294imm32 r4, 0x456c89ab;
295imm32 r5, 0x567c9abc;
296imm32 r6, 0x678cabcd;
297imm32 r7, 0x789cbcde;
298R3.L = 16;
299R0 = LSHIFT R0 BY R3.L;
300R1 = LSHIFT R1 BY R3.L;
301R2 = LSHIFT R2 BY R3.L;
302R4 = LSHIFT R4 BY R3.L;
303R5 = LSHIFT R5 BY R3.L;
304R6 = LSHIFT R6 BY R3.L;
305R7 = LSHIFT R7 BY R3.L;
306R3 = LSHIFT R3 BY R3.L;
307CHECKREG r0, 0x00020000;
308CHECKREG r1, 0x56780000;
309CHECKREG r2, 0x67890000;
310CHECKREG r3, 0x00100000;
311CHECKREG r4, 0x89AB0000;
312CHECKREG r5, 0x9ABC0000;
313CHECKREG r6, 0xABCD0000;
314CHECKREG r7, 0xBCDE0000;
315
316imm32 r0, 0x012d0002;
317imm32 r1, 0x123d5678;
318imm32 r2, 0x234d6789;
319imm32 r3, 0x345d789a;
320imm32 r4, 0x456d89ab;
321imm32 r5, 0x567d9abc;
322imm32 r6, 0x678dabcd;
323imm32 r7, 0x789dbcde;
324R4.L = -9;
325R7 = LSHIFT R0 BY R4.L;
326R0 = LSHIFT R1 BY R4.L;
327R1 = LSHIFT R2 BY R4.L;
328R2 = LSHIFT R3 BY R4.L;
329//r4 = lshift (r4 by rl4);
330R3 = LSHIFT R5 BY R4.L;
331R5 = LSHIFT R6 BY R4.L;
332R6 = LSHIFT R7 BY R4.L;
333CHECKREG r0, 0x00091EAB;
334CHECKREG r1, 0x0011A6B3;
335CHECKREG r2, 0x001A2EBC;
336CHECKREG r3, 0x002B3ECD;
337CHECKREG r4, 0x456DFFF7;
338CHECKREG r5, 0x0033C6D5;
339CHECKREG r6, 0x0000004B;
340CHECKREG r7, 0x00009680;
341
342imm32 r0, 0x012e0002;
343imm32 r1, 0x123e5678;
344imm32 r2, 0x234e6789;
345imm32 r3, 0x345e789a;
346imm32 r4, 0x456e89ab;
347imm32 r5, 0x567e9abc;
348imm32 r6, 0x678eabcd;
349imm32 r7, 0x789ebcde;
350R5.L = -14;
351R0 = LSHIFT R0 BY R5.L;
352R1 = LSHIFT R1 BY R5.L;
353R2 = LSHIFT R2 BY R5.L;
354R3 = LSHIFT R3 BY R5.L;
355R4 = LSHIFT R4 BY R5.L;
356//r5 = lshift (r5 by rl5);
357R6 = LSHIFT R6 BY R5.L;
358R7 = LSHIFT R7 BY R5.L;
359CHECKREG r0, 0x000004B8;
360CHECKREG r1, 0x000048F9;
361CHECKREG r2, 0x00008D39;
362CHECKREG r3, 0x0000D179;
363CHECKREG r4, 0x000115BA;
364CHECKREG r5, 0x567EFFF2;
365CHECKREG r6, 0x00019E3A;
366CHECKREG r7, 0x0001E27A;
367
368
369imm32 r0, 0x012f0002;
370imm32 r1, 0x623f5678;
371imm32 r2, 0x734f6789;
372imm32 r3, 0x845f789a;
373imm32 r4, 0x956f89ab;
374imm32 r5, 0xa67f9abc;
375imm32 r6, 0xc78fabcd;
376imm32 r7, 0xd89fbcde;
377R6.L = -15;
378R0 = LSHIFT R0 BY R6.L;
379R1 = LSHIFT R1 BY R6.L;
380R2 = LSHIFT R2 BY R6.L;
381R3 = LSHIFT R3 BY R6.L;
382R4 = LSHIFT R4 BY R6.L;
383R5 = LSHIFT R5 BY R6.L;
384//r6 = lshift (r6 by rl6);
385R7 = LSHIFT R7 BY R6.L;
386CHECKREG r0, 0x0000025E;
387CHECKREG r1, 0x0000C47E;
388CHECKREG r2, 0x0000E69E;
389CHECKREG r3, 0x000108BE;
390CHECKREG r4, 0x00012ADF;
391CHECKREG r5, 0x00014CFF;
392CHECKREG r6, 0xC78FFFF1;
393CHECKREG r7, 0x0001B13F;
394
395imm32 r0, 0x71230072;
396imm32 r1, 0x82345678;
397imm32 r2, 0x93456779;
398imm32 r3, 0xa456787a;
399imm32 r4, 0xb567897b;
400imm32 r5, 0xc6789a7c;
401imm32 r6, 0x6789ab7d;
402imm32 r7, 0x789abc7e;
403R7.L = -16;
404R0 = LSHIFT R0 BY R7.L;
405R1 = LSHIFT R1 BY R7.L;
406R2 = LSHIFT R2 BY R7.L;
407R3 = LSHIFT R3 BY R7.L;
408R4 = LSHIFT R4 BY R7.L;
409R5 = LSHIFT R5 BY R7.L;
410R6 = LSHIFT R6 BY R7.L;
411R7 = LSHIFT R7 BY R7.L;
412CHECKREG r0, 0x00007123;
413CHECKREG r1, 0x00008234;
414CHECKREG r2, 0x00009345;
415CHECKREG r3, 0x0000A456;
416CHECKREG r4, 0x0000B567;
417CHECKREG r5, 0x0000C678;
418CHECKREG r6, 0x00006789;
419CHECKREG r7, 0x0000789A;
420
421
422pass
423