1 //Original:testcases/core/c_ldstpmod_st_dreg/c_ldstpmod_st_dreg.dsp 2 // Spec Reference: c_ldstpmod store dreg 3 # mach: bfin 4 5 .include "testutils.inc" 6 start 7 8 // set all regs 9 init_i_regs 0; 10 init_b_regs 0; 11 init_l_regs 0; 12 init_m_regs 0; 13 I0 = P3; 14 I2 = SP; 15 16 // initial values 17 imm32 r0, 0x600f5000; 18 imm32 r1, 0x700e6001; 19 imm32 r2, 0x800d7002; 20 imm32 r3, 0x900c8003; 21 imm32 r4, 0xa00b9004; 22 imm32 r5, 0xb00aa005; 23 imm32 r6, 0xc009b006; 24 imm32 r7, 0xd008c007; 25 P1 = 0x0004; 26 P2 = 0x0004; 27 P3 = 0x0004; 28 P4 = 0x0004; 29 FP = 0x0004; 30 SP = 0x0008; 31 I1 = P3; P3 = I0; I3 = SP; SP = I2; 32 loadsym p5, DATA_ADDR_5, 0x00; 33 P3 = I1; SP = I3; 34 [ P5 ++ P1 ] = R0; 35 [ P5 ++ P1 ] = R1; 36 [ P5 ++ P2 ] = R2; 37 [ P5 ++ P3 ] = R3; 38 [ P5 ++ P4 ] = R4; 39 [ P5 ++ SP ] = R5; 40 [ P5 ++ FP ] = R6; 41 P1 = 0x0004; 42 P2 = 0x0004; 43 P3 = 0x0004; 44 P4 = 0x0004; 45 FP = 0x0004; 46 SP = 0x0008; 47 I1 = P3; P3 = I0; I3 = SP; SP = I2; 48 loadsym p5, DATA_ADDR_5, 0x00; 49 P3 = I1; SP = I3; 50 R6 = [ P5 ++ P1 ]; 51 R5 = [ P5 ++ P1 ]; 52 R4 = [ P5 ++ P2 ]; 53 R3 = [ P5 ++ P3 ]; 54 R2 = [ P5 ++ P4 ]; 55 R0 = [ P5 ++ SP ]; 56 R1 = [ P5 ++ FP ]; 57 CHECKREG r0, 0xB00AA005; 58 CHECKREG r1, 0xC009B006; 59 CHECKREG r2, 0xA00B9004; 60 CHECKREG r3, 0x900C8003; 61 CHECKREG r4, 0x800D7002; 62 CHECKREG r5, 0x700E6001; 63 CHECKREG r6, 0x600F5000; 64 65 // initial values 66 imm32 r0, 0x105f50a0; 67 imm32 r1, 0x204e60a1; 68 imm32 r2, 0x300370a2; 69 imm32 r3, 0x402c80a3; 70 imm32 r4, 0x501b90a4; 71 imm32 r5, 0x600aa0a5; 72 imm32 r6, 0x7019b0a6; 73 imm32 r7, 0xd028c0a7; 74 P5 = 0x0004; 75 P2 = 0x0004; 76 P3 = 0x0004; 77 P4 = 0x0004; 78 FP = 0x0008; 79 SP = 0x0004; 80 I1 = P3; P3 = I0; I3 = SP; SP = I2; 81 loadsym p1, DATA_ADDR_1, 0x00; 82 P3 = I1; SP = I3; 83 [ P1 ++ P5 ] = R0; 84 [ P1 ++ P5 ] = R1; 85 [ P1 ++ P2 ] = R2; 86 [ P1 ++ P3 ] = R3; 87 [ P1 ++ P4 ] = R4; 88 [ P1 ++ SP ] = R5; 89 [ P1 ++ FP ] = R6; 90 P5 = 0x0004; 91 P2 = 0x0004; 92 P3 = 0x0004; 93 P4 = 0x0004; 94 FP = 0x0008; 95 SP = 0x0004; 96 I1 = P3; P3 = I0; I3 = SP; SP = I2; 97 loadsym p1, DATA_ADDR_1, 0x00; 98 P3 = I1; SP = I3; 99 R6 = [ P1 ++ P5 ]; 100 R5 = [ P1 ++ P5 ]; 101 R4 = [ P1 ++ P2 ]; 102 R3 = [ P1 ++ P3 ]; 103 R2 = [ P1 ++ P4 ]; 104 R0 = [ P1 ++ SP ]; 105 R1 = [ P1 ++ FP ]; 106 CHECKREG r0, 0x600AA0A5; 107 CHECKREG r1, 0x7019B0A6; 108 CHECKREG r2, 0x501B90A4; 109 CHECKREG r3, 0x402C80A3; 110 CHECKREG r4, 0x300370A2; 111 CHECKREG r5, 0x204E60A1; 112 CHECKREG r6, 0x105F50A0; 113 114 // initial values 115 imm32 r0, 0x10bf50b0; 116 imm32 r1, 0x20be60b1; 117 imm32 r2, 0x30bd70b2; 118 imm32 r3, 0x40bc80b3; 119 imm32 r4, 0x55bb90b4; 120 imm32 r5, 0x60baa0b5; 121 imm32 r6, 0x70b9b0b6; 122 imm32 r7, 0x80b8c0b7; 123 P5 = 0x0004; 124 P1 = 0x0004; 125 P3 = 0x0004; 126 P4 = 0x0004; 127 FP = 0x0004; 128 SP = 0x0004; 129 I1 = P3; P3 = I0; I3 = SP; SP = I2; 130 loadsym p2, DATA_ADDR_2, 0x00; 131 P3 = I1; SP = I3; 132 [ P2 ++ P5 ] = R0; 133 [ P2 ++ P1 ] = R1; 134 [ P2 ++ P1 ] = R2; 135 [ P2 ++ P3 ] = R3; 136 [ P2 ++ P4 ] = R4; 137 [ P2 ++ SP ] = R5; 138 [ P2 ++ FP ] = R6; 139 P5 = 0x0004; 140 P1 = 0x0004; 141 P3 = 0x0004; 142 P4 = 0x0004; 143 FP = 0x0004; 144 SP = 0x0004; 145 I1 = P3; P3 = I0; I3 = SP; SP = I2; 146 loadsym p2, DATA_ADDR_2, 0x00; 147 P3 = I1; SP = I3; 148 R3 = [ P2 ++ P5 ]; 149 R4 = [ P2 ++ P1 ]; 150 R0 = [ P2 ++ P1 ]; 151 R1 = [ P2 ++ P3 ]; 152 R2 = [ P2 ++ P4 ]; 153 R5 = [ P2 ++ SP ]; 154 R6 = [ P2 ++ FP ]; 155 CHECKREG r0, 0x30BD70B2; 156 CHECKREG r1, 0x40BC80B3; 157 CHECKREG r2, 0x55BB90B4; 158 CHECKREG r3, 0x10BF50B0; 159 CHECKREG r4, 0x20BE60B1; 160 CHECKREG r5, 0x60BAA0B5; 161 CHECKREG r6, 0x70B9B0B6; 162 163 // initial values 164 imm32 r0, 0x10cf50c0; 165 imm32 r1, 0x20ce60c1; 166 imm32 r2, 0x30c370c2; 167 imm32 r3, 0x40cc80c3; 168 imm32 r4, 0x50cb90c4; 169 imm32 r5, 0x60caa0c5; 170 imm32 r6, 0x70c9b0c6; 171 imm32 r7, 0xd0c8c0c7; 172 P5 = 0x0004; 173 P1 = 0x0004; 174 P2 = 0x0004; 175 P4 = 0x0004; 176 FP = 0x0004; 177 SP = 0x0004; 178 I1 = P3; P3 = I0; I3 = SP; SP = I2; 179 loadsym i1, DATA_ADDR_3, 0x00; 180 P3 = I1; SP = I3; 181 [ P3 ++ P5 ] = R0; 182 [ P3 ++ P1 ] = R1; 183 [ P3 ++ P2 ] = R2; 184 [ P3 ++ P1 ] = R3; 185 [ P3 ++ P4 ] = R4; 186 [ P3 ++ SP ] = R5; 187 [ P3 ++ FP ] = R6; 188 P5 = 0x0004; 189 P1 = 0x0004; 190 P2 = 0x0004; 191 P4 = 0x0004; 192 FP = 0x0004; 193 SP = 0x0004; 194 I1 = P3; P3 = I0; I3 = SP; SP = I2; 195 loadsym i1, DATA_ADDR_3, 0x00; 196 P3 = I1; SP = I3; 197 R6 = [ P3 ++ P5 ]; 198 R5 = [ P3 ++ P1 ]; 199 R4 = [ P3 ++ P2 ]; 200 R3 = [ P3 ++ P1 ]; 201 R2 = [ P3 ++ P4 ]; 202 R0 = [ P3 ++ SP ]; 203 R1 = [ P3 ++ FP ]; 204 CHECKREG r0, 0x60CAA0C5; 205 CHECKREG r1, 0x70C9B0C6; 206 CHECKREG r2, 0x50CB90C4; 207 CHECKREG r3, 0x40CC80C3; 208 CHECKREG r4, 0x30C370C2; 209 CHECKREG r5, 0x20CE60C1; 210 CHECKREG r6, 0x10CF50C0; 211 212 // initial values 213 imm32 r0, 0x60df50d0; 214 imm32 r1, 0x70de60d1; 215 imm32 r2, 0x80dd70d2; 216 imm32 r3, 0x90dc80d3; 217 imm32 r4, 0xa0db90d4; 218 imm32 r5, 0xb0daa0d5; 219 imm32 r6, 0xc0d9b0d6; 220 imm32 r7, 0xd0d8c0d7; 221 P5 = 0x0004; 222 P1 = 0x0004; 223 P2 = 0x0004; 224 P3 = 0x0004; 225 FP = 0x0004; 226 SP = 0x0004; 227 I1 = P3; P3 = I0; I3 = SP; SP = I2; 228 loadsym p4, DATA_ADDR_4, 0x00; 229 P3 = I1; SP = I3; 230 [ P4 ++ P5 ] = R0; 231 [ P4 ++ P1 ] = R1; 232 [ P4 ++ P2 ] = R2; 233 [ P4 ++ P3 ] = R3; 234 [ P4 ++ P1 ] = R4; 235 [ P4 ++ SP ] = R5; 236 [ P4 ++ FP ] = R6; 237 P5 = 0x0004; 238 P1 = 0x0004; 239 P2 = 0x0004; 240 P3 = 0x0004; 241 FP = 0x0004; 242 SP = 0x0004; 243 I1 = P3; P3 = I0; I3 = SP; SP = I2; 244 loadsym p4, DATA_ADDR_4, 0x00; 245 P3 = I1; SP = I3; 246 R5 = [ P4 ++ P5 ]; 247 R6 = [ P4 ++ P1 ]; 248 R0 = [ P4 ++ P2 ]; 249 R1 = [ P4 ++ P3 ]; 250 R2 = [ P4 ++ P1 ]; 251 R3 = [ P4 ++ SP ]; 252 R4 = [ P4 ++ FP ]; 253 CHECKREG r0, 0x80DD70D2; 254 CHECKREG r1, 0x90DC80D3; 255 CHECKREG r2, 0xA0DB90D4; 256 CHECKREG r3, 0xB0DAA0D5; 257 CHECKREG r4, 0xC0D9B0D6; 258 CHECKREG r5, 0x60DF50D0; 259 CHECKREG r6, 0x70DE60D1; 260 261 // initial values 262 imm32 r0, 0x1e5f50e0; 263 imm32 r1, 0x2e4e60e1; 264 imm32 r2, 0x3e0370e2; 265 imm32 r3, 0x4e2c80e3; 266 imm32 r4, 0x5e1b90e4; 267 imm32 r5, 0x6e0aa0e5; 268 imm32 r6, 0x7e19b0e6; 269 imm32 r7, 0xde28c0e7; 270 P5 = 0x0004; 271 P1 = 0x0004; 272 P2 = 0x0004; 273 P3 = 0x0004; 274 P4 = 0x0004; 275 FP = 0x0004; 276 I1 = P3; P3 = I0; I3 = SP; SP = I2; 277 loadsym i3, DATA_ADDR_6, 0x00; 278 P3 = I1; SP = I3; 279 [ SP ++ P5 ] = R0; 280 [ SP ++ P1 ] = R1; 281 [ SP ++ P2 ] = R2; 282 [ SP ++ P3 ] = R3; 283 [ SP ++ P4 ] = R4; 284 [ SP ++ P1 ] = R5; 285 [ SP ++ FP ] = R6; 286 P5 = 0x0004; 287 P1 = 0x0004; 288 P2 = 0x0004; 289 P3 = 0x0004; 290 P4 = 0x0004; 291 FP = 0x0004; 292 I1 = P3; P3 = I0; I3 = SP; SP = I2; 293 loadsym i3, DATA_ADDR_6, 0x00; 294 P3 = I1; SP = I3; 295 R6 = [ SP ++ P5 ]; 296 R5 = [ SP ++ P1 ]; 297 R4 = [ SP ++ P2 ]; 298 R3 = [ SP ++ P3 ]; 299 R2 = [ SP ++ P4 ]; 300 R0 = [ SP ++ P1 ]; 301 R1 = [ SP ++ FP ]; 302 CHECKREG r0, 0x6E0AA0E5; 303 CHECKREG r1, 0x7E19B0E6; 304 CHECKREG r2, 0x5E1B90E4; 305 CHECKREG r3, 0x4E2C80E3; 306 CHECKREG r4, 0x3E0370E2; 307 CHECKREG r5, 0x2E4E60E1; 308 CHECKREG r6, 0x1E5F50E0; 309 310 // initial values 311 imm32 r0, 0x10ff50f0; 312 imm32 r1, 0x20fe60f1; 313 imm32 r2, 0x30fd70f2; 314 imm32 r3, 0x40fc80f3; 315 imm32 r4, 0x55fb90f4; 316 imm32 r5, 0x60faa0f5; 317 imm32 r6, 0x70f9b0f6; 318 imm32 r7, 0x80f8c0f7; 319 P5 = 0x0004; 320 P1 = 0x0004; 321 P2 = 0x0004; 322 P3 = 0x0004; 323 P4 = 0x0004; 324 FP = 0x1004 (X); 325 SP = 0x0004; 326 I1 = P3; P3 = I0; I3 = SP; SP = I2; 327 loadsym fp, DATA_ADDR_7, 0x00; 328 P3 = I1; SP = I3; 329 [ FP ++ P5 ] = R0; 330 [ FP ++ P1 ] = R1; 331 [ FP ++ P2 ] = R2; 332 [ FP ++ P3 ] = R3; 333 [ FP ++ P4 ] = R4; 334 [ FP ++ SP ] = R5; 335 [ FP ++ P1 ] = R6; 336 P5 = 0x0004; 337 P1 = 0x0004; 338 P2 = 0x0004; 339 P3 = 0x0004; 340 P4 = 0x0004; 341 SP = 0x0004; 342 I1 = P3; P3 = I0; I3 = SP; SP = I2; 343 loadsym fp, DATA_ADDR_7, 0x00; 344 P3 = I1; SP = I3; 345 R3 = [ FP ++ P5 ]; 346 R4 = [ FP ++ P1 ]; 347 R0 = [ FP ++ P2 ]; 348 R1 = [ FP ++ P3 ]; 349 R2 = [ FP ++ P4 ]; 350 R5 = [ FP ++ SP ]; 351 R6 = [ FP ++ P1 ]; 352 CHECKREG r0, 0x30FD70F2; 353 CHECKREG r1, 0x40FC80F3; 354 CHECKREG r2, 0x55FB90F4; 355 CHECKREG r3, 0x10FF50F0; 356 CHECKREG r4, 0x20FE60F1; 357 CHECKREG r5, 0x60FAA0F5; 358 CHECKREG r6, 0x70F9B0F6; 359 360 P3 = I0; SP = I2; 361 pass 362 363 // Pre-load memory with known data 364 // More data is defined than will actually be used 365 366 .data 367 DATA_ADDR_1: 368 .dd 0x00010203 369 .dd 0x04050607 370 .dd 0x08090A0B 371 .dd 0x0C0D0E0F 372 .dd 0x10111213 373 .dd 0x14151617 374 .dd 0x18191A1B 375 .dd 0x1C1D1E1F 376 .dd 0x11223344 377 .dd 0x55667788 378 .dd 0x99717273 379 .dd 0x74757677 380 .dd 0x82838485 381 .dd 0x86878889 382 .dd 0x80818283 383 .dd 0x84858687 384 .dd 0x01020304 385 .dd 0x05060708 386 .dd 0x09101112 387 .dd 0x14151617 388 .dd 0x18192021 389 .dd 0x22232425 390 .dd 0x26272829 391 .dd 0x30313233 392 .dd 0x34353637 393 .dd 0x38394041 394 .dd 0x42434445 395 .dd 0x46474849 396 .dd 0x50515253 397 .dd 0x54555657 398 .dd 0x58596061 399 .dd 0x62636465 400 .dd 0x66676869 401 .dd 0x74555657 402 .dd 0x78596067 403 .dd 0x72636467 404 .dd 0x76676867 405 406 DATA_ADDR_2: 407 .dd 0x20212223 408 .dd 0x24252627 409 .dd 0x28292A2B 410 .dd 0x2C2D2E2F 411 .dd 0x30313233 412 .dd 0x34353637 413 .dd 0x38393A3B 414 .dd 0x3C3D3E3F 415 .dd 0x91929394 416 .dd 0x95969798 417 .dd 0x99A1A2A3 418 .dd 0xA5A6A7A8 419 .dd 0xA9B0B1B2 420 .dd 0xB3B4B5B6 421 .dd 0xB7B8B9C0 422 .dd 0x70717273 423 .dd 0x74757677 424 .dd 0x78798081 425 .dd 0x82838485 426 .dd 0x86C283C4 427 .dd 0x81C283C4 428 .dd 0x82C283C4 429 .dd 0x83C283C4 430 .dd 0x84C283C4 431 .dd 0x85C283C4 432 .dd 0x86C283C4 433 .dd 0x87C288C4 434 .dd 0x88C283C4 435 .dd 0x89C283C4 436 .dd 0x80C283C4 437 .dd 0x81C283C4 438 .dd 0x82C288C4 439 .dd 0x94555659 440 .dd 0x98596069 441 .dd 0x92636469 442 .dd 0x96676869 443 444 DATA_ADDR_3: 445 .dd 0x40414243 446 .dd 0x44454647 447 .dd 0x48494A4B 448 .dd 0x4C4D4E4F 449 .dd 0x50515253 450 .dd 0x54555657 451 .dd 0x58595A5B 452 .dd 0xC5C6C7C8 453 .dd 0xC9CACBCD 454 .dd 0xCFD0D1D2 455 .dd 0xD3D4D5D6 456 .dd 0xD7D8D9DA 457 .dd 0xDBDCDDDE 458 .dd 0xDFE0E1E2 459 .dd 0xE3E4E5E6 460 .dd 0x91E899EA 461 .dd 0x92E899EA 462 .dd 0x93E899EA 463 .dd 0x94E899EA 464 .dd 0x95E899EA 465 .dd 0x96E899EA 466 .dd 0x97E899EA 467 .dd 0x98E899EA 468 .dd 0x99E899EA 469 .dd 0x91E899EA 470 .dd 0x92E899EA 471 .dd 0x93E899EA 472 .dd 0x94E899EA 473 .dd 0x95E899EA 474 .dd 0x96E899EA 475 .dd 0x977899EA 476 .dd 0xa455565a 477 .dd 0xa859606a 478 .dd 0xa263646a 479 .dd 0xa667686a 480 481 DATA_ADDR_4: 482 .dd 0x60616263 483 .dd 0x64656667 484 .dd 0x68696A6B 485 .dd 0x6C6D6E6F 486 .dd 0x70717273 487 .dd 0x74757677 488 .dd 0x78797A7B 489 .dd 0x7C7D7E7F 490 .dd 0xEBECEDEE 491 .dd 0xF3F4F5F6 492 .dd 0xF7F8F9FA 493 .dd 0xFBFCFDFE 494 .dd 0xFF000102 495 .dd 0x03040506 496 .dd 0x0708090A 497 .dd 0x0B0CAD0E 498 .dd 0xAB0CAD01 499 .dd 0xAB0CAD02 500 .dd 0xAB0CAD03 501 .dd 0xAB0CAD04 502 .dd 0xAB0CAD05 503 .dd 0xAB0CAD06 504 .dd 0xAB0CAA07 505 .dd 0xAB0CAD08 506 .dd 0xAB0CAD09 507 .dd 0xA00CAD1E 508 .dd 0xA10CAD2E 509 .dd 0xA20CAD3E 510 .dd 0xA30CAD4E 511 .dd 0xA40CAD5E 512 .dd 0xA50CAD6E 513 .dd 0xA60CAD7E 514 .dd 0xB455565B 515 .dd 0xB859606B 516 .dd 0xB263646B 517 .dd 0xB667686B 518 519 DATA_ADDR_5: 520 .dd 0x80818283 521 .dd 0x84858687 522 .dd 0x88898A8B 523 .dd 0x8C8D8E8F 524 .dd 0x90919293 525 .dd 0x94959697 526 .dd 0x98999A9B 527 .dd 0x9C9D9E9F 528 .dd 0x0F101213 529 .dd 0x14151617 530 .dd 0x18191A1B 531 .dd 0x1C1D1E1F 532 .dd 0x20212223 533 .dd 0x24252627 534 .dd 0x28292A2B 535 .dd 0x2C2D2E2F 536 .dd 0xBC0DBE21 537 .dd 0xBC1DBE22 538 .dd 0xBC2DBE23 539 .dd 0xBC3DBE24 540 .dd 0xBC4DBE65 541 .dd 0xBC5DBE27 542 .dd 0xBC6DBE28 543 .dd 0xBC7DBE29 544 .dd 0xBC8DBE2F 545 .dd 0xBC9DBE20 546 .dd 0xBCADBE21 547 .dd 0xBCBDBE2F 548 .dd 0xBCCDBE23 549 .dd 0xBCDDBE24 550 .dd 0xBCFDBE25 551 .dd 0xC455565C 552 .dd 0xC859606C 553 .dd 0xC263646C 554 .dd 0xC667686C 555 .dd 0xCC0DBE2C 556 557 DATA_ADDR_6: 558 .dd 0x00010203 559 .dd 0x04050607 560 .dd 0x08090A0B 561 .dd 0x0C0D0E0F 562 .dd 0x10111213 563 .dd 0x14151617 564 .dd 0x18191A1B 565 .dd 0x1C1D1E1F 566 .dd 0x20212223 567 .dd 0x24252627 568 .dd 0x28292A2B 569 .dd 0x2C2D2E2F 570 .dd 0x30313233 571 .dd 0x34353637 572 .dd 0x38393A3B 573 .dd 0x3C3D3E3F 574 .dd 0x40414243 575 .dd 0x44454647 576 .dd 0x48494A4B 577 .dd 0x4C4D4E4F 578 .dd 0x50515253 579 .dd 0x54555657 580 .dd 0x58595A5B 581 .dd 0x5C5D5E5F 582 .dd 0x60616263 583 .dd 0x64656667 584 .dd 0x68696A6B 585 .dd 0x6C6D6E6F 586 .dd 0x70717273 587 .dd 0x74757677 588 .dd 0x78797A7B 589 .dd 0x7C7D7E7F 590 591 DATA_ADDR_7: 592 .dd 0x80818283 593 .dd 0x84858687 594 .dd 0x88898A8B 595 .dd 0x8C8D8E8F 596 .dd 0x90919293 597 .dd 0x94959697 598 .dd 0x98999A9B 599 .dd 0x9C9D9E9F 600 .dd 0xA0A1A2A3 601 .dd 0xA4A5A6A7 602 .dd 0xA8A9AAAB 603 .dd 0xACADAEAF 604 .dd 0xB0B1B2B3 605 .dd 0xB4B5B6B7 606 .dd 0xB8B9BABB 607 .dd 0xBCBDBEBF 608 .dd 0xC0C1C2C3 609 .dd 0xC4C5C6C7 610 .dd 0xC8C9CACB 611 .dd 0xCCCDCECF 612 .dd 0xD0D1D2D3 613 .dd 0xD4D5D6D7 614 .dd 0xD8D9DADB 615 .dd 0xDCDDDEDF 616 .dd 0xE0E1E2E3 617 .dd 0xE4E5E6E7 618 .dd 0xE8E9EAEB 619 .dd 0xECEDEEEF 620 .dd 0xF0F1F2F3 621 .dd 0xF4F5F6F7 622 .dd 0xF8F9FAFB 623 .dd 0xFCFDFEFF 624