Home | History | Annotate | Line # | Download | only in h8300
movb.s revision 1.1.1.1
      1 # Hitachi H8 testcase 'mov.b'
      2 # mach(): h8300h h8300s h8sx
      3 # as(h8300h):	--defsym sim_cpu=1
      4 # as(h8300s):	--defsym sim_cpu=2
      5 # as(h8sx):	--defsym sim_cpu=3
      6 # ld(h8300h):	-m h8300helf
      7 # ld(h8300s):	-m h8300self
      8 # ld(h8sx):	-m h8300sxelf
      9 
     10 	.include "testutils.inc"
     11 
     12 	start
     13 
     14 	.data
     15 	.align	4
     16 byte_dst_dec:
     17 	.byte	0
     18 byte_src:
     19 	.byte	0x77
     20 byte_dst:
     21 	.byte	0
     22 
     23 	.text
     24 
     25 	;;
     26 	;; Move byte from immediate source
     27 	;;
     28 
     29 .if (sim_cpu == h8sx)
     30 mov_b_imm8_to_reg8:
     31 	set_grs_a5a5		; Fill all general regs with a fixed pattern
     32 	set_ccr_zero
     33 
     34 	;; mov.b #xx:8, rd
     35 	mov.b	#0x77:8, r0l	; Immediate 3-bit operand
     36 ;;;	.word	0xf877
     37 
     38 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
     39 	test_neg_clear
     40 	test_zero_clear
     41 	test_ovf_clear
     42 	test_carry_clear
     43 
     44 	test_h_gr32 0xa5a5a577 er0
     45 
     46 	test_gr_a5a5 1		; Make sure other general regs not disturbed
     47 	test_gr_a5a5 2
     48 	test_gr_a5a5 3
     49 	test_gr_a5a5 4
     50 	test_gr_a5a5 5
     51 	test_gr_a5a5 6
     52 	test_gr_a5a5 7
     53 .endif
     54 
     55 .if (sim_cpu == h8sx)
     56 mov_b_imm4_to_abs16:
     57 	set_grs_a5a5		; Fill all general regs with a fixed pattern
     58 	set_ccr_zero
     59 
     60 	;; mov.b #xx:4, @aa:16
     61 	mov.b	#0xf:4, @byte_dst:16	; 16-bit address-direct operand
     62 ;;;	.word	0x6adf
     63 ;;;	.word	@byte_dst
     64 
     65 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
     66 	test_neg_clear
     67 	test_zero_clear
     68 	test_ovf_clear
     69 	test_carry_clear
     70 
     71 	test_gr_a5a5 0		; Make sure _ALL_ general regs not disturbed
     72 	test_gr_a5a5 1		; (first, because on h8/300 we must use one
     73 	test_gr_a5a5 2		; to examine the destination memory).
     74 	test_gr_a5a5 3
     75 	test_gr_a5a5 4
     76 	test_gr_a5a5 5
     77 	test_gr_a5a5 6
     78 	test_gr_a5a5 7
     79 
     80 	;; Now check the result of the move to memory.
     81 	cmp.b	#0xf, @byte_dst
     82 	beq	.Lnext21
     83 	fail
     84 .Lnext21:
     85 	mov.b	#0, @byte_dst	; zero it again for the next use.
     86 
     87 mov_b_imm4_to_abs32:
     88 	set_grs_a5a5		; Fill all general regs with a fixed pattern
     89 	set_ccr_zero
     90 
     91 	;; mov.b #xx:4, @aa:32
     92 	mov.b	#0xf:4, @byte_dst:32	; 32-bit address-direct operand
     93 ;;;	.word	0x6aff
     94 ;;;	.long	@byte_dst
     95 
     96 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
     97 	test_neg_clear
     98 	test_zero_clear
     99 	test_ovf_clear
    100 	test_carry_clear
    101 
    102 	test_gr_a5a5 0		; Make sure _ALL_ general regs not disturbed
    103 	test_gr_a5a5 1		; (first, because on h8/300 we must use one
    104 	test_gr_a5a5 2		; to examine the destination memory).
    105 	test_gr_a5a5 3
    106 	test_gr_a5a5 4
    107 	test_gr_a5a5 5
    108 	test_gr_a5a5 6
    109 	test_gr_a5a5 7
    110 
    111 	;; Now check the result of the move to memory.
    112 	cmp.b	#0xf, @byte_dst
    113 	beq	.Lnext22
    114 	fail
    115 .Lnext22:
    116 	mov.b	#0, @byte_dst	; zero it again for the next use.
    117 
    118 mov_b_imm8_to_indirect:
    119 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    120 	set_ccr_zero
    121 
    122 	;; mov.b #xx:8, @erd
    123 	mov.l	#byte_dst, er1
    124 	mov.b	#0xa5:8, @er1	; Register indirect operand
    125 ;;;	.word	0x017d
    126 ;;;	.word	0x01a5
    127 
    128 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    129 	test_neg_set
    130 	test_zero_clear
    131 	test_ovf_clear
    132 	test_carry_clear
    133 
    134 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    135 	test_h_gr32	byte_dst, er1
    136 	test_gr_a5a5 2
    137 	test_gr_a5a5 3
    138 	test_gr_a5a5 4
    139 	test_gr_a5a5 5
    140 	test_gr_a5a5 6
    141 	test_gr_a5a5 7
    142 
    143 	;; Now check the result of the move to memory.
    144 	cmp.b	#0xa5, @byte_dst
    145 	beq	.Lnext1
    146 	fail
    147 .Lnext1:
    148 	mov.b	#0, @byte_dst	; zero it again for the next use.
    149 
    150 mov_b_imm8_to_postinc:		; post-increment from imm8 to mem
    151 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    152 	set_ccr_zero
    153 
    154 	;; mov.b #xx:8, @erd+
    155 	mov.l	#byte_dst, er1
    156 	mov.b	#0xa5:8, @er1+	; Imm8, register post-incr operands.
    157 ;;;	.word	0x017d
    158 ;;;	.word	0x81a5
    159 
    160 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    161 	test_neg_set
    162 	test_zero_clear
    163 	test_ovf_clear
    164 	test_carry_clear
    165 
    166 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    167 	test_h_gr32	byte_dst+1, er1
    168 	test_gr_a5a5 2
    169 	test_gr_a5a5 3
    170 	test_gr_a5a5 4
    171 	test_gr_a5a5 5
    172 	test_gr_a5a5 6
    173 	test_gr_a5a5 7
    174 
    175 	;; Now check the result of the move to memory.
    176 	cmp.b	#0xa5, @byte_dst
    177 	beq	.Lnext2
    178 	fail
    179 .Lnext2:
    180 	mov.b	#0, @byte_dst	; zero it again for the next use.
    181 
    182 mov_b_imm8_to_postdec:		; post-decrement from imm8 to mem
    183 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    184 	set_ccr_zero
    185 
    186 	;; mov.b #xx:8, @erd-
    187 	mov.l	#byte_dst, er1
    188 	mov.b	#0xa5:8, @er1-	; Imm8, register post-decr operands.
    189 ;;;	.word	0x017d
    190 ;;;	.word	0xa1a5
    191 
    192 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    193 	test_neg_set
    194 	test_zero_clear
    195 	test_ovf_clear
    196 	test_carry_clear
    197 
    198 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    199 	test_h_gr32	byte_dst-1, er1
    200 	test_gr_a5a5 2
    201 	test_gr_a5a5 3
    202 	test_gr_a5a5 4
    203 	test_gr_a5a5 5
    204 	test_gr_a5a5 6
    205 	test_gr_a5a5 7
    206 
    207 	;; Now check the result of the move to memory.
    208 	cmp.b	#0xa5, @byte_dst
    209 	beq	.Lnext3
    210 	fail
    211 .Lnext3:
    212 	mov.b	#0, @byte_dst	; zero it again for the next use.
    213 
    214 mov_b_imm8_to_preinc:		; pre-increment from register to mem
    215 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    216 	set_ccr_zero
    217 
    218 	;; mov.b #xx:8, @+erd
    219 	mov.l	#byte_dst-1, er1
    220 	mov.b	#0xa5:8, @+er1	; Imm8, register pre-incr operands
    221 ;;;	.word	0x017d
    222 ;;;	.word	0x91a5
    223 
    224 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    225 	test_neg_set
    226 	test_zero_clear
    227 	test_ovf_clear
    228 	test_carry_clear
    229 
    230 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    231 	test_h_gr32	byte_dst, er1
    232 	test_gr_a5a5 2
    233 	test_gr_a5a5 3
    234 	test_gr_a5a5 4
    235 	test_gr_a5a5 5
    236 	test_gr_a5a5 6
    237 	test_gr_a5a5 7
    238 
    239 	;; Now check the result of the move to memory.
    240 	cmp.b	#0xa5, @byte_dst
    241 	beq	.Lnext4
    242 	fail
    243 .Lnext4:
    244 	mov.b	#0, @byte_dst	; zero it again for the next use.
    245 
    246 mov_b_imm8_to_predec:		; pre-decrement from register to mem
    247 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    248 	set_ccr_zero
    249 
    250 	;; mov.b #xx:8, @-erd
    251 	mov.l	#byte_dst+1, er1
    252 	mov.b	#0xa5:8, @-er1	; Imm8, register pre-decr operands
    253 ;;;	.word	0x017d
    254 ;;;	.word	0xb1a5
    255 
    256 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    257 	test_neg_set
    258 	test_zero_clear
    259 	test_ovf_clear
    260 	test_carry_clear
    261 
    262 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    263 	test_h_gr32	byte_dst, er1
    264 	test_gr_a5a5 2
    265 	test_gr_a5a5 3
    266 	test_gr_a5a5 4
    267 	test_gr_a5a5 5
    268 	test_gr_a5a5 6
    269 	test_gr_a5a5 7
    270 
    271 	;; Now check the result of the move to memory.
    272 	cmp.b	#0xa5, @byte_dst
    273 	beq	.Lnext5
    274 	fail
    275 .Lnext5:
    276 	mov.b	#0, @byte_dst	; zero it again for the next use.
    277 
    278 mov_b_imm8_to_disp2:
    279 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    280 	set_ccr_zero
    281 
    282 	;; mov.b #xx:8, @(dd:2, erd)
    283 	mov.l	#byte_dst-3, er1
    284 	mov.b	#0xa5:8, @(3:2, er1)	; Imm8, reg plus 2-bit disp. operand
    285 ;;;	.word	0x017d
    286 ;;;	.word	0x31a5
    287 
    288 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    289 	test_neg_set
    290 	test_zero_clear
    291 	test_ovf_clear
    292 	test_carry_clear
    293 
    294 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    295 	test_h_gr32	byte_dst-3, er1
    296 	test_gr_a5a5 2
    297 	test_gr_a5a5 3
    298 	test_gr_a5a5 4
    299 	test_gr_a5a5 5
    300 	test_gr_a5a5 6
    301 	test_gr_a5a5 7
    302 
    303 	;; Now check the result of the move to memory.
    304 	cmp.b	#0xa5, @byte_dst
    305 	beq	.Lnext6
    306 	fail
    307 .Lnext6:
    308 	mov.b	#0, @byte_dst	; zero it again for the next use.
    309 
    310 mov_b_imm8_to_disp16:
    311 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    312 	set_ccr_zero
    313 
    314 	;; mov.b #xx:8, @(dd:16, erd)
    315 	mov.l	#byte_dst-4, er1
    316 	mov.b	#0xa5:8, @(4:16, er1)	; Register plus 16-bit disp. operand
    317 ;;;	.word	0x017d
    318 ;;;	.word	0x6f90
    319 ;;;	.word	0x0004
    320 
    321 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    322 	test_neg_set
    323 	test_zero_clear
    324 	test_ovf_clear
    325 	test_carry_clear
    326 
    327 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    328 	test_h_gr32	byte_dst-4, er1
    329 	test_gr_a5a5 2
    330 	test_gr_a5a5 3
    331 	test_gr_a5a5 4
    332 	test_gr_a5a5 5
    333 	test_gr_a5a5 6
    334 	test_gr_a5a5 7
    335 
    336 	;; Now check the result of the move to memory.
    337 	cmp.b	#0xa5, @byte_dst
    338 	beq	.Lnext7
    339 	fail
    340 .Lnext7:
    341 	mov.b	#0, @byte_dst	; zero it again for the next use.
    342 
    343 mov_b_imm8_to_disp32:
    344 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    345 	set_ccr_zero
    346 
    347 	;; mov.b #xx:8, @(dd:32, erd)
    348 	mov.l	#byte_dst-8, er1
    349 	mov.b	#0xa5:8, @(8:32, er1)	; Register plus 32-bit disp. operand
    350 ;;;	.word	0x017d
    351 ;;;	.word	0xc9a5
    352 ;;;	.long	8
    353 
    354 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    355 	test_neg_set
    356 	test_zero_clear
    357 	test_ovf_clear
    358 	test_carry_clear
    359 
    360 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    361 	test_h_gr32	byte_dst-8, er1
    362 	test_gr_a5a5 2
    363 	test_gr_a5a5 3
    364 	test_gr_a5a5 4
    365 	test_gr_a5a5 5
    366 	test_gr_a5a5 6
    367 	test_gr_a5a5 7
    368 
    369 	;; Now check the result of the move to memory.
    370 	cmp.b	#0xa5, @byte_dst
    371 	beq	.Lnext8
    372 	fail
    373 .Lnext8:
    374 	mov.b	#0, @byte_dst	; zero it again for the next use.
    375 
    376 mov_b_imm8_to_indexb16:
    377 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    378 	mov.l	#0xffffff01, er1
    379 	set_ccr_zero
    380 	;; mov.b #xx:8, @(dd:16, rd.b)
    381 	mov.b	#0xa5:8, @(byte_dst-1:16, r1.b) ; byte indexed operand
    382 
    383 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    384 	test_neg_set
    385 	test_zero_clear
    386 	test_ovf_clear
    387 	test_carry_clear
    388 
    389 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    390 	test_h_gr32	0xffffff01, er1
    391 	test_gr_a5a5 2
    392 	test_gr_a5a5 3
    393 	test_gr_a5a5 4
    394 	test_gr_a5a5 5
    395 	test_gr_a5a5 6
    396 	test_gr_a5a5 7
    397 
    398 	;; Now check the result of the move to memory.
    399 	cmp.b	#0xa5, @byte_dst
    400 	bne	fail1
    401 	mov.b	#0, @byte_dst	; zero it again for the next use.
    402 
    403 mov_b_imm8_to_indexw16:
    404 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    405 	mov.l	#0xffff0002, er1
    406 	set_ccr_zero
    407 	;; mov.b #xx:8, @(dd:16, rd.w)
    408 	mov.b	#0xa5:8, @(byte_dst-2:16, r1.w) ; byte indexed operand
    409 
    410 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    411 	test_neg_set
    412 	test_zero_clear
    413 	test_ovf_clear
    414 	test_carry_clear
    415 
    416 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    417 	test_h_gr32	0xffff0002, er1
    418 	test_gr_a5a5 2
    419 	test_gr_a5a5 3
    420 	test_gr_a5a5 4
    421 	test_gr_a5a5 5
    422 	test_gr_a5a5 6
    423 	test_gr_a5a5 7
    424 
    425 	;; Now check the result of the move to memory.
    426 	cmp.b	#0xa5, @byte_dst
    427 	bne	fail1
    428 	mov.b	#0, @byte_dst	; zero it again for the next use.
    429 
    430 mov_b_imm8_to_indexl16:
    431 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    432 	mov.l	#0x00000003, er1
    433 	set_ccr_zero
    434 	;; mov.b #xx:8, @(dd:16, erd.l)
    435 	mov.b	#0xa5:8, @(byte_dst-3:16, er1.l) ; byte indexed operand
    436 
    437 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    438 	test_neg_set
    439 	test_zero_clear
    440 	test_ovf_clear
    441 	test_carry_clear
    442 
    443 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    444 	test_h_gr32	0x00000003, er1
    445 	test_gr_a5a5 2
    446 	test_gr_a5a5 3
    447 	test_gr_a5a5 4
    448 	test_gr_a5a5 5
    449 	test_gr_a5a5 6
    450 	test_gr_a5a5 7
    451 
    452 	;; Now check the result of the move to memory.
    453 	cmp.b	#0xa5, @byte_dst
    454 	bne	fail1
    455 	mov.b	#0, @byte_dst	; zero it again for the next use.
    456 
    457 mov_b_imm8_to_indexb32:
    458 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    459 	mov.l	#0xffffff04, er1
    460 	set_ccr_zero
    461 	;; mov.b #xx:8, @(dd:32, rd.b)
    462 	mov.b	#0xa5:8, @(byte_dst-4:32, r1.b)	; byte indexed operand
    463 
    464 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    465 	test_neg_set
    466 	test_zero_clear
    467 	test_ovf_clear
    468 	test_carry_clear
    469 
    470 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    471 	test_h_gr32	0xffffff04 er1
    472 	test_gr_a5a5 2
    473 	test_gr_a5a5 3
    474 	test_gr_a5a5 4
    475 	test_gr_a5a5 5
    476 	test_gr_a5a5 6
    477 	test_gr_a5a5 7
    478 
    479 	;; Now check the result of the move to memory.
    480 	cmp.b	#0xa5, @byte_dst
    481 	bne	fail1
    482 	mov.b	#0, @byte_dst	; zero it again for the next use.
    483 
    484 mov_b_imm8_to_indexw32:
    485 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    486 	mov.l	#0xffff0005, er1
    487 	set_ccr_zero
    488 	;; mov.b #xx:8, @(dd:32, rd.w)
    489 	mov.b	#0xa5:8, @(byte_dst-5:32, r1.w)	; byte indexed operand
    490 
    491 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    492 	test_neg_set
    493 	test_zero_clear
    494 	test_ovf_clear
    495 	test_carry_clear
    496 
    497 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    498 	test_h_gr32	0xffff0005 er1
    499 	test_gr_a5a5 2
    500 	test_gr_a5a5 3
    501 	test_gr_a5a5 4
    502 	test_gr_a5a5 5
    503 	test_gr_a5a5 6
    504 	test_gr_a5a5 7
    505 
    506 	;; Now check the result of the move to memory.
    507 	cmp.b	#0xa5, @byte_dst
    508 	bne	fail1
    509 	mov.b	#0, @byte_dst	; zero it again for the next use.
    510 
    511 mov_b_imm8_to_indexl32:
    512 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    513 	mov.l	#0x00000006, er1
    514 	set_ccr_zero
    515 	;; mov.b #xx:8, @(dd:32, erd.l)
    516 	mov.b	#0xa5:8, @(byte_dst-6:32, er1.l)	; byte indexed operand
    517 
    518 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    519 	test_neg_set
    520 	test_zero_clear
    521 	test_ovf_clear
    522 	test_carry_clear
    523 
    524 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    525 	test_h_gr32	0x00000006 er1
    526 	test_gr_a5a5 2
    527 	test_gr_a5a5 3
    528 	test_gr_a5a5 4
    529 	test_gr_a5a5 5
    530 	test_gr_a5a5 6
    531 	test_gr_a5a5 7
    532 
    533 	;; Now check the result of the move to memory.
    534 	cmp.b	#0xa5, @byte_dst
    535 	bne	fail1
    536 	mov.b	#0, @byte_dst	; zero it again for the next use.
    537 
    538 mov_b_imm8_to_abs16:
    539 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    540 	set_ccr_zero
    541 
    542 	;; mov.b #xx:8, @aa:16
    543 	mov.b	#0xa5:8, @byte_dst:16	; 16-bit address-direct operand
    544 ;;;	.word	0x017d
    545 ;;;	.word	0x40a5
    546 ;;;	.word	@byte_dst
    547 
    548 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    549 	test_neg_set
    550 	test_zero_clear
    551 	test_ovf_clear
    552 	test_carry_clear
    553 
    554 	test_gr_a5a5 0		; Make sure _ALL_ general regs not disturbed
    555 	test_gr_a5a5 1		; (first, because on h8/300 we must use one
    556 	test_gr_a5a5 2		; to examine the destination memory).
    557 	test_gr_a5a5 3
    558 	test_gr_a5a5 4
    559 	test_gr_a5a5 5
    560 	test_gr_a5a5 6
    561 	test_gr_a5a5 7
    562 
    563 	;; Now check the result of the move to memory.
    564 	cmp.b	#0xa5, @byte_dst
    565 	beq	.Lnext9
    566 	fail
    567 .Lnext9:
    568 	mov.b	#0, @byte_dst	; zero it again for the next use.
    569 
    570 mov_b_imm8_to_abs32:
    571 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    572 	set_ccr_zero
    573 
    574 	;; mov.b #xx:8, @aa:32
    575 	mov.b	#0xa5:8, @byte_dst:32	; 32-bit address-direct operand
    576 ;;;	.word	0x017d
    577 ;;;	.word	0x48a5
    578 ;;;	.long	@byte_dst
    579 
    580 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    581 	test_neg_set
    582 	test_zero_clear
    583 	test_ovf_clear
    584 	test_carry_clear
    585 
    586 	test_gr_a5a5 0		; Make sure _ALL_ general regs not disturbed
    587 	test_gr_a5a5 1		; (first, because on h8/300 we must use one
    588 	test_gr_a5a5 2		; to examine the destination memory).
    589 	test_gr_a5a5 3
    590 	test_gr_a5a5 4
    591 	test_gr_a5a5 5
    592 	test_gr_a5a5 6
    593 	test_gr_a5a5 7
    594 
    595 	;; Now check the result of the move to memory.
    596 	cmp.b	#0xa5, @byte_dst
    597 	beq	.Lnext10
    598 	fail
    599 .Lnext10:
    600 	mov.b	#0, @byte_dst	; zero it again for the next use.
    601 
    602 .endif
    603 
    604 	;;
    605 	;; Move byte from register source
    606 	;;
    607 
    608 mov_b_reg8_to_reg8:
    609 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    610 	set_ccr_zero
    611 
    612 	;; mov.b ers, erd
    613 	mov.b	#0x12, r1l
    614 	mov.b	r1l, r0l	; Register 8-bit operand
    615 ;;;	.word	0x0c98
    616 
    617 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
    618 	test_neg_clear
    619 	test_zero_clear
    620 	test_ovf_clear
    621 	test_carry_clear
    622 	test_h_gr16 0xa512 r0
    623 	test_h_gr16 0xa512 r1	; mov src unchanged
    624 .if (sim_cpu)
    625 	test_h_gr32 0xa5a5a512 er0
    626 	test_h_gr32 0xa5a5a512 er1	; mov src unchanged
    627 .endif
    628 	test_gr_a5a5 2		; Make sure other general regs not disturbed
    629 	test_gr_a5a5 3
    630 	test_gr_a5a5 4
    631 	test_gr_a5a5 5
    632 	test_gr_a5a5 6
    633 	test_gr_a5a5 7
    634 
    635 
    636 mov_b_reg8_to_indirect:
    637 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    638 	set_ccr_zero
    639 
    640 	;; mov.b ers, @erd
    641 	mov.l	#byte_dst, er1
    642 	mov.b	r0l, @er1	; Register indirect operand
    643 ;;;	.word	0x6898
    644 
    645 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    646 	test_neg_set
    647 	test_zero_clear
    648 	test_ovf_clear
    649 	test_carry_clear
    650 
    651 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    652 	test_h_gr32	byte_dst, er1
    653 	test_gr_a5a5 2
    654 	test_gr_a5a5 3
    655 	test_gr_a5a5 4
    656 	test_gr_a5a5 5
    657 	test_gr_a5a5 6
    658 	test_gr_a5a5 7
    659 
    660 	;; Now check the result of the move to memory.
    661 	mov.b	@byte_dst, r0l
    662 	cmp.b	r2l, r0l
    663 	beq	.Lnext44
    664 	fail
    665 .Lnext44:
    666 	mov.b	#0, r0l
    667 	mov.b	r0l, @byte_dst	; zero it again for the next use.
    668 
    669 .if (sim_cpu == h8sx)
    670 mov_b_reg8_to_postinc:		; post-increment from register to mem
    671 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    672 	set_ccr_zero
    673 
    674 	;; mov.b ers, @erd+
    675 	mov.l	#byte_dst, er1
    676 	mov.b	r0l, @er1+	; Register post-incr operand
    677 ;;;	.word	0x0173
    678 ;;;	.word	0x6c98
    679 
    680 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    681 	test_neg_set
    682 	test_zero_clear
    683 	test_ovf_clear
    684 	test_carry_clear
    685 
    686 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    687 	test_h_gr32	byte_dst+1, er1
    688 	test_gr_a5a5 2
    689 	test_gr_a5a5 3
    690 	test_gr_a5a5 4
    691 	test_gr_a5a5 5
    692 	test_gr_a5a5 6
    693 	test_gr_a5a5 7
    694 
    695 	;; Now check the result of the move to memory.
    696 	cmp.b	r2l, @byte_dst
    697 	beq	.Lnext49
    698 	fail
    699 .Lnext49:
    700 	;; special case same register
    701 	mov.l	#byte_dst, er0
    702 	mov.b	r0l, r1l
    703 	inc.b	r1l
    704 	mov.b	r0l, @er0+
    705 	mov.b	@byte_dst, r0l
    706 	cmp.b	r0l, r1l
    707 	beq	.Lnext53
    708 	fail
    709 .Lnext53:
    710 	mov.b	#0, @byte_dst	; zero it again for the next use.
    711 
    712 mov_b_reg8_to_postdec:		; post-decrement from register to mem
    713 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    714 	set_ccr_zero
    715 
    716 	;; mov.b ers, @erd-
    717 	mov.l	#byte_dst, er1
    718 	mov.b	r0l, @er1-	; Register post-decr operand
    719 ;;;	.word	0x0171
    720 ;;;	.word	0x6c98
    721 
    722 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    723 	test_neg_set
    724 	test_zero_clear
    725 	test_ovf_clear
    726 	test_carry_clear
    727 
    728 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    729 	test_h_gr32	byte_dst-1, er1
    730 	test_gr_a5a5 2
    731 	test_gr_a5a5 3
    732 	test_gr_a5a5 4
    733 	test_gr_a5a5 5
    734 	test_gr_a5a5 6
    735 	test_gr_a5a5 7
    736 
    737 	;; Now check the result of the move to memory.
    738 	cmp.b	r2l, @byte_dst
    739 	beq	.Lnext50
    740 	fail
    741 .Lnext50:
    742 	;; special case same register
    743 	mov.l	#byte_dst, er0
    744 	mov.b	r0l, r1l
    745 	dec.b	r1l
    746 	mov.b	r0l, @er0-
    747 	mov.b	@byte_dst, r0l
    748 	cmp.b	r0l, r1l
    749 	beq	.Lnext54
    750 	fail
    751 .Lnext54:
    752 	mov.b	#0, @byte_dst	; zero it again for the next use.
    753 
    754 mov_b_reg8_to_preinc:		; pre-increment from register to mem
    755 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    756 	set_ccr_zero
    757 
    758 	;; mov.b ers, @+erd
    759 	mov.l	#byte_dst-1, er1
    760 	mov.b	r0l, @+er1	; Register pre-incr operand
    761 ;;;	.word	0x0172
    762 ;;;	.word	0x6c98
    763 
    764 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    765 	test_neg_set
    766 	test_zero_clear
    767 	test_ovf_clear
    768 	test_carry_clear
    769 
    770 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    771 	test_h_gr32	byte_dst, er1
    772 	test_gr_a5a5 2
    773 	test_gr_a5a5 3
    774 	test_gr_a5a5 4
    775 	test_gr_a5a5 5
    776 	test_gr_a5a5 6
    777 	test_gr_a5a5 7
    778 
    779 	;; Now check the result of the move to memory.
    780 	cmp.b	r2l, @byte_dst
    781 	beq	.Lnext51
    782 	fail
    783 .Lnext51:
    784 	;; special case same register
    785 	mov.l	#byte_dst-1, er0
    786 	mov.b	r0l, r1l
    787 	inc.b	r1l
    788 	mov.b	r0l, @+er0
    789 	mov.b	@byte_dst, r0l
    790 	cmp.b	r0l, r1l
    791 	beq	.Lnext55
    792 	fail
    793 .Lnext55:
    794 	mov.b	#0, @byte_dst	; zero it again for the next use.
    795 .endif
    796 
    797 mov_b_reg8_to_predec:		; pre-decrement from register to mem
    798 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    799 	set_ccr_zero
    800 
    801 	;; mov.b ers, @-erd
    802 	mov.l	#byte_dst+1, er1
    803 	mov.b	r0l, @-er1	; Register pre-decr operand
    804 ;;;	.word	0x6c98
    805 
    806 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    807 	test_neg_set
    808 	test_zero_clear
    809 	test_ovf_clear
    810 	test_carry_clear
    811 
    812 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    813 	test_h_gr32	byte_dst, er1
    814 	test_gr_a5a5 2
    815 	test_gr_a5a5 3
    816 	test_gr_a5a5 4
    817 	test_gr_a5a5 5
    818 	test_gr_a5a5 6
    819 	test_gr_a5a5 7
    820 
    821 	;; Now check the result of the move to memory.
    822 	mov.b	@byte_dst, r0l
    823 	cmp.b	r2l, r0l
    824 	beq	.Lnext48
    825 	fail
    826 .Lnext48:
    827 	;; Special case in same register
    828 	;; CCR confirmation omitted
    829 	mov.l	#byte_dst+1, er1
    830 	mov.l	er1, er0
    831 	dec.b	r1l
    832 	mov.b	r0l, @-er0
    833 	mov.b	@byte_dst, r0l
    834 	cmp.b	r1l, r0l
    835 	beq	.Lnext47
    836 	fail
    837 .Lnext47:
    838 	mov.b	#0, r0l
    839 	mov.b	r0l, @byte_dst	; zero it again for the next use.
    840 
    841 .if (sim_cpu == h8sx)
    842 mov_b_reg8_to_disp2:
    843 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    844 	set_ccr_zero
    845 
    846 	;; mov.b ers, @(dd:2, erd)
    847 	mov.l	#byte_dst-3, er1
    848 	mov.b	r0l, @(3:2, er1)	; Register plus 2-bit disp. operand
    849 ;;;	.word	0x0173
    850 ;;;	.word	0x6898
    851 
    852 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    853 	test_neg_set
    854 	test_zero_clear
    855 	test_ovf_clear
    856 	test_carry_clear
    857 
    858 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    859 	test_h_gr32	byte_dst-3, er1
    860 	test_gr_a5a5 2
    861 	test_gr_a5a5 3
    862 	test_gr_a5a5 4
    863 	test_gr_a5a5 5
    864 	test_gr_a5a5 6
    865 	test_gr_a5a5 7
    866 
    867 	;; Now check the result of the move to memory.
    868 	cmp.b	r2l, @byte_dst
    869 	beq	.Lnext52
    870 	fail
    871 .Lnext52:
    872 	mov.b	#0, @byte_dst	; zero it again for the next use.
    873 .endif
    874 
    875 mov_b_reg8_to_disp16:
    876 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    877 	set_ccr_zero
    878 
    879 	;; mov.b ers, @(dd:16, erd)
    880 	mov.l	#byte_dst-4, er1
    881 	mov.b	r0l, @(4:16, er1)	; Register plus 16-bit disp. operand
    882 ;;;	.word	0x6e98
    883 ;;;	.word	0x0004
    884 
    885 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    886 	test_neg_set
    887 	test_zero_clear
    888 	test_ovf_clear
    889 	test_carry_clear
    890 
    891 	test_h_gr32	byte_dst-4, er1
    892 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    893 	test_gr_a5a5 2
    894 	test_gr_a5a5 3
    895 	test_gr_a5a5 4
    896 	test_gr_a5a5 5
    897 	test_gr_a5a5 6
    898 	test_gr_a5a5 7
    899 
    900 	;; Now check the result of the move to memory.
    901 	mov.b	@byte_dst, r0l
    902 	cmp.b	r2l, r0l
    903 	beq	.Lnext45
    904 	fail
    905 .Lnext45:
    906 	mov.b	#0, r0l
    907 	mov.b	r0l, @byte_dst	; zero it again for the next use.
    908 
    909 mov_b_reg8_to_disp32:
    910 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    911 	set_ccr_zero
    912 
    913 	;; mov.b ers, @(dd:32, erd)
    914 	mov.l	#byte_dst-8, er1
    915 	mov.b	r0l, @(8:32, er1)	; Register plus 32-bit disp. operand
    916 ;;;	.word	0x7810
    917 ;;;	.word	0x6aa8
    918 ;;;	.long	8
    919 
    920 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    921 	test_neg_set
    922 	test_zero_clear
    923 	test_ovf_clear
    924 	test_carry_clear
    925 
    926 	test_h_gr32	byte_dst-8, er1
    927 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    928 	test_gr_a5a5 2
    929 	test_gr_a5a5 3
    930 	test_gr_a5a5 4
    931 	test_gr_a5a5 5
    932 	test_gr_a5a5 6
    933 	test_gr_a5a5 7
    934 
    935 	;; Now check the result of the move to memory.
    936 	mov.b	@byte_dst, r0l
    937 	cmp.b	r2l, r0l
    938 	beq	.Lnext46
    939 	fail
    940 .Lnext46:
    941 	mov.b	#0, r0l
    942 	mov.b	r0l, @byte_dst	; zero it again for the next use.
    943 
    944 .if (sim_cpu == h8sx)
    945 mov_b_reg8_to_indexb16:
    946 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    947 	mov.l	#0xffffff01, er1
    948 	set_ccr_zero
    949 	;; mov.b ers, @(dd:16, rd.b)
    950 	mov.b	r0l, @(byte_dst-1:16, r1.b)	; byte indexed operand
    951 
    952 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    953 	test_neg_set
    954 	test_zero_clear
    955 	test_ovf_clear
    956 	test_carry_clear
    957 
    958 	test_h_gr32	0xffffff01 er1
    959 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    960 	test_gr_a5a5 2
    961 	test_gr_a5a5 3
    962 	test_gr_a5a5 4
    963 	test_gr_a5a5 5
    964 	test_gr_a5a5 6
    965 	test_gr_a5a5 7
    966 
    967 	;; Now check the result of the move to memory.
    968 	cmp.b	@byte_dst, r0l
    969 	bne	fail1
    970 	mov.b	#0, @byte_dst	; zero it again for the next use.
    971 
    972 mov_b_reg8_to_indexw16:
    973 	set_grs_a5a5		; Fill all general regs with a fixed pattern
    974 	mov.l	#0xffff0002, er1
    975 	set_ccr_zero
    976 	;; mov.b ers, @(dd:16, rd.w)
    977 	mov.b	r0l, @(byte_dst-2:16, r1.w)	; byte indexed operand
    978 
    979 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
    980 	test_neg_set
    981 	test_zero_clear
    982 	test_ovf_clear
    983 	test_carry_clear
    984 
    985 	test_h_gr32	0xffff0002 er1
    986 	test_gr_a5a5 0		; Make sure other general regs not disturbed
    987 	test_gr_a5a5 2
    988 	test_gr_a5a5 3
    989 	test_gr_a5a5 4
    990 	test_gr_a5a5 5
    991 	test_gr_a5a5 6
    992 	test_gr_a5a5 7
    993 
    994 	;; Now check the result of the move to memory.
    995 	cmp.b	@byte_dst, r0l
    996 	bne	fail1
    997 	mov.b	#0, @byte_dst	; zero it again for the next use.
    998 
    999 mov_b_reg8_to_indexl16:
   1000 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1001 	mov.l	#0x00000003, er1
   1002 	set_ccr_zero
   1003 	;; mov.b ers, @(dd:16, erd.l)
   1004 	mov.b	r0l, @(byte_dst-3:16, er1.l)	; byte indexed operand
   1005 
   1006 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
   1007 	test_neg_set
   1008 	test_zero_clear
   1009 	test_ovf_clear
   1010 	test_carry_clear
   1011 
   1012 	test_h_gr32	0x00000003 er1
   1013 	test_gr_a5a5 0		; Make sure other general regs not disturbed
   1014 	test_gr_a5a5 2
   1015 	test_gr_a5a5 3
   1016 	test_gr_a5a5 4
   1017 	test_gr_a5a5 5
   1018 	test_gr_a5a5 6
   1019 	test_gr_a5a5 7
   1020 
   1021 	;; Now check the result of the move to memory.
   1022 	cmp.b	@byte_dst, r0l
   1023 	bne	fail1
   1024 	mov.b	#0, @byte_dst	; zero it again for the next use.
   1025 
   1026 mov_b_reg8_to_indexb32:
   1027 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1028 	mov.l	#0xffffff04 er1
   1029 	set_ccr_zero
   1030 	;; mov.b ers, @(dd:32, rd.b)
   1031 	mov.b	r0l, @(byte_dst-4:32, r1.b)	; byte indexed operand
   1032 
   1033 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
   1034 	test_neg_set
   1035 	test_zero_clear
   1036 	test_ovf_clear
   1037 	test_carry_clear
   1038 
   1039 	test_h_gr32	0xffffff04, er1
   1040 	test_gr_a5a5 0		; Make sure other general regs not disturbed
   1041 	test_gr_a5a5 2
   1042 	test_gr_a5a5 3
   1043 	test_gr_a5a5 4
   1044 	test_gr_a5a5 5
   1045 	test_gr_a5a5 6
   1046 	test_gr_a5a5 7
   1047 
   1048 	;; Now check the result of the move to memory.
   1049 	cmp.b	@byte_dst, r0l
   1050 	bne	fail1
   1051 	mov.b	#0, @byte_dst	; zero it again for the next use.
   1052 
   1053 mov_b_reg8_to_indexw32:
   1054 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1055 	mov.l	#0xffff0005 er1
   1056 	set_ccr_zero
   1057 	;; mov.b ers, @(dd:32, rd.w)
   1058 	mov.b	r0l, @(byte_dst-5:32, r1.w)	; byte indexed operand
   1059 
   1060 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
   1061 	test_neg_set
   1062 	test_zero_clear
   1063 	test_ovf_clear
   1064 	test_carry_clear
   1065 
   1066 	test_h_gr32	0xffff0005, er1
   1067 	test_gr_a5a5 0		; Make sure other general regs not disturbed
   1068 	test_gr_a5a5 2
   1069 	test_gr_a5a5 3
   1070 	test_gr_a5a5 4
   1071 	test_gr_a5a5 5
   1072 	test_gr_a5a5 6
   1073 	test_gr_a5a5 7
   1074 
   1075 	;; Now check the result of the move to memory.
   1076 	cmp.b	@byte_dst, r0l
   1077 	bne	fail1
   1078 	mov.b	#0, @byte_dst	; zero it again for the next use.
   1079 
   1080 mov_b_reg8_to_indexl32:
   1081 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1082 	mov.l	#0x00000006 er1
   1083 	set_ccr_zero
   1084 	;; mov.b ers, @(dd:32, erd.l)
   1085 	mov.b	r0l, @(byte_dst-6:32, er1.l)	; byte indexed operand
   1086 
   1087 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
   1088 	test_neg_set
   1089 	test_zero_clear
   1090 	test_ovf_clear
   1091 	test_carry_clear
   1092 
   1093 	test_h_gr32	0x00000006, er1
   1094 	test_gr_a5a5 0		; Make sure other general regs not disturbed
   1095 	test_gr_a5a5 2
   1096 	test_gr_a5a5 3
   1097 	test_gr_a5a5 4
   1098 	test_gr_a5a5 5
   1099 	test_gr_a5a5 6
   1100 	test_gr_a5a5 7
   1101 
   1102 	;; Now check the result of the move to memory.
   1103 	cmp.b	@byte_dst, r0l
   1104 	bne	fail1
   1105 	mov.b	#0, @byte_dst	; zero it again for the next use.
   1106 .endif
   1107 
   1108 .if (sim_cpu == h8sx)
   1109 mov_b_reg8_to_abs8:
   1110 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1111 
   1112 	mov.l	#byte_dst-20, er0
   1113 	ldc	er0, sbr
   1114 	set_ccr_zero
   1115 	;; mov.b ers, @aa:8
   1116 	mov.b	r1l, @20:8	; 8-bit address-direct (sbr-relative) operand
   1117 
   1118 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
   1119 	test_neg_set
   1120 	test_zero_clear
   1121 	test_ovf_clear
   1122 	test_carry_clear
   1123 
   1124 	test_h_gr32  byte_dst-20, er0
   1125 	test_gr_a5a5 1		; Make sure other general regs not disturbed
   1126 	test_gr_a5a5 2
   1127 	test_gr_a5a5 3
   1128 	test_gr_a5a5 4
   1129 	test_gr_a5a5 5
   1130 	test_gr_a5a5 6
   1131 	test_gr_a5a5 7
   1132 
   1133 	;; Now check the result of the move to memory.
   1134 	cmp.b	@byte_dst, r1l
   1135 	bne	fail1
   1136 	mov.b	#0, @byte_dst	; zero it again for the next use.
   1137 .endif
   1138 
   1139 mov_b_reg8_to_abs16:
   1140 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1141 	set_ccr_zero
   1142 
   1143 	;; mov.b ers, @aa:16
   1144 	mov.b	r0l, @byte_dst:16	; 16-bit address-direct operand
   1145 ;;;	.word	0x6a88
   1146 ;;;	.word	@byte_dst
   1147 
   1148 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
   1149 	test_neg_set
   1150 	test_zero_clear
   1151 	test_ovf_clear
   1152 	test_carry_clear
   1153 
   1154 	test_gr_a5a5 0		; Make sure _ALL_ general regs not disturbed
   1155 	test_gr_a5a5 1		; (first, because on h8/300 we must use one
   1156 	test_gr_a5a5 2		; to examine the destination memory).
   1157 	test_gr_a5a5 3
   1158 	test_gr_a5a5 4
   1159 	test_gr_a5a5 5
   1160 	test_gr_a5a5 6
   1161 	test_gr_a5a5 7
   1162 
   1163 	;; Now check the result of the move to memory.
   1164 	mov.b	@byte_dst, r0l
   1165 	cmp.b	r0l, r1l
   1166 	beq	.Lnext41
   1167 	fail
   1168 .Lnext41:
   1169 	mov.b	#0, r0l
   1170 	mov.b	r0l, @byte_dst	; zero it again for the next use.
   1171 
   1172 mov_b_reg8_to_abs32:
   1173 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1174 	set_ccr_zero
   1175 
   1176 	;; mov.b ers, @aa:32
   1177 	mov.b	r0l, @byte_dst:32	; 32-bit address-direct operand
   1178 ;;;	.word	0x6aa8
   1179 ;;;	.long	@byte_dst
   1180 
   1181 	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
   1182 	test_neg_set
   1183 	test_zero_clear
   1184 	test_ovf_clear
   1185 	test_carry_clear
   1186 
   1187 	test_gr_a5a5 0		; Make sure _ALL_ general regs not disturbed
   1188 	test_gr_a5a5 1		; (first, because on h8/300 we must use one
   1189 	test_gr_a5a5 2		; to examine the destination memory).
   1190 	test_gr_a5a5 3
   1191 	test_gr_a5a5 4
   1192 	test_gr_a5a5 5
   1193 	test_gr_a5a5 6
   1194 	test_gr_a5a5 7
   1195 
   1196 	;; Now check the result of the move to memory.
   1197 	mov.b	@byte_dst, r0l
   1198 	cmp.b	r0l, r1l
   1199 	beq	.Lnext42
   1200 	fail
   1201 .Lnext42:
   1202 	mov.b	#0, r0l
   1203 	mov.b	r0l, @byte_dst	; zero it again for the next use.
   1204 
   1205 	;;
   1206 	;; Move byte to register destination.
   1207 	;;
   1208 
   1209 mov_b_indirect_to_reg8:
   1210 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1211 	set_ccr_zero
   1212 
   1213 	;; mov.b @ers, rd
   1214 	mov.l	#byte_src, er1
   1215 	mov.b	@er1, r0l	; Register indirect operand
   1216 ;;;	.word	0x6818
   1217 
   1218 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1219 	test_neg_clear
   1220 	test_zero_clear
   1221 	test_ovf_clear
   1222 	test_carry_clear
   1223 
   1224 	test_h_gr32 0xa5a5a577 er0
   1225 
   1226 	test_h_gr32	byte_src, er1
   1227 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   1228 	test_gr_a5a5 3
   1229 	test_gr_a5a5 4
   1230 	test_gr_a5a5 5
   1231 	test_gr_a5a5 6
   1232 	test_gr_a5a5 7
   1233 
   1234 mov_b_postinc_to_reg8:		; post-increment from mem to register
   1235 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1236 	set_ccr_zero
   1237 
   1238 	;; mov.b @ers+, rd
   1239 
   1240 	mov.l	#byte_src, er1
   1241 	mov.b	@er1+, r0l	; Register post-incr operand
   1242 ;;;	.word	0x6c18
   1243 
   1244 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1245 	test_neg_clear
   1246 	test_zero_clear
   1247 	test_ovf_clear
   1248 	test_carry_clear
   1249 
   1250 	test_h_gr32 0xa5a5a577 er0
   1251 
   1252 	test_h_gr32	byte_src+1, er1
   1253 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   1254 	test_gr_a5a5 3
   1255 	test_gr_a5a5 4
   1256 	test_gr_a5a5 5
   1257 	test_gr_a5a5 6
   1258 	test_gr_a5a5 7
   1259 
   1260 .if (sim_cpu == h8sx)
   1261 mov_b_postdec_to_reg8:		; post-decrement from mem to register
   1262 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1263 	set_ccr_zero
   1264 
   1265 	;; mov.b @ers-, rd
   1266 
   1267 	mov.l	#byte_src, er1
   1268 	mov.b	@er1-, r0l	; Register post-decr operand
   1269 ;;;	.word	0x0172
   1270 ;;;	.word	0x6c18
   1271 
   1272 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1273 	test_neg_clear
   1274 	test_zero_clear
   1275 	test_ovf_clear
   1276 	test_carry_clear
   1277 
   1278 	test_h_gr32 0xa5a5a577 er0
   1279 
   1280 	test_h_gr32	byte_src-1, er1
   1281 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   1282 	test_gr_a5a5 3
   1283 	test_gr_a5a5 4
   1284 	test_gr_a5a5 5
   1285 	test_gr_a5a5 6
   1286 	test_gr_a5a5 7
   1287 
   1288 mov_b_preinc_to_reg8:		; pre-increment from mem to register
   1289 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1290 	set_ccr_zero
   1291 
   1292 	;; mov.b @+ers, rd
   1293 
   1294 	mov.l	#byte_src-1, er1
   1295 	mov.b	@+er1, r0l	; Register pre-incr operand
   1296 ;;;	.word	0x0171
   1297 ;;;	.word	0x6c18
   1298 
   1299 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1300 	test_neg_clear
   1301 	test_zero_clear
   1302 	test_ovf_clear
   1303 	test_carry_clear
   1304 
   1305 	test_h_gr32 0xa5a5a577 er0
   1306 
   1307 	test_h_gr32	byte_src, er1
   1308 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   1309 	test_gr_a5a5 3
   1310 	test_gr_a5a5 4
   1311 	test_gr_a5a5 5
   1312 	test_gr_a5a5 6
   1313 	test_gr_a5a5 7
   1314 
   1315 mov_b_predec_to_reg8:		; pre-decrement from mem to register
   1316 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1317 	set_ccr_zero
   1318 
   1319 	;; mov.b @-ers, rd
   1320 
   1321 	mov.l	#byte_src+1, er1
   1322 	mov.b	@-er1, r0l	; Register pre-decr operand
   1323 ;;;	.word	0x0173
   1324 ;;;	.word	0x6c18
   1325 
   1326 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1327 	test_neg_clear
   1328 	test_zero_clear
   1329 	test_ovf_clear
   1330 	test_carry_clear
   1331 
   1332 	test_h_gr32 0xa5a5a577 er0
   1333 
   1334 	test_h_gr32	byte_src, er1
   1335 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   1336 	test_gr_a5a5 3
   1337 	test_gr_a5a5 4
   1338 	test_gr_a5a5 5
   1339 	test_gr_a5a5 6
   1340 	test_gr_a5a5 7
   1341 
   1342 
   1343 mov_b_disp2_to_reg8:
   1344 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1345 	set_ccr_zero
   1346 
   1347 	;; mov.b @(dd:2, ers), rd
   1348 	mov.l	#byte_src-1, er1
   1349 	mov.b	@(1:2, er1), r0l	; Register plus 2-bit disp. operand
   1350 ;;; 	.word	0x0171
   1351 ;;; 	.word	0x6818
   1352 
   1353 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1354 	test_neg_clear
   1355 	test_zero_clear
   1356 	test_ovf_clear
   1357 	test_carry_clear
   1358 
   1359 	test_h_gr32 0xa5a5a577 er0	; mov result:	a5a5 | 7777
   1360 
   1361 	test_h_gr32	byte_src-1, er1
   1362 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   1363 	test_gr_a5a5 3
   1364 	test_gr_a5a5 4
   1365 	test_gr_a5a5 5
   1366 	test_gr_a5a5 6
   1367 	test_gr_a5a5 7
   1368 .endif
   1369 
   1370 mov_b_disp16_to_reg8:
   1371 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1372 	set_ccr_zero
   1373 
   1374 	;; mov.b @(dd:16, ers), rd
   1375 	mov.l	#byte_src+0x1234, er1
   1376 	mov.b	@(-0x1234:16, er1), r0l	; Register plus 16-bit disp. operand
   1377 ;;;	.word	0x6e18
   1378 ;;;	.word	-0x1234
   1379 
   1380 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1381 	test_neg_clear
   1382 	test_zero_clear
   1383 	test_ovf_clear
   1384 	test_carry_clear
   1385 
   1386 	test_h_gr32 0xa5a5a577 er0	; mov result:	a5a5 | 7777
   1387 
   1388 	test_h_gr32	byte_src+0x1234, er1
   1389 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   1390 	test_gr_a5a5 3
   1391 	test_gr_a5a5 4
   1392 	test_gr_a5a5 5
   1393 	test_gr_a5a5 6
   1394 	test_gr_a5a5 7
   1395 
   1396 mov_b_disp32_to_reg8:
   1397 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1398 	set_ccr_zero
   1399 
   1400 	;; mov.b @(dd:32, ers), rd
   1401 	mov.l	#byte_src+65536, er1
   1402 	mov.b	@(-65536:32, er1), r0l	; Register plus 32-bit disp. operand
   1403 ;;;	.word	0x7810
   1404 ;;;	.word	0x6a28
   1405 ;;;	.long	-65536
   1406 
   1407 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1408 	test_neg_clear
   1409 	test_zero_clear
   1410 	test_ovf_clear
   1411 	test_carry_clear
   1412 
   1413 	test_h_gr32 0xa5a5a577 er0	; mov result:	a5a5 | 7777
   1414 
   1415 	test_h_gr32	byte_src+65536, er1
   1416 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   1417 	test_gr_a5a5 3
   1418 	test_gr_a5a5 4
   1419 	test_gr_a5a5 5
   1420 	test_gr_a5a5 6
   1421 	test_gr_a5a5 7
   1422 
   1423 .if (sim_cpu == h8sx)
   1424 mov_b_indexb16_to_reg8:
   1425 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1426 	mov.l	#0xffffff01, er1
   1427 	set_ccr_zero
   1428 	;; mov.b @(dd:16, rs.b), rd
   1429 	mov.b	@(byte_src-1:16, r1.b), r0l	; indexed byte operand
   1430 
   1431 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1432 	test_neg_clear
   1433 	test_zero_clear
   1434 	test_ovf_clear
   1435 	test_carry_clear
   1436 
   1437 	test_h_gr32 0xa5a5a577 er0	; mov result:	a5a5a5 | 77
   1438 
   1439 	test_h_gr32  0xffffff01, er1
   1440 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   1441 	test_gr_a5a5 3
   1442 	test_gr_a5a5 4
   1443 	test_gr_a5a5 5
   1444 	test_gr_a5a5 6
   1445 	test_gr_a5a5 7
   1446 
   1447 mov_b_indexw16_to_reg8:
   1448 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1449 	mov.l	#0xffff0002, er1
   1450 	set_ccr_zero
   1451 	;; mov.b @(dd:16, rs.w), rd
   1452 	mov.b	@(byte_src-2:16, r1.w), r0l	; indexed byte operand
   1453 
   1454 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1455 	test_neg_clear
   1456 	test_zero_clear
   1457 	test_ovf_clear
   1458 	test_carry_clear
   1459 
   1460 	test_h_gr32 0xa5a5a577 er0	; mov result:	a5a5a5 | 77
   1461 
   1462 	test_h_gr32  0xffff0002, er1
   1463 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   1464 	test_gr_a5a5 3
   1465 	test_gr_a5a5 4
   1466 	test_gr_a5a5 5
   1467 	test_gr_a5a5 6
   1468 	test_gr_a5a5 7
   1469 
   1470 mov_b_indexl16_to_reg8:
   1471 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1472 	mov.l	#0x00000003, er1
   1473 	set_ccr_zero
   1474 	;; mov.b @(dd:16, ers.l), rd
   1475 	mov.b	@(byte_src-3:16, er1.l), r0l	; indexed byte operand
   1476 
   1477 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1478 	test_neg_clear
   1479 	test_zero_clear
   1480 	test_ovf_clear
   1481 	test_carry_clear
   1482 
   1483 	test_h_gr32 0xa5a5a577 er0	; mov result:	a5a5a5 | 77
   1484 
   1485 	test_h_gr32  0x00000003, er1
   1486 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   1487 	test_gr_a5a5 3
   1488 	test_gr_a5a5 4
   1489 	test_gr_a5a5 5
   1490 	test_gr_a5a5 6
   1491 	test_gr_a5a5 7
   1492 
   1493 mov_b_indexb32_to_reg8:
   1494 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1495 	mov.l	#0xffffff04, er1
   1496 	set_ccr_zero
   1497 	;; mov.b @(dd:32, rs.b), rd
   1498 	mov.b	@(byte_src-4:32, r1.b), r0l	; indexed byte operand
   1499 
   1500 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1501 	test_neg_clear
   1502 	test_zero_clear
   1503 	test_ovf_clear
   1504 	test_carry_clear
   1505 
   1506 	test_h_gr32 0xa5a5a577 er0	; mov result:	a5a5 | 7777
   1507 
   1508 	test_h_gr32  0xffffff04 er1
   1509 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   1510 	test_gr_a5a5 3
   1511 	test_gr_a5a5 4
   1512 	test_gr_a5a5 5
   1513 	test_gr_a5a5 6
   1514 	test_gr_a5a5 7
   1515 
   1516 mov_b_indexw32_to_reg8:
   1517 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1518 	mov.l	#0xffff0005, er1
   1519 	set_ccr_zero
   1520 	;; mov.b @(dd:32, rs.w), rd
   1521 	mov.b	@(byte_src-5:32, r1.w), r0l	; indexed byte operand
   1522 
   1523 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1524 	test_neg_clear
   1525 	test_zero_clear
   1526 	test_ovf_clear
   1527 	test_carry_clear
   1528 
   1529 	test_h_gr32 0xa5a5a577 er0	; mov result:	a5a5 | 7777
   1530 
   1531 	test_h_gr32  0xffff0005 er1
   1532 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   1533 	test_gr_a5a5 3
   1534 	test_gr_a5a5 4
   1535 	test_gr_a5a5 5
   1536 	test_gr_a5a5 6
   1537 	test_gr_a5a5 7
   1538 
   1539 mov_b_indexl32_to_reg8:
   1540 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1541 	mov.l	#0x00000006, er1
   1542 	set_ccr_zero
   1543 	;; mov.b @(dd:32, ers.l), rd
   1544 	mov.b	@(byte_src-6:32, er1.l), r0l	; indexed byte operand
   1545 
   1546 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1547 	test_neg_clear
   1548 	test_zero_clear
   1549 	test_ovf_clear
   1550 	test_carry_clear
   1551 
   1552 	test_h_gr32 0xa5a5a577 er0	; mov result:	a5a5 | 7777
   1553 
   1554 	test_h_gr32  0x00000006 er1
   1555 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   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 
   1562 .endif
   1563 
   1564 .if (sim_cpu == h8sx)
   1565 mov_b_abs8_to_reg8:
   1566 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1567 	mov.l	#byte_src-255, er1
   1568 	ldc	er1, sbr
   1569 	set_ccr_zero
   1570 	;; mov.b @aa:8, rd
   1571 	mov.b	@0xff:8, r0l	; 8-bit (sbr relative) address-direct operand
   1572 
   1573 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1574 	test_neg_clear
   1575 	test_zero_clear
   1576 	test_ovf_clear
   1577 	test_carry_clear
   1578 
   1579 	test_h_gr32 0xa5a5a577 er0
   1580 
   1581 	test_h_gr32  byte_src-255, er1
   1582 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   1583 	test_gr_a5a5 3
   1584 	test_gr_a5a5 4
   1585 	test_gr_a5a5 5
   1586 	test_gr_a5a5 6
   1587 	test_gr_a5a5 7
   1588 .endif
   1589 
   1590 mov_b_abs16_to_reg8:
   1591 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1592 	set_ccr_zero
   1593 
   1594 	;; mov.b @aa:16, rd
   1595 	mov.b	@byte_src:16, r0l	; 16-bit address-direct operand
   1596 ;;;	.word	0x6a08
   1597 ;;;	.word	@byte_src
   1598 
   1599 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1600 	test_neg_clear
   1601 	test_zero_clear
   1602 	test_ovf_clear
   1603 	test_carry_clear
   1604 
   1605 	test_h_gr32 0xa5a5a577 er0
   1606 
   1607 	test_gr_a5a5 1		; Make sure other general regs not disturbed
   1608 	test_gr_a5a5 2
   1609 	test_gr_a5a5 3
   1610 	test_gr_a5a5 4
   1611 	test_gr_a5a5 5
   1612 	test_gr_a5a5 6
   1613 	test_gr_a5a5 7
   1614 
   1615 mov_b_abs32_to_reg8:
   1616 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1617 	set_ccr_zero
   1618 
   1619 	;; mov.b @aa:32, rd
   1620 	mov.b	@byte_src:32, r0l	; 32-bit address-direct operand
   1621 ;;;	.word	0x6a28
   1622 ;;;	.long	@byte_src
   1623 
   1624 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1625 	test_neg_clear
   1626 	test_zero_clear
   1627 	test_ovf_clear
   1628 	test_carry_clear
   1629 
   1630 	test_h_gr32 0xa5a5a577 er0
   1631 
   1632 	test_gr_a5a5 1		; Make sure other general regs not disturbed
   1633 	test_gr_a5a5 2
   1634 	test_gr_a5a5 3
   1635 	test_gr_a5a5 4
   1636 	test_gr_a5a5 5
   1637 	test_gr_a5a5 6
   1638 	test_gr_a5a5 7
   1639 
   1640 .if (sim_cpu == h8sx)
   1641 
   1642 	;;
   1643 	;; Move byte from memory to memory
   1644 	;;
   1645 
   1646 mov_b_indirect_to_indirect:	; reg indirect, memory to memory
   1647 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1648 	set_ccr_zero
   1649 
   1650 	;; mov.b @ers, @erd
   1651 
   1652 	mov.l	#byte_src, er1
   1653 	mov.l	#byte_dst, er0
   1654 	mov.b	@er1, @er0
   1655 ;;;	.word	0x0178
   1656 ;;;	.word	0x0100
   1657 
   1658 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1659 	test_neg_clear
   1660 	test_zero_clear
   1661 	test_ovf_clear
   1662 	test_carry_clear
   1663 
   1664 	;; Verify the affected registers.
   1665 
   1666 	test_h_gr32  byte_dst er0
   1667 	test_h_gr32  byte_src er1
   1668 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   1669 	test_gr_a5a5 3
   1670 	test_gr_a5a5 4
   1671 	test_gr_a5a5 5
   1672 	test_gr_a5a5 6
   1673 	test_gr_a5a5 7
   1674 
   1675 	;; Now check the result of the move to memory.
   1676 	cmp.b	@byte_src, @byte_dst
   1677 	beq	.Lnext56
   1678 	fail
   1679 .Lnext56:
   1680 	;; Now clear the destination location, and verify that.
   1681 	mov.b	#0, @byte_dst
   1682 	cmp.b	@byte_src, @byte_dst
   1683 	bne	.Lnext57
   1684 	fail
   1685 .Lnext57:			; OK, pass on.
   1686 
   1687 mov_b_postinc_to_postinc:	; reg post-increment, memory to memory
   1688 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1689 	set_ccr_zero
   1690 
   1691 	;; mov.b @ers+, @erd+
   1692 
   1693 	mov.l	#byte_src, er1
   1694 	mov.l	#byte_dst, er0
   1695 	mov.b	@er1+, @er0+
   1696 ;;;	.word	0x0178
   1697 ;;;	.word	0x8180
   1698 
   1699 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1700 	test_neg_clear
   1701 	test_zero_clear
   1702 	test_ovf_clear
   1703 	test_carry_clear
   1704 
   1705 	;; Verify the affected registers.
   1706 
   1707 	test_h_gr32  byte_dst+1 er0
   1708 	test_h_gr32  byte_src+1 er1
   1709 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   1710 	test_gr_a5a5 3
   1711 	test_gr_a5a5 4
   1712 	test_gr_a5a5 5
   1713 	test_gr_a5a5 6
   1714 	test_gr_a5a5 7
   1715 
   1716 	;; Now check the result of the move to memory.
   1717 	cmp.b	@byte_src, @byte_dst
   1718 	beq	.Lnext65
   1719 	fail
   1720 .Lnext65:
   1721 	;; Now clear the destination location, and verify that.
   1722 	mov.b	#0, @byte_dst
   1723 	cmp.b	@byte_src, @byte_dst
   1724 	bne	.Lnext66
   1725 	fail
   1726 .Lnext66:			; OK, pass on.
   1727 	;; special case same register
   1728 	mov.l	#byte_src, er0
   1729 	mov.b	@er0+, @er0+	; copying byte_src to byte_dst
   1730 	test_h_gr32  byte_src+2 er0
   1731 	cmp.b	@byte_src, @byte_dst
   1732 	beq	.Lnext67
   1733 	fail
   1734 .Lnext67:
   1735 	;; Now clear the destination location, and verify that.
   1736 	mov.b	#0, @byte_dst
   1737 	cmp.b	@byte_src, @byte_dst
   1738 	bne	.Lnext68
   1739 	fail
   1740 .Lnext68:
   1741 
   1742 mov_b_postdec_to_postdec:	; reg post-decrement, memory to memory
   1743 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1744 	set_ccr_zero
   1745 
   1746 	;; mov.b @ers-, @erd-
   1747 
   1748 	mov.l	#byte_src, er1
   1749 	mov.l	#byte_dst, er0
   1750 	mov.b	@er1-, @er0-
   1751 ;;;	.word	0x0178
   1752 ;;;	.word	0xa1a0
   1753 
   1754 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1755 	test_neg_clear
   1756 	test_zero_clear
   1757 	test_ovf_clear
   1758 	test_carry_clear
   1759 
   1760 	;; Verify the affected registers.
   1761 
   1762 	test_h_gr32  byte_dst-1 er0
   1763 	test_h_gr32  byte_src-1 er1
   1764 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   1765 	test_gr_a5a5 3
   1766 	test_gr_a5a5 4
   1767 	test_gr_a5a5 5
   1768 	test_gr_a5a5 6
   1769 	test_gr_a5a5 7
   1770 
   1771 	;; Now check the result of the move to memory.
   1772 	cmp.b	@byte_src, @byte_dst
   1773 	beq	.Lnext75
   1774 	fail
   1775 .Lnext75:
   1776 	;; Now clear the destination location, and verify that.
   1777 	mov.b	#0, @byte_dst
   1778 	cmp.b	@byte_src, @byte_dst
   1779 	bne	.Lnext76
   1780 	fail
   1781 .Lnext76:			; OK, pass on.
   1782 	;; special case same register
   1783 	mov.l	#byte_src, er0
   1784 	mov.b	@er0-, @er0-	; copying byte_src to byte_dst_dec
   1785 	test_h_gr32  byte_src-2 er0
   1786 	cmp.b	@byte_src, @byte_dst_dec
   1787 	beq	.Lnext77
   1788 	fail
   1789 .Lnext77:
   1790 	;; Now clear the destination location, and verify that.
   1791 	mov.b	#0, @byte_dst_dec
   1792 	cmp.b	@byte_src, @byte_dst_dec
   1793 	bne	.Lnext78
   1794 	fail
   1795 .Lnext78:
   1796 
   1797 mov_b_preinc_to_preinc:		; reg pre-increment, memory to memory
   1798 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1799 	set_ccr_zero
   1800 
   1801 	;; mov.b @+ers, @+erd
   1802 
   1803 	mov.l	#byte_src-1, er1
   1804 	mov.l	#byte_dst-1, er0
   1805 	mov.b	@+er1, @+er0
   1806 ;;;	.word	0x0178
   1807 ;;;	.word	0x9190
   1808 
   1809 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1810 	test_neg_clear
   1811 	test_zero_clear
   1812 	test_ovf_clear
   1813 	test_carry_clear
   1814 
   1815 	;; Verify the affected registers.
   1816 
   1817 	test_h_gr32  byte_dst er0
   1818 	test_h_gr32  byte_src er1
   1819 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   1820 	test_gr_a5a5 3
   1821 	test_gr_a5a5 4
   1822 	test_gr_a5a5 5
   1823 	test_gr_a5a5 6
   1824 	test_gr_a5a5 7
   1825 
   1826 	;; Now check the result of the move to memory.
   1827 	cmp.b	@byte_src, @byte_dst
   1828 	beq	.Lnext85
   1829 	fail
   1830 .Lnext85:
   1831 	;; Now clear the destination location, and verify that.
   1832 	mov.b	#0, @byte_dst
   1833 	cmp.b	@byte_src, @byte_dst
   1834 	bne	.Lnext86
   1835 	fail
   1836 .Lnext86:				; OK, pass on.
   1837 	;; special case same register
   1838 	mov.l	#byte_src-1, er0
   1839 	mov.b	@+er0, @+er0	; copying byte_src to byte_dst
   1840 	test_h_gr32  byte_src+1 er0
   1841 	cmp.b	@byte_src, @byte_dst
   1842 	beq	.Lnext87
   1843 	fail
   1844 .Lnext87:
   1845 	;; Now clear the destination location, and verify that.
   1846 	mov.b	#0, @byte_dst
   1847 	cmp.b	@byte_src, @byte_dst
   1848 	bne	.Lnext88
   1849 	fail
   1850 .Lnext88:
   1851 
   1852 mov_b_predec_to_predec:		; reg pre-decrement, memory to memory
   1853 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1854 	set_ccr_zero
   1855 
   1856 	;; mov.b @-ers, @-erd
   1857 
   1858 	mov.l	#byte_src+1, er1
   1859 	mov.l	#byte_dst+1, er0
   1860 	mov.b	@-er1, @-er0
   1861 ;;;	.word	0x0178
   1862 ;;;	.word	0xb1b0
   1863 
   1864 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1865 	test_neg_clear
   1866 	test_zero_clear
   1867 	test_ovf_clear
   1868 	test_carry_clear
   1869 
   1870 	;; Verify the affected registers.
   1871 
   1872 	test_h_gr32  byte_dst er0
   1873 	test_h_gr32  byte_src er1
   1874 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   1875 	test_gr_a5a5 3
   1876 	test_gr_a5a5 4
   1877 	test_gr_a5a5 5
   1878 	test_gr_a5a5 6
   1879 	test_gr_a5a5 7
   1880 
   1881 	;; Now check the result of the move to memory.
   1882 	cmp.b	@byte_src, @byte_dst
   1883 	beq	.Lnext95
   1884 	fail
   1885 .Lnext95:
   1886 	;; Now clear the destination location, and verify that.
   1887 	mov.b	#0, @byte_dst
   1888 	cmp.b	@byte_src, @byte_dst
   1889 	bne	.Lnext96
   1890 	fail
   1891 .Lnext96:			; OK, pass on.
   1892 	;; special case same register
   1893 	mov.l	#byte_src+1, er0
   1894 	mov.b	@-er0, @-er0	; copying byte_src to byte_dst_dec
   1895 	test_h_gr32  byte_src-1 er0
   1896 	cmp.b	@byte_src, @byte_dst_dec
   1897 	beq	.Lnext97
   1898 	fail
   1899 .Lnext97:
   1900 	;; Now clear the destination location, and verify that.
   1901 	mov.b	#0, @byte_dst_dec
   1902 	cmp.b	@byte_src, @byte_dst_dec
   1903 	bne	.Lnext98
   1904 	fail
   1905 .Lnext98:
   1906 
   1907 mov_b_disp2_to_disp2:		; reg 2-bit disp, memory to memory
   1908 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1909 	set_ccr_zero
   1910 
   1911 	;; mov.b @(dd:2, ers), @(dd:2, erd)
   1912 
   1913 	mov.l	#byte_src-1, er1
   1914 	mov.l	#byte_dst-2, er0
   1915 	mov.b	@(1:2, er1), @(2:2, er0)
   1916 ;;; 	.word	0x0178
   1917 ;;; 	.word	0x1120
   1918 
   1919 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1920 	test_neg_clear
   1921 	test_zero_clear
   1922 	test_ovf_clear
   1923 	test_carry_clear
   1924 
   1925 	;; Verify the affected registers.
   1926 
   1927 	test_h_gr32  byte_dst-2 er0
   1928 	test_h_gr32  byte_src-1 er1
   1929 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   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 
   1936 	;; Now check the result of the move to memory.
   1937 	cmp.b	@byte_src, @byte_dst
   1938 	beq	.Lnext105
   1939 	fail
   1940 .Lnext105:
   1941 	;; Now clear the destination location, and verify that.
   1942 	mov.b	#0, @byte_dst
   1943 	cmp.b	@byte_src, @byte_dst
   1944 	bne	.Lnext106
   1945 	fail
   1946 .Lnext106:			; OK, pass on.
   1947 
   1948 mov_b_disp16_to_disp16:		; reg 16-bit disp, memory to memory
   1949 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1950 	set_ccr_zero
   1951 
   1952 	;; mov.b @(dd:16, ers), @(dd:16, erd)
   1953 
   1954 	mov.l	#byte_src-1, er1
   1955 	mov.l	#byte_dst-2, er0
   1956 	mov.b	@(1:16, er1), @(2:16, er0)
   1957 ;;; 	.word	0x0178
   1958 ;;; 	.word	0xc1c0
   1959 ;;; 	.word	0x0001
   1960 ;;; 	.word	0x0002
   1961 
   1962 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   1963 	test_neg_clear
   1964 	test_zero_clear
   1965 	test_ovf_clear
   1966 	test_carry_clear
   1967 
   1968 	;; Verify the affected registers.
   1969 
   1970 	test_h_gr32  byte_dst-2 er0
   1971 	test_h_gr32  byte_src-1 er1
   1972 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   1973 	test_gr_a5a5 3
   1974 	test_gr_a5a5 4
   1975 	test_gr_a5a5 5
   1976 	test_gr_a5a5 6
   1977 	test_gr_a5a5 7
   1978 
   1979 	;; Now check the result of the move to memory.
   1980 	cmp.b	@byte_src, @byte_dst
   1981 	beq	.Lnext115
   1982 	fail
   1983 .Lnext115:
   1984 	;; Now clear the destination location, and verify that.
   1985 	mov.b	#0, @byte_dst
   1986 	cmp.b	@byte_src, @byte_dst
   1987 	bne	.Lnext116
   1988 	fail
   1989 .Lnext116:			; OK, pass on.
   1990 
   1991 mov_b_disp32_to_disp32:		; reg 32-bit disp, memory to memory
   1992 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   1993 	set_ccr_zero
   1994 
   1995 	;; mov.b @(dd:32, ers), @(dd:32, erd)
   1996 
   1997 	mov.l	#byte_src-1, er1
   1998 	mov.l	#byte_dst-2, er0
   1999 	mov.b	@(1:32, er1), @(2:32, er0)
   2000 ;;; 	.word	0x0178
   2001 ;;; 	.word	0xc9c8
   2002 ;;;	.long	1
   2003 ;;;	.long	2
   2004 
   2005 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   2006 	test_neg_clear
   2007 	test_zero_clear
   2008 	test_ovf_clear
   2009 	test_carry_clear
   2010 
   2011 	;; Verify the affected registers.
   2012 
   2013 	test_h_gr32  byte_dst-2 er0
   2014 	test_h_gr32  byte_src-1 er1
   2015 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   2016 	test_gr_a5a5 3
   2017 	test_gr_a5a5 4
   2018 	test_gr_a5a5 5
   2019 	test_gr_a5a5 6
   2020 	test_gr_a5a5 7
   2021 
   2022 	;; Now check the result of the move to memory.
   2023 	cmp.b	@byte_src, @byte_dst
   2024 	beq	.Lnext125
   2025 	fail
   2026 .Lnext125:
   2027 	;; Now clear the destination location, and verify that.
   2028 	mov.b	#0, @byte_dst
   2029 	cmp.b	@byte_src, @byte_dst
   2030 	bne	.Lnext126
   2031 	fail
   2032 .Lnext126:				; OK, pass on.
   2033 
   2034 mov_b_indexb16_to_indexb16:	; reg 16-bit indexed, memory to memory
   2035 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   2036 	mov.l	#0xffffff01, er1
   2037 	mov.l	#0xffffff02, er0
   2038 	;; mov.b @(dd:16, rs.b), @(dd:16, rd.b)
   2039 	set_ccr_zero
   2040 	mov.b	@(byte_src-1:16, r1.b), @(byte_dst-2:16, r0.b)
   2041 
   2042 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   2043 	test_neg_clear
   2044 	test_zero_clear
   2045 	test_ovf_clear
   2046 	test_carry_clear
   2047 
   2048 	;; Verify the affected registers.
   2049 
   2050 	test_h_gr32  0xffffff02 er0
   2051 	test_h_gr32  0xffffff01 er1
   2052 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   2053 	test_gr_a5a5 3
   2054 	test_gr_a5a5 4
   2055 	test_gr_a5a5 5
   2056 	test_gr_a5a5 6
   2057 	test_gr_a5a5 7
   2058 
   2059 	;; Now check the result of the move to memory.
   2060 	cmp.b	@byte_src, @byte_dst
   2061 	bne	fail1
   2062 	;; Now clear the destination location, and verify that.
   2063 	mov.b	#0, @byte_dst
   2064 	cmp.b	@byte_src, @byte_dst
   2065 	beq	fail1
   2066 
   2067 mov_b_indexw16_to_indewb16:	; reg 16-bit indexed, memory to memory
   2068 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   2069 	mov.l	#0xffff0003, er1
   2070 	mov.l	#0xffff0004, er0
   2071 	;; mov.b @(dd:16, rs.w), @(dd:16, rd.w)
   2072 	set_ccr_zero
   2073 	mov.b	@(byte_src-3:16, r1.w), @(byte_dst-4:16, r0.w)
   2074 
   2075 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   2076 	test_neg_clear
   2077 	test_zero_clear
   2078 	test_ovf_clear
   2079 	test_carry_clear
   2080 
   2081 	;; Verify the affected registers.
   2082 
   2083 	test_h_gr32  0xffff0004 er0
   2084 	test_h_gr32  0xffff0003 er1
   2085 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   2086 	test_gr_a5a5 3
   2087 	test_gr_a5a5 4
   2088 	test_gr_a5a5 5
   2089 	test_gr_a5a5 6
   2090 	test_gr_a5a5 7
   2091 
   2092 	;; Now check the result of the move to memory.
   2093 	cmp.b	@byte_src, @byte_dst
   2094 	bne	fail1
   2095 	;; Now clear the destination location, and verify that.
   2096 	mov.b	#0, @byte_dst
   2097 	cmp.b	@byte_src, @byte_dst
   2098 	beq	fail1
   2099 
   2100 mov_b_indexl16_to_indexl16:	; reg 16-bit indexed, memory to memory
   2101 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   2102 	mov.l	#0x00000005, er1
   2103 	mov.l	#0x00000006, er0
   2104 	;; mov.b @(dd:16, ers.l), @(dd:16, erd.l)
   2105 	set_ccr_zero
   2106 	mov.b	@(byte_src-5:16, er1.l), @(byte_dst-6:16, er0.l)
   2107 
   2108 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   2109 	test_neg_clear
   2110 	test_zero_clear
   2111 	test_ovf_clear
   2112 	test_carry_clear
   2113 
   2114 	;; Verify the affected registers.
   2115 
   2116 	test_h_gr32  0x00000006 er0
   2117 	test_h_gr32  0x00000005 er1
   2118 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   2119 	test_gr_a5a5 3
   2120 	test_gr_a5a5 4
   2121 	test_gr_a5a5 5
   2122 	test_gr_a5a5 6
   2123 	test_gr_a5a5 7
   2124 
   2125 	;; Now check the result of the move to memory.
   2126 	cmp.b	@byte_src, @byte_dst
   2127 	bne	fail1
   2128 	;; Now clear the destination location, and verify that.
   2129 	mov.b	#0, @byte_dst
   2130 	cmp.b	@byte_src, @byte_dst
   2131 	beq	fail1
   2132 
   2133 mov_b_indexb32_to_indexb32:	; reg 32-bit indexed, memory to memory
   2134 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   2135 	mov.l	#0xffffff01, er1
   2136 	mov.l	#0xffffff02, er0
   2137 	set_ccr_zero
   2138 	;; mov.b @(dd:32, rs.b), @(dd:32, rd.b)
   2139 	mov.b	@(byte_src-1:32, r1.b), @(byte_dst-2:32, r0.b)
   2140 
   2141 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   2142 	test_neg_clear
   2143 	test_zero_clear
   2144 	test_ovf_clear
   2145 	test_carry_clear
   2146 
   2147 	;; Verify the affected registers.
   2148 
   2149 	test_h_gr32  0xffffff02 er0
   2150 	test_h_gr32  0xffffff01 er1
   2151 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   2152 	test_gr_a5a5 3
   2153 	test_gr_a5a5 4
   2154 	test_gr_a5a5 5
   2155 	test_gr_a5a5 6
   2156 	test_gr_a5a5 7
   2157 
   2158 	;; Now check the result of the move to memory.
   2159 	cmp.b	@byte_src, @byte_dst
   2160 	bne	fail1
   2161 	;; Now clear the destination location, and verify that.
   2162 	mov.b	#0, @byte_dst
   2163 	cmp.b	@byte_src, @byte_dst
   2164 	beq	fail1
   2165 
   2166 mov_b_indexw32_to_indexw32:	; reg 32-bit indexed, memory to memory
   2167 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   2168 	mov.l	#0xffff0003, er1
   2169 	mov.l	#0xffff0004, er0
   2170 	set_ccr_zero
   2171 	;; mov.b @(dd:32, rs.w), @(dd:32, rd.w)
   2172 	mov.b	@(byte_src-3:32, r1.w), @(byte_dst-4:32, r0.w)
   2173 
   2174 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   2175 	test_neg_clear
   2176 	test_zero_clear
   2177 	test_ovf_clear
   2178 	test_carry_clear
   2179 
   2180 	;; Verify the affected registers.
   2181 
   2182 	test_h_gr32  0xffff0004 er0
   2183 	test_h_gr32  0xffff0003 er1
   2184 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   2185 	test_gr_a5a5 3
   2186 	test_gr_a5a5 4
   2187 	test_gr_a5a5 5
   2188 	test_gr_a5a5 6
   2189 	test_gr_a5a5 7
   2190 
   2191 	;; Now check the result of the move to memory.
   2192 	cmp.b	@byte_src, @byte_dst
   2193 	bne	fail1
   2194 	;; Now clear the destination location, and verify that.
   2195 	mov.b	#0, @byte_dst
   2196 	cmp.b	@byte_src, @byte_dst
   2197 	beq	fail1
   2198 
   2199 mov_b_indexl32_to_indexl32:	; reg 32-bit indexed, memory to memory
   2200 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   2201 	mov.l	#0x00000005, er1
   2202 	mov.l	#0x00000006, er0
   2203 	set_ccr_zero
   2204 	;; mov.b @(dd:32, rs.w), @(dd:32, rd.w)
   2205 	mov.b	@(byte_src-5:32, er1.l), @(byte_dst-6:32, er0.l)
   2206 
   2207 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   2208 	test_neg_clear
   2209 	test_zero_clear
   2210 	test_ovf_clear
   2211 	test_carry_clear
   2212 
   2213 	;; Verify the affected registers.
   2214 
   2215 	test_h_gr32  0x00000006 er0
   2216 	test_h_gr32  0x00000005 er1
   2217 	test_gr_a5a5 2		; Make sure other general regs not disturbed
   2218 	test_gr_a5a5 3
   2219 	test_gr_a5a5 4
   2220 	test_gr_a5a5 5
   2221 	test_gr_a5a5 6
   2222 	test_gr_a5a5 7
   2223 
   2224 	;; Now check the result of the move to memory.
   2225 	cmp.b	@byte_src, @byte_dst
   2226 	bne	fail1
   2227 	;; Now clear the destination location, and verify that.
   2228 	mov.b	#0, @byte_dst
   2229 	cmp.b	@byte_src, @byte_dst
   2230 	beq	fail1
   2231 
   2232 mov_b_abs16_to_abs16:		; 16-bit absolute addr, memory to memory
   2233 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   2234 	set_ccr_zero
   2235 
   2236 	;; mov.b @aa:16, @aa:16
   2237 
   2238 	mov.b	@byte_src:16, @byte_dst:16
   2239 ;;; 	.word	0x0178
   2240 ;;; 	.word	0x4040
   2241 ;;;	.word	@byte_src
   2242 ;;;	.word	@byte_dst
   2243 
   2244 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   2245 	test_neg_clear
   2246 	test_zero_clear
   2247 	test_ovf_clear
   2248 	test_carry_clear
   2249 
   2250 
   2251 	test_gr_a5a5 0		; Make sure *NO* general registers are changed
   2252 	test_gr_a5a5 1
   2253 	test_gr_a5a5 2
   2254 	test_gr_a5a5 3
   2255 	test_gr_a5a5 4
   2256 	test_gr_a5a5 5
   2257 	test_gr_a5a5 6
   2258 	test_gr_a5a5 7
   2259 
   2260 	;; Now check the result of the move to memory.
   2261 	cmp.b	@byte_src, @byte_dst
   2262 	beq	.Lnext135
   2263 	fail
   2264 .Lnext135:
   2265 	;; Now clear the destination location, and verify that.
   2266 	mov.b	#0, @byte_dst
   2267 	cmp.b	@byte_src, @byte_dst
   2268 	bne	.Lnext136
   2269 	fail
   2270 .Lnext136:				; OK, pass on.
   2271 
   2272 mov_b_abs32_to_abs32:		; 32-bit absolute addr, memory to memory
   2273 	set_grs_a5a5		; Fill all general regs with a fixed pattern
   2274 	set_ccr_zero
   2275 
   2276 	;; mov.b @aa:32, @aa:32
   2277 
   2278 	mov.b	@byte_src:32, @byte_dst:32
   2279 ;;; 	.word	0x0178
   2280 ;;; 	.word	0x4848
   2281 ;;;	.long	@byte_src
   2282 ;;;	.long	@byte_dst
   2283 
   2284 	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
   2285 	test_neg_clear
   2286 	test_zero_clear
   2287 	test_ovf_clear
   2288 	test_carry_clear
   2289 
   2290 	test_gr_a5a5 0		; Make sure *NO* general registers are changed
   2291 	test_gr_a5a5 1
   2292 	test_gr_a5a5 2
   2293 	test_gr_a5a5 3
   2294 	test_gr_a5a5 4
   2295 	test_gr_a5a5 5
   2296 	test_gr_a5a5 6
   2297 	test_gr_a5a5 7
   2298 
   2299 	;; Now check the result of the move to memory.
   2300 	cmp.b	@byte_src, @byte_dst
   2301 	beq	.Lnext145
   2302 	fail
   2303 .Lnext145:
   2304 	;; Now clear the destination location, and verify that.
   2305 	mov.b	#0, @byte_dst
   2306 	cmp.b	@byte_src, @byte_dst
   2307 	bne	.Lnext146
   2308 	fail
   2309 .Lnext146:				; OK, pass on.
   2310 
   2311 
   2312 .endif
   2313 
   2314 	pass
   2315 
   2316 	exit 0
   2317 
   2318 fail1:
   2319 	fail
   2320