1# Hitachi H8 testcase 'shlr' 2# mach(): h8300s h8sx 3# as(h8300): --defsym sim_cpu=0 4# as(h8300h): --defsym sim_cpu=1 5# as(h8300s): --defsym sim_cpu=2 6# as(h8sx): --defsym sim_cpu=3 7# ld(h8300h): -m h8300helf 8# ld(h8300s): -m h8300self 9# ld(h8sx): -m h8300sxelf 10 11 .include "testutils.inc" 12 13 start 14 15 .data 16byte_dest: .byte 0xa5 17 .align 2 18word_dest: .word 0xa5a5 19 .align 4 20long_dest: .long 0xa5a5a5a5 21 22 .text 23 24shlr_b_reg8_1: 25 set_grs_a5a5 ; Fill all general regs with a fixed pattern 26 set_ccr_zero 27 28 shlr.b r0l ; shift right logical by one 29;;; .word 0x1108 30 31 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 32 test_zero_clear 33 test_ovf_clear 34 test_neg_clear 35 36 test_h_gr16 0xa552 r0 ; 1010 0101 -> 0101 0010 37.if (sim_cpu) 38 test_h_gr32 0xa5a5a552 er0 39.endif 40 test_gr_a5a5 1 ; Make sure other general regs not disturbed 41 test_gr_a5a5 2 42 test_gr_a5a5 3 43 test_gr_a5a5 4 44 test_gr_a5a5 5 45 test_gr_a5a5 6 46 test_gr_a5a5 7 47 48.if (sim_cpu == h8sx) 49shlr_b_ind_1: 50 set_grs_a5a5 ; Fill all general regs with a fixed pattern 51 set_ccr_zero 52 53 mov #byte_dest, er0 54 shlr.b @er0 ; shift right logical by one, indirect 55;;; .word 0x7d00 56;;; .word 0x1100 57 58 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 59 test_zero_clear 60 test_ovf_clear 61 test_neg_clear 62 63 test_h_gr32 byte_dest er0 64 test_gr_a5a5 1 ; Make sure other general regs not disturbed 65 test_gr_a5a5 2 66 test_gr_a5a5 3 67 test_gr_a5a5 4 68 test_gr_a5a5 5 69 test_gr_a5a5 6 70 test_gr_a5a5 7 71 ; 1010 0101 -> 0101 0010 72 cmp.b #0x52, @byte_dest 73 beq .Lbind1 74 fail 75.Lbind1: 76 mov.b #0xa5, @byte_dest 77 78shlr_b_postinc_1: 79 set_grs_a5a5 ; Fill all general regs with a fixed pattern 80 set_ccr_zero 81 82 mov #byte_dest, er0 83 shlr.b @er0+ ; shift right logical by one, postinc 84;;; .word 0x0174 85;;; .word 0x6c08 86;;; .word 0x1100 87 88 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 89 test_zero_clear 90 test_ovf_clear 91 test_neg_clear 92 93 test_h_gr32 byte_dest+1 er0 94 test_gr_a5a5 1 ; Make sure other general regs not disturbed 95 test_gr_a5a5 2 96 test_gr_a5a5 3 97 test_gr_a5a5 4 98 test_gr_a5a5 5 99 test_gr_a5a5 6 100 test_gr_a5a5 7 101 ; 1010 0101 -> 0101 0010 102 cmp.b #0x52, @byte_dest 103 beq .Lbpostinc1 104 fail 105.Lbpostinc1: 106 mov.b #0xa5, @byte_dest 107 108shlr_b_postdec_1: 109 set_grs_a5a5 ; Fill all general regs with a fixed pattern 110 set_ccr_zero 111 112 mov #byte_dest, er0 113 shlr.b @er0- ; shift right logical by one, postdec 114;;; .word 0x0176 115;;; .word 0x6c08 116;;; .word 0x1100 117 118 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 119 test_zero_clear 120 test_ovf_clear 121 test_neg_clear 122 123 test_h_gr32 byte_dest-1 er0 124 test_gr_a5a5 1 ; Make sure other general regs not disturbed 125 test_gr_a5a5 2 126 test_gr_a5a5 3 127 test_gr_a5a5 4 128 test_gr_a5a5 5 129 test_gr_a5a5 6 130 test_gr_a5a5 7 131 ; 1010 0101 -> 0101 0010 132 cmp.b #0x52, @byte_dest 133 beq .Lbpostdec1 134 fail 135.Lbpostdec1: 136 mov.b #0xa5, @byte_dest 137 138shlr_b_preinc_1: 139 set_grs_a5a5 ; Fill all general regs with a fixed pattern 140 set_ccr_zero 141 142 mov #byte_dest-1, er0 143 shlr.b @+er0 ; shift right logical by one, preinc 144;;; .word 0x0175 145;;; .word 0x6c08 146;;; .word 0x1100 147 148 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 149 test_zero_clear 150 test_ovf_clear 151 test_neg_clear 152 153 test_h_gr32 byte_dest er0 154 test_gr_a5a5 1 ; Make sure other general regs not disturbed 155 test_gr_a5a5 2 156 test_gr_a5a5 3 157 test_gr_a5a5 4 158 test_gr_a5a5 5 159 test_gr_a5a5 6 160 test_gr_a5a5 7 161 ; 1010 0101 -> 0101 0010 162 cmp.b #0x52, @byte_dest 163 beq .Lbpreinc1 164 fail 165.Lbpreinc1: 166 mov.b #0xa5, @byte_dest 167 168shlr_b_predec_1: 169 set_grs_a5a5 ; Fill all general regs with a fixed pattern 170 set_ccr_zero 171 172 mov #byte_dest+1, er0 173 shlr.b @-er0 ; shift right logical by one, predec 174;;; .word 0x0177 175;;; .word 0x6c08 176;;; .word 0x1100 177 178 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 179 test_zero_clear 180 test_ovf_clear 181 test_neg_clear 182 183 test_h_gr32 byte_dest er0 184 test_gr_a5a5 1 ; Make sure other general regs not disturbed 185 test_gr_a5a5 2 186 test_gr_a5a5 3 187 test_gr_a5a5 4 188 test_gr_a5a5 5 189 test_gr_a5a5 6 190 test_gr_a5a5 7 191 ; 1010 0101 -> 0101 0010 192 cmp.b #0x52, @byte_dest 193 beq .Lbpredec1 194 fail 195.Lbpredec1: 196 mov.b #0xa5, @byte_dest 197 198shlr_b_disp2_1: 199 set_grs_a5a5 ; Fill all general regs with a fixed pattern 200 set_ccr_zero 201 202 mov #byte_dest-2, er0 203 shlr.b @(2:2, er0) ; shift right logical by one, disp2 204;;; .word 0x0176 205;;; .word 0x6808 206;;; .word 0x1100 207 208 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 209 test_zero_clear 210 test_ovf_clear 211 test_neg_clear 212 213 test_h_gr32 byte_dest-2 er0 214 test_gr_a5a5 1 ; Make sure other general regs not disturbed 215 test_gr_a5a5 2 216 test_gr_a5a5 3 217 test_gr_a5a5 4 218 test_gr_a5a5 5 219 test_gr_a5a5 6 220 test_gr_a5a5 7 221 ; 1010 0101 -> 0101 0010 222 cmp.b #0x52, @byte_dest 223 beq .Lbdisp21 224 fail 225.Lbdisp21: 226 mov.b #0xa5, @byte_dest 227 228shlr_b_disp16_1: 229 set_grs_a5a5 ; Fill all general regs with a fixed pattern 230 set_ccr_zero 231 232 mov #byte_dest-44, er0 233 shlr.b @(44:16, er0) ; shift right logical by one, disp16 234;;; .word 0x0174 235;;; .word 0x6e08 236;;; .word 44 237;;; .word 0x1100 238 239 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 240 test_zero_clear 241 test_ovf_clear 242 test_neg_clear 243 244 test_h_gr32 byte_dest-44 er0 245 test_gr_a5a5 1 ; Make sure other general regs not disturbed 246 test_gr_a5a5 2 247 test_gr_a5a5 3 248 test_gr_a5a5 4 249 test_gr_a5a5 5 250 test_gr_a5a5 6 251 test_gr_a5a5 7 252 ; 1010 0101 -> 0101 0010 253 cmp.b #0x52, @byte_dest 254 beq .Lbdisp161 255 fail 256.Lbdisp161: 257 mov.b #0xa5, @byte_dest 258 259shlr_b_disp32_1: 260 set_grs_a5a5 ; Fill all general regs with a fixed pattern 261 set_ccr_zero 262 263 mov #byte_dest-666, er0 264 shlr.b @(666:32, er0) ; shift right logical by one, disp32 265;;; .word 0x7884 266;;; .word 0x6a28 267;;; .long 666 268;;; .word 0x1100 269 270 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 271 test_zero_clear 272 test_ovf_clear 273 test_neg_clear 274 275 test_h_gr32 byte_dest-666 er0 276 test_gr_a5a5 1 ; Make sure other general regs not disturbed 277 test_gr_a5a5 2 278 test_gr_a5a5 3 279 test_gr_a5a5 4 280 test_gr_a5a5 5 281 test_gr_a5a5 6 282 test_gr_a5a5 7 283 ; 1010 0101 -> 0101 0010 284 cmp.b #0x52, @byte_dest 285 beq .Lbdisp321 286 fail 287.Lbdisp321: 288 mov.b #0xa5, @byte_dest 289 290shlr_b_abs16_1: 291 set_grs_a5a5 ; Fill all general regs with a fixed pattern 292 set_ccr_zero 293 294 shlr.b @byte_dest:16 ; shift right logical by one, abs16 295;;; .word 0x6a18 296;;; .word byte_dest 297;;; .word 0x1100 298 299 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 300 test_zero_clear 301 test_ovf_clear 302 test_neg_clear 303 304 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 305 test_gr_a5a5 2 306 test_gr_a5a5 2 307 test_gr_a5a5 3 308 test_gr_a5a5 4 309 test_gr_a5a5 5 310 test_gr_a5a5 6 311 test_gr_a5a5 7 312 ; 1010 0101 -> 0101 0010 313 cmp.b #0x52, @byte_dest 314 beq .Lbabs161 315 fail 316.Lbabs161: 317 mov.b #0xa5, @byte_dest 318 319shlr_b_abs32_1: 320 set_grs_a5a5 ; Fill all general regs with a fixed pattern 321 set_ccr_zero 322 323 shlr.b @byte_dest:32 ; shift right logical by one, abs32 324;;; .word 0x6a38 325;;; .long byte_dest 326;;; .word 0x1100 327 328 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 329 test_zero_clear 330 test_ovf_clear 331 test_neg_clear 332 333 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 334 test_gr_a5a5 2 335 test_gr_a5a5 2 336 test_gr_a5a5 3 337 test_gr_a5a5 4 338 test_gr_a5a5 5 339 test_gr_a5a5 6 340 test_gr_a5a5 7 341 ; 1010 0101 -> 0101 0010 342 cmp.b #0x52, @byte_dest 343 beq .Lbabs321 344 fail 345.Lbabs321: 346 mov.b #0xa5, @byte_dest 347.endif 348 349shlr_b_reg8_2: 350 set_grs_a5a5 ; Fill all general regs with a fixed pattern 351 set_ccr_zero 352 353 shlr.b #2, r0l ; shift right logical by two 354;;; .word 0x1148 355 356 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 357 test_zero_clear 358 test_ovf_clear 359 test_neg_clear 360 test_h_gr16 0xa529 r0 ; 1010 0101 -> 0010 1001 361.if (sim_cpu) 362 test_h_gr32 0xa5a5a529 er0 363.endif 364 test_gr_a5a5 1 ; Make sure other general regs not disturbed 365 test_gr_a5a5 2 366 test_gr_a5a5 3 367 test_gr_a5a5 4 368 test_gr_a5a5 5 369 test_gr_a5a5 6 370 test_gr_a5a5 7 371 372.if (sim_cpu == h8sx) 373shlr_b_ind_2: 374 set_grs_a5a5 ; Fill all general regs with a fixed pattern 375 set_ccr_zero 376 377 mov #byte_dest, er0 378 shlr.b #2, @er0 ; shift right logical by two, indirect 379;;; .word 0x7d00 380;;; .word 0x1140 381 382 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 383 test_zero_clear 384 test_ovf_clear 385 test_neg_clear 386 387 test_h_gr32 byte_dest er0 388 test_gr_a5a5 1 ; Make sure other general regs not disturbed 389 test_gr_a5a5 2 390 test_gr_a5a5 3 391 test_gr_a5a5 4 392 test_gr_a5a5 5 393 test_gr_a5a5 6 394 test_gr_a5a5 7 395 ; 1010 0101 -> 0010 1001 396 cmp.b #0x29, @byte_dest 397 beq .Lbind2 398 fail 399.Lbind2: 400 mov.b #0xa5, @byte_dest 401 402shlr_b_postinc_2: 403 set_grs_a5a5 ; Fill all general regs with a fixed pattern 404 set_ccr_zero 405 406 mov #byte_dest, er0 407 shlr.b #2, @er0+ ; shift right logical by two, postinc 408;;; .word 0x0174 409;;; .word 0x6c08 410;;; .word 0x1140 411 412 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 413 test_zero_clear 414 test_ovf_clear 415 test_neg_clear 416 417 test_h_gr32 byte_dest+1 er0 418 test_gr_a5a5 1 ; Make sure other general regs not disturbed 419 test_gr_a5a5 2 420 test_gr_a5a5 3 421 test_gr_a5a5 4 422 test_gr_a5a5 5 423 test_gr_a5a5 6 424 test_gr_a5a5 7 425 ; 1010 0101 -> 0010 1001 426 cmp.b #0x29, @byte_dest 427 beq .Lbpostinc2 428 fail 429.Lbpostinc2: 430 mov.b #0xa5, @byte_dest 431 432shlr_b_postdec_2: 433 set_grs_a5a5 ; Fill all general regs with a fixed pattern 434 set_ccr_zero 435 436 mov #byte_dest, er0 437 shlr.b #2, @er0- ; shift right logical by two, postdec 438;;; .word 0x0176 439;;; .word 0x6c08 440;;; .word 0x1140 441 442 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 443 test_zero_clear 444 test_ovf_clear 445 test_neg_clear 446 447 test_h_gr32 byte_dest-1 er0 448 test_gr_a5a5 1 ; Make sure other general regs not disturbed 449 test_gr_a5a5 2 450 test_gr_a5a5 3 451 test_gr_a5a5 4 452 test_gr_a5a5 5 453 test_gr_a5a5 6 454 test_gr_a5a5 7 455 ; 1010 0101 -> 0010 1001 456 cmp.b #0x29, @byte_dest 457 beq .Lbpostdec2 458 fail 459.Lbpostdec2: 460 mov.b #0xa5, @byte_dest 461 462shlr_b_preinc_2: 463 set_grs_a5a5 ; Fill all general regs with a fixed pattern 464 set_ccr_zero 465 466 mov #byte_dest-1, er0 467 shlr.b #2, @+er0 ; shift right logical by two, preinc 468;;; .word 0x0175 469;;; .word 0x6c08 470;;; .word 0x1140 471 472 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 473 test_zero_clear 474 test_ovf_clear 475 test_neg_clear 476 477 test_h_gr32 byte_dest er0 478 test_gr_a5a5 1 ; Make sure other general regs not disturbed 479 test_gr_a5a5 2 480 test_gr_a5a5 3 481 test_gr_a5a5 4 482 test_gr_a5a5 5 483 test_gr_a5a5 6 484 test_gr_a5a5 7 485 ; 1010 0101 -> 0010 1001 486 cmp.b #0x29, @byte_dest 487 beq .Lbpreinc2 488 fail 489.Lbpreinc2: 490 mov.b #0xa5, @byte_dest 491 492shlr_b_predec_2: 493 set_grs_a5a5 ; Fill all general regs with a fixed pattern 494 set_ccr_zero 495 496 mov #byte_dest+1, er0 497 shlr.b #2, @-er0 ; shift right logical by two, predec 498;;; .word 0x0177 499;;; .word 0x6c08 500;;; .word 0x1140 501 502 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 503 test_zero_clear 504 test_ovf_clear 505 test_neg_clear 506 507 test_h_gr32 byte_dest er0 508 test_gr_a5a5 1 ; Make sure other general regs not disturbed 509 test_gr_a5a5 2 510 test_gr_a5a5 3 511 test_gr_a5a5 4 512 test_gr_a5a5 5 513 test_gr_a5a5 6 514 test_gr_a5a5 7 515 ; 1010 0101 -> 0010 1001 516 cmp.b #0x29, @byte_dest 517 beq .Lbpredec2 518 fail 519.Lbpredec2: 520 mov.b #0xa5, @byte_dest 521 522shlr_b_disp2_2: 523 set_grs_a5a5 ; Fill all general regs with a fixed pattern 524 set_ccr_zero 525 526 mov #byte_dest-2, er0 527 shlr.b #2, @(2:2, er0) ; shift right logical by two, disp2 528;;; .word 0x0176 529;;; .word 0x6808 530;;; .word 0x1140 531 532 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 533 test_zero_clear 534 test_ovf_clear 535 test_neg_clear 536 537 test_h_gr32 byte_dest-2 er0 538 test_gr_a5a5 1 ; Make sure other general regs not disturbed 539 test_gr_a5a5 2 540 test_gr_a5a5 3 541 test_gr_a5a5 4 542 test_gr_a5a5 5 543 test_gr_a5a5 6 544 test_gr_a5a5 7 545 ; 1010 0101 -> 0010 1001 546 cmp.b #0x29, @byte_dest 547 beq .Lbdisp22 548 fail 549.Lbdisp22: 550 mov.b #0xa5, @byte_dest 551 552shlr_b_disp16_2: 553 set_grs_a5a5 ; Fill all general regs with a fixed pattern 554 set_ccr_zero 555 556 mov #byte_dest-44, er0 557 shlr.b #2, @(44:16, er0) ; shift right logical by two, disp16 558;;; .word 0x0174 559;;; .word 0x6e08 560;;; .word 44 561;;; .word 0x1140 562 563 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 564 test_zero_clear 565 test_ovf_clear 566 test_neg_clear 567 568 test_h_gr32 byte_dest-44 er0 569 test_gr_a5a5 1 ; Make sure other general regs not disturbed 570 test_gr_a5a5 2 571 test_gr_a5a5 3 572 test_gr_a5a5 4 573 test_gr_a5a5 5 574 test_gr_a5a5 6 575 test_gr_a5a5 7 576 ; 1010 0101 -> 0010 1001 577 cmp.b #0x29, @byte_dest 578 beq .Lbdisp162 579 fail 580.Lbdisp162: 581 mov.b #0xa5, @byte_dest 582 583shlr_b_disp32_2: 584 set_grs_a5a5 ; Fill all general regs with a fixed pattern 585 set_ccr_zero 586 587 mov #byte_dest-666, er0 588 shlr.b #2, @(666:32, er0) ; shift right logical by two, disp32 589;;; .word 0x7884 590;;; .word 0x6a28 591;;; .long 666 592;;; .word 0x1140 593 594 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 595 test_zero_clear 596 test_ovf_clear 597 test_neg_clear 598 599 test_h_gr32 byte_dest-666 er0 600 test_gr_a5a5 1 ; Make sure other general regs not disturbed 601 test_gr_a5a5 2 602 test_gr_a5a5 3 603 test_gr_a5a5 4 604 test_gr_a5a5 5 605 test_gr_a5a5 6 606 test_gr_a5a5 7 607 ; 1010 0101 -> 0010 1001 608 cmp.b #0x29, @byte_dest 609 beq .Lbdisp322 610 fail 611.Lbdisp322: 612 mov.b #0xa5, @byte_dest 613 614shlr_b_abs16_2: 615 set_grs_a5a5 ; Fill all general regs with a fixed pattern 616 set_ccr_zero 617 618 shlr.b #2, @byte_dest:16 ; shift right logical by two, abs16 619;;; .word 0x6a18 620;;; .word byte_dest 621;;; .word 0x1140 622 623 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 624 test_zero_clear 625 test_ovf_clear 626 test_neg_clear 627 628 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 629 test_gr_a5a5 2 630 test_gr_a5a5 2 631 test_gr_a5a5 3 632 test_gr_a5a5 4 633 test_gr_a5a5 5 634 test_gr_a5a5 6 635 test_gr_a5a5 7 636 ; 1010 0101 -> 0010 1001 637 cmp.b #0x29, @byte_dest 638 beq .Lbabs162 639 fail 640.Lbabs162: 641 mov.b #0xa5, @byte_dest 642 643shlr_b_abs32_2: 644 set_grs_a5a5 ; Fill all general regs with a fixed pattern 645 set_ccr_zero 646 647 shlr.b #2, @byte_dest:32 ; shift right logical by two, abs32 648;;; .word 0x6a38 649;;; .long byte_dest 650;;; .word 0x1140 651 652 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 653 test_zero_clear 654 test_ovf_clear 655 test_neg_clear 656 657 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 658 test_gr_a5a5 2 659 test_gr_a5a5 2 660 test_gr_a5a5 3 661 test_gr_a5a5 4 662 test_gr_a5a5 5 663 test_gr_a5a5 6 664 test_gr_a5a5 7 665 ; 1010 0101 -> 0010 1001 666 cmp.b #0x29, @byte_dest 667 beq .Lbabs322 668 fail 669.Lbabs322: 670 mov.b #0xa5, @byte_dest 671 672shlr_b_reg8_4: 673 set_grs_a5a5 ; Fill all general regs with a fixed pattern 674 set_ccr_zero 675 676 shlr.b #4, r0l ; shift right logical by four 677;;; .word 0x11a8 678 679 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 680 test_zero_clear 681 test_ovf_clear 682 test_neg_clear 683 684 test_h_gr16 0xa50a r0 ; 1010 0101 -> 0000 1010 685 test_h_gr32 0xa5a5a50a er0 686 test_gr_a5a5 1 ; Make sure other general regs not disturbed 687 test_gr_a5a5 2 688 test_gr_a5a5 3 689 test_gr_a5a5 4 690 test_gr_a5a5 5 691 test_gr_a5a5 6 692 test_gr_a5a5 7 693 694shlr_b_reg8_reg8: 695 set_grs_a5a5 ; Fill all general regs with a fixed pattern 696 set_ccr_zero 697 698 mov #5, r0h 699 shlr.b r0h, r0l ; shift right logical by register value 700 701 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 702 test_zero_clear 703 test_ovf_clear 704 test_neg_clear 705 706 test_h_gr16 0x0505 r0 ; 1010 0101 -> 0000 0101 707 test_h_gr32 0xa5a50505 er0 708 test_gr_a5a5 1 ; Make sure other general regs not disturbed 709 test_gr_a5a5 2 710 test_gr_a5a5 3 711 test_gr_a5a5 4 712 test_gr_a5a5 5 713 test_gr_a5a5 6 714 test_gr_a5a5 7 715 716shlr_b_ind_4: 717 set_grs_a5a5 ; Fill all general regs with a fixed pattern 718 set_ccr_zero 719 720 mov #byte_dest, er0 721 shlr.b #4, @er0 ; shift right logical by four, indirect 722;;; .word 0x7d00 723;;; .word 0x11a0 724 725 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 726 test_zero_clear 727 test_ovf_clear 728 test_neg_clear 729 730 test_h_gr32 byte_dest er0 731 test_gr_a5a5 1 ; Make sure other general regs not disturbed 732 test_gr_a5a5 2 733 test_gr_a5a5 3 734 test_gr_a5a5 4 735 test_gr_a5a5 5 736 test_gr_a5a5 6 737 test_gr_a5a5 7 738 ; 1010 0101 -> 0000 1010 739 cmp.b #0x0a, @byte_dest 740 beq .Lbind4 741 fail 742.Lbind4: 743 mov.b #0xa5, @byte_dest 744 745shlr_b_postinc_4: 746 set_grs_a5a5 ; Fill all general regs with a fixed pattern 747 set_ccr_zero 748 749 mov #byte_dest, er0 750 shlr.b #4, @er0+ ; shift right logical by four, postinc 751;;; .word 0x0174 752;;; .word 0x6c08 753;;; .word 0x11a0 754 755 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 756 test_zero_clear 757 test_ovf_clear 758 test_neg_clear 759 760 test_h_gr32 byte_dest+1 er0 761 test_gr_a5a5 1 ; Make sure other general regs not disturbed 762 test_gr_a5a5 2 763 test_gr_a5a5 3 764 test_gr_a5a5 4 765 test_gr_a5a5 5 766 test_gr_a5a5 6 767 test_gr_a5a5 7 768 ; 1010 0101 -> 0000 1010 769 cmp.b #0x0a, @byte_dest 770 beq .Lbpostinc4 771 fail 772.Lbpostinc4: 773 mov.b #0xa5, @byte_dest 774 775shlr_b_postdec_4: 776 set_grs_a5a5 ; Fill all general regs with a fixed pattern 777 set_ccr_zero 778 779 mov #byte_dest, er0 780 shlr.b #4, @er0- ; shift right logical by four, postdec 781;;; .word 0x0176 782;;; .word 0x6c08 783;;; .word 0x11a0 784 785 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 786 test_zero_clear 787 test_ovf_clear 788 test_neg_clear 789 790 test_h_gr32 byte_dest-1 er0 791 test_gr_a5a5 1 ; Make sure other general regs not disturbed 792 test_gr_a5a5 2 793 test_gr_a5a5 3 794 test_gr_a5a5 4 795 test_gr_a5a5 5 796 test_gr_a5a5 6 797 test_gr_a5a5 7 798 ; 1010 0101 -> 0000 1010 799 cmp.b #0x0a, @byte_dest 800 beq .Lbpostdec4 801 fail 802.Lbpostdec4: 803 mov.b #0xa5, @byte_dest 804 805shlr_b_preinc_4: 806 set_grs_a5a5 ; Fill all general regs with a fixed pattern 807 set_ccr_zero 808 809 mov #byte_dest-1, er0 810 shlr.b #4, @+er0 ; shift right logical by four, preinc 811;;; .word 0x0175 812;;; .word 0x6c08 813;;; .word 0x11a0 814 815 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 816 test_zero_clear 817 test_ovf_clear 818 test_neg_clear 819 820 test_h_gr32 byte_dest er0 821 test_gr_a5a5 1 ; Make sure other general regs not disturbed 822 test_gr_a5a5 2 823 test_gr_a5a5 3 824 test_gr_a5a5 4 825 test_gr_a5a5 5 826 test_gr_a5a5 6 827 test_gr_a5a5 7 828 ; 1010 0101 -> 0000 1010 829 cmp.b #0x0a, @byte_dest 830 beq .Lbpreinc4 831 fail 832.Lbpreinc4: 833 mov.b #0xa5, @byte_dest 834 835shlr_b_predec_4: 836 set_grs_a5a5 ; Fill all general regs with a fixed pattern 837 set_ccr_zero 838 839 mov #byte_dest+1, er0 840 shlr.b #4, @-er0 ; shift right logical by four, predec 841;;; .word 0x0177 842;;; .word 0x6c08 843;;; .word 0x11a0 844 845 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 846 test_zero_clear 847 test_ovf_clear 848 test_neg_clear 849 850 test_h_gr32 byte_dest er0 851 test_gr_a5a5 1 ; Make sure other general regs not disturbed 852 test_gr_a5a5 2 853 test_gr_a5a5 3 854 test_gr_a5a5 4 855 test_gr_a5a5 5 856 test_gr_a5a5 6 857 test_gr_a5a5 7 858 ; 1010 0101 -> 0000 1010 859 cmp.b #0x0a, @byte_dest 860 beq .Lbpredec4 861 fail 862.Lbpredec4: 863 mov.b #0xa5, @byte_dest 864 865shlr_b_disp2_4: 866 set_grs_a5a5 ; Fill all general regs with a fixed pattern 867 set_ccr_zero 868 869 mov #byte_dest-2, er0 870 shlr.b #4, @(2:2, er0) ; shift right logical by four, disp2 871;;; .word 0x0176 872;;; .word 0x6808 873;;; .word 0x11a0 874 875 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 876 test_zero_clear 877 test_ovf_clear 878 test_neg_clear 879 880 test_h_gr32 byte_dest-2 er0 881 test_gr_a5a5 1 ; Make sure other general regs not disturbed 882 test_gr_a5a5 2 883 test_gr_a5a5 3 884 test_gr_a5a5 4 885 test_gr_a5a5 5 886 test_gr_a5a5 6 887 test_gr_a5a5 7 888 ; 1010 0101 -> 0000 1010 889 cmp.b #0x0a, @byte_dest 890 beq .Lbdisp24 891 fail 892.Lbdisp24: 893 mov.b #0xa5, @byte_dest 894 895shlr_b_disp16_4: 896 set_grs_a5a5 ; Fill all general regs with a fixed pattern 897 set_ccr_zero 898 899 mov #byte_dest-44, er0 900 shlr.b #4, @(44:16, er0) ; shift right logical by four, disp16 901;;; .word 0x0174 902;;; .word 0x6e08 903;;; .word 44 904;;; .word 0x11a0 905 906 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 907 test_zero_clear 908 test_ovf_clear 909 test_neg_clear 910 911 test_h_gr32 byte_dest-44 er0 912 test_gr_a5a5 1 ; Make sure other general regs not disturbed 913 test_gr_a5a5 2 914 test_gr_a5a5 3 915 test_gr_a5a5 4 916 test_gr_a5a5 5 917 test_gr_a5a5 6 918 test_gr_a5a5 7 919 ; 1010 0101 -> 0000 1010 920 cmp.b #0x0a, @byte_dest 921 beq .Lbdisp164 922 fail 923.Lbdisp164: 924 mov.b #0xa5, @byte_dest 925 926shlr_b_disp32_4: 927 set_grs_a5a5 ; Fill all general regs with a fixed pattern 928 set_ccr_zero 929 930 mov #byte_dest-666, er0 931 shlr.b #4, @(666:32, er0) ; shift right logical by four, disp32 932;;; .word 0x7884 933;;; .word 0x6a28 934;;; .long 666 935;;; .word 0x11a0 936 937 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 938 test_zero_clear 939 test_ovf_clear 940 test_neg_clear 941 942 test_h_gr32 byte_dest-666 er0 943 test_gr_a5a5 1 ; Make sure other general regs not disturbed 944 test_gr_a5a5 2 945 test_gr_a5a5 3 946 test_gr_a5a5 4 947 test_gr_a5a5 5 948 test_gr_a5a5 6 949 test_gr_a5a5 7 950 ; 1010 0101 -> 0000 1010 951 cmp.b #0x0a, @byte_dest 952 beq .Lbdisp324 953 fail 954.Lbdisp324: 955 mov.b #0xa5, @byte_dest 956 957shlr_b_abs16_4: 958 set_grs_a5a5 ; Fill all general regs with a fixed pattern 959 set_ccr_zero 960 961 shlr.b #4, @byte_dest:16 ; shift right logical by four, abs16 962;;; .word 0x6a18 963;;; .word byte_dest 964;;; .word 0x11a0 965 966 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 967 test_zero_clear 968 test_ovf_clear 969 test_neg_clear 970 971 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 972 test_gr_a5a5 2 973 test_gr_a5a5 2 974 test_gr_a5a5 3 975 test_gr_a5a5 4 976 test_gr_a5a5 5 977 test_gr_a5a5 6 978 test_gr_a5a5 7 979 ; 1010 0101 -> 0000 1010 980 cmp.b #0x0a, @byte_dest 981 beq .Lbabs164 982 fail 983.Lbabs164: 984 mov.b #0xa5, @byte_dest 985 986shlr_b_abs32_4: 987 set_grs_a5a5 ; Fill all general regs with a fixed pattern 988 set_ccr_zero 989 990 shlr.b #4, @byte_dest:32 ; shift right logical by four, abs32 991;;; .word 0x6a38 992;;; .long byte_dest 993;;; .word 0x11a0 994 995 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 996 test_zero_clear 997 test_ovf_clear 998 test_neg_clear 999 1000 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 1001 test_gr_a5a5 2 1002 test_gr_a5a5 2 1003 test_gr_a5a5 3 1004 test_gr_a5a5 4 1005 test_gr_a5a5 5 1006 test_gr_a5a5 6 1007 test_gr_a5a5 7 1008 ; 1010 0101 -> 0000 1010 1009 cmp.b #0x0a, @byte_dest 1010 beq .Lbabs324 1011 fail 1012.Lbabs324: 1013 mov.b #0xa5, @byte_dest 1014.endif 1015 1016.if (sim_cpu == h8sx) 1017shlr_w_imm5_1: 1018 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1019 set_ccr_zero 1020 1021 shlr.w #15:5, r0 ; shift right logical by 5-bit immediate 1022;;; .word 0x038f 1023;;; .word 0x1110 1024 1025 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1026 test_zero_clear 1027 test_ovf_clear 1028 test_neg_clear 1029 1030 ; 1010 0101 1010 0101 -> 0000 0000 0000 0001 1031 test_h_gr32 0xa5a50001 er0 1032 1033 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1034 test_gr_a5a5 2 1035 test_gr_a5a5 3 1036 test_gr_a5a5 4 1037 test_gr_a5a5 5 1038 test_gr_a5a5 6 1039 test_gr_a5a5 7 1040.endif 1041 1042.if (sim_cpu) ; Not available in h8300 mode 1043shlr_w_reg16_1: 1044 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1045 set_ccr_zero 1046 1047 shlr.w r0 ; shift right logical by one 1048;;; .word 0x1110 1049 1050 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 1051 test_zero_clear 1052 test_ovf_clear 1053 test_neg_clear 1054 test_h_gr16 0x52d2 r0 ; 1010 0101 1010 0101 -> 0101 0010 1101 0010 1055 test_h_gr32 0xa5a552d2 er0 1056 1057 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1058 test_gr_a5a5 2 1059 test_gr_a5a5 3 1060 test_gr_a5a5 4 1061 test_gr_a5a5 5 1062 test_gr_a5a5 6 1063 test_gr_a5a5 7 1064 1065.if (sim_cpu == h8sx) 1066shlr_w_ind_1: 1067 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1068 set_ccr_zero 1069 1070 mov #word_dest, er0 1071 shlr.w @er0 ; shift right logical by one, indirect 1072;;; .word 0x7d80 1073;;; .word 0x1110 1074 1075 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 1076 test_zero_clear 1077 test_ovf_clear 1078 test_neg_clear 1079 1080 test_h_gr32 word_dest er0 1081 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1082 test_gr_a5a5 2 1083 test_gr_a5a5 3 1084 test_gr_a5a5 4 1085 test_gr_a5a5 5 1086 test_gr_a5a5 6 1087 test_gr_a5a5 7 1088 ; 1010 0101 1010 0101 -> 0101 0010 1101 0010 1089 cmp.w #0x52d2, @word_dest 1090 beq .Lwind1 1091 fail 1092.Lwind1: 1093 mov.w #0xa5a5, @word_dest 1094 1095shlr_w_postinc_1: 1096 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1097 set_ccr_zero 1098 1099 mov #word_dest, er0 1100 shlr.w @er0+ ; shift right logical by one, postinc 1101;;; .word 0x0154 1102;;; .word 0x6d08 1103;;; .word 0x1110 1104 1105 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 1106 test_zero_clear 1107 test_ovf_clear 1108 test_neg_clear 1109 1110 test_h_gr32 word_dest+2 er0 1111 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1112 test_gr_a5a5 2 1113 test_gr_a5a5 3 1114 test_gr_a5a5 4 1115 test_gr_a5a5 5 1116 test_gr_a5a5 6 1117 test_gr_a5a5 7 1118 ; 1010 0101 1010 0101 -> 0101 0010 1101 0010 1119 cmp.w #0x52d2, @word_dest 1120 beq .Lwpostinc1 1121 fail 1122.Lwpostinc1: 1123 mov.w #0xa5a5, @word_dest 1124 1125shlr_w_postdec_1: 1126 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1127 set_ccr_zero 1128 1129 mov #word_dest, er0 1130 shlr.w @er0- ; shift right logical by one, postdec 1131;;; .word 0x0156 1132;;; .word 0x6d08 1133;;; .word 0x1110 1134 1135 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 1136 test_zero_clear 1137 test_ovf_clear 1138 test_neg_clear 1139 1140 test_h_gr32 word_dest-2 er0 1141 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1142 test_gr_a5a5 2 1143 test_gr_a5a5 3 1144 test_gr_a5a5 4 1145 test_gr_a5a5 5 1146 test_gr_a5a5 6 1147 test_gr_a5a5 7 1148 ; 1010 0101 1010 0101 -> 0101 0010 1101 0010 1149 cmp.w #0x52d2, @word_dest 1150 beq .Lwpostdec1 1151 fail 1152.Lwpostdec1: 1153 mov.w #0xa5a5, @word_dest 1154 1155shlr_w_preinc_1: 1156 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1157 set_ccr_zero 1158 1159 mov #word_dest-2, er0 1160 shlr.w @+er0 ; shift right logical by one, preinc 1161;;; .word 0x0155 1162;;; .word 0x6d08 1163;;; .word 0x1110 1164 1165 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 1166 test_zero_clear 1167 test_ovf_clear 1168 test_neg_clear 1169 1170 test_h_gr32 word_dest er0 1171 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1172 test_gr_a5a5 2 1173 test_gr_a5a5 3 1174 test_gr_a5a5 4 1175 test_gr_a5a5 5 1176 test_gr_a5a5 6 1177 test_gr_a5a5 7 1178 ; 1010 0101 1010 0101 -> 0101 0010 1101 0010 1179 cmp.w #0x52d2, @word_dest 1180 beq .Lwpreinc1 1181 fail 1182.Lwpreinc1: 1183 mov.w #0xa5a5, @word_dest 1184 1185shlr_w_predec_1: 1186 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1187 set_ccr_zero 1188 1189 mov #word_dest+2, er0 1190 shlr.w @-er0 ; shift right logical by one, predec 1191;;; .word 0x0157 1192;;; .word 0x6d08 1193;;; .word 0x1110 1194 1195 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 1196 test_zero_clear 1197 test_ovf_clear 1198 test_neg_clear 1199 1200 test_h_gr32 word_dest er0 1201 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1202 test_gr_a5a5 2 1203 test_gr_a5a5 3 1204 test_gr_a5a5 4 1205 test_gr_a5a5 5 1206 test_gr_a5a5 6 1207 test_gr_a5a5 7 1208 ; 1010 0101 1010 0101 -> 0101 0010 1101 0010 1209 cmp.w #0x52d2, @word_dest 1210 beq .Lwpredec1 1211 fail 1212.Lwpredec1: 1213 mov.w #0xa5a5, @word_dest 1214 1215shlr_w_disp2_1: 1216 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1217 set_ccr_zero 1218 1219 mov #word_dest-4, er0 1220 shlr.w @(4:2, er0) ; shift right logical by one, disp2 1221;;; .word 0x0156 1222;;; .word 0x6908 1223;;; .word 0x1110 1224 1225 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 1226 test_zero_clear 1227 test_ovf_clear 1228 test_neg_clear 1229 1230 test_h_gr32 word_dest-4 er0 1231 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1232 test_gr_a5a5 2 1233 test_gr_a5a5 3 1234 test_gr_a5a5 4 1235 test_gr_a5a5 5 1236 test_gr_a5a5 6 1237 test_gr_a5a5 7 1238 ; 1010 0101 1010 0101 -> 0101 0010 1101 0010 1239 cmp.w #0x52d2, @word_dest 1240 beq .Lwdisp21 1241 fail 1242.Lwdisp21: 1243 mov.w #0xa5a5, @word_dest 1244 1245shlr_w_disp16_1: 1246 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1247 set_ccr_zero 1248 1249 mov #word_dest-44, er0 1250 shlr.w @(44:16, er0) ; shift right logical by one, disp16 1251;;; .word 0x0154 1252;;; .word 0x6f08 1253;;; .word 44 1254;;; .word 0x1110 1255 1256 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 1257 test_zero_clear 1258 test_ovf_clear 1259 test_neg_clear 1260 1261 test_h_gr32 word_dest-44 er0 1262 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1263 test_gr_a5a5 2 1264 test_gr_a5a5 3 1265 test_gr_a5a5 4 1266 test_gr_a5a5 5 1267 test_gr_a5a5 6 1268 test_gr_a5a5 7 1269 ; 1010 0101 1010 0101 -> 0101 0010 1101 0010 1270 cmp.w #0x52d2, @word_dest 1271 beq .Lwdisp161 1272 fail 1273.Lwdisp161: 1274 mov.w #0xa5a5, @word_dest 1275 1276shlr_w_disp32_1: 1277 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1278 set_ccr_zero 1279 1280 mov #word_dest-666, er0 1281 shlr.w @(666:32, er0) ; shift right logical by one, disp32 1282;;; .word 0x7884 1283;;; .word 0x6b28 1284;;; .long 666 1285;;; .word 0x1110 1286 1287 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 1288 test_zero_clear 1289 test_ovf_clear 1290 test_neg_clear 1291 1292 test_h_gr32 word_dest-666 er0 1293 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1294 test_gr_a5a5 2 1295 test_gr_a5a5 3 1296 test_gr_a5a5 4 1297 test_gr_a5a5 5 1298 test_gr_a5a5 6 1299 test_gr_a5a5 7 1300 ; 1010 0101 1010 0101 -> 0101 0010 1101 0010 1301 cmp.w #0x52d2, @word_dest 1302 beq .Lwdisp321 1303 fail 1304.Lwdisp321: 1305 mov.w #0xa5a5, @word_dest 1306 1307shlr_w_abs16_1: 1308 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1309 set_ccr_zero 1310 1311 shlr.w @word_dest:16 ; shift right logical by one, abs16 1312;;; .word 0x6b18 1313;;; .word word_dest 1314;;; .word 0x1110 1315 1316 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 1317 test_zero_clear 1318 test_ovf_clear 1319 test_neg_clear 1320 1321 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 1322 test_gr_a5a5 1 1323 test_gr_a5a5 2 1324 test_gr_a5a5 3 1325 test_gr_a5a5 4 1326 test_gr_a5a5 5 1327 test_gr_a5a5 6 1328 test_gr_a5a5 7 1329 ; 1010 0101 1010 0101 -> 0101 0010 1101 0010 1330 cmp.w #0x52d2, @word_dest 1331 beq .Lwabs161 1332 fail 1333.Lwabs161: 1334 mov.w #0xa5a5, @word_dest 1335 1336shlr_w_abs32_1: 1337 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1338 set_ccr_zero 1339 1340 shlr.w @word_dest:32 ; shift right logical by one, abs32 1341;;; .word 0x6b38 1342;;; .long word_dest 1343;;; .word 0x1110 1344 1345 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 1346 test_zero_clear 1347 test_ovf_clear 1348 test_neg_clear 1349 1350 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 1351 test_gr_a5a5 1 1352 test_gr_a5a5 2 1353 test_gr_a5a5 3 1354 test_gr_a5a5 4 1355 test_gr_a5a5 5 1356 test_gr_a5a5 6 1357 test_gr_a5a5 7 1358 ; 1010 0101 1010 0101 -> 0101 0010 1101 0010 1359 cmp.w #0x52d2, @word_dest 1360 beq .Lwabs321 1361 fail 1362.Lwabs321: 1363 mov.w #0xa5a5, @word_dest 1364.endif 1365 1366shlr_w_reg16_2: 1367 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1368 set_ccr_zero 1369 1370 shlr.w #2, r0 ; shift right logical by two 1371;;; .word 0x1150 1372 1373 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1374 test_zero_clear 1375 test_ovf_clear 1376 test_neg_clear 1377 1378 test_h_gr16 0x2969 r0 ; 1010 0101 1010 0101 -> 0010 1001 0110 1001 1379 test_h_gr32 0xa5a52969 er0 1380 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1381 test_gr_a5a5 2 1382 test_gr_a5a5 3 1383 test_gr_a5a5 4 1384 test_gr_a5a5 5 1385 test_gr_a5a5 6 1386 test_gr_a5a5 7 1387 1388.if (sim_cpu == h8sx) 1389shlr_w_ind_2: 1390 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1391 set_ccr_zero 1392 1393 mov #word_dest, er0 1394 shlr.w #2, @er0 ; shift right logical by two, indirect 1395;;; .word 0x7d80 1396;;; .word 0x1150 1397 1398 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1399 test_zero_clear 1400 test_ovf_clear 1401 test_neg_clear 1402 1403 test_h_gr32 word_dest er0 1404 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1405 test_gr_a5a5 2 1406 test_gr_a5a5 3 1407 test_gr_a5a5 4 1408 test_gr_a5a5 5 1409 test_gr_a5a5 6 1410 test_gr_a5a5 7 1411 ; 1010 0101 1010 0101 -> 0010 1001 0110 1001 1412 cmp.w #0x2969, @word_dest 1413 beq .Lwind2 1414 fail 1415.Lwind2: 1416 mov.w #0xa5a5, @word_dest 1417 1418shlr_w_postinc_2: 1419 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1420 set_ccr_zero 1421 1422 mov #word_dest, er0 1423 shlr.w #2, @er0+ ; shift right logical by two, postinc 1424;;; .word 0x0154 1425;;; .word 0x6d08 1426;;; .word 0x1150 1427 1428 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1429 test_zero_clear 1430 test_ovf_clear 1431 test_neg_clear 1432 1433 test_h_gr32 word_dest+2 er0 1434 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1435 test_gr_a5a5 2 1436 test_gr_a5a5 3 1437 test_gr_a5a5 4 1438 test_gr_a5a5 5 1439 test_gr_a5a5 6 1440 test_gr_a5a5 7 1441 ; 1010 0101 1010 0101 -> 0010 1001 0110 1001 1442 cmp.w #0x2969, @word_dest 1443 beq .Lwpostinc2 1444 fail 1445.Lwpostinc2: 1446 mov.w #0xa5a5, @word_dest 1447 1448shlr_w_postdec_2: 1449 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1450 set_ccr_zero 1451 1452 mov #word_dest, er0 1453 shlr.w #2, @er0- ; shift right logical by two, postdec 1454;;; .word 0x0156 1455;;; .word 0x6d08 1456;;; .word 0x1150 1457 1458 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1459 test_zero_clear 1460 test_ovf_clear 1461 test_neg_clear 1462 1463 test_h_gr32 word_dest-2 er0 1464 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1465 test_gr_a5a5 2 1466 test_gr_a5a5 3 1467 test_gr_a5a5 4 1468 test_gr_a5a5 5 1469 test_gr_a5a5 6 1470 test_gr_a5a5 7 1471 ; 1010 0101 1010 0101 -> 0010 1001 0110 1001 1472 cmp.w #0x2969, @word_dest 1473 beq .Lwpostdec2 1474 fail 1475.Lwpostdec2: 1476 mov.w #0xa5a5, @word_dest 1477 1478shlr_w_preinc_2: 1479 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1480 set_ccr_zero 1481 1482 mov #word_dest-2, er0 1483 shlr.w #2, @+er0 ; shift right logical by two, preinc 1484;;; .word 0x0155 1485;;; .word 0x6d08 1486;;; .word 0x1150 1487 1488 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1489 test_zero_clear 1490 test_ovf_clear 1491 test_neg_clear 1492 1493 test_h_gr32 word_dest er0 1494 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1495 test_gr_a5a5 2 1496 test_gr_a5a5 3 1497 test_gr_a5a5 4 1498 test_gr_a5a5 5 1499 test_gr_a5a5 6 1500 test_gr_a5a5 7 1501 ; 1010 0101 1010 0101 -> 0010 1001 0110 1001 1502 cmp.w #0x2969, @word_dest 1503 beq .Lwpreinc2 1504 fail 1505.Lwpreinc2: 1506 mov.w #0xa5a5, @word_dest 1507 1508shlr_w_predec_2: 1509 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1510 set_ccr_zero 1511 1512 mov #word_dest+2, er0 1513 shlr.w #2, @-er0 ; shift right logical by two, predec 1514;;; .word 0x0157 1515;;; .word 0x6d08 1516;;; .word 0x1150 1517 1518 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1519 test_zero_clear 1520 test_ovf_clear 1521 test_neg_clear 1522 1523 test_h_gr32 word_dest er0 1524 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1525 test_gr_a5a5 2 1526 test_gr_a5a5 3 1527 test_gr_a5a5 4 1528 test_gr_a5a5 5 1529 test_gr_a5a5 6 1530 test_gr_a5a5 7 1531 ; 1010 0101 1010 0101 -> 0010 1001 0110 1001 1532 cmp.w #0x2969, @word_dest 1533 beq .Lwpredec2 1534 fail 1535.Lwpredec2: 1536 mov.w #0xa5a5, @word_dest 1537 1538shlr_w_disp2_2: 1539 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1540 set_ccr_zero 1541 1542 mov #word_dest-4, er0 1543 shlr.w #2, @(4:2, er0) ; shift right logical by two, disp2 1544;;; .word 0x0156 1545;;; .word 0x6908 1546;;; .word 0x1150 1547 1548 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1549 test_zero_clear 1550 test_ovf_clear 1551 test_neg_clear 1552 1553 test_h_gr32 word_dest-4 er0 1554 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1555 test_gr_a5a5 2 1556 test_gr_a5a5 3 1557 test_gr_a5a5 4 1558 test_gr_a5a5 5 1559 test_gr_a5a5 6 1560 test_gr_a5a5 7 1561 ; 1010 0101 1010 0101 -> 0010 1001 0110 1001 1562 cmp.w #0x2969, @word_dest 1563 beq .Lwdisp22 1564 fail 1565.Lwdisp22: 1566 mov.w #0xa5a5, @word_dest 1567 1568shlr_w_disp16_2: 1569 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1570 set_ccr_zero 1571 1572 mov #word_dest-44, er0 1573 shlr.w #2, @(44:16, er0) ; shift right logical by two, disp16 1574;;; .word 0x0154 1575;;; .word 0x6f08 1576;;; .word 44 1577;;; .word 0x1150 1578 1579 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1580 test_zero_clear 1581 test_ovf_clear 1582 test_neg_clear 1583 1584 test_h_gr32 word_dest-44 er0 1585 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1586 test_gr_a5a5 2 1587 test_gr_a5a5 3 1588 test_gr_a5a5 4 1589 test_gr_a5a5 5 1590 test_gr_a5a5 6 1591 test_gr_a5a5 7 1592 ; 1010 0101 1010 0101 -> 0010 1001 0110 1001 1593 cmp.w #0x2969, @word_dest 1594 beq .Lwdisp162 1595 fail 1596.Lwdisp162: 1597 mov.w #0xa5a5, @word_dest 1598 1599shlr_w_disp32_2: 1600 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1601 set_ccr_zero 1602 1603 mov #word_dest-666, er0 1604 shlr.w #2, @(666:32, er0) ; shift right logical by two, disp32 1605;;; .word 0x7884 1606;;; .word 0x6b28 1607;;; .long 666 1608;;; .word 0x1150 1609 1610 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1611 test_zero_clear 1612 test_ovf_clear 1613 test_neg_clear 1614 1615 test_h_gr32 word_dest-666 er0 1616 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1617 test_gr_a5a5 2 1618 test_gr_a5a5 3 1619 test_gr_a5a5 4 1620 test_gr_a5a5 5 1621 test_gr_a5a5 6 1622 test_gr_a5a5 7 1623 ; 1010 0101 1010 0101 -> 0010 1001 0110 1001 1624 cmp.w #0x2969, @word_dest 1625 beq .Lwdisp322 1626 fail 1627.Lwdisp322: 1628 mov.w #0xa5a5, @word_dest 1629 1630shlr_w_abs16_2: 1631 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1632 set_ccr_zero 1633 1634 shlr.w #2, @word_dest:16 ; shift right logical by two, abs16 1635;;; .word 0x6b18 1636;;; .word word_dest 1637;;; .word 0x1150 1638 1639 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1640 test_zero_clear 1641 test_ovf_clear 1642 test_neg_clear 1643 1644 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 1645 test_gr_a5a5 2 1646 test_gr_a5a5 2 1647 test_gr_a5a5 3 1648 test_gr_a5a5 4 1649 test_gr_a5a5 5 1650 test_gr_a5a5 6 1651 test_gr_a5a5 7 1652 ; 1010 0101 1010 0101 -> 0010 1001 0110 1001 1653 cmp.w #0x2969, @word_dest 1654 beq .Lwabs162 1655 fail 1656.Lwabs162: 1657 mov.w #0xa5a5, @word_dest 1658 1659shlr_w_abs32_2: 1660 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1661 set_ccr_zero 1662 1663 shlr.w #2, @word_dest:32 ; shift right logical by two, abs32 1664;;; .word 0x6b38 1665;;; .long word_dest 1666;;; .word 0x1150 1667 1668 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1669 test_zero_clear 1670 test_ovf_clear 1671 test_neg_clear 1672 1673 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 1674 test_gr_a5a5 2 1675 test_gr_a5a5 2 1676 test_gr_a5a5 3 1677 test_gr_a5a5 4 1678 test_gr_a5a5 5 1679 test_gr_a5a5 6 1680 test_gr_a5a5 7 1681 ; 1010 0101 1010 0101 -> 0010 1001 0110 1001 1682 cmp.w #0x2969, @word_dest 1683 beq .Lwabs322 1684 fail 1685.Lwabs322: 1686 mov.w #0xa5a5, @word_dest 1687 1688shlr_w_reg16_4: 1689 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1690 set_ccr_zero 1691 1692 shlr.w #4, r0 ; shift right logical by four 1693;;; .word 0x1120 1694 1695 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1696 test_zero_clear 1697 test_ovf_clear 1698 test_neg_clear 1699 1700 test_h_gr16 0x0a5a r0 ; 1010 0101 1010 0101 -> 0000 1010 0101 1010 1701 test_h_gr32 0xa5a50a5a er0 1702 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1703 test_gr_a5a5 2 1704 test_gr_a5a5 3 1705 test_gr_a5a5 4 1706 test_gr_a5a5 5 1707 test_gr_a5a5 6 1708 test_gr_a5a5 7 1709 1710shlr_w_reg16_reg8: 1711 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1712 set_ccr_zero 1713 1714 mov #5, r1l 1715 shlr.w r1l, r0 ; shift right logical by register value 1716 1717 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1718 test_zero_clear 1719 test_ovf_clear 1720 test_neg_clear 1721 1722 test_h_gr16 0x052d r0 ; 1010 0101 1010 0101 -> 0000 0101 0010 1101 1723 test_h_gr32 0xa5a5052d er0 1724 test_h_gr32 0xa5a5a505 er1 1725 test_gr_a5a5 2 ; Make sure other general regs not disturbed 1726 test_gr_a5a5 3 1727 test_gr_a5a5 4 1728 test_gr_a5a5 5 1729 test_gr_a5a5 6 1730 test_gr_a5a5 7 1731 1732shlr_w_ind_4: 1733 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1734 set_ccr_zero 1735 1736 mov #word_dest, er0 1737 shlr.w #4, @er0 ; shift right logical by four, indirect 1738;;; .word 0x7d80 1739;;; .word 0x1120 1740 1741 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1742 test_zero_clear 1743 test_ovf_clear 1744 test_neg_clear 1745 1746 test_h_gr32 word_dest er0 1747 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1748 test_gr_a5a5 2 1749 test_gr_a5a5 3 1750 test_gr_a5a5 4 1751 test_gr_a5a5 5 1752 test_gr_a5a5 6 1753 test_gr_a5a5 7 1754 ; 1010 0101 1010 0101 -> 0000 1010 0101 1010 1755 cmp.w #0x0a5a, @word_dest 1756 beq .Lwind4 1757 fail 1758.Lwind4: 1759 mov.w #0xa5a5, @word_dest 1760 1761shlr_w_postinc_4: 1762 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1763 set_ccr_zero 1764 1765 mov #word_dest, er0 1766 shlr.w #4, @er0+ ; shift right logical by four, postinc 1767;;; .word 0x0154 1768;;; .word 0x6d08 1769;;; .word 0x1120 1770 1771 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1772 test_zero_clear 1773 test_ovf_clear 1774 test_neg_clear 1775 1776 test_h_gr32 word_dest+2 er0 1777 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1778 test_gr_a5a5 2 1779 test_gr_a5a5 3 1780 test_gr_a5a5 4 1781 test_gr_a5a5 5 1782 test_gr_a5a5 6 1783 test_gr_a5a5 7 1784 ; 1010 0101 1010 0101 -> 0000 1010 0101 1010 1785 cmp.w #0x0a5a, @word_dest 1786 beq .Lwpostinc4 1787 fail 1788.Lwpostinc4: 1789 mov.w #0xa5a5, @word_dest 1790 1791shlr_w_postdec_4: 1792 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1793 set_ccr_zero 1794 1795 mov #word_dest, er0 1796 shlr.w #4, @er0- ; shift right logical by four, postdec 1797;;; .word 0x0156 1798;;; .word 0x6d08 1799;;; .word 0x1120 1800 1801 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1802 test_zero_clear 1803 test_ovf_clear 1804 test_neg_clear 1805 1806 test_h_gr32 word_dest-2 er0 1807 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1808 test_gr_a5a5 2 1809 test_gr_a5a5 3 1810 test_gr_a5a5 4 1811 test_gr_a5a5 5 1812 test_gr_a5a5 6 1813 test_gr_a5a5 7 1814 ; 1010 0101 1010 0101 -> 0000 1010 0101 1010 1815 cmp.w #0x0a5a, @word_dest 1816 beq .Lwpostdec4 1817 fail 1818.Lwpostdec4: 1819 mov.w #0xa5a5, @word_dest 1820 1821shlr_w_preinc_4: 1822 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1823 set_ccr_zero 1824 1825 mov #word_dest-2, er0 1826 shlr.w #4, @+er0 ; shift right logical by four, preinc 1827;;; .word 0x0155 1828;;; .word 0x6d08 1829;;; .word 0x1120 1830 1831 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1832 test_zero_clear 1833 test_ovf_clear 1834 test_neg_clear 1835 1836 test_h_gr32 word_dest er0 1837 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1838 test_gr_a5a5 2 1839 test_gr_a5a5 3 1840 test_gr_a5a5 4 1841 test_gr_a5a5 5 1842 test_gr_a5a5 6 1843 test_gr_a5a5 7 1844 ; 1010 0101 1010 0101 -> 0000 1010 0101 1010 1845 cmp.w #0x0a5a, @word_dest 1846 beq .Lwpreinc4 1847 fail 1848.Lwpreinc4: 1849 mov.w #0xa5a5, @word_dest 1850 1851shlr_w_predec_4: 1852 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1853 set_ccr_zero 1854 1855 mov #word_dest+2, er0 1856 shlr.w #4, @-er0 ; shift right logical by four, predec 1857;;; .word 0x0157 1858;;; .word 0x6d08 1859;;; .word 0x1120 1860 1861 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1862 test_zero_clear 1863 test_ovf_clear 1864 test_neg_clear 1865 1866 test_h_gr32 word_dest er0 1867 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1868 test_gr_a5a5 2 1869 test_gr_a5a5 3 1870 test_gr_a5a5 4 1871 test_gr_a5a5 5 1872 test_gr_a5a5 6 1873 test_gr_a5a5 7 1874 ; 1010 0101 1010 0101 -> 0000 1010 0101 1010 1875 cmp.w #0x0a5a, @word_dest 1876 beq .Lwpredec4 1877 fail 1878.Lwpredec4: 1879 mov.w #0xa5a5, @word_dest 1880 1881shlr_w_disp2_4: 1882 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1883 set_ccr_zero 1884 1885 mov #word_dest-4, er0 1886 shlr.w #4, @(4:2, er0) ; shift right logical by four, disp2 1887;;; .word 0x0156 1888;;; .word 0x6908 1889;;; .word 0x1120 1890 1891 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1892 test_zero_clear 1893 test_ovf_clear 1894 test_neg_clear 1895 1896 test_h_gr32 word_dest-4 er0 1897 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1898 test_gr_a5a5 2 1899 test_gr_a5a5 3 1900 test_gr_a5a5 4 1901 test_gr_a5a5 5 1902 test_gr_a5a5 6 1903 test_gr_a5a5 7 1904 ; 1010 0101 1010 0101 -> 0000 1010 0101 1010 1905 cmp.w #0x0a5a, @word_dest 1906 beq .Lwdisp24 1907 fail 1908.Lwdisp24: 1909 mov.w #0xa5a5, @word_dest 1910 1911shlr_w_disp16_4: 1912 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1913 set_ccr_zero 1914 1915 mov #word_dest-44, er0 1916 shlr.w #4, @(44:16, er0) ; shift right logical by four, disp16 1917;;; .word 0x0154 1918;;; .word 0x6f08 1919;;; .word 44 1920;;; .word 0x1120 1921 1922 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1923 test_zero_clear 1924 test_ovf_clear 1925 test_neg_clear 1926 1927 test_h_gr32 word_dest-44 er0 1928 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1929 test_gr_a5a5 2 1930 test_gr_a5a5 3 1931 test_gr_a5a5 4 1932 test_gr_a5a5 5 1933 test_gr_a5a5 6 1934 test_gr_a5a5 7 1935 ; 1010 0101 1010 0101 -> 0000 1010 0101 1010 1936 cmp.w #0x0a5a, @word_dest 1937 beq .Lwdisp164 1938 fail 1939.Lwdisp164: 1940 mov.w #0xa5a5, @word_dest 1941 1942shlr_w_disp32_4: 1943 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1944 set_ccr_zero 1945 1946 mov #word_dest-666, er0 1947 shlr.w #4, @(666:32, er0) ; shift right logical by four, disp32 1948;;; .word 0x7884 1949;;; .word 0x6b28 1950;;; .long 666 1951;;; .word 0x1120 1952 1953 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1954 test_zero_clear 1955 test_ovf_clear 1956 test_neg_clear 1957 1958 test_h_gr32 word_dest-666 er0 1959 test_gr_a5a5 1 ; Make sure other general regs not disturbed 1960 test_gr_a5a5 2 1961 test_gr_a5a5 3 1962 test_gr_a5a5 4 1963 test_gr_a5a5 5 1964 test_gr_a5a5 6 1965 test_gr_a5a5 7 1966 ; 1010 0101 1010 0101 -> 0000 1010 0101 1010 1967 cmp.w #0x0a5a, @word_dest 1968 beq .Lwdisp324 1969 fail 1970.Lwdisp324: 1971 mov.w #0xa5a5, @word_dest 1972 1973shlr_w_abs16_4: 1974 set_grs_a5a5 ; Fill all general regs with a fixed pattern 1975 set_ccr_zero 1976 1977 shlr.w #4, @word_dest:16 ; shift right logical by four, abs16 1978;;; .word 0x6b18 1979;;; .word word_dest 1980;;; .word 0x1120 1981 1982 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 1983 test_zero_clear 1984 test_ovf_clear 1985 test_neg_clear 1986 1987 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 1988 test_gr_a5a5 2 1989 test_gr_a5a5 2 1990 test_gr_a5a5 3 1991 test_gr_a5a5 4 1992 test_gr_a5a5 5 1993 test_gr_a5a5 6 1994 test_gr_a5a5 7 1995 ; 1010 0101 1010 0101 -> 0000 1010 0101 1010 1996 cmp.w #0x0a5a, @word_dest 1997 beq .Lwabs164 1998 fail 1999.Lwabs164: 2000 mov.w #0xa5a5, @word_dest 2001 2002shlr_w_abs32_4: 2003 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2004 set_ccr_zero 2005 2006 shlr.w #4, @word_dest:32 ; shift right logical by four, abs32 2007;;; .word 0x6b38 2008;;; .long word_dest 2009;;; .word 0x1120 2010 2011 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 2012 test_zero_clear 2013 test_ovf_clear 2014 test_neg_clear 2015 2016 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 2017 test_gr_a5a5 2 2018 test_gr_a5a5 2 2019 test_gr_a5a5 3 2020 test_gr_a5a5 4 2021 test_gr_a5a5 5 2022 test_gr_a5a5 6 2023 test_gr_a5a5 7 2024 ; 1010 0101 1010 0101 -> 0000 1010 0101 1010 2025 cmp.w #0x0a5a, @word_dest 2026 beq .Lwabs324 2027 fail 2028.Lwabs324: 2029 mov.w #0xa5a5, @word_dest 2030 2031shlr_w_reg16_8: 2032 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2033 set_ccr_zero 2034 2035 shlr.w #8, r0 ; shift right logical by eight 2036;;; .word 0x1160 2037 2038 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2039 test_zero_clear 2040 test_ovf_clear 2041 test_neg_clear 2042 2043 test_h_gr16 0x00a5 r0 ; 1010 0101 1010 0101 -> 0000 0000 1010 0101 2044 test_h_gr32 0xa5a500a5 er0 2045 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2046 test_gr_a5a5 2 2047 test_gr_a5a5 3 2048 test_gr_a5a5 4 2049 test_gr_a5a5 5 2050 test_gr_a5a5 6 2051 test_gr_a5a5 7 2052 2053shlr_w_ind_8: 2054 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2055 set_ccr_zero 2056 2057 mov #word_dest, er0 2058 shlr.w #8, @er0 ; shift right logical by eight, indirect 2059;;; .word 0x7d80 2060;;; .word 0x1160 2061 2062 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2063 test_zero_clear 2064 test_ovf_clear 2065 test_neg_clear 2066 2067 test_h_gr32 word_dest er0 2068 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2069 test_gr_a5a5 2 2070 test_gr_a5a5 3 2071 test_gr_a5a5 4 2072 test_gr_a5a5 5 2073 test_gr_a5a5 6 2074 test_gr_a5a5 7 2075 ; 1010 0101 1010 0101 -> 0000 0000 1010 0101 2076 cmp.w #0x00a5, @word_dest 2077 beq .Lwind8 2078 fail 2079.Lwind8: 2080 mov.w #0xa5a5, @word_dest 2081 2082shlr_w_postinc_8: 2083 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2084 set_ccr_zero 2085 2086 mov #word_dest, er0 2087 shlr.w #8, @er0+ ; shift right logical by eight, postinc 2088;;; .word 0x0154 2089;;; .word 0x6d08 2090;;; .word 0x1160 2091 2092 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2093 test_zero_clear 2094 test_ovf_clear 2095 test_neg_clear 2096 2097 test_h_gr32 word_dest+2 er0 2098 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2099 test_gr_a5a5 2 2100 test_gr_a5a5 3 2101 test_gr_a5a5 4 2102 test_gr_a5a5 5 2103 test_gr_a5a5 6 2104 test_gr_a5a5 7 2105 ; 1010 0101 1010 0101 -> 0000 0000 1010 0101 2106 cmp.w #0x00a5, @word_dest 2107 beq .Lwpostinc8 2108 fail 2109.Lwpostinc8: 2110 mov.w #0xa5a5, @word_dest 2111 2112shlr_w_postdec_8: 2113 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2114 set_ccr_zero 2115 2116 mov #word_dest, er0 2117 shlr.w #8, @er0- ; shift right logical by eight, postdec 2118;;; .word 0x0156 2119;;; .word 0x6d08 2120;;; .word 0x1160 2121 2122 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2123 test_zero_clear 2124 test_ovf_clear 2125 test_neg_clear 2126 2127 test_h_gr32 word_dest-2 er0 2128 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2129 test_gr_a5a5 2 2130 test_gr_a5a5 3 2131 test_gr_a5a5 4 2132 test_gr_a5a5 5 2133 test_gr_a5a5 6 2134 test_gr_a5a5 7 2135 ; 1010 0101 1010 0101 -> 0000 0000 1010 0101 2136 cmp.w #0x00a5, @word_dest 2137 beq .Lwpostdec8 2138 fail 2139.Lwpostdec8: 2140 mov.w #0xa5a5, @word_dest 2141 2142shlr_w_preinc_8: 2143 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2144 set_ccr_zero 2145 2146 mov #word_dest-2, er0 2147 shlr.w #8, @+er0 ; shift right logical by eight, preinc 2148;;; .word 0x0155 2149;;; .word 0x6d08 2150;;; .word 0x1160 2151 2152 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2153 test_zero_clear 2154 test_ovf_clear 2155 test_neg_clear 2156 2157 test_h_gr32 word_dest er0 2158 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2159 test_gr_a5a5 2 2160 test_gr_a5a5 3 2161 test_gr_a5a5 4 2162 test_gr_a5a5 5 2163 test_gr_a5a5 6 2164 test_gr_a5a5 7 2165 ; 1010 0101 1010 0101 -> 0000 0000 1010 0101 2166 cmp.w #0x00a5, @word_dest 2167 beq .Lwpreinc8 2168 fail 2169.Lwpreinc8: 2170 mov.w #0xa5a5, @word_dest 2171 2172shlr_w_predec_8: 2173 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2174 set_ccr_zero 2175 2176 mov #word_dest+2, er0 2177 shlr.w #8, @-er0 ; shift right logical by eight, predec 2178;;; .word 0x0157 2179;;; .word 0x6d08 2180;;; .word 0x1160 2181 2182 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2183 test_zero_clear 2184 test_ovf_clear 2185 test_neg_clear 2186 2187 test_h_gr32 word_dest er0 2188 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2189 test_gr_a5a5 2 2190 test_gr_a5a5 3 2191 test_gr_a5a5 4 2192 test_gr_a5a5 5 2193 test_gr_a5a5 6 2194 test_gr_a5a5 7 2195 ; 1010 0101 1010 0101 -> 0000 0000 1010 0101 2196 cmp.w #0x00a5, @word_dest 2197 beq .Lwpredec8 2198 fail 2199.Lwpredec8: 2200 mov.w #0xa5a5, @word_dest 2201 2202shlr_w_disp2_8: 2203 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2204 set_ccr_zero 2205 2206 mov #word_dest-4, er0 2207 shlr.w #8, @(4:2, er0) ; shift right logical by eight, disp2 2208;;; .word 0x0156 2209;;; .word 0x6908 2210;;; .word 0x1160 2211 2212 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2213 test_zero_clear 2214 test_ovf_clear 2215 test_neg_clear 2216 2217 test_h_gr32 word_dest-4 er0 2218 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2219 test_gr_a5a5 2 2220 test_gr_a5a5 3 2221 test_gr_a5a5 4 2222 test_gr_a5a5 5 2223 test_gr_a5a5 6 2224 test_gr_a5a5 7 2225 ; 1010 0101 1010 0101 -> 0000 0000 1010 0101 2226 cmp.w #0x00a5, @word_dest 2227 beq .Lwdisp28 2228 fail 2229.Lwdisp28: 2230 mov.w #0xa5a5, @word_dest 2231 2232shlr_w_disp16_8: 2233 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2234 set_ccr_zero 2235 2236 mov #word_dest-44, er0 2237 shlr.w #8, @(44:16, er0) ; shift right logical by eight, disp16 2238;;; .word 0x0154 2239;;; .word 0x6f08 2240;;; .word 44 2241;;; .word 0x1160 2242 2243 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2244 test_zero_clear 2245 test_ovf_clear 2246 test_neg_clear 2247 2248 test_h_gr32 word_dest-44 er0 2249 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2250 test_gr_a5a5 2 2251 test_gr_a5a5 3 2252 test_gr_a5a5 4 2253 test_gr_a5a5 5 2254 test_gr_a5a5 6 2255 test_gr_a5a5 7 2256 ; 1010 0101 1010 0101 -> 0000 0000 1010 0101 2257 cmp.w #0x00a5, @word_dest 2258 beq .Lwdisp168 2259 fail 2260.Lwdisp168: 2261 mov.w #0xa5a5, @word_dest 2262 2263shlr_w_disp32_8: 2264 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2265 set_ccr_zero 2266 2267 mov #word_dest-666, er0 2268 shlr.w #8, @(666:32, er0) ; shift right logical by eight, disp32 2269;;; .word 0x7884 2270;;; .word 0x6b28 2271;;; .long 666 2272;;; .word 0x1160 2273 2274 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2275 test_zero_clear 2276 test_ovf_clear 2277 test_neg_clear 2278 2279 test_h_gr32 word_dest-666 er0 2280 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2281 test_gr_a5a5 2 2282 test_gr_a5a5 3 2283 test_gr_a5a5 4 2284 test_gr_a5a5 5 2285 test_gr_a5a5 6 2286 test_gr_a5a5 7 2287 ; 1010 0101 1010 0101 -> 0000 0000 1010 0101 2288 cmp.w #0x00a5, @word_dest 2289 beq .Lwdisp328 2290 fail 2291.Lwdisp328: 2292 mov.w #0xa5a5, @word_dest 2293 2294shlr_w_abs16_8: 2295 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2296 set_ccr_zero 2297 2298 shlr.w #8, @word_dest:16 ; shift right logical by eight, abs16 2299;;; .word 0x6b18 2300;;; .word word_dest 2301;;; .word 0x1160 2302 2303 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2304 test_zero_clear 2305 test_ovf_clear 2306 test_neg_clear 2307 2308 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 2309 test_gr_a5a5 2 2310 test_gr_a5a5 2 2311 test_gr_a5a5 3 2312 test_gr_a5a5 4 2313 test_gr_a5a5 5 2314 test_gr_a5a5 6 2315 test_gr_a5a5 7 2316 ; 1010 0101 1010 0101 -> 0000 0000 1010 0101 2317 cmp.w #0x00a5, @word_dest 2318 beq .Lwabs168 2319 fail 2320.Lwabs168: 2321 mov.w #0xa5a5, @word_dest 2322 2323shlr_w_abs32_8: 2324 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2325 set_ccr_zero 2326 2327 shlr.w #8, @word_dest:32 ; shift right logical by eight, abs32 2328;;; .word 0x6b38 2329;;; .long word_dest 2330;;; .word 0x1160 2331 2332 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2333 test_zero_clear 2334 test_ovf_clear 2335 test_neg_clear 2336 2337 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 2338 test_gr_a5a5 2 2339 test_gr_a5a5 2 2340 test_gr_a5a5 3 2341 test_gr_a5a5 4 2342 test_gr_a5a5 5 2343 test_gr_a5a5 6 2344 test_gr_a5a5 7 2345 ; 1010 0101 1010 0101 -> 0000 0000 1010 0101 2346 cmp.w #0x00a5, @word_dest 2347 beq .Lwabs328 2348 fail 2349.Lwabs328: 2350 mov.w #0xa5a5, @word_dest 2351 2352shlr_l_imm5_1: 2353 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2354 set_ccr_zero 2355 2356 shlr.l #31:5, er0 ; shift right logical by 5-bit immediate 2357;;; .word 0x0399 2358;;; .word 0x1130 2359 2360 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 2361 test_zero_clear 2362 test_ovf_clear 2363 test_neg_clear 2364 2365 ; 1010 0101 1010 0101 1010 0101 1010 0101 2366 ; -> 0000 0000 0000 0000 0000 0000 0000 0001 2367 test_h_gr32 0x1 er0 2368 2369 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2370 test_gr_a5a5 2 2371 test_gr_a5a5 3 2372 test_gr_a5a5 4 2373 test_gr_a5a5 5 2374 test_gr_a5a5 6 2375 test_gr_a5a5 7 2376.endif 2377 2378shlr_l_reg32_1: 2379 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2380 set_ccr_zero 2381 2382 shlr.l er0 ; shift right logical by one, register 2383;;; .word 0x1130 2384 2385 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2386 test_zero_clear 2387 test_ovf_clear 2388 test_neg_clear 2389 2390 ; 1010 0101 1010 0101 1010 0101 1010 0101 2391 ; -> 0101 0010 1101 0010 1101 0010 1101 0010 2392 test_h_gr32 0x52d2d2d2 er0 2393 2394 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2395 test_gr_a5a5 2 2396 test_gr_a5a5 3 2397 test_gr_a5a5 4 2398 test_gr_a5a5 5 2399 test_gr_a5a5 6 2400 test_gr_a5a5 7 2401 2402.if (sim_cpu == h8sx) 2403shlr_l_ind_1: 2404 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2405 set_ccr_zero 2406 2407 mov #long_dest, er0 2408 shlr.l @er0 ; shift right logical by one, indirect 2409;;; .word 0x0104 2410;;; .word 0x6908 2411;;; .word 0x1130 2412 2413 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2414 test_zero_clear 2415 test_ovf_clear 2416 test_neg_clear 2417 2418 test_h_gr32 long_dest er0 2419 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2420 test_gr_a5a5 2 2421 test_gr_a5a5 3 2422 test_gr_a5a5 4 2423 test_gr_a5a5 5 2424 test_gr_a5a5 6 2425 test_gr_a5a5 7 2426 ; 1010 0101 1010 0101 1010 0101 1010 0101 2427 ;; -> 0101 0010 1101 0010 1101 0010 1101 0010 2428 cmp.l #0x52d2d2d2, @long_dest 2429 beq .Llind1 2430 fail 2431.Llind1: 2432 mov #0xa5a5a5a5, @long_dest 2433 2434shlr_l_postinc_1: 2435 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2436 set_ccr_zero 2437 2438 mov #long_dest, er0 2439 shlr.l @er0+ ; shift right logical by one, postinc 2440;;; .word 0x0104 2441;;; .word 0x6d08 2442;;; .word 0x1130 2443 2444 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2445 test_zero_clear 2446 test_ovf_clear 2447 test_neg_clear 2448 2449 test_h_gr32 long_dest+4 er0 2450 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2451 test_gr_a5a5 2 2452 test_gr_a5a5 3 2453 test_gr_a5a5 4 2454 test_gr_a5a5 5 2455 test_gr_a5a5 6 2456 test_gr_a5a5 7 2457 ; 1010 0101 1010 0101 1010 0101 1010 0101 2458 ;; -> 0101 0010 1101 0010 1101 0010 1101 0010 2459 cmp.l #0x52d2d2d2, @long_dest 2460 beq .Llpostinc1 2461 fail 2462.Llpostinc1: 2463 mov #0xa5a5a5a5, @long_dest 2464 2465shlr_l_postdec_1: 2466 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2467 set_ccr_zero 2468 2469 mov #long_dest, er0 2470 shlr.l @er0- ; shift right logical by one, postdec 2471;;; .word 0x0106 2472;;; .word 0x6d08 2473;;; .word 0x1130 2474 2475 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2476 test_zero_clear 2477 test_ovf_clear 2478 test_neg_clear 2479 2480 test_h_gr32 long_dest-4 er0 2481 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2482 test_gr_a5a5 2 2483 test_gr_a5a5 3 2484 test_gr_a5a5 4 2485 test_gr_a5a5 5 2486 test_gr_a5a5 6 2487 test_gr_a5a5 7 2488 ; 1010 0101 1010 0101 1010 0101 1010 0101 2489 ;; -> 0101 0010 1101 0010 1101 0010 1101 0010 2490 cmp.l #0x52d2d2d2, @long_dest 2491 beq .Llpostdec1 2492 fail 2493.Llpostdec1: 2494 mov #0xa5a5a5a5, @long_dest 2495 2496shlr_l_preinc_1: 2497 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2498 set_ccr_zero 2499 2500 mov #long_dest-4, er0 2501 shlr.l @+er0 ; shift right logical by one, preinc 2502;;; .word 0x0105 2503;;; .word 0x6d08 2504;;; .word 0x1130 2505 2506 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2507 test_zero_clear 2508 test_ovf_clear 2509 test_neg_clear 2510 2511 test_h_gr32 long_dest er0 2512 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2513 test_gr_a5a5 2 2514 test_gr_a5a5 3 2515 test_gr_a5a5 4 2516 test_gr_a5a5 5 2517 test_gr_a5a5 6 2518 test_gr_a5a5 7 2519 ; 1010 0101 1010 0101 1010 0101 1010 0101 2520 ;; -> 0101 0010 1101 0010 1101 0010 1101 0010 2521 cmp.l #0x52d2d2d2, @long_dest 2522 beq .Llpreinc1 2523 fail 2524.Llpreinc1: 2525 mov #0xa5a5a5a5, @long_dest 2526 2527shlr_l_predec_1: 2528 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2529 set_ccr_zero 2530 2531 mov #long_dest+4, er0 2532 shlr.l @-er0 ; shift right logical by one, predec 2533;;; .word 0x0107 2534;;; .word 0x6d08 2535;;; .word 0x1130 2536 2537 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2538 test_zero_clear 2539 test_ovf_clear 2540 test_neg_clear 2541 2542 test_h_gr32 long_dest er0 2543 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2544 test_gr_a5a5 2 2545 test_gr_a5a5 3 2546 test_gr_a5a5 4 2547 test_gr_a5a5 5 2548 test_gr_a5a5 6 2549 test_gr_a5a5 7 2550 ; 1010 0101 1010 0101 1010 0101 1010 0101 2551 ;; -> 0101 0010 1101 0010 1101 0010 1101 0010 2552 cmp.l #0x52d2d2d2, @long_dest 2553 beq .Llpredec1 2554 fail 2555.Llpredec1: 2556 mov #0xa5a5a5a5, @long_dest 2557 2558shlr_l_disp2_1: 2559 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2560 set_ccr_zero 2561 2562 mov #long_dest-8, er0 2563 shlr.l @(8:2, er0) ; shift right logical by one, disp2 2564;;; .word 0x0106 2565;;; .word 0x6908 2566;;; .word 0x1130 2567 2568 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2569 test_zero_clear 2570 test_ovf_clear 2571 test_neg_clear 2572 2573 test_h_gr32 long_dest-8 er0 2574 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2575 test_gr_a5a5 2 2576 test_gr_a5a5 3 2577 test_gr_a5a5 4 2578 test_gr_a5a5 5 2579 test_gr_a5a5 6 2580 test_gr_a5a5 7 2581 ; 1010 0101 1010 0101 1010 0101 1010 0101 2582 ;; -> 0101 0010 1101 0010 1101 0010 1101 0010 2583 cmp.l #0x52d2d2d2, @long_dest 2584 beq .Lldisp21 2585 fail 2586.Lldisp21: 2587 mov #0xa5a5a5a5, @long_dest 2588 2589shlr_l_disp16_1: 2590 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2591 set_ccr_zero 2592 2593 mov #long_dest-44, er0 2594 shlr.l @(44:16, er0) ; shift right logical by one, disp16 2595;;; .word 0x0104 2596;;; .word 0x6f08 2597;;; .word 44 2598;;; .word 0x1130 2599 2600 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2601 test_zero_clear 2602 test_ovf_clear 2603 test_neg_clear 2604 2605 test_h_gr32 long_dest-44 er0 2606 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2607 test_gr_a5a5 2 2608 test_gr_a5a5 3 2609 test_gr_a5a5 4 2610 test_gr_a5a5 5 2611 test_gr_a5a5 6 2612 test_gr_a5a5 7 2613 ; 1010 0101 1010 0101 1010 0101 1010 0101 2614 ;; -> 0101 0010 1101 0010 1101 0010 1101 0010 2615 cmp.l #0x52d2d2d2, @long_dest 2616 beq .Lldisp161 2617 fail 2618.Lldisp161: 2619 mov #0xa5a5a5a5, @long_dest 2620 2621shlr_l_disp32_1: 2622 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2623 set_ccr_zero 2624 2625 mov #long_dest-666, er0 2626 shlr.l @(666:32, er0) ; shift right logical by one, disp32 2627;;; .word 0x7884 2628;;; .word 0x6b28 2629;;; .long 666 2630;;; .word 0x1130 2631 2632 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2633 test_zero_clear 2634 test_ovf_clear 2635 test_neg_clear 2636 2637 test_h_gr32 long_dest-666 er0 2638 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2639 test_gr_a5a5 2 2640 test_gr_a5a5 3 2641 test_gr_a5a5 4 2642 test_gr_a5a5 5 2643 test_gr_a5a5 6 2644 test_gr_a5a5 7 2645 ; 1010 0101 1010 0101 1010 0101 1010 0101 2646 ;; -> 0101 0010 1101 0010 1101 0010 1101 0010 2647 cmp.l #0x52d2d2d2, @long_dest 2648 beq .Lldisp321 2649 fail 2650.Lldisp321: 2651 mov #0xa5a5a5a5, @long_dest 2652 2653shlr_l_abs16_1: 2654 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2655 set_ccr_zero 2656 2657 shlr.l @long_dest:16 ; shift right logical by one, abs16 2658;;; .word 0x0104 2659;;; .word 0x6b08 2660;;; .word long_dest 2661;;; .word 0x1130 2662 2663 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2664 test_zero_clear 2665 test_ovf_clear 2666 test_neg_clear 2667 2668 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 2669 test_gr_a5a5 1 2670 test_gr_a5a5 2 2671 test_gr_a5a5 3 2672 test_gr_a5a5 4 2673 test_gr_a5a5 5 2674 test_gr_a5a5 6 2675 test_gr_a5a5 7 2676 ; 1010 0101 1010 0101 1010 0101 1010 0101 2677 ;; -> 0101 0010 1101 0010 1101 0010 1101 0010 2678 cmp.l #0x52d2d2d2, @long_dest 2679 beq .Llabs161 2680 fail 2681.Llabs161: 2682 mov #0xa5a5a5a5, @long_dest 2683 2684shlr_l_abs32_1: 2685 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2686 set_ccr_zero 2687 2688 shlr.l @long_dest:32 ; shift right logical by one, abs32 2689;;; .word 0x0104 2690;;; .word 0x6b28 2691;;; .long long_dest 2692;;; .word 0x1130 2693 2694 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 2695 test_zero_clear 2696 test_ovf_clear 2697 test_neg_clear 2698 2699 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 2700 test_gr_a5a5 1 2701 test_gr_a5a5 2 2702 test_gr_a5a5 3 2703 test_gr_a5a5 4 2704 test_gr_a5a5 5 2705 test_gr_a5a5 6 2706 test_gr_a5a5 7 2707 ; 1010 0101 1010 0101 1010 0101 1010 0101 2708 ;; -> 0101 0010 1101 0010 1101 0010 1101 0010 2709 cmp.l #0x52d2d2d2, @long_dest 2710 beq .Llabs321 2711 fail 2712.Llabs321: 2713 mov #0xa5a5a5a5, @long_dest 2714.endif 2715 2716shlr_l_reg32_2: 2717 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2718 set_ccr_zero 2719 2720 shlr.l #2, er0 ; shift right logical by two, register 2721;;; .word 0x1170 2722 2723 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 2724 test_zero_clear 2725 test_ovf_clear 2726 test_neg_clear 2727 ; 1010 0101 1010 0101 1010 0101 1010 0101 2728 ; -> 0010 1001 0110 1001 0110 1001 0110 1001 2729 test_h_gr32 0x29696969 er0 2730 2731 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2732 test_gr_a5a5 2 2733 test_gr_a5a5 3 2734 test_gr_a5a5 4 2735 test_gr_a5a5 5 2736 test_gr_a5a5 6 2737 test_gr_a5a5 7 2738 2739.if (sim_cpu == h8sx) 2740 2741shlr_l_ind_2: 2742 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2743 set_ccr_zero 2744 2745 mov #long_dest, er0 2746 shlr.l #2, @er0 ; shift right logical by two, indirect 2747;;; .word 0x0104 2748;;; .word 0x6908 2749;;; .word 0x1170 2750 2751 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 2752 test_zero_clear 2753 test_ovf_clear 2754 test_neg_clear 2755 2756 test_h_gr32 long_dest er0 2757 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2758 test_gr_a5a5 2 2759 test_gr_a5a5 3 2760 test_gr_a5a5 4 2761 test_gr_a5a5 5 2762 test_gr_a5a5 6 2763 test_gr_a5a5 7 2764 ; 1010 0101 1010 0101 1010 0101 1010 0101 2765 ;; -> 0010 1001 0110 1001 0110 1001 0110 1001 2766 cmp.l #0x29696969, @long_dest 2767 beq .Llind2 2768 fail 2769.Llind2: 2770 mov #0xa5a5a5a5, @long_dest 2771 2772shlr_l_postinc_2: 2773 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2774 set_ccr_zero 2775 2776 mov #long_dest, er0 2777 shlr.l #2, @er0+ ; shift right logical by two, postinc 2778;;; .word 0x0104 2779;;; .word 0x6d08 2780;;; .word 0x1170 2781 2782 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 2783 test_zero_clear 2784 test_ovf_clear 2785 test_neg_clear 2786 2787 test_h_gr32 long_dest+4 er0 2788 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2789 test_gr_a5a5 2 2790 test_gr_a5a5 3 2791 test_gr_a5a5 4 2792 test_gr_a5a5 5 2793 test_gr_a5a5 6 2794 test_gr_a5a5 7 2795 ; 1010 0101 1010 0101 1010 0101 1010 0101 2796 ;; -> 0010 1001 0110 1001 0110 1001 0110 1001 2797 cmp.l #0x29696969, @long_dest 2798 beq .Llpostinc2 2799 fail 2800.Llpostinc2: 2801 mov #0xa5a5a5a5, @long_dest 2802 2803shlr_l_postdec_2: 2804 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2805 set_ccr_zero 2806 2807 mov #long_dest, er0 2808 shlr.l #2, @er0- ; shift right logical by two, postdec 2809;;; .word 0x0106 2810;;; .word 0x6d08 2811;;; .word 0x1170 2812 2813 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 2814 test_zero_clear 2815 test_ovf_clear 2816 test_neg_clear 2817 2818 test_h_gr32 long_dest-4 er0 2819 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2820 test_gr_a5a5 2 2821 test_gr_a5a5 3 2822 test_gr_a5a5 4 2823 test_gr_a5a5 5 2824 test_gr_a5a5 6 2825 test_gr_a5a5 7 2826 ; 1010 0101 1010 0101 1010 0101 1010 0101 2827 ;; -> 0010 1001 0110 1001 0110 1001 0110 1001 2828 cmp.l #0x29696969, @long_dest 2829 beq .Llpostdec2 2830 fail 2831.Llpostdec2: 2832 mov #0xa5a5a5a5, @long_dest 2833 2834shlr_l_preinc_2: 2835 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2836 set_ccr_zero 2837 2838 mov #long_dest-4, er0 2839 shlr.l #2, @+er0 ; shift right logical by two, preinc 2840;;; .word 0x0105 2841;;; .word 0x6d08 2842;;; .word 0x1170 2843 2844 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 2845 test_zero_clear 2846 test_ovf_clear 2847 test_neg_clear 2848 2849 test_h_gr32 long_dest er0 2850 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2851 test_gr_a5a5 2 2852 test_gr_a5a5 3 2853 test_gr_a5a5 4 2854 test_gr_a5a5 5 2855 test_gr_a5a5 6 2856 test_gr_a5a5 7 2857 ; 1010 0101 1010 0101 1010 0101 1010 0101 2858 ;; -> 0010 1001 0110 1001 0110 1001 0110 1001 2859 cmp.l #0x29696969, @long_dest 2860 beq .Llpreinc2 2861 fail 2862.Llpreinc2: 2863 mov #0xa5a5a5a5, @long_dest 2864 2865shlr_l_predec_2: 2866 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2867 set_ccr_zero 2868 2869 mov #long_dest+4, er0 2870 shlr.l #2, @-er0 ; shift right logical by two, predec 2871;;; .word 0x0107 2872;;; .word 0x6d08 2873;;; .word 0x1170 2874 2875 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 2876 test_zero_clear 2877 test_ovf_clear 2878 test_neg_clear 2879 2880 test_h_gr32 long_dest er0 2881 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2882 test_gr_a5a5 2 2883 test_gr_a5a5 3 2884 test_gr_a5a5 4 2885 test_gr_a5a5 5 2886 test_gr_a5a5 6 2887 test_gr_a5a5 7 2888 ; 1010 0101 1010 0101 1010 0101 1010 0101 2889 ;; -> 0010 1001 0110 1001 0110 1001 0110 1001 2890 cmp.l #0x29696969, @long_dest 2891 beq .Llpredec2 2892 fail 2893.Llpredec2: 2894 mov #0xa5a5a5a5, @long_dest 2895 2896shlr_l_disp2_2: 2897 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2898 set_ccr_zero 2899 2900 mov #long_dest-8, er0 2901 shlr.l #2, @(8:2, er0) ; shift right logical by two, disp2 2902;;; .word 0x0106 2903;;; .word 0x6908 2904;;; .word 0x1170 2905 2906 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 2907 test_zero_clear 2908 test_ovf_clear 2909 test_neg_clear 2910 2911 test_h_gr32 long_dest-8 er0 2912 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2913 test_gr_a5a5 2 2914 test_gr_a5a5 3 2915 test_gr_a5a5 4 2916 test_gr_a5a5 5 2917 test_gr_a5a5 6 2918 test_gr_a5a5 7 2919 ; 1010 0101 1010 0101 1010 0101 1010 0101 2920 ;; -> 0010 1001 0110 1001 0110 1001 0110 1001 2921 cmp.l #0x29696969, @long_dest 2922 beq .Lldisp22 2923 fail 2924.Lldisp22: 2925 mov #0xa5a5a5a5, @long_dest 2926 2927shlr_l_disp16_2: 2928 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2929 set_ccr_zero 2930 2931 mov #long_dest-44, er0 2932 shlr.l #2, @(44:16, er0) ; shift right logical by two, disp16 2933;;; .word 0x0104 2934;;; .word 0x6f08 2935;;; .word 44 2936;;; .word 0x1170 2937 2938 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 2939 test_zero_clear 2940 test_ovf_clear 2941 test_neg_clear 2942 2943 test_h_gr32 long_dest-44 er0 2944 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2945 test_gr_a5a5 2 2946 test_gr_a5a5 3 2947 test_gr_a5a5 4 2948 test_gr_a5a5 5 2949 test_gr_a5a5 6 2950 test_gr_a5a5 7 2951 ; 1010 0101 1010 0101 1010 0101 1010 0101 2952 ;; -> 0010 1001 0110 1001 0110 1001 0110 1001 2953 cmp.l #0x29696969, @long_dest 2954 beq .Lldisp162 2955 fail 2956.Lldisp162: 2957 mov #0xa5a5a5a5, @long_dest 2958 2959shlr_l_disp32_2: 2960 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2961 set_ccr_zero 2962 2963 mov #long_dest-666, er0 2964 shlr.l #2, @(666:32, er0) ; shift right logical by two, disp32 2965;;; .word 0x7884 2966;;; .word 0x6b28 2967;;; .long 666 2968;;; .word 0x1170 2969 2970 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 2971 test_zero_clear 2972 test_ovf_clear 2973 test_neg_clear 2974 2975 test_h_gr32 long_dest-666 er0 2976 test_gr_a5a5 1 ; Make sure other general regs not disturbed 2977 test_gr_a5a5 2 2978 test_gr_a5a5 3 2979 test_gr_a5a5 4 2980 test_gr_a5a5 5 2981 test_gr_a5a5 6 2982 test_gr_a5a5 7 2983 ; 1010 0101 1010 0101 1010 0101 1010 0101 2984 ;; -> 0010 1001 0110 1001 0110 1001 0110 1001 2985 cmp.l #0x29696969, @long_dest 2986 beq .Lldisp322 2987 fail 2988.Lldisp322: 2989 mov #0xa5a5a5a5, @long_dest 2990 2991shlr_l_abs16_2: 2992 set_grs_a5a5 ; Fill all general regs with a fixed pattern 2993 set_ccr_zero 2994 2995 shlr.l #2, @long_dest:16 ; shift right logical by two, abs16 2996;;; .word 0x0104 2997;;; .word 0x6b08 2998;;; .word long_dest 2999;;; .word 0x1170 3000 3001 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 3002 test_zero_clear 3003 test_ovf_clear 3004 test_neg_clear 3005 3006 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 3007 test_gr_a5a5 1 3008 test_gr_a5a5 2 3009 test_gr_a5a5 3 3010 test_gr_a5a5 4 3011 test_gr_a5a5 5 3012 test_gr_a5a5 6 3013 test_gr_a5a5 7 3014 ; 1010 0101 1010 0101 1010 0101 1010 0101 3015 ;; -> 0010 1001 0110 1001 0110 1001 0110 1001 3016 cmp.l #0x29696969, @long_dest 3017 beq .Llabs162 3018 fail 3019.Llabs162: 3020 mov #0xa5a5a5a5, @long_dest 3021 3022shlr_l_abs32_2: 3023 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3024 set_ccr_zero 3025 3026 shlr.l #2, @long_dest:32 ; shift right logical by two, abs32 3027;;; .word 0x0104 3028;;; .word 0x6b28 3029;;; .long long_dest 3030;;; .word 0x1170 3031 3032 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 3033 test_zero_clear 3034 test_ovf_clear 3035 test_neg_clear 3036 3037 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 3038 test_gr_a5a5 1 3039 test_gr_a5a5 2 3040 test_gr_a5a5 3 3041 test_gr_a5a5 4 3042 test_gr_a5a5 5 3043 test_gr_a5a5 6 3044 test_gr_a5a5 7 3045 ; 1010 0101 1010 0101 1010 0101 1010 0101 3046 ;; -> 0010 1001 0110 1001 0110 1001 0110 1001 3047 cmp.l #0x29696969, @long_dest 3048 beq .Llabs322 3049 fail 3050.Llabs322: 3051 mov #0xa5a5a5a5, @long_dest 3052 3053shlr_l_reg32_4: 3054 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3055 set_ccr_zero 3056 3057 shlr.l #4, er0 ; shift right logical by four, register 3058;;; .word 0x1138 3059 3060 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 3061 test_zero_clear 3062 test_ovf_clear 3063 test_neg_clear 3064 ; 1010 0101 1010 0101 1010 0101 1010 0101 3065 ; -> 0000 1010 0101 1010 0101 1010 0101 1010 3066 test_h_gr32 0x0a5a5a5a er0 3067 3068 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3069 test_gr_a5a5 2 3070 test_gr_a5a5 3 3071 test_gr_a5a5 4 3072 test_gr_a5a5 5 3073 test_gr_a5a5 6 3074 test_gr_a5a5 7 3075 3076shlr_l_reg32_reg8: 3077 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3078 set_ccr_zero 3079 3080 mov #5, r1l 3081 shlr.l r1l, er0 ; shift right logical by value of register 3082 3083 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 3084 test_zero_clear 3085 test_ovf_clear 3086 test_neg_clear 3087 ; 1010 0101 1010 0101 1010 0101 1010 0101 3088 ; -> 0000 0101 0010 1101 0010 1101 0010 1101 3089 test_h_gr32 0x052d2d2d er0 3090 test_h_gr32 0xa5a5a505 er1 3091 3092 test_gr_a5a5 2 ; Make sure other general regs not disturbed 3093 test_gr_a5a5 3 3094 test_gr_a5a5 4 3095 test_gr_a5a5 5 3096 test_gr_a5a5 6 3097 test_gr_a5a5 7 3098 3099shlr_l_ind_4: 3100 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3101 set_ccr_zero 3102 3103 mov #long_dest, er0 3104 shlr.l #4, @er0 ; shift right logical by four, indirect 3105;;; .word 0x0104 3106;;; .word 0x6908 3107;;; .word 0x1138 3108 3109 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 3110 test_zero_clear 3111 test_ovf_clear 3112 test_neg_clear 3113 3114 test_h_gr32 long_dest er0 3115 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3116 test_gr_a5a5 2 3117 test_gr_a5a5 3 3118 test_gr_a5a5 4 3119 test_gr_a5a5 5 3120 test_gr_a5a5 6 3121 test_gr_a5a5 7 3122 ; 1010 0101 1010 0101 1010 0101 1010 0101 3123 ;; -> 0000 1010 0101 1010 0101 1010 0101 1010 3124 cmp.l #0x0a5a5a5a, @long_dest 3125 beq .Llind4 3126 fail 3127.Llind4: 3128 mov #0xa5a5a5a5, @long_dest 3129 3130shlr_l_postinc_4: 3131 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3132 set_ccr_zero 3133 3134 mov #long_dest, er0 3135 shlr.l #4, @er0+ ; shift right logical by four, postinc 3136;;; .word 0x0104 3137;;; .word 0x6d08 3138;;; .word 0x1138 3139 3140 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 3141 test_zero_clear 3142 test_ovf_clear 3143 test_neg_clear 3144 3145 test_h_gr32 long_dest+4 er0 3146 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3147 test_gr_a5a5 2 3148 test_gr_a5a5 3 3149 test_gr_a5a5 4 3150 test_gr_a5a5 5 3151 test_gr_a5a5 6 3152 test_gr_a5a5 7 3153 ; 1010 0101 1010 0101 1010 0101 1010 0101 3154 ;; -> 0000 1010 0101 1010 0101 1010 0101 1010 3155 cmp.l #0x0a5a5a5a, @long_dest 3156 beq .Llpostinc4 3157 fail 3158.Llpostinc4: 3159 mov #0xa5a5a5a5, @long_dest 3160 3161shlr_l_postdec_4: 3162 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3163 set_ccr_zero 3164 3165 mov #long_dest, er0 3166 shlr.l #4, @er0- ; shift right logical by four, postdec 3167;;; .word 0x0106 3168;;; .word 0x6d08 3169;;; .word 0x1138 3170 3171 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 3172 test_zero_clear 3173 test_ovf_clear 3174 test_neg_clear 3175 3176 test_h_gr32 long_dest-4 er0 3177 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3178 test_gr_a5a5 2 3179 test_gr_a5a5 3 3180 test_gr_a5a5 4 3181 test_gr_a5a5 5 3182 test_gr_a5a5 6 3183 test_gr_a5a5 7 3184 ; 1010 0101 1010 0101 1010 0101 1010 0101 3185 ;; -> 0000 1010 0101 1010 0101 1010 0101 1010 3186 cmp.l #0x0a5a5a5a, @long_dest 3187 beq .Llpostdec4 3188 fail 3189.Llpostdec4: 3190 mov #0xa5a5a5a5, @long_dest 3191 3192shlr_l_preinc_4: 3193 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3194 set_ccr_zero 3195 3196 mov #long_dest-4, er0 3197 shlr.l #4, @+er0 ; shift right logical by four, preinc 3198;;; .word 0x0105 3199;;; .word 0x6d08 3200;;; .word 0x1138 3201 3202 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 3203 test_zero_clear 3204 test_ovf_clear 3205 test_neg_clear 3206 3207 test_h_gr32 long_dest er0 3208 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3209 test_gr_a5a5 2 3210 test_gr_a5a5 3 3211 test_gr_a5a5 4 3212 test_gr_a5a5 5 3213 test_gr_a5a5 6 3214 test_gr_a5a5 7 3215 ; 1010 0101 1010 0101 1010 0101 1010 0101 3216 ;; -> 0000 1010 0101 1010 0101 1010 0101 1010 3217 cmp.l #0x0a5a5a5a, @long_dest 3218 beq .Llpreinc4 3219 fail 3220.Llpreinc4: 3221 mov #0xa5a5a5a5, @long_dest 3222 3223shlr_l_predec_4: 3224 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3225 set_ccr_zero 3226 3227 mov #long_dest+4, er0 3228 shlr.l #4, @-er0 ; shift right logical by four, predec 3229;;; .word 0x0107 3230;;; .word 0x6d08 3231;;; .word 0x1138 3232 3233 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 3234 test_zero_clear 3235 test_ovf_clear 3236 test_neg_clear 3237 3238 test_h_gr32 long_dest er0 3239 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3240 test_gr_a5a5 2 3241 test_gr_a5a5 3 3242 test_gr_a5a5 4 3243 test_gr_a5a5 5 3244 test_gr_a5a5 6 3245 test_gr_a5a5 7 3246 ; 1010 0101 1010 0101 1010 0101 1010 0101 3247 ;; -> 0000 1010 0101 1010 0101 1010 0101 1010 3248 cmp.l #0x0a5a5a5a, @long_dest 3249 beq .Llpredec4 3250 fail 3251.Llpredec4: 3252 mov #0xa5a5a5a5, @long_dest 3253 3254shlr_l_disp2_4: 3255 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3256 set_ccr_zero 3257 3258 mov #long_dest-8, er0 3259 shlr.l #4, @(8:2, er0) ; shift right logical by four, disp2 3260;;; .word 0x0106 3261;;; .word 0x6908 3262;;; .word 0x1138 3263 3264 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 3265 test_zero_clear 3266 test_ovf_clear 3267 test_neg_clear 3268 3269 test_h_gr32 long_dest-8 er0 3270 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3271 test_gr_a5a5 2 3272 test_gr_a5a5 3 3273 test_gr_a5a5 4 3274 test_gr_a5a5 5 3275 test_gr_a5a5 6 3276 test_gr_a5a5 7 3277 ; 1010 0101 1010 0101 1010 0101 1010 0101 3278 ;; -> 0000 1010 0101 1010 0101 1010 0101 1010 3279 cmp.l #0x0a5a5a5a, @long_dest 3280 beq .Lldisp24 3281 fail 3282.Lldisp24: 3283 mov #0xa5a5a5a5, @long_dest 3284 3285shlr_l_disp16_4: 3286 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3287 set_ccr_zero 3288 3289 mov #long_dest-44, er0 3290 shlr.l #4, @(44:16, er0) ; shift right logical by four, disp16 3291;;; .word 0x0104 3292;;; .word 0x6f08 3293;;; .word 44 3294;;; .word 0x1138 3295 3296 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 3297 test_zero_clear 3298 test_ovf_clear 3299 test_neg_clear 3300 3301 test_h_gr32 long_dest-44 er0 3302 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3303 test_gr_a5a5 2 3304 test_gr_a5a5 3 3305 test_gr_a5a5 4 3306 test_gr_a5a5 5 3307 test_gr_a5a5 6 3308 test_gr_a5a5 7 3309 ; 1010 0101 1010 0101 1010 0101 1010 0101 3310 ;; -> 0000 1010 0101 1010 0101 1010 0101 1010 3311 cmp.l #0x0a5a5a5a, @long_dest 3312 beq .Lldisp164 3313 fail 3314.Lldisp164: 3315 mov #0xa5a5a5a5, @long_dest 3316 3317shlr_l_disp32_4: 3318 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3319 set_ccr_zero 3320 3321 mov #long_dest-666, er0 3322 shlr.l #4, @(666:32, er0) ; shift right logical by four, disp32 3323;;; .word 0x7884 3324;;; .word 0x6b28 3325;;; .long 666 3326;;; .word 0x1138 3327 3328 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 3329 test_zero_clear 3330 test_ovf_clear 3331 test_neg_clear 3332 3333 test_h_gr32 long_dest-666 er0 3334 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3335 test_gr_a5a5 2 3336 test_gr_a5a5 3 3337 test_gr_a5a5 4 3338 test_gr_a5a5 5 3339 test_gr_a5a5 6 3340 test_gr_a5a5 7 3341 ; 1010 0101 1010 0101 1010 0101 1010 0101 3342 ;; -> 0000 1010 0101 1010 0101 1010 0101 1010 3343 cmp.l #0x0a5a5a5a, @long_dest 3344 beq .Lldisp324 3345 fail 3346.Lldisp324: 3347 mov #0xa5a5a5a5, @long_dest 3348 3349shlr_l_abs16_4: 3350 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3351 set_ccr_zero 3352 3353 shlr.l #4, @long_dest:16 ; shift right logical by four, abs16 3354;;; .word 0x0104 3355;;; .word 0x6b08 3356;;; .word long_dest 3357;;; .word 0x1138 3358 3359 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 3360 test_zero_clear 3361 test_ovf_clear 3362 test_neg_clear 3363 3364 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 3365 test_gr_a5a5 1 3366 test_gr_a5a5 2 3367 test_gr_a5a5 3 3368 test_gr_a5a5 4 3369 test_gr_a5a5 5 3370 test_gr_a5a5 6 3371 test_gr_a5a5 7 3372 ; 1010 0101 1010 0101 1010 0101 1010 0101 3373 ;; -> 0000 1010 0101 1010 0101 1010 0101 1010 3374 cmp.l #0x0a5a5a5a, @long_dest 3375 beq .Llabs164 3376 fail 3377.Llabs164: 3378 mov #0xa5a5a5a5, @long_dest 3379 3380shlr_l_abs32_4: 3381 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3382 set_ccr_zero 3383 3384 shlr.l #4, @long_dest:32 ; shift right logical by four, abs32 3385;;; .word 0x0104 3386;;; .word 0x6b28 3387;;; .long long_dest 3388;;; .word 0x1138 3389 3390 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0 3391 test_zero_clear 3392 test_ovf_clear 3393 test_neg_clear 3394 3395 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 3396 test_gr_a5a5 1 3397 test_gr_a5a5 2 3398 test_gr_a5a5 3 3399 test_gr_a5a5 4 3400 test_gr_a5a5 5 3401 test_gr_a5a5 6 3402 test_gr_a5a5 7 3403 ; 1010 0101 1010 0101 1010 0101 1010 0101 3404 ;; -> 0000 1010 0101 1010 0101 1010 0101 1010 3405 cmp.l #0x0a5a5a5a, @long_dest 3406 beq .Llabs324 3407 fail 3408.Llabs324: 3409 mov #0xa5a5a5a5, @long_dest 3410 3411shlr_l_reg32_8: 3412 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3413 set_ccr_zero 3414 3415 shlr.l #8, er0 ; shift right logical by eight, register 3416;;; .word 0x1178 3417 3418 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 3419 test_zero_clear 3420 test_ovf_clear 3421 test_neg_clear 3422 ; 1010 0101 1010 0101 1010 0101 1010 0101 3423 ; -> 0000 0000 1010 0101 1010 0101 1010 0101 3424 test_h_gr32 0x00a5a5a5 er0 3425 3426 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3427 test_gr_a5a5 2 3428 test_gr_a5a5 3 3429 test_gr_a5a5 4 3430 test_gr_a5a5 5 3431 test_gr_a5a5 6 3432 test_gr_a5a5 7 3433 3434shlr_l_ind_8: 3435 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3436 set_ccr_zero 3437 3438 mov #long_dest, er0 3439 shlr.l #8, @er0 ; shift right logical by eight, indirect 3440;;; .word 0x0104 3441;;; .word 0x6908 3442;;; .word 0x1178 3443 3444 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 3445 test_zero_clear 3446 test_ovf_clear 3447 test_neg_clear 3448 3449 test_h_gr32 long_dest er0 3450 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3451 test_gr_a5a5 2 3452 test_gr_a5a5 3 3453 test_gr_a5a5 4 3454 test_gr_a5a5 5 3455 test_gr_a5a5 6 3456 test_gr_a5a5 7 3457 ; 1010 0101 1010 0101 1010 0101 1010 0101 3458 ;; -> 0000 0000 1010 0101 1010 0101 1010 0101 3459 cmp.l #0x00a5a5a5, @long_dest 3460 beq .Llind8 3461 fail 3462.Llind8: 3463 mov #0xa5a5a5a5, @long_dest 3464 3465shlr_l_postinc_8: 3466 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3467 set_ccr_zero 3468 3469 mov #long_dest, er0 3470 shlr.l #8, @er0+ ; shift right logical by eight, postinc 3471;;; .word 0x0104 3472;;; .word 0x6d08 3473;;; .word 0x1178 3474 3475 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 3476 test_zero_clear 3477 test_ovf_clear 3478 test_neg_clear 3479 3480 test_h_gr32 long_dest+4 er0 3481 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3482 test_gr_a5a5 2 3483 test_gr_a5a5 3 3484 test_gr_a5a5 4 3485 test_gr_a5a5 5 3486 test_gr_a5a5 6 3487 test_gr_a5a5 7 3488 ; 1010 0101 1010 0101 1010 0101 1010 0101 3489 ;; -> 0000 0000 1010 0101 1010 0101 1010 0101 3490 cmp.l #0x00a5a5a5, @long_dest 3491 beq .Llpostinc8 3492 fail 3493.Llpostinc8: 3494 mov #0xa5a5a5a5, @long_dest 3495 3496shlr_l_postdec_8: 3497 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3498 set_ccr_zero 3499 3500 mov #long_dest, er0 3501 shlr.l #8, @er0- ; shift right logical by eight, postdec 3502;;; .word 0x0106 3503;;; .word 0x6d08 3504;;; .word 0x1178 3505 3506 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 3507 test_zero_clear 3508 test_ovf_clear 3509 test_neg_clear 3510 3511 test_h_gr32 long_dest-4 er0 3512 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3513 test_gr_a5a5 2 3514 test_gr_a5a5 3 3515 test_gr_a5a5 4 3516 test_gr_a5a5 5 3517 test_gr_a5a5 6 3518 test_gr_a5a5 7 3519 ; 1010 0101 1010 0101 1010 0101 1010 0101 3520 ;; -> 0000 0000 1010 0101 1010 0101 1010 0101 3521 cmp.l #0x00a5a5a5, @long_dest 3522 beq .Llpostdec8 3523 fail 3524.Llpostdec8: 3525 mov #0xa5a5a5a5, @long_dest 3526 3527shlr_l_preinc_8: 3528 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3529 set_ccr_zero 3530 3531 mov #long_dest-4, er0 3532 shlr.l #8, @+er0 ; shift right logical by eight, preinc 3533;;; .word 0x0105 3534;;; .word 0x6d08 3535;;; .word 0x1178 3536 3537 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 3538 test_zero_clear 3539 test_ovf_clear 3540 test_neg_clear 3541 3542 test_h_gr32 long_dest er0 3543 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3544 test_gr_a5a5 2 3545 test_gr_a5a5 3 3546 test_gr_a5a5 4 3547 test_gr_a5a5 5 3548 test_gr_a5a5 6 3549 test_gr_a5a5 7 3550 ; 1010 0101 1010 0101 1010 0101 1010 0101 3551 ;; -> 0000 0000 1010 0101 1010 0101 1010 0101 3552 cmp.l #0x00a5a5a5, @long_dest 3553 beq .Llpreinc8 3554 fail 3555.Llpreinc8: 3556 mov #0xa5a5a5a5, @long_dest 3557 3558shlr_l_predec_8: 3559 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3560 set_ccr_zero 3561 3562 mov #long_dest+4, er0 3563 shlr.l #8, @-er0 ; shift right logical by eight, predec 3564;;; .word 0x0107 3565;;; .word 0x6d08 3566;;; .word 0x1178 3567 3568 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 3569 test_zero_clear 3570 test_ovf_clear 3571 test_neg_clear 3572 3573 test_h_gr32 long_dest er0 3574 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3575 test_gr_a5a5 2 3576 test_gr_a5a5 3 3577 test_gr_a5a5 4 3578 test_gr_a5a5 5 3579 test_gr_a5a5 6 3580 test_gr_a5a5 7 3581 ; 1010 0101 1010 0101 1010 0101 1010 0101 3582 ;; -> 0000 0000 1010 0101 1010 0101 1010 0101 3583 cmp.l #0x00a5a5a5, @long_dest 3584 beq .Llpredec8 3585 fail 3586.Llpredec8: 3587 mov #0xa5a5a5a5, @long_dest 3588 3589shlr_l_disp2_8: 3590 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3591 set_ccr_zero 3592 3593 mov #long_dest-8, er0 3594 shlr.l #8, @(8:2, er0) ; shift right logical by eight, disp2 3595;;; .word 0x0106 3596;;; .word 0x6908 3597;;; .word 0x1178 3598 3599 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 3600 test_zero_clear 3601 test_ovf_clear 3602 test_neg_clear 3603 3604 test_h_gr32 long_dest-8 er0 3605 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3606 test_gr_a5a5 2 3607 test_gr_a5a5 3 3608 test_gr_a5a5 4 3609 test_gr_a5a5 5 3610 test_gr_a5a5 6 3611 test_gr_a5a5 7 3612 ; 1010 0101 1010 0101 1010 0101 1010 0101 3613 ;; -> 0000 0000 1010 0101 1010 0101 1010 0101 3614 cmp.l #0x00a5a5a5, @long_dest 3615 beq .Lldisp28 3616 fail 3617.Lldisp28: 3618 mov #0xa5a5a5a5, @long_dest 3619 3620shlr_l_disp16_8: 3621 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3622 set_ccr_zero 3623 3624 mov #long_dest-44, er0 3625 shlr.l #8, @(44:16, er0) ; shift right logical by eight, disp16 3626;;; .word 0x0104 3627;;; .word 0x6f08 3628;;; .word 44 3629;;; .word 0x1178 3630 3631 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 3632 test_zero_clear 3633 test_ovf_clear 3634 test_neg_clear 3635 3636 test_h_gr32 long_dest-44 er0 3637 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3638 test_gr_a5a5 2 3639 test_gr_a5a5 3 3640 test_gr_a5a5 4 3641 test_gr_a5a5 5 3642 test_gr_a5a5 6 3643 test_gr_a5a5 7 3644 ; 1010 0101 1010 0101 1010 0101 1010 0101 3645 ;; -> 0000 0000 1010 0101 1010 0101 1010 0101 3646 cmp.l #0x00a5a5a5, @long_dest 3647 beq .Lldisp168 3648 fail 3649.Lldisp168: 3650 mov #0xa5a5a5a5, @long_dest 3651 3652shlr_l_disp32_8: 3653 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3654 set_ccr_zero 3655 3656 mov #long_dest-666, er0 3657 shlr.l #8, @(666:32, er0) ; shift right logical by eight, disp32 3658;;; .word 0x7884 3659;;; .word 0x6b28 3660;;; .long 666 3661;;; .word 0x1178 3662 3663 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 3664 test_zero_clear 3665 test_ovf_clear 3666 test_neg_clear 3667 3668 test_h_gr32 long_dest-666 er0 3669 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3670 test_gr_a5a5 2 3671 test_gr_a5a5 3 3672 test_gr_a5a5 4 3673 test_gr_a5a5 5 3674 test_gr_a5a5 6 3675 test_gr_a5a5 7 3676 ; 1010 0101 1010 0101 1010 0101 1010 0101 3677 ;; -> 0000 0000 1010 0101 1010 0101 1010 0101 3678 cmp.l #0x00a5a5a5, @long_dest 3679 beq .Lldisp328 3680 fail 3681.Lldisp328: 3682 mov #0xa5a5a5a5, @long_dest 3683 3684shlr_l_abs16_8: 3685 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3686 set_ccr_zero 3687 3688 shlr.l #8, @long_dest:16 ; shift right logical by eight, abs16 3689;;; .word 0x0104 3690;;; .word 0x6b08 3691;;; .word long_dest 3692;;; .word 0x1178 3693 3694 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 3695 test_zero_clear 3696 test_ovf_clear 3697 test_neg_clear 3698 3699 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 3700 test_gr_a5a5 1 3701 test_gr_a5a5 2 3702 test_gr_a5a5 3 3703 test_gr_a5a5 4 3704 test_gr_a5a5 5 3705 test_gr_a5a5 6 3706 test_gr_a5a5 7 3707 ; 1010 0101 1010 0101 1010 0101 1010 0101 3708 ;; -> 0000 0000 1010 0101 1010 0101 1010 0101 3709 cmp.l #0x00a5a5a5, @long_dest 3710 beq .Llabs168 3711 fail 3712.Llabs168: 3713 mov #0xa5a5a5a5, @long_dest 3714 3715shlr_l_abs32_8: 3716 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3717 set_ccr_zero 3718 3719 shlr.l #8, @long_dest:32 ; shift right logical by eight, abs32 3720;;; .word 0x0104 3721;;; .word 0x6b28 3722;;; .long long_dest 3723;;; .word 0x1178 3724 3725 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 3726 test_zero_clear 3727 test_ovf_clear 3728 test_neg_clear 3729 3730 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 3731 test_gr_a5a5 1 3732 test_gr_a5a5 2 3733 test_gr_a5a5 3 3734 test_gr_a5a5 4 3735 test_gr_a5a5 5 3736 test_gr_a5a5 6 3737 test_gr_a5a5 7 3738 ; 1010 0101 1010 0101 1010 0101 1010 0101 3739 ;; -> 0000 0000 1010 0101 1010 0101 1010 0101 3740 cmp.l #0x00a5a5a5, @long_dest 3741 beq .Llabs328 3742 fail 3743.Llabs328: 3744 mov #0xa5a5a5a5, @long_dest 3745 3746shlr_l_reg32_16: 3747 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3748 set_ccr_zero 3749 3750 shlr.l #16, er0 ; shift right logical by sixteen, register 3751;;; .word 0x11f8 3752 3753 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 3754 test_zero_clear 3755 test_ovf_clear 3756 test_neg_clear 3757 ; 1010 0101 1010 0101 1010 0101 1010 0101 3758 ;; -> 0000 0000 0000 0000 1010 0101 1010 0101 3759 test_h_gr32 0x0000a5a5 er0 3760 3761 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3762 test_gr_a5a5 2 3763 test_gr_a5a5 3 3764 test_gr_a5a5 4 3765 test_gr_a5a5 5 3766 test_gr_a5a5 6 3767 test_gr_a5a5 7 3768 3769shlr_l_ind_16: 3770 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3771 set_ccr_zero 3772 3773 mov #long_dest, er0 3774 shlr.l #16, @er0 ; shift right logical by sixteen, indirect 3775;;; .word 0x0104 3776;;; .word 0x6908 3777;;; .word 0x11f8 3778 3779 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 3780 test_zero_clear 3781 test_ovf_clear 3782 test_neg_clear 3783 3784 test_h_gr32 long_dest er0 3785 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3786 test_gr_a5a5 2 3787 test_gr_a5a5 3 3788 test_gr_a5a5 4 3789 test_gr_a5a5 5 3790 test_gr_a5a5 6 3791 test_gr_a5a5 7 3792 ; 1010 0101 1010 0101 1010 0101 1010 0101 3793 ;; -> 0000 0000 0000 0000 1010 0101 1010 0101 3794 cmp.l #0x0000a5a5, @long_dest 3795 beq .Llind16 3796 fail 3797.Llind16: 3798 mov #0xa5a5a5a5, @long_dest 3799 3800shlr_l_postinc_16: 3801 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3802 set_ccr_zero 3803 3804 mov #long_dest, er0 3805 shlr.l #16, @er0+ ; shift right logical by sixteen, postinc 3806;;; .word 0x0104 3807;;; .word 0x6d08 3808;;; .word 0x11f8 3809 3810 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 3811 test_zero_clear 3812 test_ovf_clear 3813 test_neg_clear 3814 3815 test_h_gr32 long_dest+4 er0 3816 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3817 test_gr_a5a5 2 3818 test_gr_a5a5 3 3819 test_gr_a5a5 4 3820 test_gr_a5a5 5 3821 test_gr_a5a5 6 3822 test_gr_a5a5 7 3823 ; 1010 0101 1010 0101 1010 0101 1010 0101 3824 ;; -> 0000 0000 0000 0000 1010 0101 1010 0101 3825 cmp.l #0x0000a5a5, @long_dest 3826 beq .Llpostinc16 3827 fail 3828.Llpostinc16: 3829 mov #0xa5a5a5a5, @long_dest 3830 3831shlr_l_postdec_16: 3832 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3833 set_ccr_zero 3834 3835 mov #long_dest, er0 3836 shlr.l #16, @er0- ; shift right logical by sixteen, postdec 3837;;; .word 0x0106 3838;;; .word 0x6d08 3839;;; .word 0x11f8 3840 3841 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 3842 test_zero_clear 3843 test_ovf_clear 3844 test_neg_clear 3845 3846 test_h_gr32 long_dest-4 er0 3847 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3848 test_gr_a5a5 2 3849 test_gr_a5a5 3 3850 test_gr_a5a5 4 3851 test_gr_a5a5 5 3852 test_gr_a5a5 6 3853 test_gr_a5a5 7 3854 ; 1010 0101 1010 0101 1010 0101 1010 0101 3855 ;; -> 0000 0000 0000 0000 1010 0101 1010 0101 3856 cmp.l #0x0000a5a5, @long_dest 3857 beq .Llpostdec16 3858 fail 3859.Llpostdec16: 3860 mov #0xa5a5a5a5, @long_dest 3861 3862shlr_l_preinc_16: 3863 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3864 set_ccr_zero 3865 3866 mov #long_dest-4, er0 3867 shlr.l #16, @+er0 ; shift right logical by sixteen, preinc 3868;;; .word 0x0105 3869;;; .word 0x6d08 3870;;; .word 0x11f8 3871 3872 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 3873 test_zero_clear 3874 test_ovf_clear 3875 test_neg_clear 3876 3877 test_h_gr32 long_dest er0 3878 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3879 test_gr_a5a5 2 3880 test_gr_a5a5 3 3881 test_gr_a5a5 4 3882 test_gr_a5a5 5 3883 test_gr_a5a5 6 3884 test_gr_a5a5 7 3885 ; 1010 0101 1010 0101 1010 0101 1010 0101 3886 ;; -> 0000 0000 0000 0000 1010 0101 1010 0101 3887 cmp.l #0x0000a5a5, @long_dest 3888 beq .Llpreinc16 3889 fail 3890.Llpreinc16: 3891 mov #0xa5a5a5a5, @long_dest 3892 3893shlr_l_predec_16: 3894 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3895 set_ccr_zero 3896 3897 mov #long_dest+4, er0 3898 shlr.l #16, @-er0 ; shift right logical by sixteen, predec 3899;;; .word 0x0107 3900;;; .word 0x6d08 3901;;; .word 0x11f8 3902 3903 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 3904 test_zero_clear 3905 test_ovf_clear 3906 test_neg_clear 3907 3908 test_h_gr32 long_dest er0 3909 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3910 test_gr_a5a5 2 3911 test_gr_a5a5 3 3912 test_gr_a5a5 4 3913 test_gr_a5a5 5 3914 test_gr_a5a5 6 3915 test_gr_a5a5 7 3916 ; 1010 0101 1010 0101 1010 0101 1010 0101 3917 ;; -> 0000 0000 0000 0000 1010 0101 1010 0101 3918 cmp.l #0x0000a5a5, @long_dest 3919 beq .Llpredec16 3920 fail 3921.Llpredec16: 3922 mov #0xa5a5a5a5, @long_dest 3923 3924shlr_l_disp2_16: 3925 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3926 set_ccr_zero 3927 3928 mov #long_dest-8, er0 3929 shlr.l #16, @(8:2, er0) ; shift right logical by 16, dest2 3930;;; .word 0x0106 3931;;; .word 0x6908 3932;;; .word 0x11f8 3933 3934 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 3935 test_zero_clear 3936 test_ovf_clear 3937 test_neg_clear 3938 3939 test_h_gr32 long_dest-8 er0 3940 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3941 test_gr_a5a5 2 3942 test_gr_a5a5 3 3943 test_gr_a5a5 4 3944 test_gr_a5a5 5 3945 test_gr_a5a5 6 3946 test_gr_a5a5 7 3947 ; 1010 0101 1010 0101 1010 0101 1010 0101 3948 ;; -> 0000 0000 0000 0000 1010 0101 1010 0101 3949 cmp.l #0x0000a5a5, @long_dest 3950 beq .Lldisp216 3951 fail 3952.Lldisp216: 3953 mov #0xa5a5a5a5, @long_dest 3954 3955shlr_l_disp16_16: 3956 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3957 set_ccr_zero 3958 3959 mov #long_dest-44, er0 3960 shlr.l #16, @(44:16, er0) ; shift right logical by 16, disp16 3961;;; .word 0x0104 3962;;; .word 0x6f08 3963;;; .word 44 3964;;; .word 0x11f8 3965 3966 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 3967 test_zero_clear 3968 test_ovf_clear 3969 test_neg_clear 3970 3971 test_h_gr32 long_dest-44 er0 3972 test_gr_a5a5 1 ; Make sure other general regs not disturbed 3973 test_gr_a5a5 2 3974 test_gr_a5a5 3 3975 test_gr_a5a5 4 3976 test_gr_a5a5 5 3977 test_gr_a5a5 6 3978 test_gr_a5a5 7 3979 ; 1010 0101 1010 0101 1010 0101 1010 0101 3980 ;; -> 0000 0000 0000 0000 1010 0101 1010 0101 3981 cmp.l #0x0000a5a5, @long_dest 3982 beq .Lldisp1616 3983 fail 3984.Lldisp1616: 3985 mov #0xa5a5a5a5, @long_dest 3986 3987shlr_l_disp32_16: 3988 set_grs_a5a5 ; Fill all general regs with a fixed pattern 3989 set_ccr_zero 3990 3991 mov #long_dest-666, er0 3992 shlr.l #16, @(666:32, er0) ; shift right logical by 16, disp32 3993;;; .word 0x7884 3994;;; .word 0x6b28 3995;;; .long 666 3996;;; .word 0x11f8 3997 3998 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 3999 test_zero_clear 4000 test_ovf_clear 4001 test_neg_clear 4002 4003 test_h_gr32 long_dest-666 er0 4004 test_gr_a5a5 1 ; Make sure other general regs not disturbed 4005 test_gr_a5a5 2 4006 test_gr_a5a5 3 4007 test_gr_a5a5 4 4008 test_gr_a5a5 5 4009 test_gr_a5a5 6 4010 test_gr_a5a5 7 4011 ; 1010 0101 1010 0101 1010 0101 1010 0101 4012 ;; -> 0000 0000 0000 0000 1010 0101 1010 0101 4013 cmp.l #0x0000a5a5, @long_dest 4014 beq .Lldisp3216 4015 fail 4016.Lldisp3216: 4017 mov #0xa5a5a5a5, @long_dest 4018 4019shlr_l_abs16_16: 4020 set_grs_a5a5 ; Fill all general regs with a fixed pattern 4021 set_ccr_zero 4022 4023 shlr.l #16, @long_dest:16 ; shift right logical by 16, abs16 4024;;; .word 0x0104 4025;;; .word 0x6b08 4026;;; .word long_dest 4027;;; .word 0x11f8 4028 4029 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 4030 test_zero_clear 4031 test_ovf_clear 4032 test_neg_clear 4033 4034 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 4035 test_gr_a5a5 1 4036 test_gr_a5a5 2 4037 test_gr_a5a5 3 4038 test_gr_a5a5 4 4039 test_gr_a5a5 5 4040 test_gr_a5a5 6 4041 test_gr_a5a5 7 4042 ; 1010 0101 1010 0101 1010 0101 1010 0101 4043 ;; -> 0000 0000 0000 0000 1010 0101 1010 0101 4044 cmp.l #0x0000a5a5, @long_dest 4045 beq .Llabs1616 4046 fail 4047.Llabs1616: 4048 mov #0xa5a5a5a5, @long_dest 4049 4050shlr_l_abs32_16: 4051 set_grs_a5a5 ; Fill all general regs with a fixed pattern 4052 set_ccr_zero 4053 4054 shlr.l #16, @long_dest:32 ; shift right logical by 16, abs32 4055;;; .word 0x0104 4056;;; .word 0x6b28 4057;;; .long long_dest 4058;;; .word 0x11f8 4059 4060 test_carry_set ; H=0 N=0 Z=0 V=0 C=1 4061 test_zero_clear 4062 test_ovf_clear 4063 test_neg_clear 4064 4065 test_gr_a5a5 0 ; Make sure ALL general regs not disturbed 4066 test_gr_a5a5 1 4067 test_gr_a5a5 2 4068 test_gr_a5a5 3 4069 test_gr_a5a5 4 4070 test_gr_a5a5 5 4071 test_gr_a5a5 6 4072 test_gr_a5a5 7 4073 ; 1010 0101 1010 0101 1010 0101 1010 0101 4074 ;; -> 0000 0000 0000 0000 1010 0101 1010 0101 4075 cmp.l #0x0000a5a5, @long_dest 4076 beq .Llabs3216 4077 fail 4078.Llabs3216: 4079 mov #0xa5a5a5a5, @long_dest 4080.endif 4081.endif 4082 pass 4083 4084 exit 0 4085 4086