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

#
# Test x930509a -- correct assembly of differences involving forward
# references.
#
proc do_930509a_tic4x {} {
    set testname "difference between forward references (tic4x version)"
    set x 0
    gas_start "../all/x930509.s" "-al"
    while 1 {
# We need to accommodate both byte orders here.
# If ".long" means an 8-byte value on some target someday, this test will have
# to be fixed.
	expect {
	    -re "^ +1 .... 00 ?00 ?00 ?00" { fail $testname; set x 1 }
	    -re "^ +1 .... 01 ?00 ?00 ?00" { pass $testname; set x 1 }
	    -re "^ +1 .... 00 ?00 ?00 ?01" { pass $testname; set x 1 }
	    -re "\[^\n\]*\n" { }
	    timeout { perror "timeout\n"; break }
	    eof { break }
	}
    }
    gas_finish
    if !$x then { fail $testname }
}


#
# TI TMS320C4X tests.
#
if [istarget *c4x*-*-*] then {
    do_930509a_tic4x

    # Test zero-based disassemble test
    run_dump_test "zeros"

    # Test the register names on the c3x and on the c4x
    run_dump_test "registers_c3x"
    run_dump_test "registers_c4x"

    # Make sure the c4x registers don't work on c3x
    gas_test_error "registers.s" "-m30 --defsym TEST_C4X=1" "c4x register usage in c3x"

    # Test data storage
    run_dump_test "data"

    # Test flonums
    run_dump_test "float"

    # Test all addressing modes
    run_dump_test "addressing_c3x"
    run_dump_test "addressing_c4x"

    # Make sure the c4x addressing don't work on c3x
    gas_test_error "addressing.s" "-m30 --defsym TEST_C4X=1" "c4x addressing usage in c3x"

    # Test float instructions
    run_dump_test "opcodes_c3x"
    run_dump_test "opcodes_c4x"
    run_dump_test "opcodes_new"

    # Make sure the c4x ops don't work on c3x
    #gas_test_error "opcodes.s" "-m30 --defsym TEST_C4X=1" "c4x instruction usage in c3x"
    #  -- for some reason this test crashes dejagnu, hence disabled!
}
