#
# Some generic m68HC11 tests
#
if { ![istarget "m68hc1*-*-*"]
     && ![istarget "m6811-*-*"]
     && ![istarget "m6812-*-*"] } then {
    return
}

# Simple test for --print-opcodes (list of supported opcodes)
# We don't check the list result but just the syntax and the
# number it 
proc gas_m68hc11_opcode_list { flags expect_count } {
    global comp_output

    set testname "Opcode list generation \[$flags\]"
    gas_run "x.s" "--print-opcodes $flags" ""

    set lines [split $comp_output "\n"]
    set cnt [llength $lines]
    verbose -log "Found $cnt opcodes"
    if { $cnt == $expect_count } then {
        pass $testname
    } else {
        fail $testname
    }
}

gas_m68hc11_opcode_list "-m68hc11" 149
gas_m68hc11_opcode_list "-m68hc12" 192
gas_m68hc11_opcode_list "-m68hcs12" 192


# Test for a message produced when assembling a file
proc gas_m68hc11_message { kind options line expect } {
    global srcdir
    global subdir

    regsub -all "\n" "$line: $expect" " " title

    # Make a file containing the instructions to assemble.
    set fd [open "$srcdir/$subdir/tst-m68hc1x.s" "w"]
    puts -nonewline $fd "$line"
    close $fd

    verbose -log "Test: $title"
    gas_start "tst-m68hc1x.s" "$options"
    set ok 0
    while 1 {
	expect {
	    -re ".*: Assembler messages:\n" { }
	    -re ".*1: $kind: $expect" { incr ok; break }
	    timeout       { perror "timeout\n"; break }
	    eof		  { verbose "EOF from gas"; break }
	}
    }
    #sleep 1 # Uncomment this line when using gcov
    gas_finish
    if { $ok > 0 } then {
	pass $title
    } else {
	fail $title
    }
    catch "exec rm -f $srcdir/$subdir/tst-m68hc1x.s"
}

# Test for an error message produced by gas
proc gas_m68hc11_error { options line expect } {
    gas_m68hc11_message "Error" $options $line $expect
}

# Test for a warning message produced by gas
proc gas_m68hc11_warning { options line expect } {
    gas_m68hc11_message "Warning" $options $line $expect
}

# ------------------
# 68HC11 error tests
gas_m68hc11_error "-m68hc11" "puld\n" "Opcode .puld. is not recognized"
gas_m68hc11_error "" "ldab\n" "Invalid operand for .ldab."
gas_m68hc11_error "-m68hc11" "ldab 256,x\n" "Operand out of 8-bit range:.*256"
gas_m68hc11_error "-m68hc11" "ldab 257,y\n" "Operand out of 8-bit range:.*257"
gas_m68hc11_error "-m68hc11" "ldab -1,y\n" "Operand out of 8-bit range:.*-1"
gas_m68hc11_error "-m68hc11" "ldab bar,y\nbar=300" "value of 300 too large for field of 1 byte"
gas_m68hc11_error "" "jmp \#23\n" "Immediate operand is not allowed"
gas_m68hc11_error "-m68hc11" "ldab \[d,pc\]\n" "Indirect indexed addressing is not valid for 68HC11"
gas_m68hc11_error "" "ldab ,t\n" "Spurious .,. or bad indirect register"
gas_m68hc11_error "" "ldab 1,t\n" "Garbage at end of instruction:.*,t"
gas_m68hc11_error "" "ldab 1,,x\n" "Garbage at end of instruction:.*,x"
gas_m68hc11_error "-m68hc11" "ldab 1,+x\n" "Pre-increment mode is not valid"
gas_m68hc11_error "-m68hc11" "ldab 1,-x\n" "Pre-increment mode is not valid"
gas_m68hc11_error "-m68hc11" "ldab 1,x+\n" "Post-increment mode is not valid"
gas_m68hc11_error "-m68hc11" "ldab 1,x-\n" "Post-decrement mode is not valid"
gas_m68hc11_error "" "ldd \#65536\n" "Operand out of 16-bit range"
gas_m68hc11_error "--short-branchs" "bne 200\n" \
    "Operand out of range for a relative branch"
gas_m68hc11_error "" "bar\n" "Opcode .bar. is not recognized."
gas_m68hc11_error "--print-insn-syntax" "bne\n" \
    "Instruction formats for .bne..*"

# ------------------
# 68HC12 error tests
gas_m68hc11_error "-m68hc12" "ldab x,y\n" "Invalid accumulator register"
gas_m68hc11_error "-m68hc12" "ldab \[d,y\n" \
    "Missing .\]. to close indexed-indirect mode"
gas_m68hc11_error "-m68hc12" "ldab 0,\n" "Garbage at end of instruction: .,."
gas_m68hc11_error "-m68hc12" "ldab \[d\]\n" \
    "Missing second register or offset for indexed-indirect mode"
gas_m68hc11_error "-m68hc12" "ldab \[d x\]\n" \
    "Missing second register for indexed-indirect mode"
gas_m68hc11_error "-m68hc12" "ldab \[d d\]\n" \
    "Missing second register for indexed-indirect mode"
gas_m68hc11_error "-m68hc12" "ldab \[pc d\]\n" \
    "Missing second register for indexed-indirect mode"
gas_m68hc11_error "-m68hc12" "ldab 65536,x\n" \
    "Offset out of 16-bit range:"
gas_m68hc11_error "-m68hc12 -S" "ibeq d,500\n" \
    "Operand out of range for a relative branch"
gas_m68hc11_error "-m68hc12" "ibeq pc,3\n" \
    "Invalid register for dbcc/tbcc instruction"
gas_m68hc11_error "-m68hc12 -S" "ibeq pc,500\n" \
    "Invalid register for dbcc/tbcc instruction"
gas_m68hc11_error "-m68hc12" "orab 9,+x\n" \
    "Increment/decrement value is out of range"
gas_m68hc11_error "-m68hc12" "orab -9,x-\n" \
    "Increment/decrement value is out of range"
gas_m68hc11_error "-m68hc12" "orab -3,-pc\n" \
    "Invalid register for post/pre increment"
gas_m68hc11_error "-m68hc12" "trap \#0\n" "Trap id .0. is out of range"
gas_m68hc11_error "-m68hc12" "trap \#300\n" "Trap id .300. is out of range"
gas_m68hc11_error "-m68hc12" "trap \#bar\n" "The trap id must be a constant"
gas_m68hc11_error "-m68hc12" "sex x,d\n" \
    "Invalid source register for this instruction, use .tfr."
gas_m68hc11_error "-m68hc12" "tfr pc,a\n" "Invalid source register"
gas_m68hc11_error "-m68hc12" "movb 200,x,3,y\n" \
    "Offset out of 5-bit range for movw/movb insn: 200"
gas_m68hc11_error "-m68hc12" "movb 2,x,300,y\n" \
    "Offset out of 5-bit range for movw/movb insn: 300"
gas_m68hc11_error "-m68hc12" "movb 2,x,bar,y\nbar=300\n" \
    "Offset out of 5-bit range for movw/movb insn: 300"
gas_m68hc11_error "-m68hc12" "movb bar,y,2,x\nbar=300\n" \
    "Offset out of 5-bit range for movw/movb insn: 300"
gas_m68hc11_error "-m68hc12" "movb 200,pc,3,y\n" \
    "Offset out of 5-bit range for movw/movb insn: 200"
gas_m68hc11_error "-m68hc12" "movb 2,x,300,pc\n" \
    "Offset out of 5-bit range for movw/movb insn: 300"
gas_m68hc11_error "-m68hc12" "movb 2,x,bar,pc\nbar=300\n" \
    "Offset out of 5-bit range for movw/movb insn: 300"
gas_m68hc11_error "-m68hc12" "movb bar,pc,2,x\nbar=300\n" \
    "Offset out of 5-bit range for movw/movb insn: 300"

# ------------------
# Specific commands
gas_m68hc11_warning "" ".mode \"bar\"\n" "Invalid mode: .bar."
gas_m68hc11_error "" ".relax 23\n" "bad .relax format"
gas_m68hc11_error "" ".relax bar-23\n" "bad .relax format"
gas_m68hc11_error "" ".far bar bar\n" "junk at end of line"


run_dump_test insns
run_dump_test lbranch
run_dump_test all_insns
run_dump_test insns-dwarf2
run_dump_test lbranch-dwarf2
run_dump_test abi-m68hc11-16-64
run_dump_test abi-m68hc11-16-32
run_dump_test abi-m68hc11-32-64

# Compliance with Motorola Assembly Language Input Standard
run_dump_test malis

# Some 68HC12 tests
run_dump_test opers12
run_dump_test opers12-dwarf2
run_dump_test branchs12
run_dump_test insns12
run_dump_test indexed12
run_dump_test bug-1825
run_dump_test movb
