binutils-gdb/sim/testsuite/h8300/band.s
Mike Frysinger 1368b914e9 sim: testsuite: flatten tree
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.
2021-01-15 19:18:34 -05:00

526 lines
11 KiB
ArmAsm

# Hitachi H8 testcase 'band', 'bor', 'bxor', 'bld', 'bst', 'bstz'
# mach(): all
# 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 0xa5
byte_dst: .byte 0
start
band_imm3_reg8:
set_grs_a5a5
set_ccr_zero
;; band xx:3, reg8
band #7, r0l ; this should NOT set the carry flag.
test_cc_clear
band #6, r0l ; this should NOT set the carry flag.
test_cc_clear
orc #1, ccr ; set the carry flag
band #7, r0l ; this should NOT clear the carry flag
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
band #6, r0l ; this should clear the carry flag
test_cc_clear
test_grs_a5a5 ; general registers should not be changed.
band_imm3_ind:
set_grs_a5a5
.if (sim_cpu == h8300)
mov #byte_src, r1
set_ccr_zero
;; band xx:3, ind
band #7, @r1 ; this should NOT set the carry flag.
test_cc_clear
band #6, @r1 ; this should NOT set the carry flag.
test_cc_clear
orc #1, ccr ; set the carry flag
band #7, @r1 ; this should NOT clear the carry flag
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
band #6, @r1 ; this should clear the carry flag
test_cc_clear
;;; test_h_gr16 byte_src r1 ;FIXME
.else
mov #byte_src, er1
set_ccr_zero
;; band xx:3, ind
band #7, @er1 ; this should NOT set the carry flag.
test_cc_clear
band #6, @er1 ; this should NOT set the carry flag.
test_cc_clear
orc #1, ccr ; set the carry flag
band #7, @er1 ; this should NOT clear the carry flag
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
band #6, @er1 ; this should clear the carry flag
test_cc_clear
test_h_gr32 byte_src er1
.endif ; h8300
test_gr_a5a5 0 ; general registers should not be changed.
test_gr_a5a5 2
test_gr_a5a5 3
test_gr_a5a5 4
test_gr_a5a5 5
test_gr_a5a5 6
test_gr_a5a5 7
band_imm3_abs8:
set_grs_a5a5
mov.b r1l, @0x20
set_ccr_zero
;; band xx:3, aa:8
band #7, @0x20:8 ; this should NOT set the carry flag.
test_cc_clear
band #6, @0x20:8 ; this should NOT set the carry flag.
test_cc_clear
orc #1, ccr ; set the carry flag
band #7, @0x20:8 ; this should NOT clear the carry flag
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
band #6, @0x20:8 ; this should clear the carry flag
test_cc_clear
test_grs_a5a5 ; general registers should not be changed.
.if (sim_cpu > h8300h)
band_imm3_abs16:
set_grs_a5a5
set_ccr_zero
;; band xx:3, aa:16
band #7, @byte_src:16 ; this should NOT set the carry flag.
test_cc_clear
band #6, @byte_src:16 ; this should NOT set the carry flag.
test_cc_clear
orc #1, ccr ; set the carry flag
band #7, @byte_src:16 ; this should NOT clear the carry flag
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
band #6, @byte_src:16 ; this should clear the carry flag
test_cc_clear
test_grs_a5a5 ; general registers should not be changed.
band_imm3_abs32:
set_grs_a5a5
set_ccr_zero
;; band xx:3, aa:32
band #7, @byte_src:32 ; this should NOT set the carry flag.
test_cc_clear
band #6, @byte_src:32 ; this should NOT set the carry flag.
test_cc_clear
orc #1, ccr ; set the carry flag
band #7, @byte_src:32 ; this should NOT clear the carry flag
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
band #6, @byte_src:32 ; this should clear the carry flag
test_cc_clear
test_grs_a5a5 ; general registers should not be changed.
.endif
bor_imm3_reg8:
set_grs_a5a5
set_ccr_zero
;; bor xx:3, reg8
bor #6, r0l ; this should NOT set the carry flag.
test_cc_clear
bor #7, r0l ; this should set the carry flag.
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
orc #1, ccr ; set the carry flag
bor #7, r0l ; this should NOT clear the carry flag
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
bor #6, r0l ; this should NOT clear the carry flag
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
test_grs_a5a5 ; general registers should not be changed.
bor_imm3_abs8:
set_grs_a5a5
mov.b r1l, @0x20
set_ccr_zero
;; bor xx:3, aa:8
bor #6, @0x20:8 ; this should NOT set the carry flag.
test_cc_clear
bor #7, @0x20:8 ; this should set the carry flag.
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
orc #1, ccr ; set the carry flag
bor #7, @0x20:8 ; this should NOT clear the carry flag
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
bor #6, @0x20:8 ; this should NOT clear the carry flag
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
test_grs_a5a5 ; general registers should not be changed.
bxor_imm3_reg8:
set_grs_a5a5
set_ccr_zero
;; bxor xx:3, reg8
bxor #6, r0l ; this should NOT set the carry flag.
test_cc_clear
bxor #7, r0l ; this should set the carry flag.
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
orc #1, ccr ; set the carry flag
bxor #6, r0l ; this should NOT clear the carry flag
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
bxor #7, r0l ; this should clear the carry flag
test_cc_clear
test_grs_a5a5 ; general registers should not be changed.
bxor_imm3_abs8:
set_grs_a5a5
mov.b r1l, @0x20
set_ccr_zero
;; bxor xx:3, aa:8
bxor #6, @0x20:8 ; this should NOT set the carry flag.
test_cc_clear
bxor #7, @0x20:8 ; this should set the carry flag.
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
orc #1, ccr ; set the carry flag
bxor #6, @0x20:8 ; this should NOT clear the carry flag
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
bxor #7, @0x20:8 ; this should clear the carry flag
test_cc_clear
test_grs_a5a5 ; general registers should not be changed.
bld_imm3_reg8:
set_grs_a5a5
set_ccr_zero
;; bld xx:3, reg8
bld #6, r0l ; this should NOT set the carry flag.
test_cc_clear
bld #7, r0l ; this should set the carry flag.
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
test_grs_a5a5 ; general registers should not be changed.
bld_imm3_ind:
set_grs_a5a5
.if (sim_cpu == h8300)
mov #byte_src, r1
set_ccr_zero
;; bld xx:3, ind
bld #6, @r1 ; this should NOT set the carry flag.
test_cc_clear
bld #7, @r1 ; this should set the carry flag.
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
;;; test_h_gr16 byte_src r1 ;FIXME
.else
mov #byte_src, er1
set_ccr_zero
;; bld xx:3, ind
bld #6, @er1 ; this should NOT set the carry flag.
test_cc_clear
bld #7, @er1 ; this should NOT set the carry flag.
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
test_h_gr32 byte_src er1
.endif ; h8300
test_gr_a5a5 0 ; general registers should not be changed.
test_gr_a5a5 2
test_gr_a5a5 3
test_gr_a5a5 4
test_gr_a5a5 5
test_gr_a5a5 6
test_gr_a5a5 7
bld_imm3_abs8:
set_grs_a5a5
mov.b r1l, @0x20
set_ccr_zero
;; bld xx:3, aa:8
bld #6, @0x20:8 ; this should NOT set the carry flag.
test_cc_clear
bld #7, @0x20:8 ; this should set the carry flag.
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
test_grs_a5a5 ; general registers should not be changed.
.if (sim_cpu > h8300h)
bld_imm3_abs16:
set_grs_a5a5
set_ccr_zero
;; bld xx:3, aa:16
bld #6, @byte_src:16 ; this should NOT set the carry flag.
test_cc_clear
bld #7, @byte_src:16 ; this should set the carry flag.
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
test_grs_a5a5 ; general registers should not be changed.
bld_imm3_abs32:
set_grs_a5a5
set_ccr_zero
;; bld xx:3, aa:32
bld #6, @byte_src:32 ; this should NOT set the carry flag.
test_cc_clear
bld #7, @byte_src:32 ; this should set the carry flag.
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
test_grs_a5a5 ; general registers should not be changed.
.endif
bst_imm3_reg8:
set_grs_a5a5
set_ccr_zero
;; bst xx:3, reg8
bst #7, r0l ; this should clear bit 7
test_cc_clear
test_h_gr16 0xa525 r0
set_ccr_zero
orc #1, ccr ; set the carry flag
bst #6, r0l ; this should set bit 6
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
test_h_gr16 0xa565 r0
test_gr_a5a5 1 ; Rest of general regs should not be changed.
test_gr_a5a5 2
test_gr_a5a5 3
test_gr_a5a5 4
test_gr_a5a5 5
test_gr_a5a5 6
test_gr_a5a5 7
bst_imm3_abs8:
set_grs_a5a5
mov.b r1l, @0x20
set_ccr_zero
;; bst xx:3, aa:8
bst #7, @0x20:8 ; this should clear bit 7
test_cc_clear
mov.b @0x20, r0l
test_h_gr16 0xa525 r0
set_ccr_zero
orc #1, ccr ; set the carry flag
bst #6, @0x20:8 ; this should set bit 6
test_carry_set
test_ovf_clear
test_neg_clear
test_zero_clear
mov.b @0x20, r0l
test_h_gr16 0xa565 r0
test_gr_a5a5 1 ; general registers should not be changed.
test_gr_a5a5 2
test_gr_a5a5 3
test_gr_a5a5 4
test_gr_a5a5 5
test_gr_a5a5 6
test_gr_a5a5 7
.if (sim_cpu == h8sx)
bstz_imm3_abs8:
set_grs_a5a5
mov.b r1l, @0x20
set_ccr_zero
;; bstz xx:3, aa:8
bstz #7, @0x20:8 ; this should clear bit 7
test_cc_clear
mov.b @0x20, r0l
test_h_gr16 0xa525 r0
set_ccr_zero
orc #4, ccr ; set the zero flag
bstz #6, @0x20:8 ; this should set bit 6
test_carry_clear
test_ovf_clear
test_neg_clear
test_zero_set
mov.b @0x20, r0l
test_h_gr16 0xa565 r0
test_gr_a5a5 1 ; general registers should not be changed.
test_gr_a5a5 2
test_gr_a5a5 3
test_gr_a5a5 4
test_gr_a5a5 5
test_gr_a5a5 6
test_gr_a5a5 7
.endif ; h8sx
btst_imm3_reg8:
set_grs_a5a5
set_ccr_zero
;; btst xx:3, reg8
btst #7, r0l ; this should NOT set the zero flag.
test_cc_clear
btst #6, r0l ; this should set the zero flag.
test_carry_clear
test_ovf_clear
test_neg_clear
test_zero_set
test_grs_a5a5 ; general registers should not be changed.
btst_imm3_ind:
set_grs_a5a5
.if (sim_cpu == h8300)
mov #byte_src, r1
set_ccr_zero
;; btst xx:3, ind
btst #7, @r1 ; this should NOT set the zero flag.
test_cc_clear
btst #6, @r1 ; this should set the zero flag.
test_carry_clear
test_ovf_clear
test_neg_clear
test_zero_set
;;; test_h_gr16 byte_src r1 ;FIXME
.else
mov #byte_src, er1
set_ccr_zero
;; btst xx:3, ind
btst #7, @er1 ; this should NOT set the zero flag.
test_cc_clear
btst #6, @er1 ; this should NOT set the zero flag.
test_carry_clear
test_ovf_clear
test_neg_clear
test_zero_set
test_h_gr32 byte_src er1
.endif ; h8300
test_gr_a5a5 0 ; general registers should not be changed.
test_gr_a5a5 2
test_gr_a5a5 3
test_gr_a5a5 4
test_gr_a5a5 5
test_gr_a5a5 6
test_gr_a5a5 7
btst_imm3_abs8:
set_grs_a5a5
mov.b r1l, @0x20
set_ccr_zero
;; btst xx:3, aa:8
btst #7, @0x20:8 ; this should NOT set the zero flag.
test_cc_clear
btst #6, @0x20:8 ; this should set the zero flag.
test_carry_clear
test_ovf_clear
test_neg_clear
test_zero_set
test_grs_a5a5 ; general registers should not be changed.
.if (sim_cpu > h8300h)
btst_imm3_abs16:
set_grs_a5a5
set_ccr_zero
;; btst xx:3, aa:16
btst #7, @byte_src:16 ; this should NOT set the zero flag.
test_cc_clear
btst #6, @byte_src:16 ; this should set the zero flag.
test_carry_clear
test_ovf_clear
test_neg_clear
test_zero_set
test_grs_a5a5 ; general registers should not be changed.
btst_imm3_abs32:
set_grs_a5a5
set_ccr_zero
;; btst xx:3, aa:32
btst #7, @byte_src:32 ; this should NOT set the zero flag.
test_cc_clear
btst #6, @byte_src:32 ; this should set the zero flag.
test_carry_clear
test_ovf_clear
test_neg_clear
test_zero_set
test_grs_a5a5 ; general registers should not be changed.
.endif
pass
exit 0