Home | History | Annotate | Line # | Download | only in h8300
shlr.s revision 1.1
      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
     16 byte_dest:	.byte	0xa5
     17 	.align 2
     18 word_dest:	.word	0xa5a5
     19 	.align 4
     20 long_dest:	.long	0xa5a5a5a5
     21 
     22 	.text
     23 
     24 shlr_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)
     49 shlr_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 
     78 shlr_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 
    108 shlr_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 
    138 shlr_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 
    168 shlr_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 
    198 shlr_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 
    228 shlr_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 
    259 shlr_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 
    290 shlr_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 
    319 shlr_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 
    349 shlr_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)
    373 shlr_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 
    402 shlr_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 
    432 shlr_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 
    462 shlr_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 
    492 shlr_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 
    522 shlr_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 
    552 shlr_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 
    583 shlr_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 
    614 shlr_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 
    643 shlr_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 
    672 shlr_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 
    694 shlr_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 
    716 shlr_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 
    745 shlr_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 
    775 shlr_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 
    805 shlr_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 
    835 shlr_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 
    865 shlr_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 
    895 shlr_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 
    926 shlr_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 
    957 shlr_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 
    986 shlr_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)
   1017 shlr_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
   1043 shlr_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)
   1066 shlr_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 
   1095 shlr_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 
   1125 shlr_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 
   1155 shlr_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 
   1185 shlr_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 
   1215 shlr_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 
   1245 shlr_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 
   1276 shlr_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 
   1307 shlr_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 
   1336 shlr_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 
   1366 shlr_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)
   1389 shlr_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 
   1418 shlr_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 
   1448 shlr_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 
   1478 shlr_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 
   1508 shlr_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 
   1538 shlr_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 
   1568 shlr_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 
   1599 shlr_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 
   1630 shlr_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 
   1659 shlr_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 
   1688 shlr_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 
   1710 shlr_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 
   1732 shlr_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 
   1761 shlr_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 
   1791 shlr_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 
   1821 shlr_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 
   1851 shlr_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 
   1881 shlr_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 
   1911 shlr_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 
   1942 shlr_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 
   1973 shlr_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 
   2002 shlr_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 
   2031 shlr_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 
   2053 shlr_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 
   2082 shlr_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 
   2112 shlr_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 
   2142 shlr_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 
   2172 shlr_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 
   2202 shlr_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 
   2232 shlr_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 
   2263 shlr_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 
   2294 shlr_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 
   2323 shlr_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 
   2352 shlr_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 
   2378 shlr_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)
   2403 shlr_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 
   2434 shlr_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 
   2465 shlr_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 
   2496 shlr_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 
   2527 shlr_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 
   2558 shlr_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 
   2589 shlr_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 
   2621 shlr_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 
   2653 shlr_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 
   2684 shlr_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 
   2716 shlr_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 
   2741 shlr_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 
   2772 shlr_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 
   2803 shlr_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 
   2834 shlr_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 
   2865 shlr_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 
   2896 shlr_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 
   2927 shlr_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 
   2959 shlr_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 
   2991 shlr_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 
   3022 shlr_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 
   3053 shlr_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 
   3076 shlr_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 
   3099 shlr_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 
   3130 shlr_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 
   3161 shlr_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 
   3192 shlr_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 
   3223 shlr_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 
   3254 shlr_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 
   3285 shlr_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 
   3317 shlr_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 
   3349 shlr_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 
   3380 shlr_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 
   3411 shlr_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 
   3434 shlr_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 
   3465 shlr_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 
   3496 shlr_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 
   3527 shlr_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 
   3558 shlr_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 
   3589 shlr_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 
   3620 shlr_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 
   3652 shlr_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 
   3684 shlr_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 
   3715 shlr_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 
   3746 shlr_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 
   3769 shlr_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 
   3800 shlr_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 
   3831 shlr_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 
   3862 shlr_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 
   3893 shlr_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 
   3924 shlr_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 
   3955 shlr_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 
   3987 shlr_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 
   4019 shlr_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 
   4050 shlr_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