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