1//Original:/proj/frio/dv/testcases/core/c_dsp32shift_rot_mix/c_dsp32shift_rot_mix.dsp 2// Spec Reference: dsp32shift rot 3# mach: bfin 4 5.include "testutils.inc" 6 start 7 8 R0 = 0; 9 ASTAT = R0; 10 11 12 imm32 r0, 0x01230000; 13 imm32 r1, 0x12345678; 14 imm32 r2, 0x83456789; 15 imm32 r3, 0x9456789a; 16 imm32 r4, 0xa56789ab; 17 imm32 r5, 0xb6789abc; 18 imm32 r6, 0xc789abcd; 19 imm32 r7, 0xd89abcde; 20 R1 = ROT R0 BY R0.L; 21 R2 = ROT R1 BY R0.L; 22 R3 = ROT R2 BY R0.L; 23 R4 = ROT R3 BY R0.L; 24 R5 = ROT R4 BY R0.L; 25 R6 = ROT R5 BY R0.L; 26 R7 = ROT R6 BY R0.L; 27 R0 = ROT R7 BY R0.L; 28 CHECKREG r0, 0x01230000; 29 CHECKREG r1, 0x01230000; 30 CHECKREG r2, 0x01230000; 31 CHECKREG r3, 0x01230000; 32 CHECKREG r4, 0x01230000; 33 CHECKREG r5, 0x01230000; 34 CHECKREG r6, 0x01230000; 35 CHECKREG r7, 0x01230000; 36 37 A0 = 0; 38 A0.L = R0.L; 39 A0.H = R0.H; 40 A0 = ROT A0 BY R1.L; 41 R6 = A0.w; 42 imm32 r4, 0x30003000; 43 imm32 r1, 5; 44 R7 = ROT R4 BY R1.L; 45 CHECKREG r6, 0x01230000; 46 CHECKREG r7, 0x00060003; 47 48 imm32 r0, 0x11230001; 49 imm32 r1, 0xc2345678; 50 imm32 r2, 0xd3456789; 51 imm32 r3, 0xb456789a; 52 imm32 r4, 0x056789ab; 53 imm32 r5, 0x36789abc; 54 imm32 r6, 0x1789abcd; 55 imm32 r7, 0x189abcde; 56 R1.L = 5; 57 R2 = ROT R0 BY R1.L; 58 R3 = ROT R1 BY R1.L; 59 R4 = ROT R2 BY R1.L; 60 R5 = ROT R3 BY R1.L; 61 R6 = ROT R4 BY R1.L; 62 R7 = ROT R5 BY R1.L; 63 R0 = ROT R6 BY R1.L; 64 R1 = ROT R7 BY R1.L; 65 CHECKREG r0, 0x00108908; 66 CHECKREG r1, 0x005613A0; 67 CHECKREG r2, 0x24600021; 68 CHECKREG r3, 0x468000AC; 69 CHECKREG r4, 0x8C000422; 70 CHECKREG r5, 0xD0001584; 71 CHECKREG r6, 0x80008448; 72 CHECKREG r7, 0x0002B09D; 73 74 imm32 r0, 0x01230002; 75 imm32 r1, 0x12345678; 76 imm32 r2, 0x23456789; 77 imm32 r3, 0x8456789a; 78 imm32 r4, 0x956789ab; 79 imm32 r5, 0x56789abc; 80 imm32 r6, 0xc789abcd; 81 imm32 r7, 0x789abcde; 82 R2 = 15; 83 R3 = ROT R0 BY R2.L; 84 R4 = ROT R1 BY R2.L; 85 R5 = ROT R2 BY R2.L; 86 R6 = ROT R3 BY R2.L; 87 R7 = ROT R4 BY R2.L; 88 R0 = ROT R5 BY R2.L; 89 R1 = ROT R6 BY R2.L; 90 R2 = ROT R7 BY R2.L; 91 CHECKREG r0, 0xC0000001; 92 CHECKREG r1, 0x10006009; 93 CHECKREG r2, 0x45678891; 94 CHECKREG r3, 0x80010048; 95 CHECKREG r4, 0x2B3C448D; 96 CHECKREG r5, 0x00078000; 97 CHECKREG r6, 0x80242000; 98 CHECKREG r7, 0x22468ACF; 99 100 imm32 r0, 0x21230003; 101 imm32 r1, 0x22345678; 102 imm32 r2, 0x23456789; 103 imm32 r3, 0x2456789a; 104 imm32 r4, 0x256789ab; 105 imm32 r5, 0x26789abc; 106 imm32 r6, 0x2789abcd; 107 imm32 r7, 0x289abcde; 108 R3.L = 24; 109 R4 = ROT R0 BY R3.L; 110 R5 = ROT R1 BY R3.L; 111 R6 = ROT R2 BY R3.L; 112 R7 = ROT R3 BY R3.L; 113 R0 = ROT R4 BY R3.L; 114 R1 = ROT R5 BY R3.L; 115 R2 = ROT R6 BY R3.L; 116 R3 = ROT R7 BY R3.L; 117 CHECKREG r0, 0x8001C848; 118 CHECKREG r1, 0x2BBC088D; 119 CHECKREG r2, 0xB34488D1; 120 CHECKREG r3, 0x000C4915; 121 CHECKREG r4, 0x03909180; 122 CHECKREG r5, 0x78111A2B; 123 CHECKREG r6, 0x8911A2B3; 124 CHECKREG r7, 0x18922B00; 125 126 imm32 r0, 0x01230004; 127 imm32 r1, 0x12345678; 128 imm32 r2, 0x23456789; 129 imm32 r3, 0x3456789a; 130 imm32 r4, 0x456789ab; 131 imm32 r5, 0x56789abc; 132 imm32 r6, 0x6789abcd; 133 imm32 r7, 0x789abcde; 134 R4.L = -1; 135 R0 = ROT R0 BY R4.L; 136 R1 = ROT R1 BY R4.L; 137 R2 = ROT R2 BY R4.L; 138 R3 = ROT R3 BY R4.L; 139 R4 = ROT R4 BY R4.L; 140 R5 = ROT R5 BY R4.L; 141 R6 = ROT R6 BY R4.L; 142 R7 = ROT R7 BY R4.L; 143 CHECKREG r0, 0x80918002; 144 CHECKREG r1, 0x091A2B3C; 145 CHECKREG r2, 0x11A2B3C4; 146 CHECKREG r3, 0x9A2B3C4D; 147 CHECKREG r4, 0x22B3FFFF; 148 CHECKREG r5, 0xAB3C4D5E; 149 CHECKREG r6, 0x33C4D5E6; 150 CHECKREG r7, 0xBC4D5E6F; 151 152 imm32 r0, 0x01230005; 153 imm32 r1, 0x12345678; 154 imm32 r2, 0x23456789; 155 imm32 r3, 0x3456789a; 156 imm32 r4, 0x456789ab; 157 imm32 r5, 0x56789abc; 158 imm32 r6, 0x6789abcd; 159 imm32 r7, 0x789abcde; 160 R5.L = -6; 161 R6 = ROT R0 BY R5.L; 162 R7 = ROT R1 BY R5.L; 163 R0 = ROT R2 BY R5.L; 164 R1 = ROT R3 BY R5.L; 165 R2 = ROT R4 BY R5.L; 166 R3 = ROT R5 BY R5.L; 167 R4 = ROT R6 BY R5.L; 168 R5 = ROT R7 BY R5.L; 169 CHECKREG r0, 0x4C8D159E; 170 CHECKREG r1, 0xD0D159E2; 171 CHECKREG r2, 0x59159E26; 172 CHECKREG r3, 0xD559E3FF; 173 CHECKREG r4, 0x04A01230; 174 CHECKREG r5, 0xCB012345; 175 CHECKREG r6, 0x28048C00; 176 CHECKREG r7, 0xC048D159; 177 178 imm32 r0, 0x01230006; 179 imm32 r1, 0x82345678; 180 imm32 r2, 0x73456789; 181 imm32 r3, 0x3456789a; 182 imm32 r4, 0xd56789ab; 183 imm32 r5, 0x56789abc; 184 imm32 r6, 0xc789abcd; 185 imm32 r7, 0x789abcde; 186 R6.L = -15; 187 R7 = ROT R0 BY R6.L; 188 R0 = ROT R1 BY R6.L; 189 R1 = ROT R2 BY R6.L; 190 R2 = ROT R3 BY R6.L; 191 R3 = ROT R4 BY R6.L; 192 R4 = ROT R5 BY R6.L; 193 R5 = ROT R6 BY R6.L; 194 R6 = ROT R7 BY R6.L; 195 CHECKREG r0, 0x59E10468; 196 CHECKREG r1, 0x9E26E68A; 197 CHECKREG r2, 0xE26A68AC; 198 CHECKREG r3, 0x26AFAACF; 199 CHECKREG r4, 0x6AF0ACF1; 200 CHECKREG r5, 0xFFC58F13; 201 CHECKREG r6, 0x091A0030; 202 CHECKREG r7, 0x00180246; 203 204 imm32 r0, 0x01230007; 205 imm32 r1, 0x12345678; 206 imm32 r2, 0x23456789; 207 imm32 r3, 0x3456789a; 208 imm32 r4, 0x456789ab; 209 imm32 r5, 0x56789abc; 210 imm32 r6, 0x6789abcd; 211 imm32 r7, 0x789abcde; 212 R7.L = -27; 213 R0 = ROT R0 BY R7.L; 214 R1 = ROT R1 BY R7.L; 215 R2 = ROT R2 BY R7.L; 216 R3 = ROT R3 BY R7.L; 217 R4 = ROT R4 BY R7.L; 218 R5 = ROT R5 BY R7.L; 219 R6 = ROT R6 BY R7.L; 220 R7 = ROT R7 BY R7.L; 221 CHECKREG r0, 0x48C001C0; 222 CHECKREG r1, 0x8D159E02; 223 CHECKREG r2, 0xD159E244; 224 CHECKREG r3, 0x159E2686; 225 CHECKREG r4, 0x59E26AE8; 226 CHECKREG r5, 0x9E26AF2A; 227 CHECKREG r6, 0xE26AF36C; 228 CHECKREG r7, 0x26BFF96F; 229 230 imm32 r0, 0x01230008; 231 imm32 r1, 0x12345678; 232 imm32 r2, 0x23456789; 233 imm32 r3, 0x3456789a; 234 imm32 r4, 0x456789ab; 235 imm32 r5, 0x56789abc; 236 imm32 r6, 0x6789abcd; 237 imm32 r7, 0x789abcde; 238 R0.L = 7; 239//r0 = rot (r0 by rl0); 240 R1 = ROT R1 BY R0.L; 241 R2 = ROT R2 BY R0.L; 242 R3 = ROT R3 BY R0.L; 243 R4 = ROT R4 BY R0.L; 244 R5 = ROT R5 BY R0.L; 245 R6 = ROT R6 BY R0.L; 246 R7 = ROT R7 BY R0.L; 247 CHECKREG r0, 0x01230007; 248 CHECKREG r1, 0x1A2B3C04; 249 CHECKREG r2, 0xA2B3C4C8; 250 CHECKREG r3, 0x2B3C4D4D; 251 CHECKREG r4, 0xB3C4D591; 252 CHECKREG r5, 0x3C4D5E15; 253 CHECKREG r6, 0xC4D5E6D9; 254 CHECKREG r7, 0x4D5E6F5E; 255 256 imm32 r0, 0x01230009; 257 imm32 r1, 0x12345678; 258 imm32 r2, 0x23456789; 259 imm32 r3, 0x3456789a; 260 imm32 r4, 0x456789ab; 261 imm32 r5, 0x56789abc; 262 imm32 r6, 0x6789abcd; 263 imm32 r7, 0x789abcde; 264 R1.L = 16; 265 R0 = ROT R0 BY R1.L; 266//r1 = rot (r1 by rl1); 267 R2 = ROT R2 BY R1.L; 268 R3 = ROT R3 BY R1.L; 269 R4 = ROT R4 BY R1.L; 270 R5 = ROT R5 BY R1.L; 271 R6 = ROT R6 BY R1.L; 272 R7 = ROT R7 BY R1.L; 273 CHECKREG r0, 0x00090091; 274 CHECKREG r1, 0x12340010; 275 CHECKREG r2, 0x678991A2; 276 CHECKREG r3, 0x789A9A2B; 277 CHECKREG r4, 0x89AB22B3; 278 CHECKREG r5, 0x9ABCAB3C; 279 CHECKREG r6, 0xABCD33C4; 280 CHECKREG r7, 0xBCDEBC4D; 281 282 imm32 r0, 0x0123000a; 283 imm32 r1, 0x12345678; 284 imm32 r2, 0x23456789; 285 imm32 r3, 0x3456789a; 286 imm32 r4, 0x456789ab; 287 imm32 r5, 0x56789abc; 288 imm32 r6, 0x6789abcd; 289 imm32 r7, 0x789abcde; 290 R2.L = 31; 291 R0 = ROT R0 BY R2.L; 292 R1 = ROT R1 BY R2.L; 293//r2 = rot (r2 by rl2); 294 R3 = ROT R3 BY R2.L; 295 R4 = ROT R4 BY R2.L; 296 R5 = ROT R5 BY R2.L; 297 R6 = ROT R6 BY R2.L; 298 R7 = ROT R7 BY R2.L; 299 CHECKREG r0, 0x0048C002; 300 CHECKREG r1, 0x448D159E; 301 CHECKREG r2, 0x2345001F; 302 CHECKREG r3, 0x0D159E26; 303 CHECKREG r4, 0xD159E26A; 304 CHECKREG r5, 0x559E26AF; 305 CHECKREG r6, 0x99E26AF3; 306 CHECKREG r7, 0x1E26AF37; 307 308 imm32 r0, 0x0123000b; 309 imm32 r1, 0x92345678; 310 imm32 r2, 0x93456789; 311 imm32 r3, 0xc456789a; 312 imm32 r4, 0xa56789ab; 313 imm32 r5, 0xb6789abc; 314 imm32 r6, 0xe789abcd; 315 imm32 r7, 0xf89abcde; 316 R3.L = 33; 317 R0 = ROT R0 BY R3.L; 318 R1 = ROT R1 BY R3.L; 319 R2 = ROT R2 BY R3.L; 320//r3 = rot (r3 by rl3); 321 R4 = ROT R4 BY R3.L; 322 R5 = ROT R5 BY R3.L; 323 R6 = ROT R6 BY R3.L; 324 R7 = ROT R7 BY R3.L; 325 CHECKREG r0, 0x048C002E; 326 CHECKREG r1, 0x48D159E1; 327 CHECKREG r2, 0x4D159E25; 328 CHECKREG r3, 0xC4560021; 329 CHECKREG r4, 0x959E26AD; 330 CHECKREG r5, 0xD9E26AF1; 331 CHECKREG r6, 0x9E26AF35; 332 CHECKREG r7, 0xE26AF37B; 333 334 imm32 r0, 0x0123000c; 335 imm32 r1, 0x12345678; 336 imm32 r2, 0x23456789; 337 imm32 r3, 0x3456789a; 338 imm32 r4, 0x456789ab; 339 imm32 r5, 0x56789abc; 340 imm32 r6, 0x6789abcd; 341 imm32 r7, 0x789abcde; 342 R4.L = -2; 343 R0 = ROT R0 BY R4.L; 344 R1 = ROT R1 BY R4.L; 345 R2 = ROT R2 BY R4.L; 346 R3 = ROT R3 BY R4.L; 347//r4 = rot (r4 by rl4); 348 R5 = ROT R5 BY R4.L; 349 R6 = ROT R6 BY R4.L; 350 R7 = ROT R7 BY R4.L; 351 CHECKREG r0, 0x4048C003; 352 CHECKREG r1, 0x048D159E; 353 CHECKREG r2, 0x88D159E2; 354 CHECKREG r3, 0x0D159E26; 355 CHECKREG r4, 0x4567FFFE; 356 CHECKREG r5, 0x559E26AF; 357 CHECKREG r6, 0x99E26AF3; 358 CHECKREG r7, 0x1E26AF37; 359 360 imm32 r0, 0x0123000d; 361 imm32 r1, 0x12345678; 362 imm32 r2, 0x23456789; 363 imm32 r3, 0x3456789a; 364 imm32 r4, 0x456789ab; 365 imm32 r5, 0x56789abc; 366 imm32 r6, 0x6789abcd; 367 imm32 r7, 0x789abcde; 368 R5.L = -14; 369 R0 = ROT R0 BY R5.L; 370 R1 = ROT R1 BY R5.L; 371 R2 = ROT R2 BY R5.L; 372 R3 = ROT R3 BY R5.L; 373 R4 = ROT R4 BY R5.L; 374//r5 = rot (r5 by rl5); 375 R6 = ROT R6 BY R5.L; 376 R7 = ROT R7 BY R5.L; 377 CHECKREG r0, 0x006C048C; 378 CHECKREG r1, 0xB3C048D1; 379 CHECKREG r2, 0x3C488D15; 380 CHECKREG r3, 0xC4D4D159; 381 CHECKREG r4, 0x4D5D159E; 382 CHECKREG r5, 0x5678FFF2; 383 CHECKREG r6, 0x5E699E26; 384 CHECKREG r7, 0xE6F5E26A; 385 386 imm32 r0, 0x0123000e; 387 imm32 r1, 0x12345678; 388 imm32 r2, 0x23456789; 389 imm32 r3, 0x3456789a; 390 imm32 r4, 0x456789ab; 391 imm32 r5, 0x56789abc; 392 imm32 r6, 0x6789abcd; 393 imm32 r7, 0x789abcde; 394 R6.L = -16; 395 R0 = ROT R0 BY R6.L; 396 R1 = ROT R1 BY R6.L; 397 R2 = ROT R2 BY R6.L; 398 R3 = ROT R3 BY R6.L; 399 R4 = ROT R4 BY R6.L; 400 R5 = ROT R5 BY R6.L; 401//r6 = rot (r6 by rl6); 402 R7 = ROT R7 BY R6.L; 403 CHECKREG r0, 0x001D0123; 404 CHECKREG r1, 0xACF01234; 405 CHECKREG r2, 0xCF122345; 406 CHECKREG r3, 0xF1343456; 407 CHECKREG r4, 0x13564567; 408 CHECKREG r5, 0x35795678; 409 CHECKREG r6, 0x6789FFF0; 410 CHECKREG r7, 0x79BD789A; 411 412 imm32 r0, 0x0123000f; 413 imm32 r1, 0x12345678; 414 imm32 r2, 0x83456789; 415 imm32 r3, 0x3456789a; 416 imm32 r4, 0xd56789ab; 417 imm32 r5, 0x56789abc; 418 imm32 r6, 0x9789abcd; 419 imm32 r7, 0x789abcde; 420 R7.L = -32; 421 R0 = ROT R0 BY R7.L; 422 R1 = ROT R1 BY R7.L; 423 R2 = ROT R2 BY R7.L; 424 R3 = ROT R3 BY R7.L; 425 R4 = ROT R4 BY R7.L; 426 R5 = ROT R5 BY R7.L; 427 R6 = ROT R6 BY R7.L; 428 R7 = ROT R7 BY R7.L; 429 CHECKREG r0, 0x0246001f; 430 CHECKREG r1, 0x2468ACF0; 431 CHECKREG r2, 0x068ACF12; 432 CHECKREG r3, 0x68ACF135; 433 CHECKREG r4, 0xAACF1356; 434 CHECKREG r5, 0xACF13579; 435 CHECKREG r6, 0x2F13579A; 436 CHECKREG r7, 0xF135FFC1; 437 pass 438