Home | History | Annotate | Line # | Download | only in bfin
      1 # Blackfin testcase for ashift
      2 # mach: bfin
      3 
      4 	.include "testutils.inc"
      5 
      6 	.macro ashift_test in:req, shift:req, out:req, opt
      7 	r0 = \in (Z);
      8 	r2.L = \shift;
      9 	r2.h = ASHIFT R0.L BY R2.L \opt;
     10 	DBGA (r2.h, \out);
     11 	.endm
     12 
     13 	start
     14 
     15 	/*
     16 	 * 16-bit ashift and lshift uses a 6-bit signed  magnitude, which
     17 	 * gives a range from -32 to 31.  In the case where the  magnitude
     18 	 * is -32, make sure the answer is correct.
     19 	 */
     20 
     21 ashift_test 0x8001,  33, 0xffff;
     22 ashift_test 0x8001,  32, 0xffff;
     23 ashift_test 0x8001,  31, 0x0000;
     24 ashift_test 0x8001,  30, 0x0000;
     25 ashift_test 0x8001,  29, 0x0000;
     26 ashift_test 0x8001,  28, 0x0000;
     27 ashift_test 0x8001,  27, 0x0000;
     28 ashift_test 0x8001,  26, 0x0000;
     29 ashift_test 0x8001,  25, 0x0000;
     30 ashift_test 0x8001,  24, 0x0000;
     31 ashift_test 0x8001,  23, 0x0000;
     32 ashift_test 0x8001,  22, 0x0000;
     33 ashift_test 0x8001,  21, 0x0000;
     34 ashift_test 0x8001,  20, 0x0000;
     35 ashift_test 0x8001,  19, 0x0000;
     36 ashift_test 0x8001,  18, 0x0000;
     37 ashift_test 0x8001,  17, 0x0000;
     38 ashift_test 0x8001,  16, 0x0000;
     39 ashift_test 0x8001,  15, 0x8000;
     40 ashift_test 0x8001,  14, 0x4000;
     41 ashift_test 0x8001,  13, 0x2000;
     42 ashift_test 0x8001,  12, 0x1000;
     43 ashift_test 0x8001,  11, 0x0800;
     44 ashift_test 0x8001,  10, 0x0400;
     45 ashift_test 0x8001,   9, 0x0200;
     46 ashift_test 0x8001,   8, 0x0100;
     47 ashift_test 0x8001,   7, 0x0080;
     48 ashift_test 0x8001,   6, 0x0040;
     49 ashift_test 0x8001,   5, 0x0020;
     50 ashift_test 0x8001,   4, 0x0010;
     51 ashift_test 0x8001,   3, 0x0008;
     52 ashift_test 0x8001,   2, 0x0004;
     53 ashift_test 0x8001,   1, 0x0002;
     54 ashift_test 0x8001,   0, 0x8001;
     55 ashift_test 0x8001,  -1, 0xc000;
     56 ashift_test 0x8001,  -2, 0xe000;
     57 ashift_test 0x8001,  -3, 0xf000;
     58 ashift_test 0x8001,  -4, 0xf800;
     59 ashift_test 0x8001,  -5, 0xfc00;
     60 ashift_test 0x8001,  -6, 0xfe00;
     61 ashift_test 0x8001,  -7, 0xff00;
     62 ashift_test 0x8001,  -8, 0xff80;
     63 ashift_test 0x8001,  -9, 0xffc0;
     64 ashift_test 0x8001, -10, 0xffe0;
     65 ashift_test 0x8001, -11, 0xfff0;
     66 ashift_test 0x8001, -12, 0xfff8;
     67 ashift_test 0x8001, -13, 0xfffc;
     68 ashift_test 0x8001, -14, 0xfffe;
     69 ashift_test 0x8001, -15, 0xffff;
     70 ashift_test 0x8001, -16, 0xffff;
     71 ashift_test 0x8001, -17, 0xffff;
     72 ashift_test 0x8001, -18, 0xffff;
     73 ashift_test 0x8001, -19, 0xffff;
     74 ashift_test 0x8001, -20, 0xffff;
     75 ashift_test 0x8001, -21, 0xffff;
     76 ashift_test 0x8001, -22, 0xffff;
     77 ashift_test 0x8001, -23, 0xffff;
     78 ashift_test 0x8001, -24, 0xffff;
     79 ashift_test 0x8001, -25, 0xffff;
     80 ashift_test 0x8001, -26, 0xffff;
     81 ashift_test 0x8001, -27, 0xffff;
     82 ashift_test 0x8001, -28, 0xffff;
     83 ashift_test 0x8001, -29, 0xffff;
     84 ashift_test 0x8001, -30, 0xffff;
     85 ashift_test 0x8001, -31, 0xffff;
     86 ashift_test 0x8001, -32, 0xffff;
     87 ashift_test 0x8001, -33, 0x0;
     88 ashift_test 0x8001, -34, 0x0;
     89 
     90 ashift_test 0x8001,  33, 0xffff, (S);
     91 ashift_test 0x8001,  32, 0xffff, (S);
     92 ashift_test 0x8001,  31, 0x8000, (S);
     93 ashift_test 0x8001,  30, 0x8000, (S);
     94 ashift_test 0x8001,  29, 0x8000, (S);
     95 ashift_test 0x8001,  28, 0x8000, (S);
     96 ashift_test 0x8001,  27, 0x8000, (S);
     97 ashift_test 0x8001,  26, 0x8000, (S);
     98 ashift_test 0x8001,  25, 0x8000, (S);
     99 ashift_test 0x8001,  24, 0x8000, (S);
    100 ashift_test 0x8001,  23, 0x8000, (S);
    101 ashift_test 0x8001,  22, 0x8000, (S);
    102 ashift_test 0x8001,  21, 0x8000, (S);
    103 ashift_test 0x8001,  20, 0x8000, (S);
    104 ashift_test 0x8001,  19, 0x8000, (S);
    105 ashift_test 0x8001,  18, 0x8000, (S);
    106 ashift_test 0x8001,  17, 0x8000, (S);
    107 ashift_test 0x8001,  16, 0x8000, (S);
    108 ashift_test 0x8001,  15, 0x8000, (S);
    109 ashift_test 0x8001,  14, 0x8000, (S);
    110 ashift_test 0x8001,  13, 0x8000, (S);
    111 ashift_test 0x8001,  12, 0x8000, (S);
    112 ashift_test 0x8001,  11, 0x8000, (S);
    113 ashift_test 0x8001,  10, 0x8000, (S);
    114 ashift_test 0x8001,   9, 0x8000, (S);
    115 ashift_test 0x8001,   8, 0x8000, (S);
    116 ashift_test 0x8001,   7, 0x8000, (S);
    117 ashift_test 0x8001,   6, 0x8000, (S);
    118 ashift_test 0x8001,   5, 0x8000, (S);
    119 ashift_test 0x8001,   4, 0x8000, (S);
    120 ashift_test 0x8001,   3, 0x8000, (S);
    121 ashift_test 0x8001,   2, 0x8000, (S);
    122 ashift_test 0x8001,   1, 0x8000, (S);
    123 ashift_test 0x8001,   0, 0x8001, (S);
    124 ashift_test 0x8001,  -1, 0xc000, (S);
    125 ashift_test 0x8001,  -2, 0xe000, (S);
    126 ashift_test 0x8001,  -3, 0xf000, (S);
    127 ashift_test 0x8001,  -4, 0xf800, (S);
    128 ashift_test 0x8001,  -5, 0xfc00, (S);
    129 ashift_test 0x8001,  -6, 0xfe00, (S);
    130 ashift_test 0x8001,  -7, 0xff00, (S);
    131 ashift_test 0x8001,  -8, 0xff80, (S);
    132 ashift_test 0x8001,  -9, 0xffc0, (S);
    133 ashift_test 0x8001, -10, 0xffe0, (S);
    134 ashift_test 0x8001, -11, 0xfff0, (S);
    135 ashift_test 0x8001, -12, 0xfff8, (S);
    136 ashift_test 0x8001, -13, 0xfffc, (S);
    137 ashift_test 0x8001, -14, 0xfffe, (S);
    138 ashift_test 0x8001, -15, 0xffff, (S);
    139 ashift_test 0x8001, -16, 0xffff, (S);
    140 ashift_test 0x8001, -17, 0xffff, (S);
    141 ashift_test 0x8001, -18, 0xffff, (S);
    142 ashift_test 0x8001, -19, 0xffff, (S);
    143 ashift_test 0x8001, -20, 0xffff, (S);
    144 ashift_test 0x8001, -21, 0xffff, (S);
    145 ashift_test 0x8001, -22, 0xffff, (S);
    146 ashift_test 0x8001, -23, 0xffff, (S);
    147 ashift_test 0x8001, -24, 0xffff, (S);
    148 ashift_test 0x8001, -25, 0xffff, (S);
    149 ashift_test 0x8001, -26, 0xffff, (S);
    150 ashift_test 0x8001, -27, 0xffff, (S);
    151 ashift_test 0x8001, -28, 0xffff, (S);
    152 ashift_test 0x8001, -29, 0xffff, (S);
    153 ashift_test 0x8001, -30, 0xffff, (S);
    154 ashift_test 0x8001, -31, 0xffff, (S);
    155 ashift_test 0x8001, -32, 0xffff, (S);
    156 ashift_test 0x8001, -33, 0x8000, (S);
    157 ashift_test 0x8001, -34, 0x8000, (S);
    158 
    159 
    160 ashift_test 0x4002,  33, 0x0;
    161 ashift_test 0x4002,  32, 0x0;
    162 ashift_test 0x4002,  31, 0x0;
    163 ashift_test 0x4002,  30, 0x0;
    164 ashift_test 0x4002,  20, 0x0;
    165 ashift_test 0x4002,  19, 0x0;
    166 ashift_test 0x4002,  18, 0x0;
    167 ashift_test 0x4002,  17, 0x0;
    168 ashift_test 0x4002,  16, 0x0;
    169 ashift_test 0x4002,  15, 0x0;
    170 ashift_test 0x4002,  14, 0x8000;
    171 ashift_test 0x4002,  13, 0x4000;
    172 ashift_test 0x4002,  12, 0x2000;
    173 ashift_test 0x4002,  11, 0x1000;
    174 ashift_test 0x4002,  10, 0x0800;
    175 ashift_test 0x4002,   9, 0x0400;
    176 ashift_test 0x4002,   8, 0x0200;
    177 ashift_test 0x4002,   7, 0x0100;
    178 ashift_test 0x4002,   6, 0x0080;
    179 ashift_test 0x4002,   5, 0x0040;
    180 ashift_test 0x4002,   4, 0x0020;
    181 ashift_test 0x4002,   3, 0x0010;
    182 ashift_test 0x4002,   2, 0x0008;
    183 ashift_test 0x4002,   1, 0x8004;
    184 ashift_test 0x4002,   0, 0x4002;
    185 ashift_test 0x4002,  -1, 0x2001;
    186 ashift_test 0x4002,  -2, 0x1000;
    187 ashift_test 0x4002,  -3, 0x0800;
    188 ashift_test 0x4002,  -4, 0x0400;
    189 ashift_test 0x4002,  -5, 0x0200;
    190 ashift_test 0x4002,  -6, 0x0100;
    191 ashift_test 0x4002,  -7, 0x0080;
    192 ashift_test 0x4002,  -8, 0x0040;
    193 ashift_test 0x4002,  -9, 0x0020;
    194 ashift_test 0x4002, -10, 0x0010;
    195 ashift_test 0x4002, -11, 0x0008;
    196 ashift_test 0x4002, -12, 0x0004;
    197 ashift_test 0x4002, -13, 0x0002;
    198 ashift_test 0x4002, -14, 0x0001;
    199 ashift_test 0x4002, -15, 0x0;
    200 ashift_test 0x4002, -16, 0x0;
    201 ashift_test 0x4002, -17, 0x0;
    202 ashift_test 0x4002, -31, 0x0;
    203 ashift_test 0x4002, -32, 0x0;
    204 ashift_test 0x4002, -33, 0x0;
    205 ashift_test 0x4002, -34, 0x0;
    206 
    207 ashift_test 0x4002,  33, 0x0, (S);
    208 ashift_test 0x4002,  32, 0x0, (S);
    209 ashift_test 0x4002,  31, 0x7fff, (S);
    210 ashift_test 0x4002,  30, 0x7fff, (S);
    211 ashift_test 0x4002,  20, 0x7fff, (S);
    212 ashift_test 0x4002,  19, 0x7fff, (S);
    213 ashift_test 0x4002,  18, 0x7fff, (S);
    214 ashift_test 0x4002,  17, 0x7fff, (S);
    215 ashift_test 0x4002,  16, 0x7fff, (S);
    216 ashift_test 0x4002,  15, 0x7fff, (S);
    217 ashift_test 0x4002,  14, 0x7fff, (S);
    218 ashift_test 0x4002,  13, 0x7fff, (S);
    219 ashift_test 0x4002,  12, 0x7fff, (S);
    220 ashift_test 0x4002,  11, 0x7fff, (S);
    221 ashift_test 0x4002,  10, 0x7fff, (S);
    222 ashift_test 0x4002,   9, 0x7fff, (S);
    223 ashift_test 0x4002,   8, 0x7fff, (S);
    224 ashift_test 0x4002,   7, 0x7fff, (S);
    225 ashift_test 0x4002,   6, 0x7fff, (S);
    226 ashift_test 0x4002,   5, 0x7fff, (S);
    227 ashift_test 0x4002,   4, 0x7fff, (S);
    228 ashift_test 0x4002,   3, 0x7fff, (S);
    229 ashift_test 0x4002,   2, 0x7fff, (S);
    230 ashift_test 0x4002,   1, 0x7fff, (S);
    231 ashift_test 0x4002,   0, 0x4002, (S);
    232 ashift_test 0x4002,  -1, 0x2001, (S);
    233 ashift_test 0x4002,  -2, 0x1000, (S);
    234 ashift_test 0x4002,  -3, 0x0800, (S);
    235 ashift_test 0x4002,  -4, 0x0400, (S);
    236 ashift_test 0x4002,  -5, 0x0200, (S);
    237 ashift_test 0x4002,  -6, 0x0100, (S);
    238 ashift_test 0x4002,  -7, 0x0080, (S);
    239 ashift_test 0x4002,  -8, 0x0040, (S);
    240 ashift_test 0x4002,  -9, 0x0020, (S);
    241 ashift_test 0x4002, -10, 0x0010, (S);
    242 ashift_test 0x4002, -11, 0x0008, (S);
    243 ashift_test 0x4002, -12, 0x0004, (S);
    244 ashift_test 0x4002, -13, 0x0002, (S);
    245 ashift_test 0x4002, -14, 0x0001, (S);
    246 ashift_test 0x4002, -15, 0x0000, (S);
    247 ashift_test 0x4002, -16, 0x0000, (S);
    248 ashift_test 0x4002, -17, 0x0000, (S);
    249 ashift_test 0x4002, -31, 0x0000, (S);
    250 ashift_test 0x4002, -32, 0x0000, (S);
    251 ashift_test 0x4002, -33, 0x7fff, (S);
    252 ashift_test 0x4002, -34, 0x7fff, (S);
    253 
    254 ashift_test 0x0001,  33, 0x0000, (S);
    255 ashift_test 0x0001,  32, 0x0000, (S);
    256 ashift_test 0x0001,  31, 0x7fff, (S);
    257 ashift_test 0x0001,  30, 0x7fff, (S);
    258 ashift_test 0x0001,  29, 0x7fff, (S);
    259 ashift_test 0x0001,  28, 0x7fff, (S);
    260 ashift_test 0x0001,  27, 0x7fff, (S);
    261 ashift_test 0x0001,  26, 0x7fff, (S);
    262 ashift_test 0x0001,  25, 0x7fff, (S);
    263 ashift_test 0x0001,  24, 0x7fff, (S);
    264 ashift_test 0x0001,  23, 0x7fff, (S);
    265 ashift_test 0x0001,  22, 0x7fff, (S);
    266 ashift_test 0x0001,  21, 0x7fff, (S);
    267 ashift_test 0x0001,  20, 0x7fff, (S);
    268 ashift_test 0x0001,  19, 0x7fff, (S);
    269 ashift_test 0x0001,  18, 0x7fff, (S);
    270 ashift_test 0x0001,  17, 0x7fff, (S);
    271 ashift_test 0x0001,  16, 0x7fff, (S);
    272 ashift_test 0x0001,  15, 0x7fff, (S);
    273 ashift_test 0x0001,  14, 0x4000, (S);
    274 ashift_test 0x0001,  13, 0x2000, (S);
    275 ashift_test 0x0001,  12, 0x1000, (S);
    276 ashift_test 0x0001,  11, 0x0800, (S);
    277 ashift_test 0x0001,  10, 0x0400, (S);
    278 ashift_test 0x0001,   9, 0x0200, (S);
    279 ashift_test 0x0001,   8, 0x0100, (S);
    280 ashift_test 0x0001,   7, 0x0080, (S);
    281 ashift_test 0x0001,   6, 0x0040, (S);
    282 ashift_test 0x0001,   5, 0x0020, (S);
    283 ashift_test 0x0001,   4, 0x0010, (S);
    284 ashift_test 0x0001,   3, 0x0008, (S);
    285 ashift_test 0x0001,   2, 0x0004, (S);
    286 ashift_test 0x0001,   1, 0x0002, (S);
    287 ashift_test 0x0001,   0, 0x0001, (S);
    288 ashift_test 0x0001,  -1, 0x0000, (S);
    289 ashift_test 0x0001,  -2, 0x0000, (S);
    290 ashift_test 0x0001,  -3, 0x0000, (S);
    291 ashift_test 0x0001,  -4, 0x0000, (S);
    292 ashift_test 0x0001,  -5, 0x0000, (S);
    293 ashift_test 0x0001,  -6, 0x0000, (S);
    294 ashift_test 0x0001,  -7, 0x0000, (S);
    295 ashift_test 0x0001,  -8, 0x0000, (S);
    296 ashift_test 0x0001,  -9, 0x0000, (S);
    297 ashift_test 0x0001, -10, 0x0000, (S);
    298 ashift_test 0x0001, -11, 0x0000, (S);
    299 ashift_test 0x0001, -12, 0x0000, (S);
    300 ashift_test 0x0001, -13, 0x0000, (S);
    301 ashift_test 0x0001, -14, 0x0, (S);
    302 ashift_test 0x0001, -15, 0x0, (S);
    303 ashift_test 0x0001, -16, 0x0, (S);
    304 ashift_test 0x0001, -17, 0x0, (S);
    305 ashift_test 0x0001, -18, 0x0, (S);
    306 ashift_test 0x0001, -19, 0x0, (S);
    307 ashift_test 0x0001, -20, 0x0, (S);
    308 ashift_test 0x0001, -21, 0x0, (S);
    309 ashift_test 0x0001, -22, 0x0, (S);
    310 ashift_test 0x0001, -23, 0x0, (S);
    311 ashift_test 0x0001, -24, 0x0, (S);
    312 ashift_test 0x0001, -25, 0x0, (S);
    313 ashift_test 0x0001, -26, 0x0, (S);
    314 ashift_test 0x0001, -27, 0x0, (S);
    315 ashift_test 0x0001, -28, 0x0, (S);
    316 ashift_test 0x0001, -29, 0x0, (S);
    317 ashift_test 0x0001, -30, 0x0, (S);
    318 ashift_test 0x0001, -31, 0x0, (S);
    319 ashift_test 0x0001, -32, 0x0, (S);
    320 ashift_test 0x0001, -33, 0x7fff, (S);
    321 ashift_test 0x0001, -34, 0x7fff, (S);
    322 
    323 	pass
    324