Home | History | Annotate | Line # | Download | only in bfin
      1 //Original:/testcases/core/c_dsp32shiftim_ahalf_lp_s/c_dsp32shiftim_ahalf_lp_s.dsp
      2 // Spec Reference: dspshiftimm dreg_lo(hi) = ashift (dreg_lo(hi) by imm5) saturated
      3 # mach: bfin
      4 
      5 .include "testutils.inc"
      6 	start
      7 
      8 
      9 
     10 imm32 r0, 0x00100a00;
     11 imm32 r1, 0x00100a01;
     12 imm32 r2, 0x00100a02;
     13 imm32 r3, 0x00100a03;
     14 imm32 r4, 0x00100a04;
     15 imm32 r5, 0x00100a05;
     16 imm32 r6, 0x00100a06;
     17 imm32 r7, 0x00100a07;
     18 R7.L = R0.L << 0 (S);
     19 R0.L = R1.L << 1 (S);
     20 R1.L = R2.L << 2 (S);
     21 R2.L = R3.L << 3 (S);
     22 R3.L = R4.L << 4 (S);
     23 R4.L = R5.L << 5 (S);
     24 R5.L = R6.L << 6 (S);
     25 R6.L = R7.L << 7 (S);
     26 CHECKREG r1, 0x00102808;
     27 CHECKREG r0, 0x00101402;
     28 CHECKREG r2, 0x00105018;
     29 CHECKREG r3, 0x00107FFF;
     30 CHECKREG r4, 0x00107FFF;
     31 CHECKREG r5, 0x00107FFF;
     32 CHECKREG r6, 0x00107FFF;
     33 CHECKREG r7, 0x00100A00;
     34 
     35 imm32 r0, 0x00200018;
     36 imm32 r1, 0x00200019;
     37 imm32 r2, 0x0020001a;
     38 imm32 r3, 0x0020001b;
     39 imm32 r4, 0x0020001c;
     40 imm32 r5, 0x0020001d;
     41 imm32 r6, 0x0020001e;
     42 imm32 r7, 0x0020001f;
     43 R2.L = R0.L << 8 (S);
     44 R3.L = R1.L << 9 (S);
     45 R4.L = R2.L << 10 (S);
     46 R5.L = R3.L << 11 (S);
     47 R6.L = R4.L << 12 (S);
     48 R7.L = R5.L << 13 (S);
     49 R0.L = R6.L << 14 (S);
     50 R1.L = R7.L << 15 (S);
     51 CHECKREG r0, 0x00207FFF;
     52 CHECKREG r1, 0x00207FFF;
     53 CHECKREG r2, 0x00201800;
     54 CHECKREG r3, 0x00203200;
     55 CHECKREG r4, 0x00207FFF;
     56 CHECKREG r5, 0x00207FFF;
     57 CHECKREG r6, 0x00207FFF;
     58 CHECKREG r7, 0x00207FFF;
     59 
     60 imm32 r0, 0x05002001;
     61 imm32 r1, 0x05002001;
     62 imm32 r2, 0x0500000f;
     63 imm32 r3, 0x05002003;
     64 imm32 r4, 0x05002004;
     65 imm32 r5, 0x05002005;
     66 imm32 r6, 0x05002006;
     67 imm32 r7, 0x05002007;
     68 R3.L = R0.L << 0 (S);
     69 R4.L = R1.L << 1 (S);
     70 R5.L = R2.L << 2 (S);
     71 R6.L = R3.L << 3 (S);
     72 R7.L = R4.L << 4 (S);
     73 R0.L = R5.L << 5 (S);
     74 R1.L = R6.L << 6 (S);
     75 R2.L = R7.L << 7 (S);
     76 CHECKREG r0, 0x05000780;
     77 CHECKREG r1, 0x05007FFF;
     78 CHECKREG r2, 0x05007FFF;
     79 CHECKREG r3, 0x05002001;
     80 CHECKREG r4, 0x05004002;
     81 CHECKREG r5, 0x0500003C;
     82 CHECKREG r6, 0x05007FFF;
     83 CHECKREG r7, 0x05007FFF;
     84 
     85 imm32 r0, 0x03000031;
     86 imm32 r1, 0x03000031;
     87 imm32 r2, 0x03000032;
     88 imm32 r3, 0x03000030;
     89 imm32 r4, 0x03000034;
     90 imm32 r5, 0x03000035;
     91 imm32 r6, 0x03000036;
     92 imm32 r7, 0x03000037;
     93 R4.L = R0.L << 8 (S);
     94 R5.L = R1.L << 9 (S);
     95 R6.L = R2.L << 10 (S);
     96 R7.L = R3.L << 11 (S);
     97 R0.L = R4.L << 12 (S);
     98 R1.L = R5.L << 13 (S);
     99 R2.L = R6.L << 14 (S);
    100 R3.L = R7.L << 15 (S);
    101 CHECKREG r0, 0x03007FFF;
    102 CHECKREG r1, 0x03007FFF;
    103 CHECKREG r2, 0x03007FFF;
    104 CHECKREG r3, 0x03007FFF;
    105 CHECKREG r4, 0x03003100;
    106 CHECKREG r5, 0x03006200;
    107 CHECKREG r6, 0x03007FFF;
    108 CHECKREG r7, 0x03007FFF;
    109 // RHx by RLx
    110 imm32 r0, 0x03000000;
    111 imm32 r1, 0x03000000;
    112 imm32 r2, 0x03000000;
    113 imm32 r3, 0x03000000;
    114 imm32 r4, 0x03003100;
    115 imm32 r5, 0x03006200;
    116 imm32 r6, 0x0300C800;
    117 imm32 r7, 0x03008000;
    118 R5.L = R0.H << 0 (S);
    119 R6.L = R1.H << 1 (S);
    120 R7.L = R2.H << 2 (S);
    121 R0.L = R3.H << 3 (S);
    122 R1.L = R4.H << 4 (S);
    123 R2.L = R5.H << 5 (S);
    124 R3.L = R6.H << 6 (S);
    125 R4.L = R7.H << 7 (S);
    126 CHECKREG r0, 0x03001800;
    127 CHECKREG r1, 0x03003000;
    128 CHECKREG r2, 0x03006000;
    129 CHECKREG r3, 0x03007FFF;
    130 CHECKREG r4, 0x03007FFF;
    131 CHECKREG r5, 0x03000300;
    132 CHECKREG r6, 0x03000600;
    133 CHECKREG r7, 0x03000C00;
    134 
    135 imm32 r0, 0x05018000;
    136 imm32 r1, 0x05018001;
    137 imm32 r2, 0x05028000;
    138 imm32 r3, 0x05038000;
    139 imm32 r4, 0x05048000;
    140 imm32 r5, 0x05058000;
    141 imm32 r6, 0x05068000;
    142 imm32 r7, 0x05078000;
    143 R6.L = R0.H << 8 (S);
    144 R7.L = R1.H << 9 (S);
    145 R0.L = R2.H << 10 (S);
    146 R1.L = R3.H << 11 (S);
    147 R2.L = R4.H << 12 (S);
    148 R3.L = R5.H << 13 (S);
    149 R4.L = R6.H << 14 (S);
    150 R5.L = R7.H << 15 (S);
    151 CHECKREG r0, 0x05017FFF;
    152 CHECKREG r1, 0x05017FFF;
    153 CHECKREG r2, 0x05027FFF;
    154 CHECKREG r3, 0x05037FFF;
    155 CHECKREG r4, 0x05047FFF;
    156 CHECKREG r5, 0x05057FFF;
    157 CHECKREG r6, 0x05067FFF;
    158 CHECKREG r7, 0x05077FFF;
    159 
    160 
    161 imm32 r0, 0x60019000;
    162 imm32 r1, 0x60019000;
    163 imm32 r2, 0x6002900f;
    164 imm32 r3, 0x60039000;
    165 imm32 r4, 0x60049000;
    166 imm32 r5, 0x60059000;
    167 imm32 r6, 0x60069000;
    168 imm32 r7, 0x60079000;
    169 R7.L = R0.H << 0 (S);
    170 R0.L = R1.H << 1 (S);
    171 R1.L = R2.H << 2 (S);
    172 R2.L = R3.H << 3 (S);
    173 R3.L = R4.H << 4 (S);
    174 R4.L = R5.H << 5 (S);
    175 R5.L = R6.H << 6 (S);
    176 R6.L = R7.H << 7 (S);
    177 CHECKREG r0, 0x60017FFF;
    178 CHECKREG r1, 0x60017FFF;
    179 CHECKREG r2, 0x60027FFF;
    180 CHECKREG r3, 0x60037FFF;
    181 CHECKREG r4, 0x60047FFF;
    182 CHECKREG r5, 0x60057FFF;
    183 CHECKREG r6, 0x60067FFF;
    184 CHECKREG r7, 0x60076001;
    185 
    186 imm32 r0, 0x70010001;
    187 imm32 r1, 0x70010001;
    188 imm32 r2, 0x70020002;
    189 imm32 r3, 0x77030010;
    190 imm32 r4, 0x70040004;
    191 imm32 r5, 0x70050005;
    192 imm32 r6, 0x70060006;
    193 imm32 r7, 0x70070007;
    194 R0.L = R0.H << 8 (S);
    195 R1.L = R1.H << 9 (S);
    196 R2.L = R2.H << 10 (S);
    197 R3.L = R3.H << 11 (S);
    198 R4.L = R4.H << 12 (S);
    199 R5.L = R5.H << 13 (S);
    200 R6.L = R6.H << 14 (S);
    201 R7.L = R7.H << 15 (S);
    202 CHECKREG r0, 0x70017FFF;
    203 CHECKREG r1, 0x70017FFF;
    204 CHECKREG r2, 0x70027FFF;
    205 CHECKREG r3, 0x77037FFF;
    206 CHECKREG r4, 0x70047FFF;
    207 CHECKREG r5, 0x70057FFF;
    208 CHECKREG r6, 0x70067FFF;
    209 CHECKREG r7, 0x70077FFF;
    210 
    211 // d_hi = lshft (d_lo BY d_lo)
    212 // RLx by RLx
    213 imm32 r0, 0xa8000000;
    214 imm32 r1, 0xa8000001;
    215 imm32 r2, 0xa8000002;
    216 imm32 r3, 0xa8000003;
    217 imm32 r4, 0xa8000004;
    218 imm32 r5, 0xa8000005;
    219 imm32 r6, 0xa8000006;
    220 imm32 r7, 0xa8000007;
    221 R0.H = R0.L << 0 (S);
    222 R1.H = R1.L << 1 (S);
    223 R2.H = R2.L << 2 (S);
    224 R3.H = R3.L << 3 (S);
    225 R4.H = R4.L << 4 (S);
    226 R5.H = R5.L << 5 (S);
    227 R6.H = R6.L << 6 (S);
    228 R7.H = R7.L << 7 (S);
    229 CHECKREG r0, 0x00000000;
    230 CHECKREG r1, 0x00020001;
    231 CHECKREG r2, 0x00080002;
    232 CHECKREG r3, 0x00180003;
    233 CHECKREG r4, 0x00400004;
    234 CHECKREG r5, 0x00A00005;
    235 CHECKREG r6, 0x01800006;
    236 CHECKREG r7, 0x03800007;
    237 
    238 imm32 r0, 0xf0090001;
    239 imm32 r1, 0xf0090001;
    240 imm32 r2, 0xf0090002;
    241 imm32 r3, 0xf0090003;
    242 imm32 r4, 0xf0090004;
    243 imm32 r5, 0xf0090005;
    244 imm32 r6, 0xf0000006;
    245 imm32 r7, 0xf0000007;
    246 R1.H = R0.L << 8 (S);
    247 R2.H = R1.L << 9 (S);
    248 R3.H = R2.L << 10 (S);
    249 R4.H = R3.L << 11 (S);
    250 R5.H = R4.L << 12 (S);
    251 R6.H = R5.L << 13 (S);
    252 R7.H = R6.L << 14 (S);
    253 R0.H = R7.L << 15 (S);
    254 CHECKREG r1, 0x01000001;
    255 CHECKREG r2, 0x02000002;
    256 CHECKREG r3, 0x08000003;
    257 CHECKREG r4, 0x18000004;
    258 CHECKREG r5, 0x40000005;
    259 CHECKREG r6, 0x7FFF0006;
    260 CHECKREG r7, 0x7FFF0007;
    261 CHECKREG r0, 0x7FFF0001;
    262 
    263 
    264 imm32 r0, 0x07000001;
    265 imm32 r1, 0x07000001;
    266 imm32 r2, 0x0700000f;
    267 imm32 r3, 0x07000003;
    268 imm32 r4, 0x07000004;
    269 imm32 r5, 0x07000005;
    270 imm32 r6, 0x07000006;
    271 imm32 r7, 0x07000007;
    272 R3.H = R0.L << 0 (S);
    273 R4.H = R1.L << 1 (S);
    274 R5.H = R2.L << 2 (S);
    275 R6.H = R3.L << 3 (S);
    276 R7.H = R4.L << 4 (S);
    277 R0.H = R5.L << 5 (S);
    278 R1.H = R6.L << 6 (S);
    279 R2.H = R7.L << 7 (S);
    280 CHECKREG r0, 0x00A00001;
    281 CHECKREG r1, 0x01800001;
    282 CHECKREG r2, 0x0380000F;
    283 CHECKREG r3, 0x00010003;
    284 CHECKREG r4, 0x00020004;
    285 CHECKREG r5, 0x003C0005;
    286 CHECKREG r6, 0x00180006;
    287 CHECKREG r7, 0x00400007;
    288 
    289 imm32 r0, 0x00000501;
    290 imm32 r1, 0x00000501;
    291 imm32 r2, 0x00000502;
    292 imm32 r3, 0x00000510;
    293 imm32 r4, 0x00000504;
    294 imm32 r5, 0x00000505;
    295 imm32 r6, 0x00000506;
    296 imm32 r7, 0x00000507;
    297 R4.H = R0.L << 8 (S);
    298 R5.H = R1.L << 9 (S);
    299 R6.H = R2.L << 10 (S);
    300 R7.H = R3.L << 11 (S);
    301 R0.H = R4.L << 12 (S);
    302 R1.H = R5.L << 13 (S);
    303 R2.H = R6.L << 14 (S);
    304 R3.H = R7.L << 15 (S);
    305 CHECKREG r0, 0x7FFF0501;
    306 CHECKREG r1, 0x7FFF0501;
    307 CHECKREG r2, 0x7FFF0502;
    308 CHECKREG r3, 0x7FFF0510;
    309 CHECKREG r4, 0x7FFF0504;
    310 CHECKREG r5, 0x7FFF0505;
    311 CHECKREG r6, 0x7FFF0506;
    312 CHECKREG r7, 0x7FFF0507;
    313 
    314 imm32 r0, 0x00a00800;
    315 imm32 r1, 0x00a10800;
    316 imm32 r2, 0x00a20800;
    317 imm32 r3, 0x00a30800;
    318 imm32 r4, 0x00a40800;
    319 imm32 r5, 0x00a50800;
    320 imm32 r6, 0x00a60800;
    321 imm32 r7, 0x00a70800;
    322 R5.H = R0.H << 0 (S);
    323 R6.H = R1.H << 1 (S);
    324 R7.H = R2.H << 2 (S);
    325 R0.H = R3.H << 3 (S);
    326 R1.H = R4.H << 4 (S);
    327 R2.H = R5.H << 5 (S);
    328 R3.H = R6.H << 6 (S);
    329 R4.H = R7.H << 7 (S);
    330 CHECKREG r0, 0x05180800;
    331 CHECKREG r1, 0x0A400800;
    332 CHECKREG r2, 0x14000800;
    333 CHECKREG r3, 0x50800800;
    334 CHECKREG r4, 0x7FFF0800;
    335 CHECKREG r5, 0x00A00800;
    336 CHECKREG r6, 0x01420800;
    337 CHECKREG r7, 0x02880800;
    338 
    339 imm32 r0, 0x0c010000;
    340 imm32 r1, 0x0c010001;
    341 imm32 r2, 0x0c020000;
    342 imm32 r3, 0x0c030000;
    343 imm32 r4, 0x0c040000;
    344 imm32 r5, 0x0c050000;
    345 imm32 r6, 0x0c060000;
    346 imm32 r7, 0x0c070000;
    347 R6.H = R0.H << 8 (S);
    348 R7.H = R1.H << 9 (S);
    349 R0.H = R2.H << 10 (S);
    350 R1.H = R3.H << 11 (S);
    351 R2.H = R4.H << 12 (S);
    352 R3.H = R5.H << 13 (S);
    353 R4.H = R6.H << 14 (S);
    354 R5.H = R7.H << 15 (S);
    355 CHECKREG r0, 0x7FFF0000;
    356 CHECKREG r1, 0x7FFF0001;
    357 CHECKREG r2, 0x7FFF0000;
    358 CHECKREG r3, 0x7FFF0000;
    359 CHECKREG r4, 0x7FFF0000;
    360 CHECKREG r5, 0x7FFF0000;
    361 CHECKREG r6, 0x7FFF0000;
    362 CHECKREG r7, 0x7FFF0000;
    363 
    364 
    365 imm32 r0, 0x00b10000;
    366 imm32 r1, 0x00b10000;
    367 imm32 r2, 0x00b2000f;
    368 imm32 r3, 0x00b30000;
    369 imm32 r4, 0x00b40000;
    370 imm32 r5, 0x00b50000;
    371 imm32 r6, 0x00b60000;
    372 imm32 r7, 0x00b70000;
    373 R7.L = R0.H << 0 (S);
    374 R0.L = R1.H << 1 (S);
    375 R1.L = R2.H << 2 (S);
    376 R2.L = R3.H << 3 (S);
    377 R3.L = R4.H << 4 (S);
    378 R4.L = R5.H << 5 (S);
    379 R5.L = R6.H << 6 (S);
    380 R6.L = R7.H << 7 (S);
    381 CHECKREG r0, 0x00B10162;
    382 CHECKREG r1, 0x00B102C8;
    383 CHECKREG r2, 0x00B20598;
    384 CHECKREG r3, 0x00B30B40;
    385 CHECKREG r4, 0x00B416A0;
    386 CHECKREG r5, 0x00B52D80;
    387 CHECKREG r6, 0x00B65B80;
    388 CHECKREG r7, 0x00B700B1;
    389 
    390 imm32 r0, 0x0a010700;
    391 imm32 r1, 0x0a010700;
    392 imm32 r2, 0x0a020700;
    393 imm32 r3, 0x0a030710;
    394 imm32 r4, 0x0a040700;
    395 imm32 r5, 0x0a050700;
    396 imm32 r6, 0x0a060700;
    397 imm32 r7, 0x0a070700;
    398 R0.H = R0.H << 8 (S);
    399 R1.H = R1.H << 9 (S);
    400 R2.H = R2.H << 10 (S);
    401 R3.H = R3.H << 11 (S);
    402 R4.H = R4.H << 12 (S);
    403 R5.H = R5.H << 13 (S);
    404 R6.H = R6.H << 14 (S);
    405 R7.H = R7.H << 15 (S);
    406 CHECKREG r0, 0x7FFF0700;
    407 CHECKREG r1, 0x7FFF0700;
    408 CHECKREG r2, 0x7FFF0700;
    409 CHECKREG r3, 0x7FFF0710;
    410 CHECKREG r4, 0x7FFF0700;
    411 CHECKREG r5, 0x7FFF0700;
    412 CHECKREG r6, 0x7FFF0700;
    413 CHECKREG r7, 0x7FFF0700;
    414 
    415 pass
    416