Home | History | Annotate | Line # | Download | only in bfin
      1 //  Test  A0 = ROT    (A0 by imm6);
      2 # mach: bfin
      3 
      4 .include "testutils.inc"
      5 	start
      6 
      7 	init_r_regs 0;
      8 	ASTAT = R0;
      9 	A0 = A1 = 0;
     10 
     11 // rot
     12 // left  by 1
     13 // 00 8000 0001 -> 01 0000 0002 cc=0
     14 	R0.L = 0x0001;
     15 	R0.H = 0x8000;
     16 	R7 = 0;
     17 	CC = R7;
     18 	A1 = A0 = 0;
     19 	A0.w = R0;
     20 	A0 = ROT A0 BY 1;
     21 	R1 = A0.w;
     22 	DBGA ( R1.L , 0x0002 );
     23 	DBGA ( R1.H , 0x0000 );
     24 	R1.L = A0.x;
     25 	DBGA ( R1.L , 0x0001 );
     26 	R7 = CC;
     27 	DBGA ( R7.L , 0x0000 );
     28 
     29 // rot
     30 // left  by 1
     31 // 80 0000 0001 -> 00 0000 0002 cc=1
     32 	R7 = 0;
     33 	CC = R7;
     34 	R0.L = 0x0001;
     35 	R0.H = 0x0000;
     36 	R1.L = 0x0080;
     37 	A1 = A0 = 0;
     38 	A0.w = R0;
     39 	A0.x = R1.L;
     40 	A0 = ROT A0 BY 1;
     41 	R1 = A0.w;
     42 	DBGA ( R1.L , 0x0002 );
     43 	DBGA ( R1.H , 0x0000 );
     44 	R1.L = A0.x;
     45 	DBGA ( R1.L , 0x0000 );
     46 	R7 = CC;
     47 	DBGA ( R7.L , 0x0001 );
     48 
     49 // rot
     50 // left  by 1 with cc=1
     51 // 80 8000 0001 -> 01 0000 0003 cc=1
     52 	R7 = 1;
     53 	CC = R7;
     54 	R0.L = 0x0001;
     55 	R0.H = 0x8000;
     56 	R1.L = 0x0080;
     57 	A1 = A0 = 0;
     58 	A0.w = R0;
     59 	A0.x = R1.L;
     60 	A0 = ROT A0 BY 1;
     61 	R1 = A0.w;
     62 	DBGA ( R1.L , 0x0003 );
     63 	DBGA ( R1.H , 0x0000 );
     64 	R1.L = A0.x;
     65 	DBGA ( R1.L , 0x0001 );
     66 	R7 = CC;
     67 	DBGA ( R7.L , 0x0001 );
     68 
     69 // rot
     70 // left  by 2 with cc=1
     71 // 80 0000 0001 -> 00 0000 0007 cc=0
     72 	R7 = 1;
     73 	CC = R7;
     74 	R0.L = 0x0001;
     75 	R0.H = 0x0000;
     76 	R1.L = 0x0080;
     77 	A1 = A0 = 0;
     78 	A0.w = R0;
     79 	A0.x = R1.L;
     80 	A0 = ROT A0 BY 2;
     81 	R1 = A0.w;
     82 	DBGA ( R1.L , 0x0007 );
     83 	DBGA ( R1.H , 0x0000 );
     84 	R1.L = A0.x;
     85 	DBGA ( R1.L , 0x0000 );
     86 	R7 = CC;
     87 	DBGA ( R7.L , 0x0000 );
     88 
     89 // rot
     90 // left  by 3 with cc=0
     91 	R7 = 0;
     92 	CC = R7;
     93 	R0.L = 0x0001;
     94 	R0.H = 0x0000;
     95 	R1.L = 0x0080;
     96 	A1 = A0 = 0;
     97 	A0.w = R0;
     98 	A0.x = R1.L;
     99 	A0 = ROT A0 BY 3;
    100 	R1 = A0.w;
    101 	DBGA ( R1.L , 0x000a );
    102 	DBGA ( R1.H , 0x0000 );
    103 	R1.L = A0.x;
    104 	DBGA ( R1.L , 0x0000 );
    105 	R7 = CC;
    106 	DBGA ( R7.L , 0x0000 );
    107 
    108 // rot
    109 // left by largest positive magnitude of 31
    110 // 80 0000 0001 -> 00 a000 0000 cc=0
    111 	R7 = 0;
    112 	CC = R7;
    113 	R0.L = 0x0001;
    114 	R0.H = 0x0000;
    115 	R1.L = 0x0080;
    116 	A1 = A0 = 0;
    117 	A0.w = R0;
    118 	A0.x = R1.L;
    119 	A0 = ROT A0 BY 31;
    120 	R1 = A0.w;
    121 	DBGA ( R1.L , 0x0000 );
    122 	DBGA ( R1.H , 0xa000 );
    123 	R1.L = A0.x;
    124 	DBGA ( R1.L , 0x0000 );
    125 	R7 = CC;
    126 	DBGA ( R7.L , 0x0000 );
    127 
    128 // rot
    129 // right  by 1
    130 // 80 0000 0001 -> 40 0000 0000 cc=1
    131 	R7 = 0;
    132 	CC = R7;
    133 	R0.L = 0x0001;
    134 	R0.H = 0x0000;
    135 	R1.L = 0x0080;
    136 	A1 = A0 = 0;
    137 	A0.w = R0;
    138 	A0.x = R1.L;
    139 	A0 = ROT A0 BY -1;
    140 	R1 = A0.w;
    141 	DBGA ( R1.L , 0x0000 );
    142 	DBGA ( R1.H , 0x0000 );
    143 	R1.L = A0.x;
    144 	DBGA ( R1.L , 0x0040 );
    145 	R7 = CC;
    146 	DBGA ( R7.L , 0x0001 );
    147 
    148 // rot
    149 // right  by 1
    150 // 80 0000 0001 -> c0 0000 0000 cc=1
    151 	R7 = 1;
    152 	CC = R7;
    153 	R0.L = 0x0001;
    154 	R0.H = 0x0000;
    155 	R1.L = 0x0080;
    156 	A1 = A0 = 0;
    157 	A0.w = R0;
    158 	A0.x = R1.L;
    159 	A0 = ROT A0 BY -1;
    160 	R1 = A0.w;
    161 	DBGA ( R1.L , 0x0000 );
    162 	DBGA ( R1.H , 0x0000 );
    163 	R1.L = A0.x;
    164 	DBGA ( R1.L , 0xffc0 );
    165 	R7 = CC;
    166 	DBGA ( R7.L , 0x0001 );
    167 
    168 // rot
    169 // right  by 2
    170 // 80 0000 0001 -> e0 0000 0000 cc=0
    171 	R7 = 1;
    172 	CC = R7;
    173 	R0.L = 0x0001;
    174 	R0.H = 0x0000;
    175 	R1.L = 0x0080;
    176 	A1 = A0 = 0;
    177 	A0.w = R0;
    178 	A0.x = R1.L;
    179 	A0 = ROT A0 BY -2;
    180 	R1 = A0.w;
    181 	DBGA ( R1.L , 0x0000 );
    182 	DBGA ( R1.H , 0x0000 );
    183 	R1.L = A0.x;
    184 	DBGA ( R1.L , 0xffe0 );
    185 	R7 = CC;
    186 	DBGA ( R7.L , 0x0000 );
    187 
    188 // rot
    189 // right  by 9
    190 // 80 0000 0001 -> 01 c000 0000 cc=0
    191 	R7 = 1;
    192 	CC = R7;
    193 	R0.L = 0x0001;
    194 	R0.H = 0x0000;
    195 	R1.L = 0x0080;
    196 	A1 = A0 = 0;
    197 	A0.w = R0;
    198 	A0.x = R1.L;
    199 	A0 = ROT A0 BY -9;
    200 	R1 = A0.w;
    201 	DBGA ( R1.L , 0x0000 );
    202 	DBGA ( R1.H , 0xc000 );
    203 	R1.L = A0.x;
    204 	DBGA ( R1.L , 0x0001 );
    205 	R7 = CC;
    206 	DBGA ( R7.L , 0x0000 );
    207 
    208 // rot
    209 // right  by 9 with reg
    210 // 80 0000 0001 -> 01 c000 0000 cc=0
    211 	R7 = 1;
    212 	CC = R7;
    213 	R0.L = 0x0001;
    214 	R0.H = 0x0000;
    215 	R1.L = 0x0080;
    216 	A1 = A0 = 0;
    217 	A0.w = R0;
    218 	A0.x = R1.L;
    219 	R5 = -9;
    220 	A0 = ROT A0 BY R5.L;
    221 	R1 = A0.w;
    222 	DBGA ( R1.L , 0x0000 );
    223 	DBGA ( R1.H , 0xc000 );
    224 	R1.L = A0.x;
    225 	DBGA ( R1.L , 0x0001 );
    226 	R7 = CC;
    227 	DBGA ( R7.L , 0x0000 );
    228 
    229 // rot left by 4 with cc=1
    230 	R0.L = 0x789a;
    231 	R0.H = 0x3456;
    232 	A0.w = R0;
    233 	R0.L = 0x12;
    234 	A0.x = R0;
    235 
    236 	R0 = 1;
    237 	CC = R0;
    238 
    239 	A0 = ROT A0 BY 4;
    240 
    241 	R4 = A0.w;
    242 	R5 = A0.x;
    243 	DBGA ( R4.H , 0x4567 );	DBGA ( R4.L , 0x89a8 );
    244 	DBGA ( R5.H , 0x0000 );	DBGA ( R5.L , 0x0023 );
    245 
    246 // rot left by 28 with cc=1
    247 	R0.L = 0x789a;
    248 	R0.H = 0x3456;
    249 	A0.w = R0;
    250 	R0.L = 0x12;
    251 	A0.x = R0;
    252 
    253 	R0 = 1;
    254 	CC = R0;
    255 
    256 	A0 = ROT A0 BY 28;
    257 
    258 	R4 = A0.w;
    259 	R5 = A0.x;
    260 	DBGA ( R4.H , 0xa891 );	DBGA ( R4.L , 0xa2b3 );
    261 	DBGA ( R5.H , 0xffff );	DBGA ( R5.L , 0xff89 );
    262 
    263 // rot right by 4 with cc=1
    264 	R0.L = 0x789a;
    265 	R0.H = 0x3456;
    266 	A0.w = R0;
    267 	R0.L = 0x12;
    268 	A0.x = R0;
    269 
    270 	R0 = 1;
    271 	CC = R0;
    272 
    273 	A0 = ROT A0 BY -4;
    274 
    275 	R4 = A0.w;
    276 	R5 = A0.x;
    277 	DBGA ( R4.H , 0x2345 );	DBGA ( R4.L , 0x6789 );
    278 	DBGA ( R5.H , 0x0000 );	DBGA ( R5.L , 0x0051 );
    279 
    280 // rot right by 8 with cc=1
    281 	R0.L = 0x789a;
    282 	R0.H = 0x3456;
    283 	A0.w = R0;
    284 	R0.L = 0x12;
    285 	A0.x = R0;
    286 
    287 	R0 = 1;
    288 	CC = R0;
    289 
    290 	A0 = ROT A0 BY -28;
    291 
    292 	R4 = A0.w;
    293 	R5 = A0.x;
    294 	DBGA ( R4.H , 0xcf13 );	DBGA ( R4.L , 0x5123 );
    295 	DBGA ( R5.H , 0xffff );	DBGA ( R5.L , 0xff8a );
    296 
    297 	pass
    298