1 //Original
:/testcases
/core
/c_dsp32shiftim_ahalf_rp_s
/c_dsp32shiftim_ahalf_rp_s.dsp
2 // Spec Reference
: dspshiftimm dreg_lo
(hi
) = ashift
(dreg_lo
(hi
) by imm5
) saturated
5 .include "testutils.inc"
10 // Ashift
: positive data
, count
(+)=right
(half reg
)
11 // d_lo
= ashft
(d_lo BY d_lo
)
30 CHECKREG
r0, 0x0000FFFF;
31 CHECKREG
r1, 0x00010000;
32 CHECKREG
r2, 0x00010001;
33 CHECKREG
r3, 0x00010001;
34 CHECKREG
r4, 0x00010002;
35 CHECKREG
r5, 0x00010002;
36 CHECKREG
r6, 0x00010003;
37 CHECKREG
r7, 0x00010003;
55 CHECKREG
r0, 0x0020FFFF;
56 CHECKREG
r1, 0x00010100;
57 CHECKREG
r2, 0x00200180;
58 CHECKREG
r3, 0x00200200;
59 CHECKREG
r4, 0x00200280;
60 CHECKREG
r5, 0x00200300;
61 CHECKREG
r6, 0x00200004;
62 CHECKREG
r7, 0x00200080;
81 CHECKREG
r0, 0x0300FFFC;
82 CHECKREG
r1, 0x03000C00;
83 CHECKREG
r2, 0x00201001;
84 CHECKREG
r3, 0x03001401;
85 CHECKREG
r4, 0x03000100;
86 CHECKREG
r5, 0x03000100;
87 CHECKREG
r6, 0x03000400;
88 CHECKREG
r7, 0x03000400;
106 CHECKREG
r0, 0x4000FFFF;
107 CHECKREG
r1, 0x40000002;
108 CHECKREG
r2, 0x40000000;
109 CHECKREG
r3, 0x03000000;
110 CHECKREG
r4, 0x40000000;
111 CHECKREG
r5, 0x40000000;
112 CHECKREG
r6, 0x40000000;
113 CHECKREG
r7, 0x40000001;
115 // d_lo
= ashift
(d_hi BY d_lo
)
117 imm32
r0, 0x50000000;
118 imm32
r1, 0x50010000;
119 imm32
r2, 0x50020000;
120 imm32
r3, 0x50030000;
121 imm32
r4, 0x50040000;
122 imm32
r5, 0x50050000;
123 imm32
r6, 0x50060000;
124 imm32
r7, 0x50070000;
133 CHECKREG
r0, 0x50000014;
134 CHECKREG
r1, 0x50010014;
135 CHECKREG
r2, 0x50020014;
136 CHECKREG
r3, 0x50030014;
137 CHECKREG
r4, 0x50040014;
138 CHECKREG
r5, 0x50050014;
139 CHECKREG
r6, 0x50060014;
140 CHECKREG
r7, 0x50070014;
142 imm32
r0, 0x10016000;
144 imm32
r2, 0x20026000;
145 imm32
r3, 0x30036000;
146 imm32
r4, 0x40046000;
147 imm32
r5, 0x50056000;
148 imm32
r6, 0x60060000;
149 imm32
r7, 0x70076000;
158 CHECKREG
r0, 0x10010002;
159 CHECKREG
r1, 0x5001000A;
160 CHECKREG
r2, 0x20020004;
161 CHECKREG
r3, 0x30030006;
162 CHECKREG
r4, 0x40040008;
163 CHECKREG
r5, 0x5005000A;
164 CHECKREG
r6, 0x6006000C;
165 CHECKREG
r7, 0x7007000E;
168 imm32
r0, 0x10010700;
169 imm32
r1, 0x10010700;
171 imm32
r3, 0x30030700;
172 imm32
r4, 0x40040000;
173 imm32
r5, 0x50050700;
174 imm32
r6, 0x60060000;
175 imm32
r7, 0x70070700;
184 CHECKREG
r0, 0x10010000;
185 CHECKREG
r1, 0x10010000;
186 CHECKREG
r2, 0x20020000;
187 CHECKREG
r3, 0x30030000;
188 CHECKREG
r4, 0x40040000;
189 CHECKREG
r5, 0x50050000;
190 CHECKREG
r6, 0x60060000;
191 CHECKREG
r7, 0x70070000;
193 imm32
r0, 0x18010001;
194 imm32
r1, 0x18010001;
195 imm32
r2, 0x28020002;
197 imm32
r4, 0x48040004;
198 imm32
r5, 0x58050005;
199 imm32
r6, 0x68060006;
200 imm32
r7, 0x78070007;
209 CHECKREG
r0, 0x18010000;
210 CHECKREG
r1, 0x18010000;
211 CHECKREG
r2, 0x28020001;
212 CHECKREG
r3, 0x30030001;
213 CHECKREG
r4, 0x48040002;
214 CHECKREG
r5, 0x58050002;
215 CHECKREG
r6, 0x68060003;
216 CHECKREG
r7, 0x78070003;
218 // d_hi
= ashft
(d_lo BY d_lo
)
220 imm32
r0, 0x09000091;
221 imm32
r1, 0x09000091;
222 imm32
r2, 0x09000092;
223 imm32
r3, 0x09000093;
224 imm32
r4, 0x09000090;
225 imm32
r5, 0x09000095;
226 imm32
r6, 0x09000096;
227 imm32
r7, 0x09000097;
236 CHECKREG
r0, 0x00000091;
237 CHECKREG
r1, 0x00000091;
238 CHECKREG
r2, 0x00000092;
239 CHECKREG
r3, 0x00000093;
240 CHECKREG
r4, 0x00000090;
241 CHECKREG
r5, 0x00000095;
242 CHECKREG
r6, 0x00000096;
243 CHECKREG
r7, 0x00000097;
245 imm32
r0, 0xa0000001;
246 imm32
r1, 0xa0000001;
247 imm32
r2, 0xa0000002;
248 imm32
r3, 0xa0000003;
249 imm32
r4, 0xa0000004;
251 imm32
r6, 0xa0000006;
252 imm32
r7, 0xa0000007;
261 CHECKREG
r0, 0x00000001;
262 CHECKREG
r1, 0x00000001;
263 CHECKREG
r2, 0x00000002;
264 CHECKREG
r3, 0x00000003;
265 CHECKREG
r4, 0x00000004;
266 CHECKREG
r5, 0xFFFFFFFF;
267 CHECKREG
r6, 0x00000006;
268 CHECKREG
r7, 0x00000007;
271 imm32
r0, 0xb0001001;
272 imm32
r1, 0xb0001001;
273 imm32
r1, 0xb0002002;
274 imm32
r3, 0xb0003003;
275 imm32
r4, 0xb0004004;
276 imm32
r5, 0xb0005005;
278 imm32
r7, 0xb0007007;
287 CHECKREG
r0, 0x00401001;
288 CHECKREG
r1, 0x00802002;
289 CHECKREG
r2, 0x00000002;
290 CHECKREG
r3, 0x00C03003;
291 CHECKREG
r4, 0x01004004;
292 CHECKREG
r5, 0x01405005;
293 CHECKREG
r6, 0xFFFFFFF1;
294 CHECKREG
r7, 0x01C07007;
296 imm32
r0, 0x0c001c01;
297 imm32
r1, 0x0c002c01;
298 imm32
r2, 0x0c002c02;
299 imm32
r3, 0x0c003c03;
300 imm32
r4, 0x0c004c04;
301 imm32
r5, 0x0c005c05;
302 imm32
r6, 0x0c006c06;
312 CHECKREG
r0, 0x00381C01;
313 CHECKREG
r1, 0x00582C01;
314 CHECKREG
r2, 0x00582C02;
315 CHECKREG
r3, 0x00783C03;
316 CHECKREG
r4, 0x00984C04;
317 CHECKREG
r5, 0x00B85C05;
318 CHECKREG
r6, 0x00D86C06;
319 CHECKREG
r7, 0xFFFFFFF0;
321 // d_lo
= ashft
(d_hi BY d_lo
)
323 imm32
r0, 0x0d01d000;
324 imm32
r1, 0x0d01d000;
325 imm32
r2, 0x0d02d000;
326 imm32
r3, 0x0d03d000;
328 imm32
r5, 0x0d05d000;
329 imm32
r6, 0x0d06d000;
330 imm32
r7, 0x0d07d000;
339 CHECKREG
r0, 0x00D0D000;
340 CHECKREG
r1, 0x00D0D000;
341 CHECKREG
r2, 0x00D0D000;
342 CHECKREG
r3, 0x00D0D000;
343 CHECKREG
r4, 0x0009FFFF;
344 CHECKREG
r5, 0x00D0D000;
345 CHECKREG
r6, 0x00D0D000;
346 CHECKREG
r7, 0x000DD000;
348 imm32
r0, 0x1e010000;
349 imm32
r1, 0x1e010000;
350 imm32
r2, 0x2e020000;
351 imm32
r3, 0x3e030000;
352 imm32
r4, 0x4e040000;
354 imm32
r6, 0x6e060000;
355 imm32
r7, 0x7e070000;
364 CHECKREG
r0, 0x00000000;
365 CHECKREG
r1, 0x00000000;
366 CHECKREG
r2, 0x00000000;
367 CHECKREG
r3, 0x00000000;
368 CHECKREG
r4, 0x00000000;
369 CHECKREG
r5, 0x0000FFFF;
370 CHECKREG
r6, 0x00000000;
371 CHECKREG
r7, 0x00000000;
373 imm32
r0, 0x1f010000;
374 imm32
r1, 0x1f010000;
375 imm32
r2, 0x2f020000;
376 imm32
r3, 0x3f030000;
377 imm32
r4, 0x4f040000;
378 imm32
r5, 0x5f050000;
380 imm32
r7, 0x70070000;
389 CHECKREG
r0, 0x00FC0000;
390 CHECKREG
r1, 0x013C0000;
391 CHECKREG
r2, 0x00020000;
392 CHECKREG
r3, 0x00010000;
393 CHECKREG
r4, 0x00010000;
394 CHECKREG
r5, 0x00BC0000;
395 CHECKREG
r6, 0x007CFFF1;
396 CHECKREG
r7, 0x007C0000;
398 imm32
r0, 0x11010a00;
399 imm32
r1, 0x11010b00;
400 imm32
r2, 0x21020d00;
401 imm32
r2, 0x31030c00;
402 imm32
r4, 0x41040d00;
403 imm32
r5, 0x51050e00;
404 imm32
r6, 0x610600f0;
414 CHECKREG
r0, 0x00000A00;
415 CHECKREG
r1, 0x00000B00;
416 CHECKREG
r2, 0x00000C00;
417 CHECKREG
r3, 0x00820000;
418 CHECKREG
r4, 0x00000D00;
419 CHECKREG
r5, 0x00220E00;
420 CHECKREG
r6, 0x002200F0;
421 CHECKREG
r7, 0x0062FFF0;