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