sim: bfin: import testsuite
[external/binutils.git] / sim / testsuite / sim / bfin / c_dsp32shift_lhalf_rp.s
1 //Original:/testcases/core/c_dsp32shift_lhalf_rp/c_dsp32shift_lhalf_rp.dsp
2 // Spec Reference: dsp32shift lshift
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 d_lo)
12 // RLx by RLx
13 imm32 r0, 0x00000000;
14 R0.L = -1;
15 imm32 r1, 0x00000001;
16 imm32 r2, 0x00000002;
17 imm32 r3, 0x00000003;
18 imm32 r4, 0x00000004;
19 imm32 r5, 0x00000005;
20 imm32 r6, 0x00000006;
21 imm32 r7, 0x00000007;
22 //rl0 = lshift (rl0 by rl0);
23 R1.L = LSHIFT R1.L BY R0.L;
24 R2.L = LSHIFT R2.L BY R0.L;
25 R3.L = LSHIFT R3.L BY R0.L;
26 R4.L = LSHIFT R4.L BY R0.L;
27 R5.L = LSHIFT R5.L BY R0.L;
28 R6.L = LSHIFT R6.L BY R0.L;
29 R7.L = LSHIFT R7.L BY R0.L;
30 //CHECKREG r0, 0x00000000;
31 CHECKREG r1, 0x00000000;
32 CHECKREG r2, 0x00000001;
33 CHECKREG r3, 0x00000001;
34 CHECKREG r4, 0x00000002;
35 CHECKREG r5, 0x00000002;
36 CHECKREG r6, 0x00000003;
37 CHECKREG r7, 0x00000003;
38
39 imm32 r0, 0x00001001;
40 R1.L = -1;
41 imm32 r2, 0x00002002;
42 imm32 r3, 0x00003003;
43 imm32 r4, 0x00004004;
44 imm32 r5, 0x00005005;
45 imm32 r6, 0x00006006;
46 imm32 r7, 0x00007007;
47 R0.L = LSHIFT R0.L BY R1.L;
48 //rl1 = lshift (rl1 by rl1);
49 R2.L = LSHIFT R2.L BY R1.L;
50 R3.L = LSHIFT R3.L BY R1.L;
51 R4.L = LSHIFT R4.L BY R1.L;
52 R5.L = LSHIFT R5.L BY R1.L;
53 R6.L = LSHIFT R6.L BY R1.L;
54 R7.L = LSHIFT R7.L BY R1.L;
55 CHECKREG r0, 0x00000800;
56 //CHECKREG r1, 0x00000001;
57 CHECKREG r2, 0x00001001;
58 CHECKREG r3, 0x00001801;
59 CHECKREG r4, 0x00002002;
60 CHECKREG r5, 0x00002802;
61 CHECKREG r6, 0x00003003;
62 CHECKREG r7, 0x00003803;
63
64
65 imm32 r0, 0x00001001;
66 imm32 r1, 0x00001001;
67 R2.L = -15;
68 imm32 r3, 0x00003003;
69 imm32 r4, 0x00004004;
70 imm32 r5, 0x00005005;
71 imm32 r6, 0x00006006;
72 imm32 r7, 0x00007007;
73 R0.L = LSHIFT R0.L BY R2.L;
74 R1.L = LSHIFT R1.L BY R2.L;
75 //rl2 = lshift (rl2 by rl2);
76 R3.L = LSHIFT R3.L BY R2.L;
77 R4.L = LSHIFT R4.L BY R2.L;
78 R5.L = LSHIFT R5.L BY R2.L;
79 R6.L = LSHIFT R6.L BY R2.L;
80 R7.L = LSHIFT R7.L BY R2.L;
81 CHECKREG r0, 0x00000000;
82 CHECKREG r1, 0x00000000;
83 //CHECKREG r2, 0x0000000f;
84 CHECKREG r3, 0x00000000;
85 CHECKREG r4, 0x00000000;
86 CHECKREG r5, 0x00000000;
87 CHECKREG r6, 0x00000000;
88 CHECKREG r7, 0x00000000;
89
90 imm32 r0, 0x00001001;
91 imm32 r1, 0x00001001;
92 imm32 r2, 0x00002002;
93 R3.L = -16;
94 imm32 r4, 0x00004004;
95 imm32 r5, 0x00005005;
96 imm32 r6, 0x00006006;
97 imm32 r7, 0x00007007;
98 R0.L = LSHIFT R0.L BY R3.L;
99 R1.L = LSHIFT R1.L BY R3.L;
100 R2.L = LSHIFT R2.L BY R3.L;
101 //rl3 = lshift (rl3 by rl3);
102 R4.L = LSHIFT R4.L BY R3.L;
103 R5.L = LSHIFT R5.L BY R3.L;
104 R6.L = LSHIFT R6.L BY R3.L;
105 R7.L = LSHIFT R7.L BY R3.L;
106 CHECKREG r0, 0x00000000;
107 CHECKREG r1, 0x00000000;
108 CHECKREG r2, 0x00000000;
109 //CHECKREG r3, 0x00000010;
110 CHECKREG r4, 0x00000000;
111 CHECKREG r5, 0x00000000;
112 CHECKREG r6, 0x00000000;
113 CHECKREG r7, 0x00000000;
114
115 // d_lo = ashft (d_hi BY d_lo)
116 // RHx by RLx
117 imm32 r0, 0x00000000;
118 imm32 r1, 0x00010000;
119 imm32 r2, 0x00020000;
120 imm32 r3, 0x00030000;
121 imm32 r4, 0x00040000;
122 imm32 r5, 0x00050000;
123 imm32 r6, 0x00060000;
124 imm32 r7, 0x00070000;
125 R0.L = LSHIFT R0.H BY R0.L;
126 R1.L = LSHIFT R1.H BY R0.L;
127 R2.L = LSHIFT R2.H BY R0.L;
128 R3.L = LSHIFT R3.H BY R0.L;
129 R4.L = LSHIFT R4.H BY R0.L;
130 R5.L = LSHIFT R5.H BY R0.L;
131 R6.L = LSHIFT R6.H BY R0.L;
132 R7.L = LSHIFT R7.H BY R0.L;
133 CHECKREG r0, 0x00000000;
134 CHECKREG r1, 0x00010001;
135 CHECKREG r2, 0x00020002;
136 CHECKREG r3, 0x00030003;
137 CHECKREG r4, 0x00040004;
138 CHECKREG r5, 0x00050005;
139 CHECKREG r6, 0x00060006;
140 CHECKREG r7, 0x00070007;
141
142 imm32 r0, 0x10010000;
143 R1.L = -1;
144 imm32 r2, 0x20020000;
145 imm32 r3, 0x30030000;
146 imm32 r4, 0x40040000;
147 imm32 r5, 0x50050000;
148 imm32 r6, 0x60060000;
149 imm32 r7, 0x70070000;
150 R0.L = LSHIFT R0.H BY R1.L;
151 //rl1 = lshift (rh1 by rl1);
152 R2.L = LSHIFT R2.H BY R1.L;
153 R3.L = LSHIFT R3.H BY R1.L;
154 R4.L = LSHIFT R4.H BY R1.L;
155 R5.L = LSHIFT R5.H BY R1.L;
156 R6.L = LSHIFT R6.H BY R1.L;
157 R7.L = LSHIFT R7.H BY R1.L;
158 CHECKREG r0, 0x10010800;
159 //CHECKREG r1, 0x00010001;
160 CHECKREG r2, 0x20021001;
161 CHECKREG r3, 0x30031801;
162 CHECKREG r4, 0x40042002;
163 CHECKREG r5, 0x50052802;
164 CHECKREG r6, 0x60063003;
165 CHECKREG r7, 0x70073803;
166
167
168 imm32 r0, 0x10010000;
169 imm32 r1, 0x10010000;
170 R2.L = -15;
171 imm32 r3, 0x30030000;
172 imm32 r4, 0x40040000;
173 imm32 r5, 0x50050000;
174 imm32 r6, 0x60060000;
175 imm32 r7, 0x70070000;
176 R0.L = LSHIFT R0.H BY R2.L;
177 R1.L = LSHIFT R1.H BY R2.L;
178 //rl2 = lshift (rh2 by rl2);
179 R3.L = LSHIFT R3.H BY R2.L;
180 R4.L = LSHIFT R4.H BY R2.L;
181 R5.L = LSHIFT R5.H BY R2.L;
182 R6.L = LSHIFT R6.H BY R2.L;
183 R7.L = LSHIFT R7.H BY R2.L;
184 CHECKREG r0, 0x10010000;
185 CHECKREG r1, 0x10010000;
186 //CHECKREG r2, 0x2002000f;
187 CHECKREG r3, 0x30030000;
188 CHECKREG r4, 0x40040000;
189 CHECKREG r5, 0x50050000;
190 CHECKREG r6, 0x60060000;
191 CHECKREG r7, 0x70070000;
192
193 imm32 r0, 0x10010001;
194 imm32 r1, 0x10010001;
195 imm32 r2, 0x20020002;
196 R3.L = -16;
197 imm32 r4, 0x40040004;
198 imm32 r5, 0x50050005;
199 imm32 r6, 0x60060006;
200 imm32 r7, 0x70070007;
201 R0.L = LSHIFT R0.H BY R3.L;
202 R1.L = LSHIFT R1.H BY R3.L;
203 R2.L = LSHIFT R2.H BY R3.L;
204 //rl3 = lshift (rh3 by rl3);
205 R4.L = LSHIFT R4.H BY R3.L;
206 R5.L = LSHIFT R5.H BY R3.L;
207 R6.L = LSHIFT R6.H BY R3.L;
208 R7.L = LSHIFT R7.H BY R3.L;
209 CHECKREG r0, 0x10010000;
210 CHECKREG r1, 0x10010000;
211 CHECKREG r2, 0x20020000;
212 //CHECKREG r3, 0x30030010;
213 CHECKREG r4, 0x40040000;
214 CHECKREG r5, 0x50050000;
215 CHECKREG r6, 0x60060000;
216 CHECKREG r7, 0x70070000;
217
218 // d_hi = ashft (d_lo BY d_lo)
219 // RLx by RLx
220 imm32 r0, 0x00000001;
221 imm32 r1, 0x00000001;
222 imm32 r2, 0x00000002;
223 imm32 r3, 0x00000003;
224 imm32 r4, 0x00000000;
225 imm32 r5, 0x00000005;
226 imm32 r6, 0x00000006;
227 imm32 r7, 0x00000007;
228 R0.H = LSHIFT R0.L BY R4.L;
229 R1.H = LSHIFT R1.L BY R4.L;
230 R2.H = LSHIFT R2.L BY R4.L;
231 R3.H = LSHIFT R3.L BY R4.L;
232 //rh4 = lshift (rl4 by rl4);
233 R5.H = LSHIFT R5.L BY R4.L;
234 R6.H = LSHIFT R6.L BY R4.L;
235 R7.H = LSHIFT R7.L BY R4.L;
236 CHECKREG r0, 0x00010001;
237 CHECKREG r1, 0x00010001;
238 CHECKREG r2, 0x00020002;
239 CHECKREG r3, 0x00030003;
240 //CHECKREG r4, 0x00040004;
241 CHECKREG r5, 0x00050005;
242 CHECKREG r6, 0x00060006;
243 CHECKREG r7, 0x00070007;
244
245 imm32 r0, 0x00000001;
246 imm32 r1, 0x00000001;
247 imm32 r2, 0x00000002;
248 imm32 r3, 0x00000003;
249 imm32 r4, 0x00000004;
250 R5.L = -1;
251 imm32 r6, 0x00000006;
252 imm32 r7, 0x00000007;
253 R0.H = LSHIFT R0.L BY R5.L;
254 R1.H = LSHIFT R1.L BY R5.L;
255 R2.H = LSHIFT R2.L BY R5.L;
256 R3.H = LSHIFT R3.L BY R5.L;
257 R4.H = LSHIFT R4.L BY R5.L;
258 //rh5 = lshift (rl5 by rl5);
259 R6.H = LSHIFT R6.L BY R5.L;
260 R7.H = LSHIFT R7.L BY R5.L;
261 CHECKREG r0, 0x00000001;
262 CHECKREG r1, 0x00000001;
263 CHECKREG r2, 0x00010002;
264 CHECKREG r3, 0x00010003;
265 CHECKREG r4, 0x00020004;
266 //CHECKREG r5, 0x00020005;
267 CHECKREG r6, 0x00030006;
268 CHECKREG r7, 0x00030007;
269
270
271 imm32 r0, 0x00001001;
272 imm32 r1, 0x00001001;
273 imm32 r1, 0x00002002;
274 imm32 r3, 0x00003003;
275 imm32 r4, 0x00004004;
276 imm32 r5, 0x00005005;
277 R6.L = -15;
278 imm32 r7, 0x00007007;
279 R0.H = LSHIFT R0.L BY R6.L;
280 R1.H = LSHIFT R1.L BY R6.L;
281 R2.H = LSHIFT R2.L BY R6.L;
282 R3.H = LSHIFT R3.L BY R6.L;
283 R4.H = LSHIFT R4.L BY R6.L;
284 R5.H = LSHIFT R5.L BY R6.L;
285 //rh6 = lshift (rl6 by rl6);
286 R7.H = LSHIFT R7.L BY R6.L;
287 CHECKREG r0, 0x00001001;
288 CHECKREG r1, 0x00002002;
289 CHECKREG r2, 0x00000002;
290 CHECKREG r3, 0x00003003;
291 CHECKREG r4, 0x00004004;
292 CHECKREG r5, 0x00005005;
293 //CHECKREG r6, 0x00006006;
294 CHECKREG r7, 0x00007007;
295
296 imm32 r0, 0x00001001;
297 imm32 r1, 0x00002001;
298 imm32 r2, 0x00002002;
299 imm32 r3, 0x00003003;
300 imm32 r4, 0x00004004;
301 imm32 r5, 0x00005005;
302 imm32 r6, 0x00006006;
303 R7.L = -16;
304 R0.H = LSHIFT R0.L BY R7.L;
305 R1.H = LSHIFT R1.L BY R7.L;
306 R2.H = LSHIFT R2.L BY R7.L;
307 R3.H = LSHIFT R3.L BY R7.L;
308 R4.H = LSHIFT R4.L BY R7.L;
309 R5.H = LSHIFT R5.L BY R7.L;
310 R6.H = LSHIFT R6.L BY R7.L;
311 R7.H = LSHIFT R7.L BY R7.L;
312 CHECKREG r0, 0x00001001;
313 CHECKREG r1, 0x00002001;
314 CHECKREG r2, 0x00002002;
315 CHECKREG r3, 0x00003003;
316 CHECKREG r4, 0x00004004;
317 CHECKREG r5, 0x00005005;
318 CHECKREG r6, 0x00006006;
319 //CHECKREG r7, 0x00007007;
320
321 // d_lo = ashft (d_hi BY d_lo)
322 // RHx by RLx
323 imm32 r0, 0x00010000;
324 imm32 r1, 0x00010000;
325 imm32 r2, 0x00020000;
326 imm32 r3, 0x00030000;
327 R4.L = -1;
328 imm32 r5, 0x00050000;
329 imm32 r6, 0x00060000;
330 imm32 r7, 0x00070000;
331 R0.H = LSHIFT R0.H BY R4.L;
332 R1.H = LSHIFT R1.H BY R4.L;
333 R2.H = LSHIFT R2.H BY R4.L;
334 R3.H = LSHIFT R3.H BY R4.L;
335 //rh4 = lshift (rh4 by rl4);
336 R5.H = LSHIFT R5.H BY R4.L;
337 R6.H = LSHIFT R6.H BY R4.L;
338 R7.H = LSHIFT R7.H BY R4.L;
339 CHECKREG r0, 0x00000000;
340 CHECKREG r1, 0x00000000;
341 CHECKREG r2, 0x00010000;
342 CHECKREG r3, 0x00010000;
343 //CHECKREG r4, 0x00020000;
344 CHECKREG r5, 0x00020000;
345 CHECKREG r6, 0x00030000;
346 CHECKREG r7, 0x00030000;
347
348 imm32 r0, 0x10010000;
349 imm32 r1, 0x10010000;
350 imm32 r2, 0x20020000;
351 imm32 r3, 0x30030000;
352 imm32 r4, 0x40040000;
353 R5.L = -1;
354 imm32 r6, 0x60060000;
355 imm32 r7, 0x70070000;
356 R0.H = LSHIFT R0.H BY R5.L;
357 R1.H = LSHIFT R1.H BY R5.L;
358 R2.H = LSHIFT R2.H BY R5.L;
359 R3.H = LSHIFT R3.H BY R5.L;
360 R4.H = LSHIFT R4.H BY R5.L;
361 //rh5 = lshift (rh5 by rl5);
362 R6.H = LSHIFT R6.H BY R5.L;
363 R7.H = LSHIFT R7.H BY R5.L;
364 CHECKREG r0, 0x08000000;
365 CHECKREG r1, 0x08000000;
366 CHECKREG r2, 0x10010000;
367 CHECKREG r3, 0x18010000;
368 CHECKREG r4, 0x20020000;
369 //CHECKREG r5, 0x28020000;
370 CHECKREG r6, 0x30030000;
371 CHECKREG r7, 0x38030000;
372
373
374 imm32 r0, 0x10010000;
375 imm32 r1, 0x10010000;
376 imm32 r2, 0x20020000;
377 imm32 r3, 0x30030000;
378 imm32 r4, 0x40040000;
379 imm32 r5, 0x50050000;
380 R6.L = -15;
381 imm32 r7, 0x70070000;
382 R0.L = LSHIFT R0.H BY R6.L;
383 R1.L = LSHIFT R1.H BY R6.L;
384 R2.L = LSHIFT R2.H BY R6.L;
385 R3.L = LSHIFT R3.H BY R6.L;
386 R4.L = LSHIFT R4.H BY R6.L;
387 R5.L = LSHIFT R5.H BY R6.L;
388 //rl6 = lshift (rh6 by rl6);
389 R7.L = LSHIFT R7.H BY R6.L;
390 CHECKREG r0, 0x10010000;
391 CHECKREG r1, 0x10010000;
392 CHECKREG r2, 0x20020000;
393 CHECKREG r3, 0x30030000;
394 CHECKREG r4, 0x40040000;
395 CHECKREG r5, 0x50050000;
396 //CHECKREG r6, 0x60060000;
397 CHECKREG r7, 0x70070000;
398
399 imm32 r0, 0x10010000;
400 imm32 r1, 0x10010000;
401 imm32 r2, 0x20020000;
402 imm32 r2, 0x30030000;
403 imm32 r4, 0x40040000;
404 imm32 r5, 0x50050000;
405 imm32 r6, 0x60060000;
406 R7.L = -16;
407 R0.H = LSHIFT R0.H BY R7.L;
408 R1.H = LSHIFT R1.H BY R7.L;
409 R2.H = LSHIFT R2.H BY R7.L;
410 R3.H = LSHIFT R3.H BY R7.L;
411 R4.H = LSHIFT R4.H BY R7.L;
412 R5.H = LSHIFT R5.H BY R7.L;
413 R6.H = LSHIFT R6.H BY R7.L;
414 //rh7 = lshift (rh7 by rl7);
415 CHECKREG r0, 0x00000000;
416 CHECKREG r1, 0x00000000;
417 CHECKREG r2, 0x00000000;
418 CHECKREG r3, 0x00000000;
419 CHECKREG r4, 0x00000000;
420 CHECKREG r5, 0x00000000;
421 CHECKREG r6, 0x00000000;
422 //CHECKREG r7, -16;
423 pass