#
# MAXQ20 tests
#
proc run_list_test { name opts } {
    global srcdir subdir
    set testname "maxq20 $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"

    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"
    run_dump_test "data1"
    run_dump_test "jzimm"

    set ASFLAGS "$old_ASFLAGS"
}

