1 //Original
:/testcases
/core
/c_dsp32shift_ahalf_rp_s
/c_dsp32shift_ahalf_rp_s.dsp
2 // Spec Reference
: dsp32shift ashift
5 .include "testutils.inc"
10 // Ashift
: positive data
, count
(+)=left
(half reg
)
11 // d_lo
= ashft
(d_lo BY d_lo
)
22 //rl0
= ashift
(rl0 by rl0
);
23 R1.
L = ASHIFT R1.
L BY R0.
L (S
);
24 R2.
L = ASHIFT R2.
L BY R0.
L (S
);
25 R3.
L = ASHIFT R3.
L BY R0.
L (S
);
26 R4.
L = ASHIFT R4.
L BY R0.
L (S
);
27 R5.
L = ASHIFT R5.
L BY R0.
L (S
);
28 R6.
L = ASHIFT R6.
L BY R0.
L (S
);
29 R7.
L = ASHIFT R7.
L BY R0.
L (S
);
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;
47 R0.
L = ASHIFT R0.
L BY R1.
L (S
);
48 //rl1
= ashift
(rl1 by rl1
);
49 R2.
L = ASHIFT R2.
L BY R1.
L (S
);
50 R3.
L = ASHIFT R3.
L BY R1.
L (S
);
51 R4.
L = ASHIFT R4.
L BY R1.
L (S
);
52 R5.
L = ASHIFT R5.
L BY R1.
L (S
);
53 R6.
L = ASHIFT R6.
L BY R1.
L (S
);
54 R7.
L = ASHIFT R7.
L BY R1.
L (S
);
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;
73 R0.
L = ASHIFT R0.
L BY R2.
L (S
);
74 R1.
L = ASHIFT R1.
L BY R2.
L (S
);
75 //rl2
= ashift
(rl2 by rl2
);
76 R3.
L = ASHIFT R3.
L BY R2.
L (S
);
77 R4.
L = ASHIFT R4.
L BY R2.
L (S
);
78 R5.
L = ASHIFT R5.
L BY R2.
L (S
);
79 R6.
L = ASHIFT R6.
L BY R2.
L (S
);
80 R7.
L = ASHIFT R7.
L BY R2.
L (S
);
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;
98 R0.
L = ASHIFT R0.
L BY R3.
L (S
);
99 R1.
L = ASHIFT R1.
L BY R3.
L (S
);
100 R2.
L = ASHIFT R2.
L BY R3.
L (S
);
101 //rl3
= ashift
(rl3 by rl3
);
102 R4.
L = ASHIFT R4.
L BY R3.
L (S
);
103 R5.
L = ASHIFT R5.
L BY R3.
L (S
);
104 R6.
L = ASHIFT R6.
L BY R3.
L (S
);
105 R7.
L = ASHIFT R7.
L BY R3.
L (S
);
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;
115 // d_lo
= ashft
(d_hi BY d_lo
)
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 = ASHIFT R0.H BY R0.
L (S
);
126 R1.
L = ASHIFT R1.H BY R0.
L (S
);
127 R2.
L = ASHIFT R2.H BY R0.
L (S
);
128 R3.
L = ASHIFT R3.H BY R0.
L (S
);
129 R4.
L = ASHIFT R4.H BY R0.
L (S
);
130 R5.
L = ASHIFT R5.H BY R0.
L (S
);
131 R6.
L = ASHIFT R6.H BY R0.
L (S
);
132 R7.
L = ASHIFT R7.H BY R0.
L (S
);
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;
142 imm32
r0, 0x10010000;
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 = ASHIFT R0.H BY R1.
L (S
);
151 //rl1
= ashift
(rh1 by rl1
);
152 R2.
L = ASHIFT R2.H BY R1.
L (S
);
153 R3.
L = ASHIFT R3.H BY R1.
L (S
);
154 R4.
L = ASHIFT R4.H BY R1.
L (S
);
155 R5.
L = ASHIFT R5.H BY R1.
L (S
);
156 R6.
L = ASHIFT R6.H BY R1.
L (S
);
157 R7.
L = ASHIFT R7.H BY R1.
L (S
);
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;
168 imm32
r0, 0x10010000;
169 imm32
r1, 0x10010000;
171 imm32
r3, 0x30030000;
172 imm32
r4, 0x40040000;
173 imm32
r5, 0x50050000;
174 imm32
r6, 0x60060000;
175 imm32
r7, 0x70070000;
176 R0.
L = ASHIFT R0.H BY R2.
L (S
);
177 R1.
L = ASHIFT R1.H BY R2.
L (S
);
178 //rl2
= ashift
(rh2 by rl2
);
179 R3.
L = ASHIFT R3.H BY R2.
L (S
);
180 R4.
L = ASHIFT R4.H BY R2.
L (S
);
181 R5.
L = ASHIFT R5.H BY R2.
L (S
);
182 R6.
L = ASHIFT R6.H BY R2.
L (S
);
183 R7.
L = ASHIFT R7.H BY R2.
L (S
);
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;
193 imm32
r0, 0x10010001;
194 imm32
r1, 0x10010001;
195 imm32
r2, 0x20020002;
197 imm32
r4, 0x40040004;
198 imm32
r5, 0x50050005;
199 imm32
r6, 0x60060006;
200 imm32
r7, 0x70070007;
201 R0.
L = ASHIFT R0.H BY R3.
L (S
);
202 R1.
L = ASHIFT R1.H BY R3.
L (S
);
203 R2.
L = ASHIFT R2.H BY R3.
L (S
);
204 //rl3
= ashift
(rh3 by rl3
);
205 R4.
L = ASHIFT R4.H BY R3.
L (S
);
206 R5.
L = ASHIFT R5.H BY R3.
L (S
);
207 R6.
L = ASHIFT R6.H BY R3.
L (S
);
208 R7.
L = ASHIFT R7.H BY R3.
L (S
);
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;
218 // d_hi
= ashift
(d_lo BY d_lo
)
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
= ASHIFT R0.
L BY R4.
L (S
);
229 R1.H
= ASHIFT R1.
L BY R4.
L (S
);
230 R2.H
= ASHIFT R2.
L BY R4.
L (S
);
231 R3.H
= ASHIFT R3.
L BY R4.
L (S
);
232 //rh4
= ashift
(rl4 by rl4
);
233 R5.H
= ASHIFT R5.
L BY R4.
L (S
);
234 R6.H
= ASHIFT R6.
L BY R4.
L (S
);
235 R7.H
= ASHIFT R7.
L BY R4.
L (S
);
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;
245 imm32
r0, 0x00000001;
246 imm32
r1, 0x00000001;
247 imm32
r2, 0x00000002;
248 imm32
r3, 0x00000003;
249 imm32
r4, 0x00000004;
251 imm32
r6, 0x00000006;
252 imm32
r7, 0x00000007;
253 R0.H
= ASHIFT R0.
L BY R5.
L (S
);
254 R1.H
= ASHIFT R1.
L BY R5.
L (S
);
255 R2.H
= ASHIFT R2.
L BY R5.
L (S
);
256 R3.H
= ASHIFT R3.
L BY R5.
L (S
);
257 R4.H
= ASHIFT R4.
L BY R5.
L (S
);
258 //rh5
= ashift
(rl5 by rl5
);
259 R6.H
= ASHIFT R6.
L BY R5.
L (S
);
260 R7.H
= ASHIFT R7.
L BY R5.
L (S
);
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;
271 imm32
r0, 0x00001001;
272 imm32
r1, 0x00001001;
273 imm32
r1, 0x00002002;
274 imm32
r3, 0x00003003;
275 imm32
r4, 0x00004004;
276 imm32
r5, 0x00005005;
278 imm32
r7, 0x00007007;
279 R0.H
= ASHIFT R0.
L BY R6.
L (S
);
280 R1.H
= ASHIFT R1.
L BY R6.
L (S
);
281 R2.H
= ASHIFT R2.
L BY R6.
L (S
);
282 R3.H
= ASHIFT R3.
L BY R6.
L (S
);
283 R4.H
= ASHIFT R4.
L BY R6.
L (S
);
284 R5.H
= ASHIFT R5.
L BY R6.
L (S
);
285 //rh6
= ashift
(rl6 by rl6
);
286 R7.H
= ASHIFT 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;
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;
304 R0.H
= ASHIFT R0.
L BY R7.
L (S
);
305 R1.H
= ASHIFT R1.
L BY R7.
L (S
);
306 R2.H
= ASHIFT R2.
L BY R7.
L (S
);
307 R3.H
= ASHIFT R3.
L BY R7.
L (S
);
308 R4.H
= ASHIFT R4.
L BY R7.
L (S
);
309 R5.H
= ASHIFT R5.
L BY R7.
L (S
);
310 R6.H
= ASHIFT R6.
L BY R7.
L (S
);
311 R7.H
= ASHIFT R7.
L BY R7.
L (S
);
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;
321 // d_lo
= ashft
(d_hi BY d_lo
)
323 imm32
r0, 0x00010000;
324 imm32
r1, 0x00010000;
325 imm32
r2, 0x00020000;
326 imm32
r3, 0x00030000;
328 imm32
r5, 0x00050000;
329 imm32
r6, 0x00060000;
330 imm32
r7, 0x00070000;
331 R0.H
= ASHIFT R0.H BY R4.
L (S
);
332 R1.H
= ASHIFT R1.H BY R4.
L (S
);
333 R2.H
= ASHIFT R2.H BY R4.
L (S
);
334 R3.H
= ASHIFT R3.H BY R4.
L (S
);
335 //rh4
= ashift
(rh4 by rl4
);
336 R5.H
= ASHIFT R5.H BY R4.
L (S
);
337 R6.H
= ASHIFT R6.H BY R4.
L (S
);
338 R7.H
= ASHIFT R7.H BY R4.
L (S
);
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;
348 imm32
r0, 0x10010000;
349 imm32
r1, 0x10010000;
350 imm32
r2, 0x20020000;
351 imm32
r3, 0x30030000;
352 imm32
r4, 0x40040000;
354 imm32
r6, 0x60060000;
355 imm32
r7, 0x70070000;
356 R0.H
= ASHIFT R0.H BY R5.
L (S
);
357 R1.H
= ASHIFT R1.H BY R5.
L (S
);
358 R2.H
= ASHIFT R2.H BY R5.
L (S
);
359 R3.H
= ASHIFT R3.H BY R5.
L (S
);
360 R4.H
= ASHIFT R4.H BY R5.
L (S
);
361 //rh5
= ashift
(rh5 by rl5
);
362 R6.H
= ASHIFT R6.H BY R5.
L (S
);
363 R7.H
= ASHIFT R7.H BY R5.
L (S
);
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;
374 imm32
r0, 0x10010000;
375 imm32
r1, 0x10010000;
376 imm32
r2, 0x20020000;
377 imm32
r3, 0x30030000;
378 imm32
r4, 0x40040000;
379 imm32
r5, 0x50050000;
381 imm32
r7, 0x70070000;
382 R0.
L = ASHIFT R0.H BY R6.
L (S
);
383 R1.
L = ASHIFT R1.H BY R6.
L (S
);
384 R2.
L = ASHIFT R2.H BY R6.
L (S
);
385 R3.
L = ASHIFT R3.H BY R6.
L (S
);
386 R4.
L = ASHIFT R4.H BY R6.
L (S
);
387 R5.
L = ASHIFT R5.H BY R6.
L (S
);
388 //rl6
= ashift
(rh6 by rl6
);
389 R7.
L = ASHIFT 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;
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;
407 R0.H
= ASHIFT R0.H BY R7.
L (S
);
408 R1.H
= ASHIFT R1.H BY R7.
L (S
);
409 R2.H
= ASHIFT R2.H BY R7.
L (S
);
410 R3.H
= ASHIFT R3.H BY R7.
L (S
);
411 R4.H
= ASHIFT R4.H BY R7.
L (S
);
412 R5.H
= ASHIFT R5.H BY R7.
L (S
);
413 R6.H
= ASHIFT R6.H BY R7.
L (S
);
414 //rh7
= ashift
(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;