+# 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.
+
#
# Some H8/300 tests
#
-re " +\[0-9\]+ 0000 7B5C598F\[^\n\]*\n" { set x [expr $x+1] }
-re " +\[0-9\]+ 0004 0700\[^\n\]*\n" { set x [expr $x+1] }
-re " +\[0-9\]+ 0006 0308\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0008 0000\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 000a 5670\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 000c 5470\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 000e 0180\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0010 0208\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0008 6A480010\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 000c 6AC80010\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0010 0000\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0012 5670\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0014 5470\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0016 0180\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0018 0208\[^\n\]*\n" { set x [expr $x+1] }
eof { break }
}
}
gas_finish
# Did we find what we were looking for? If not, flunk it.
- if [expr $x == 8] then { pass $testname } else { fail $testname }
+ if [expr $x == 10] then { pass $testname } else { fail $testname }
- setup_xfail "h8300*-*-*"
- fail "h8300 movfpe/movtpe tests"
}
proc do_h8300_movb {} {
-re " +\[0-9\]+ 0020 01406D00\[^\n\]*\n" { set x [expr $x+1] }
-re " +\[0-9\]+ 0024 01406B00\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n" { set x [expr $x+1] }
-re " +\[0-9\]+ 002a 01406B20\[^\n\]*\n +\[0-9\]+ +00000000\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0032 0000\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0034 5670\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0036 5470\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0038 0180\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 003a 0208\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 003c 01406980\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0040 01406F80\[^\n\]*\n +\[0-9\]+ +0010\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0046 01407800\[^\n\]*\n +\[0-9\]+ +6BA00000\[^\n\]*\n +\[0-9\]+ +0020\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0050 01406D80\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0054 01406B80\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 005a 01406BA0\[^\n\]*\n +\[0-9\]+ +00000000\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0032 6A480010\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0036 6AC80010\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 003a 0000\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 003c 5670\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 003e 5470\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0040 0180\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0042 0208\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0044 01406980\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0048 01406F80\[^\n\]*\n +\[0-9\]+ +0010\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 004e 01407800\[^\n\]*\n +\[0-9\]+ +6BA00000\[^\n\]*\n +\[0-9\]+ +0020\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0058 01406D80\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 005c 01406B80\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0062 01406BA0\[^\n\]*\n +\[0-9\]+ +00000000\[^\n\]*\n" { set x [expr $x+1] }
eof { break }
}
}
gas_finish
# Did we find what we were looking for? If not, flunk it.
- if [expr $x == 21] then { pass $testname } else { fail $testname }
+ if [expr $x == 23] then { pass $testname } else { fail $testname }
- setup_xfail "h8300*-*-*"
- fail "h8300h movfpe/movtpe tests"
}
proc do_h8300h_movb {} {
-re " +\[0-9\]+ 004c 01416D00\[^\n\]*\n" { set x [expr $x+1] }
-re " +\[0-9\]+ 0050 01416B00\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n" { set x [expr $x+1] }
-re " +\[0-9\]+ 0056 01416B20\[^\n\]*\n +\[0-9\]+ +00000000\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 005e 0000\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0060 5670\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0062 5470\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0064 0180\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0066 0208\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0068 0218\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 006a 01406980\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 006e 01406F80\[^\n\]*\n +\[0-9\]+ +0010\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0074 01407800\[^\n\]*\n +\[0-9\]+ +6BA00000\[^\n\]*\n +\[0-9\]+ +0020\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 007e 01406D80\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0082 01406B80\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0088 01406BA0\[^\n\]*\n +\[0-9\]+ +00000000\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0090 01416980\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0094 01416F80\[^\n\]*\n +\[0-9\]+ +0010\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 009a 01417800\[^\n\]*\n +\[0-9\]+ +6BA00000\[^\n\]*\n +\[0-9\]+ +0020\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 00a4 01416D80\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 00a8 01416B80\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 00ae 01416BA0\[^\n\]*\n +\[0-9\]+ +00000000\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 005e 6A480010\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0062 6AC80010\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0066 0000\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0068 5670\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 006a 5470\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 006c 0180\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 006e 0208\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0070 0218\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0072 01406980\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0076 01406F80\[^\n\]*\n +\[0-9\]+ +0010\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 007c 01407800\[^\n\]*\n +\[0-9\]+ +6BA00000\[^\n\]*\n +\[0-9\]+ +0020\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0086 01406D80\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 008a 01406B80\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0090 01406BA0\[^\n\]*\n +\[0-9\]+ +00000000\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0098 01416980\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 009c 01416F80\[^\n\]*\n +\[0-9\]+ +0010\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 00a2 01417800\[^\n\]*\n +\[0-9\]+ +6BA00000\[^\n\]*\n +\[0-9\]+ +0020\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 00ac 01416D80\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 00b0 01416B80\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 00b6 01416BA0\[^\n\]*\n +\[0-9\]+ +00000000\[^\n\]*\n" { set x [expr $x+1] }
eof { break }
}
}
gas_finish
# Did we find what we were looking for? If not, flunk it.
- if [expr $x == 36] then { pass $testname } else { fail $testname }
-
- setup_xfail "h8300*-*-*"
- fail "h8300s movfpe/movtpe tests"
+ if [expr $x == 38] then { pass $testname } else { fail $testname }
}
proc do_h8300s_movb {} {
# assembled correctly.
while 1 {
expect {
- -re " +\[0-9\]+ 0000 01A0\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0002 0320\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0004 0331\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 0006 01606D01\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 000a 0220\[^\n\]*\n" { set x [expr $x+1] }
- -re " +\[0-9\]+ 000c 0231\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0000 01A0\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0002 0324\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0004 0335\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0006 01606D45\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 000a 0224\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 000c 0235\[^\n\]*\n" { set x [expr $x+1] }
eof { break }
}
}
-re " +\[0-9\]+ 000c 01106DF0\[^\n\]*\n" { set x [expr $x+1] }
-re " +\[0-9\]+ 0010 01206DF0\[^\n\]*\n" { set x [expr $x+1] }
-re " +\[0-9\]+ 0014 01306DF0\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0018 01106D73\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 001c 01106DF2\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0020 01106D75\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0024 01206D76\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 0028 01106DF4\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ 002c 01206DF4\[^\n\]*\n" { set x [expr $x+1] }
+
eof { break }
}
}
gas_finish
# Did we find what we were looking for? If not, flunk it.
- if [expr $x == 6] then { pass $testname } else { fail $testname }
+ if [expr $x == 12] then { pass $testname } else { fail $testname }
}
proc do_h8300h_mov32bug {} {
while 1 {
expect {
- -re "00000002\[^\n\]*32\[^\n\]*_a.0x0*88ca6c00\[^\n\]*\n"
+ -re "00000002\[^\n\]*32\[^\n\]*_a-0x77359400\[^\n\]*\n"
{ set x [expr $x+1] }
timeout { perror "timeout\n; break }
eof { break }
if [expr $x == 1] then { pass $testname } else { fail $testname }
}
+proc do_h8300hn_addressgen {} {
+ set testname "symaddgen.s: h8300hn symbol address generation"
+ set x 0
+
+ gas_start "symaddgen.s" "-al"
+
+ # Check each instruction bit pattern to verify it got
+ # assembled correctly.
+ while 1 {
+ expect {
+ -re " +\[0-9\]+ .* 01006DF6\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ .* 0D76\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ .* 790207D0\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ .* 6B82F020\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ .* 79022710\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ .* 6B820000\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ .* 01006D76\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ .* 5470\[^\n\]*\n" { set x [expr $x+1] }
+
+ eof { break }
+ }
+ }
+ # This was intended to do any cleanup necessary. It kinda looks like it
+ # isn't needed, but just in case, please keep it in for now.
+ gas_finish
+ # Did we find what we were looking for? If not, flunk it.
+ if [expr $x == 8] then { pass $testname } else { fail $testname }
+}
+
+proc do_h8300_addsubrxcheck {} {
+ set testname "addsubrxcheck.s: h8300 check rx generation for adds subs instructions"
+ set x 0
+
+ gas_start "addsubrxcheck.s" "-al"
+
+ # Check each instruction bit pattern to verify it got
+ # assembled correctly.
+ while 1 {
+ expect {
+ -re " +\[0-9\]+ .* 6DF6\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ .* 0D76\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ .* 1B87\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ .* 6F62FFFE\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ .* 1B82\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ .* 6FE2FFFE\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ .* 1922\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ .* 0D20\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ .* 0B87\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ .* 6D76\[^\n\]*\n" { set x [expr $x+1] }
+ -re " +\[0-9\]+ .* 5470\[^\n\]*\n" { set x [expr $x+1] }
+
+ eof { break }
+ }
+ }
+ # This was intended to do any cleanup necessary. It kinda looks like it
+ # isn't needed, but just in case, please keep it in for now.
+ gas_finish
+ # Did we find what we were looking for? If not, flunk it.
+ if [expr $x == 11] then { pass $testname } else { fail $testname }
+}
+
if [istarget h8300*-*-*] then {
# Test the basic h8300 instruction parser
do_h8300_add_sub
do_h8300_logical
- do_h8300_cbranch
do_h8300_bitops1
do_h8300_bitops2
do_h8300_bitops3
do_h8300_bitops4
- do_h8300_branch
do_h8300_compare
do_h8300_decimal
do_h8300_incdec
do_h8300_movw
do_h8300_pushpop
do_h8300_rotate_shift
+ do_h8300hn_addressgen
+
+ do_h8300_addsubrxcheck
# Now test the h8300h instruction parser
do_h8300h_add_sub
do_h8300h_logical
- do_h8300h_cbranch
do_h8300h_bitops1
do_h8300h_bitops2
do_h8300h_bitops3
do_h8300h_bitops4
- do_h8300h_branch
do_h8300h_compare
do_h8300h_decimal
do_h8300h_incdec
# Now test the h8300s instruction parser
do_h8300s_add_sub
do_h8300s_logical
- do_h8300s_cbranch
do_h8300s_bitops1
do_h8300s_bitops2
do_h8300s_bitops3
do_h8300s_bitops4
- do_h8300s_branch
do_h8300s_compare
do_h8300s_decimal
do_h8300s_incdec
do_h8300h_mov32bug
# Now some random tests
- set svr4pic [expr [istarget *-*-elf*] || [istarget *-*-irix5*] ]
- set empic [expr [istarget *-*-ecoff*] || [istarget *-*-ultrix*] || [istarget *-*-irix\[1-4\]*] ]
- set aout [expr [istarget *-*-bsd*] || [istarget *-*-netbsd*]]
-
- run_dump_test "ffxx1"
gas_test "cmpsi2.s" "" "" "cmpsi2.s"
+
+ run_dump_test "pr3134"
}