# Copyright (C) 2012-2016 Free Software Foundation, Inc.

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  

# run tests for target Z80.

if [istarget z80-*-*] then {
# test redefinitions
    run_dump_test "redef"
# test parsing of equ definitions
    run_dump_test "equ"
# test parsing of " and '
    run_dump_test "quotes"
# test suffixes
    run_dump_test "suffix"
# test assembling and disassembling instructions involving offsets
    run_dump_test "offset"
    gas_test_error "jr-forwf.s" "" "relative jump out of range (jr)"
    gas_test_error "jr-backf.s" "" "relative jump out of range (jr)"
    gas_test_error "djnz-backf.s" "" "relative jump out of range (djnz)"
 
# test assembling instruction with offset that is a label defined later
    run_dump_test "atend"
# test for data transfer instructions
    run_dump_test "ld-group"
# test for block instructions
    run_dump_test "block"
# test for arithmetic and logic
    run_dump_test "arith"
# test for rotate and shift
    run_dump_test "rotate"
# test for bit manipulations
    run_dump_test "bit"
# test for branch instructions
    run_dump_test "branch"
# test for input and output instructions
    run_dump_test "inout"
#test for other instructions
    run_dump_test "misc"
    gas_test_error "ill_op.s" "" "Illegal operand: ld hl,(sp+0)"
}
