mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
1368b914e9
Now that all port tests live under testsuite/sim/*/, and none live in testsuite/ directly, flatten the structure by moving all of the dirs under testsuite/sim/ to testsuite/ directly. We need to stop passing --tool to dejagnu so that it searches all dirs and not just ones that start with "sim". Since we have no other dirs in this tree, and no plans to add any, should be fine.
130 lines
2.2 KiB
ArmAsm
130 lines
2.2 KiB
ArmAsm
# Hitachi H8 testcase 'movmd'
|
|
# mach(): h8sx
|
|
# as(h8300): --defsym sim_cpu=0
|
|
# as(h8300h): --defsym sim_cpu=1
|
|
# as(h8300s): --defsym sim_cpu=2
|
|
# as(h8sx): --defsym sim_cpu=3
|
|
# ld(h8300h): -m h8300helf
|
|
# ld(h8300s): -m h8300self
|
|
# ld(h8sx): -m h8300sxelf
|
|
|
|
.include "testutils.inc"
|
|
|
|
.data
|
|
byte_src:
|
|
.byte 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
|
|
byte_dst:
|
|
.byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
|
|
|
.align 2
|
|
word_src:
|
|
.word 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
|
|
word_dst:
|
|
.word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
|
|
|
.align 4
|
|
long_src:
|
|
.long 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
|
|
long_dst:
|
|
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
|
|
|
start
|
|
.if (sim_cpu == h8sx)
|
|
movmd_b:#
|
|
# Byte block transfer
|
|
#
|
|
set_grs_a5a5
|
|
|
|
mov #byte_src, er5
|
|
mov #byte_dst, er6
|
|
mov #10, r4
|
|
set_ccr_zero
|
|
;; movmd.b
|
|
movmd.b
|
|
;;; .word 0x7b94
|
|
|
|
test_cc_clear
|
|
test_gr_a5a5 0
|
|
test_gr_a5a5 1
|
|
test_gr_a5a5 2
|
|
test_gr_a5a5 3
|
|
test_h_gr32 0xa5a50000 er4
|
|
test_h_gr32 byte_src+10 er5
|
|
test_h_gr32 byte_dst+10 er6
|
|
test_gr_a5a5 7
|
|
|
|
#
|
|
# Now make sure exactly 10 bytes were transferred.
|
|
memcmp byte_src byte_dst 10
|
|
cmp.b #0, @byte_dst+10
|
|
beq .L0
|
|
fail
|
|
.L0:
|
|
|
|
movmd_w:#
|
|
# Word block transfer
|
|
#
|
|
set_grs_a5a5
|
|
|
|
mov #word_src, er5
|
|
mov #word_dst, er6
|
|
mov #10, r4
|
|
set_ccr_zero
|
|
;; movmd.w
|
|
movmd.w
|
|
;;; .word 0x7ba4
|
|
|
|
test_cc_clear
|
|
test_gr_a5a5 0
|
|
test_gr_a5a5 1
|
|
test_gr_a5a5 2
|
|
test_gr_a5a5 3
|
|
test_h_gr32 0xa5a50000 er4
|
|
test_h_gr32 word_src+20 er5
|
|
test_h_gr32 word_dst+20 er6
|
|
test_gr_a5a5 7
|
|
|
|
#
|
|
# Now make sure exactly 20 bytes were transferred.
|
|
memcmp word_src word_dst 20
|
|
cmp.w #0, @word_dst+20
|
|
beq .L1
|
|
fail
|
|
.L1:
|
|
|
|
movmd_l:#
|
|
# Long block transfer
|
|
#
|
|
set_grs_a5a5
|
|
|
|
mov #long_src, er5
|
|
mov #long_dst, er6
|
|
mov #10, r4
|
|
set_ccr_zero
|
|
;; movmd.b
|
|
movmd.l
|
|
;;; .word 0x7bb4
|
|
|
|
test_cc_clear
|
|
test_gr_a5a5 0
|
|
test_gr_a5a5 1
|
|
test_gr_a5a5 2
|
|
test_gr_a5a5 3
|
|
test_h_gr32 0xa5a50000 er4
|
|
test_h_gr32 long_src+40 er5
|
|
test_h_gr32 long_dst+40 er6
|
|
test_gr_a5a5 7
|
|
|
|
#
|
|
# Now make sure exactly 40 bytes were transferred.
|
|
memcmp long_src long_dst 40
|
|
cmp.l #0, @long_dst+40
|
|
beq .L2
|
|
fail
|
|
.L2:
|
|
|
|
.endif
|
|
pass
|
|
|
|
exit 0
|