# Copyright (C) 2012-2021 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.  

if [istarget z8k-*-*] then {

# EI/DI test

     gas_test "eidi.s" "" "" "EI/DI operands"
     gas_test_error "eidif.s" "" "EI/DI operands"

# pcrel range test

     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)"
     gas_test_error "djnz-backf2.s" "" "relative jump out of range (djnz)"
     gas_test_error "calr-forwf.s" "" "relative jump out of range (calr)"
     gas_test_error "calr-backf.s" "" "relative jump out of range (calr)"

# 4 bit argument tests

     gas_test_error "incf.s" "" "immediate 4bit value out of range"
     gas_test_error "decf.s" "" "immediate 4bit value out of range"
     gas_test_error "incbf.s" "" "immediate 4bit value out of range"
     gas_test_error "decbf.s" "" "immediate 4bit value out of range"
     gas_test_error "ldkf.s" "" "immediate 4bit value out of range"
     gas_test "inc.s" "" "" "immediate 4bit value"
     gas_test "dec.s" "" "" "immediate 4bit value"
     gas_test "ldk.s" "" "" "immediate 4bit value"

# in/out opcodes test

     run_dump_test "inout"

# pcrel tests

     run_dump_test "jr-forw"
     run_dump_test "jr-back"
     run_dump_test "djnz"
     run_dump_test "calr"

# condition code tests

     run_dump_test "jmp-cc"
     run_dump_test "ret-cc"

# ctrl names test

     run_dump_test "ctrl-names"

# labels starting with register names test

     run_dump_test "reglabel"

# translate operations

     run_dump_test "translate-ops"
}
