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.
474 lines
10 KiB
ArmAsm
474 lines
10 KiB
ArmAsm
# Hitachi H8 testcase 'biand', 'bior', 'bixor', 'bild', 'bist', 'bistz'
|
|
# 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
|
|
|
|
biand_imm3_reg8:
|
|
set_grs_a5a5
|
|
set_ccr_zero
|
|
;; biand xx:3, reg8
|
|
biand #6, r0l ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
biand #7, r0l ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
|
|
orc #1, ccr ; set the carry flag
|
|
biand #6, r0l ; this should NOT clear the carry flag
|
|
test_carry_set
|
|
test_ovf_clear
|
|
test_neg_clear
|
|
test_zero_clear
|
|
biand #7, r0l ; this should clear the carry flag
|
|
test_cc_clear
|
|
|
|
test_grs_a5a5 ; general registers should not be changed.
|
|
|
|
biand_imm3_ind:
|
|
set_grs_a5a5
|
|
.if (sim_cpu == h8300)
|
|
mov #byte_src, r1
|
|
set_ccr_zero
|
|
;; biand xx:3, ind
|
|
biand #6, @r1 ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
biand #7, @r1 ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
|
|
orc #1, ccr ; set the carry flag
|
|
biand #6, @r1 ; this should NOT clear the carry flag
|
|
test_carry_set
|
|
test_ovf_clear
|
|
test_neg_clear
|
|
test_zero_clear
|
|
biand #7, @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
|
|
;; biand xx:3, ind
|
|
biand #6, @er1 ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
biand #7, @er1 ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
|
|
orc #1, ccr ; set the carry flag
|
|
biand #6, @er1 ; this should NOT clear the carry flag
|
|
test_carry_set
|
|
test_ovf_clear
|
|
test_neg_clear
|
|
test_zero_clear
|
|
biand #7, @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
|
|
|
|
biand_imm3_abs8:
|
|
set_grs_a5a5
|
|
mov.b r1l, @0x20
|
|
set_ccr_zero
|
|
;; biand xx:3, aa:8
|
|
biand #6, @0x20:8 ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
biand #7, @0x20:8 ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
|
|
orc #1, ccr ; set the carry flag
|
|
biand #6, @0x20:8 ; this should NOT clear the carry flag
|
|
test_carry_set
|
|
test_ovf_clear
|
|
test_neg_clear
|
|
test_zero_clear
|
|
biand #7, @0x20:8 ; this should clear the carry flag
|
|
test_cc_clear
|
|
|
|
test_grs_a5a5 ; general registers should not be changed.
|
|
|
|
.if (sim_cpu > h8300h)
|
|
biand_imm3_abs16:
|
|
set_grs_a5a5
|
|
set_ccr_zero
|
|
;; biand xx:3, aa:16
|
|
biand #6, @byte_src:16 ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
biand #7, @byte_src:16 ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
|
|
orc #1, ccr ; set the carry flag
|
|
biand #6, @byte_src:16 ; this should NOT clear the carry flag
|
|
test_carry_set
|
|
test_ovf_clear
|
|
test_neg_clear
|
|
test_zero_clear
|
|
biand #7, @byte_src:16 ; this should clear the carry flag
|
|
test_cc_clear
|
|
|
|
test_grs_a5a5 ; general registers should not be changed.
|
|
|
|
biand_imm3_abs32:
|
|
set_grs_a5a5
|
|
set_ccr_zero
|
|
;; biand xx:3, aa:32
|
|
biand #6, @byte_src:32 ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
biand #7, @byte_src:32 ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
|
|
orc #1, ccr ; set the carry flag
|
|
biand #6, @byte_src:32 ; this should NOT clear the carry flag
|
|
test_carry_set
|
|
test_ovf_clear
|
|
test_neg_clear
|
|
test_zero_clear
|
|
biand #7, @byte_src:32 ; this should clear the carry flag
|
|
test_cc_clear
|
|
|
|
test_grs_a5a5 ; general registers should not be changed.
|
|
.endif
|
|
|
|
bior_imm3_reg8:
|
|
set_grs_a5a5
|
|
set_ccr_zero
|
|
;; bior xx:3, reg8
|
|
bior #7, r0l ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
|
|
bior #6, 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
|
|
bior #6, r0l ; this should NOT clear the carry flag
|
|
test_carry_set
|
|
test_ovf_clear
|
|
test_neg_clear
|
|
test_zero_clear
|
|
bior #7, 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.
|
|
|
|
bior_imm3_abs8:
|
|
set_grs_a5a5
|
|
mov.b r1l, @0x20
|
|
set_ccr_zero
|
|
;; bior xx:3, aa:8
|
|
bior #7, @0x20:8 ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
bior #6, @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
|
|
bior #6, @0x20:8 ; this should NOT clear the carry flag
|
|
test_carry_set
|
|
test_ovf_clear
|
|
test_neg_clear
|
|
test_zero_clear
|
|
bior #7, @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.
|
|
|
|
bixor_imm3_reg8:
|
|
set_grs_a5a5
|
|
set_ccr_zero
|
|
;; bixor xx:3, reg8
|
|
bixor #7, r0l ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
|
|
bixor #6, 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
|
|
bixor #7, r0l ; this should NOT clear the carry flag
|
|
test_carry_set
|
|
test_ovf_clear
|
|
test_neg_clear
|
|
test_zero_clear
|
|
|
|
bixor #6, r0l ; this should clear the carry flag
|
|
test_cc_clear
|
|
|
|
test_grs_a5a5 ; general registers should not be changed.
|
|
|
|
bixor_imm3_abs8:
|
|
set_grs_a5a5
|
|
mov.b r1l, @0x20
|
|
set_ccr_zero
|
|
;; bixor xx:3, aa:8
|
|
bixor #7, @0x20:8 ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
bixor #6, @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
|
|
bixor #7, @0x20:8 ; this should NOT clear the carry flag
|
|
test_carry_set
|
|
test_ovf_clear
|
|
test_neg_clear
|
|
test_zero_clear
|
|
|
|
bixor #6, @0x20:8 ; this should clear the carry flag
|
|
test_cc_clear
|
|
|
|
test_grs_a5a5 ; general registers should not be changed.
|
|
|
|
bild_imm3_reg8:
|
|
set_grs_a5a5
|
|
set_ccr_zero
|
|
;; bild xx:3, reg8
|
|
bild #7, r0l ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
bild #6, 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.
|
|
|
|
bild_imm3_ind:
|
|
set_grs_a5a5
|
|
.if (sim_cpu == h8300)
|
|
mov #byte_src, r1
|
|
set_ccr_zero
|
|
;; bild xx:3, ind
|
|
bild #7, @r1 ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
bild #6, @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
|
|
;; bild xx:3, ind
|
|
bild #7, @er1 ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
bild #6, @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
|
|
|
|
bild_imm3_abs8:
|
|
set_grs_a5a5
|
|
mov.b r1l, @0x20
|
|
set_ccr_zero
|
|
;; bild xx:3, aa:8
|
|
bild #7, @0x20:8 ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
bild #6, @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)
|
|
bild_imm3_abs16:
|
|
set_grs_a5a5
|
|
set_ccr_zero
|
|
;; bild xx:3, aa:16
|
|
bild #7, @byte_src:16 ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
bild #6, @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.
|
|
|
|
bild_imm3_abs32:
|
|
set_grs_a5a5
|
|
set_ccr_zero
|
|
;; bild xx:3, aa:32
|
|
bild #7, @byte_src:32 ; this should NOT set the carry flag.
|
|
test_cc_clear
|
|
bild #6, @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
|
|
|
|
bist_imm3_reg8:
|
|
set_grs_a5a5
|
|
set_ccr_zero
|
|
;; bist xx:3, reg8
|
|
bist #6, r0l ; this should set bit 6
|
|
test_cc_clear
|
|
test_h_gr16 0xa5e5 r0
|
|
|
|
set_ccr_zero
|
|
orc #1, ccr ; set the carry flag
|
|
bist #7, r0l ; this should clear bit 7
|
|
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
|
|
|
|
bist_imm3_abs8:
|
|
set_grs_a5a5
|
|
mov.b r1l, @0x20
|
|
set_ccr_zero
|
|
;; bist xx:3, aa:8
|
|
bist #6, @0x20:8 ; this should set bit 6
|
|
test_cc_clear
|
|
mov.b @0x20, r0l
|
|
test_h_gr16 0xa5e5 r0
|
|
|
|
set_ccr_zero
|
|
orc #1, ccr ; set the carry flag
|
|
bist #7, @0x20:8 ; this should clear bit 7
|
|
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)
|
|
bistz_imm3_abs8:
|
|
set_grs_a5a5
|
|
mov.b r1l, @0x20
|
|
set_ccr_zero
|
|
;; bistz xx:3, aa:8
|
|
bistz #6, @0x20:8 ; this should set bit 6
|
|
test_cc_clear
|
|
mov.b @0x20, r0l
|
|
test_h_gr16 0xa5e5 r0
|
|
|
|
set_ccr_zero
|
|
orc #4, ccr ; set the zero flag
|
|
bistz #7, @0x20:8 ; this should clear bit 7
|
|
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
|
|
|
|
bnot_imm3_reg8:
|
|
set_grs_a5a5
|
|
set_ccr_zero
|
|
;; bnot xx:3, reg8
|
|
bnot #7, r0l
|
|
test_cc_clear
|
|
test_h_gr16 0xa525 r0
|
|
set_ccr_zero
|
|
bnot #6, r0l
|
|
test_cc_clear
|
|
test_h_gr16 0xa565 r0
|
|
set_ccr_zero
|
|
bnot #5, r0l
|
|
test_cc_clear
|
|
test_h_gr16 0xa545 r0
|
|
set_ccr_zero
|
|
bnot #4, r0l
|
|
test_cc_clear
|
|
test_h_gr16 0xa555 r0
|
|
set_ccr_zero
|
|
|
|
bnot #4, r0l
|
|
bnot #5, r0l
|
|
bnot #6, r0l
|
|
bnot #7, r0l
|
|
test_cc_clear
|
|
test_grs_a5a5 ; general registers should not be changed.
|
|
|
|
bnot_imm3_abs8:
|
|
set_grs_a5a5
|
|
mov.b r1l, @0x20
|
|
set_ccr_zero
|
|
;; bnot xx:3, aa:8
|
|
bnot #7, @0x20:8
|
|
bnot #6, @0x20:8
|
|
bnot #5, @0x20:8
|
|
bnot #4, @0x20:8
|
|
test_cc_clear
|
|
test_grs_a5a5
|
|
mov @0x20, r0l
|
|
test_h_gr16 0xa555 r0
|
|
|
|
pass
|
|
exit 0
|