# 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.  

#
# TI TMS320C54X tests.
#
if [istarget *c54x*-*-*] then {
    run_dump_test "address"
    run_dump_test "addrfar"
    run_dump_test "align"
    run_dump_test "asg"
    run_dump_test "cons"
    run_dump_test "consfar"
    run_dump_test "extaddr"
    run_dump_test "field"
    run_dump_test "labels"
    run_dump_test "loop"
    run_dump_test "lp"
    run_dump_test "macro"
    run_dump_test "math"
    run_dump_test "opcodes"
    run_dump_test "sections"
    run_dump_test "set"
    run_dump_test "struct"
    run_dump_test "subsym"

    gas_test_error "macro1.s" "" "c54x macro argument manipulation"
    gas_test_error "subsym1.s" "" "c54x subsym recursion"

    # The longest one, run it last
    run_dump_test "all-opcodes"
}

