Home | History | Annotate | Line # | Download | only in bfin
      1 //Original:/testcases/core/c_dsp32shift_ahalf_rp/c_dsp32shift_ahalf_rp.dsp
      2 // Spec Reference: dsp32shift ashift
      3 # mach: bfin
      4 
      5 .include "testutils.inc"
      6 	start
      7 
      8 
      9 
     10 // Ashift : positive data, count (+)=right (half reg)
     11 // d_lo = ashft (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 = ashift (rl0 by rl0);
     23 R1.L = ASHIFT R1.L BY R0.L;
     24 R2.L = ASHIFT R2.L BY R0.L;
     25 R3.L = ASHIFT R3.L BY R0.L;
     26 R4.L = ASHIFT R4.L BY R0.L;
     27 R5.L = ASHIFT R5.L BY R0.L;
     28 R6.L = ASHIFT R6.L BY R0.L;
     29 R7.L = ASHIFT 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 = ASHIFT R0.L BY R1.L;
     48 //rl1 = ashift (rl1 by rl1);
     49 R2.L = ASHIFT R2.L BY R1.L;
     50 R3.L = ASHIFT R3.L BY R1.L;
     51 R4.L = ASHIFT R4.L BY R1.L;
     52 R5.L = ASHIFT R5.L BY R1.L;
     53 R6.L = ASHIFT R6.L BY R1.L;
     54 R7.L = ASHIFT 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 = ASHIFT R0.L BY R2.L;
     74 R1.L = ASHIFT R1.L BY R2.L;
     75 //rl2 = ashift (rl2 by rl2);
     76 R3.L = ASHIFT R3.L BY R2.L;
     77 R4.L = ASHIFT R4.L BY R2.L;
     78 R5.L = ASHIFT R5.L BY R2.L;
     79 R6.L = ASHIFT R6.L BY R2.L;
     80 R7.L = ASHIFT 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 = ASHIFT R0.L BY R3.L;
     99 R1.L = ASHIFT R1.L BY R3.L;
    100 R2.L = ASHIFT R2.L BY R3.L;
    101 //rl3 = ashift (rl3 by rl3);
    102 R4.L = ASHIFT R4.L BY R3.L;
    103 R5.L = ASHIFT R5.L BY R3.L;
    104 R6.L = ASHIFT R6.L BY R3.L;
    105 R7.L = ASHIFT 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 = ASHIFT R0.H BY R0.L;
    126 R1.L = ASHIFT R1.H BY R0.L;
    127 R2.L = ASHIFT R2.H BY R0.L;
    128 R3.L = ASHIFT R3.H BY R0.L;
    129 R4.L = ASHIFT R4.H BY R0.L;
    130 R5.L = ASHIFT R5.H BY R0.L;
    131 R6.L = ASHIFT R6.H BY R0.L;
    132 R7.L = ASHIFT 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 = ASHIFT R0.H BY R1.L;
    151 //rl1 = ashift (rh1 by rl1);
    152 R2.L = ASHIFT R2.H BY R1.L;
    153 R3.L = ASHIFT R3.H BY R1.L;
    154 R4.L = ASHIFT R4.H BY R1.L;
    155 R5.L = ASHIFT R5.H BY R1.L;
    156 R6.L = ASHIFT R6.H BY R1.L;
    157 R7.L = ASHIFT 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 = ASHIFT R0.H BY R2.L;
    177 R1.L = ASHIFT R1.H BY R2.L;
    178 //rl2 = ashift (rh2 by rl2);
    179 R3.L = ASHIFT R3.H BY R2.L;
    180 R4.L = ASHIFT R4.H BY R2.L;
    181 R5.L = ASHIFT R5.H BY R2.L;
    182 R6.L = ASHIFT R6.H BY R2.L;
    183 R7.L = ASHIFT 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 = ASHIFT R0.H BY R3.L;
    202 R1.L = ASHIFT R1.H BY R3.L;
    203 R2.L = ASHIFT R2.H BY R3.L;
    204 //rl3 = ashift (rh3 by rl3);
    205 R4.L = ASHIFT R4.H BY R3.L;
    206 R5.L = ASHIFT R5.H BY R3.L;
    207 R6.L = ASHIFT R6.H BY R3.L;
    208 R7.L = ASHIFT 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 = ASHIFT R0.L BY R4.L;
    229 R1.H = ASHIFT R1.L BY R4.L;
    230 R2.H = ASHIFT R2.L BY R4.L;
    231 R3.H = ASHIFT R3.L BY R4.L;
    232 //rh4 = ashift (rl4 by rl4);
    233 R5.H = ASHIFT R5.L BY R4.L;
    234 R6.H = ASHIFT R6.L BY R4.L;
    235 R7.H = ASHIFT 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 = ASHIFT R0.L BY R5.L;
    254 R1.H = ASHIFT R1.L BY R5.L;
    255 R2.H = ASHIFT R2.L BY R5.L;
    256 R3.H = ASHIFT R3.L BY R5.L;
    257 R4.H = ASHIFT R4.L BY R5.L;
    258 //rh5 = ashift (rl5 by rl5);
    259 R6.H = ASHIFT R6.L BY R5.L;
    260 R7.H = ASHIFT 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 = ASHIFT R0.L BY R6.L;
    280 R1.H = ASHIFT R1.L BY R6.L;
    281 R2.H = ASHIFT R2.L BY R6.L;
    282 R3.H = ASHIFT R3.L BY R6.L;
    283 R4.H = ASHIFT R4.L BY R6.L;
    284 R5.H = ASHIFT R5.L BY R6.L;
    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;
    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 = ASHIFT R0.L BY R7.L;
    305 R1.H = ASHIFT R1.L BY R7.L;
    306 R2.H = ASHIFT R2.L BY R7.L;
    307 R3.H = ASHIFT R3.L BY R7.L;
    308 R4.H = ASHIFT R4.L BY R7.L;
    309 R5.H = ASHIFT R5.L BY R7.L;
    310 R6.H = ASHIFT R6.L BY R7.L;
    311 R7.H = ASHIFT 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 = ASHIFT R0.H BY R4.L;
    332 R1.H = ASHIFT R1.H BY R4.L;
    333 R2.H = ASHIFT R2.H BY R4.L;
    334 R3.H = ASHIFT R3.H BY R4.L;
    335 //rh4 = ashift (rh4 by rl4);
    336 R5.H = ASHIFT R5.H BY R4.L;
    337 R6.H = ASHIFT R6.H BY R4.L;
    338 R7.H = ASHIFT 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 = ASHIFT R0.H BY R5.L;
    357 R1.H = ASHIFT R1.H BY R5.L;
    358 R2.H = ASHIFT R2.H BY R5.L;
    359 R3.H = ASHIFT R3.H BY R5.L;
    360 R4.H = ASHIFT R4.H BY R5.L;
    361 //rh5 = ashift (rh5 by rl5);
    362 R6.H = ASHIFT R6.H BY R5.L;
    363 R7.H = ASHIFT 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 = ASHIFT R0.H BY R6.L;
    383 R1.L = ASHIFT R1.H BY R6.L;
    384 R2.L = ASHIFT R2.H BY R6.L;
    385 R3.L = ASHIFT R3.H BY R6.L;
    386 R4.L = ASHIFT R4.H BY R6.L;
    387 R5.L = ASHIFT R5.H BY R6.L;
    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;
    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 = ASHIFT R0.H BY R7.L;
    408 R1.H = ASHIFT R1.H BY R7.L;
    409 R2.H = ASHIFT R2.H BY R7.L;
    410 R3.H = ASHIFT R3.H BY R7.L;
    411 R4.H = ASHIFT R4.H BY R7.L;
    412 R5.H = ASHIFT R5.H BY R7.L;
    413 R6.H = ASHIFT R6.H BY R7.L;
    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;
    422 //CHECKREG r7, -16;
    423 pass
    424