#
# MAXQ10 tests
#
proc run_list_test { name opts } {
    global srcdir subdir
    set testname "maxq10 $name"
    set file $srcdir/$subdir/$name
    gas_run ${name}.s $opts ">&dump.out"
    if { [regexp_diff "dump.out" "${file}.l"] } then {
	fail $testname
	verbose "output is [file_contents "dump.out"]" 2
	return
    }
    pass $testname
}

proc gas_64_check { } {
    global NM
    global NMFLAGS
    global srcdir

    catch "exec $srcdir/lib/run $NM $NMFLAGS --help" nm_help
    return [regexp "targets:.*maxq" $nm_help]
}

proc gas_32_check { } {
    global NM
    global NMFLAGS
    global srcdir

    catch "exec $srcdir/lib/run $NM $NMFLAGS --help" nm_help
    return [regexp "targets:.*maxq" $nm_help]
}

if [expr ([istarget "maxq-*-*"] ||  [istarget "maxq-coff-*"]) && [gas_32_check]]  then {

    global ASFLAGS
    set old_ASFLAGS "$ASFLAGS"
    set ASFLAGS "$ASFLAGS -MAXQ10"

    run_dump_test "range"
    run_dump_test "data3"
    run_dump_test "data2"
    run_dump_test "call"
    run_dump_test "jump"
    run_dump_test "logical"
    run_dump_test "math"
    run_dump_test "bits"

    set ASFLAGS "$old_ASFLAGS"
}

