From: Jeff Law Date: Fri, 5 Apr 1996 17:13:28 +0000 (+0000) Subject: * gas/h8300/{addsub.s,bitops1.s,bitops2.s}: New h8300 tests. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0066efbab5517390d4f1ab074e06da97663a1586;p=binutils-gdb.git * gas/h8300/{addsub.s,bitops1.s,bitops2.s}: New h8300 tests. * gas/h8300/{bitops3.s,bitops4.s,branches.s}: New h8300 tests. * gas/h8300/{cbranch.s,compare.s,decimal.s}: New h8300 tests. * gas/h8300/{divmul.s,incdec.s,logical.s}: New h8300 tests. * gas/h8300/{misc.s,movb.s,movw.s}: New h8300 tests. * gas/h8300/{pushpop.s,rotshift.s}: New h8300 tests. * gas/h8300/h8300.exp: Run them. To keep me from screwing up the assembler... --- diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 0a954b23a52..384d8f09627 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,23 @@ +Fri Apr 5 10:13:28 1996 Jeffrey A Law (law@cygnus.com) + + * gas/h8300/{addsub.s,bitops1.s,bitops2.s}: New h8300 tests. + * gas/h8300/{bitops3.s,bitops4.s,branches.s}: New h8300 tests. + * gas/h8300/{cbranch.s,compare.s,decimal.s}: New h8300 tests. + * gas/h8300/{divmul.s,incdec.s,logical.s}: New h8300 tests. + * gas/h8300/{misc.s,movb.s,movw.s}: New h8300 tests. + * gas/h8300/{pushpop.s,rotshift.s}: New h8300 tests. + * gas/h8300/h8300.exp: Run them. + +Fri Mar 15 17:16:24 1996 Ian Lance Taylor + + * gas/sparc/synth.d: Don't require sparc in the file format, since + it won't be there on SunOS. + +Thu Mar 7 14:51:23 1996 Doug Evans + + * gas/sparc/synth.[ds]: New testcase. + * gas/sparc/sparc.exp: Run it. + Fri Mar 1 12:01:48 1996 Jeffrey A Law (law@cygnus.com) * gas/all/gas.exp: xfail difference of two undefined symbols diff --git a/gas/testsuite/gas/h8300/.Sanitize b/gas/testsuite/gas/h8300/.Sanitize index 11f8716214e..023bd4ed4e3 100644 --- a/gas/testsuite/gas/h8300/.Sanitize +++ b/gas/testsuite/gas/h8300/.Sanitize @@ -26,10 +26,28 @@ Do-first: Things-to-keep: -h8300.exp +CVS +addsub.s +bitops1.s +bitops2.s +bitops3.s +bitops4.s +branches.s +cbranch.s cmpsi2.s +compare.s +decimal.s +divmul.s ffxx1.d ffxx1.s +h8300.exp +incdec.s +logical.s +misc.s +movb.s +movw.s +pushpop.s +rotshift.s Things-to-lose: diff --git a/gas/testsuite/gas/h8300/addsub.s b/gas/testsuite/gas/h8300/addsub.s new file mode 100644 index 00000000000..802b0d7621f --- /dev/null +++ b/gas/testsuite/gas/h8300/addsub.s @@ -0,0 +1,16 @@ + .text +h8300_add_sub: + add.b #16,r1l + add.b r1h,r1l + add.w r1,r2 + adds #1,r4 + adds #2,r5 + addx r0l,r1l + addx #16,r2h + sub.b r0l,r1l + sub.w r0,r1 + subs #1,r4 + subs #2,r5 + subx r0l,r1l + subx #16,r2h + diff --git a/gas/testsuite/gas/h8300/bitops1.s b/gas/testsuite/gas/h8300/bitops1.s new file mode 100644 index 00000000000..3c107a1b822 --- /dev/null +++ b/gas/testsuite/gas/h8300/bitops1.s @@ -0,0 +1,18 @@ + .text +h8300_bit_ops_1: + band #0,r0l + band #0,@r0 + band #0,@64:8 + bclr #0,r0l + bclr #0,@r0 + bclr #0,@64:8 + bclr r1l,r0l + bclr r1l,@r0 + bclr r1l,@64:8 + biand #0,r0l + biand #0,@r0 + biand #0,@64:8 + bild #0,r0l + bild #0,@r0 + bild #0,@64:8 + diff --git a/gas/testsuite/gas/h8300/bitops2.s b/gas/testsuite/gas/h8300/bitops2.s new file mode 100644 index 00000000000..3996e5a469f --- /dev/null +++ b/gas/testsuite/gas/h8300/bitops2.s @@ -0,0 +1,15 @@ + .text +h8300_bit_ops_2: + bior #0,r0l + bior #0,@r0 + bior #0,@64:8 + bist #0,r0l + bist #0,@r0 + bist #0,@64:8 + bixor #0,r0l + bixor #0,@r0 + bixor #0,@64:8 + bld #0,r0l + bld #0,@r0 + bld #0,@64:8 + diff --git a/gas/testsuite/gas/h8300/bitops3.s b/gas/testsuite/gas/h8300/bitops3.s new file mode 100644 index 00000000000..78c9bfb482e --- /dev/null +++ b/gas/testsuite/gas/h8300/bitops3.s @@ -0,0 +1,15 @@ + .text +h8300_bit_ops_3: + bnot #0,r0l + bnot #0,@r0 + bnot #0,@64:8 + bnot r1l,r0l + bnot r1l,@r0 + bnot r1l,@64:8 + bset #0,r0l + bset #0,@r0 + bset #0,@64:8 + bset r1l,r0l + bset r1l,@r0 + bset r1l,@64:8 + diff --git a/gas/testsuite/gas/h8300/bitops4.s b/gas/testsuite/gas/h8300/bitops4.s new file mode 100644 index 00000000000..f7e66d8b251 --- /dev/null +++ b/gas/testsuite/gas/h8300/bitops4.s @@ -0,0 +1,18 @@ + .text +h8300_bit_ops_4: + bor #0,r0l + bor #0,@r0 + bor #0,@64:8 + bst #0,r0l + bst #0,@r0 + bst #0,@64:8 + btst #0,r0l + btst #0,@r0 + btst #0,@64:8 + btst r1l,r0l + btst r1l,@r0 + btst r1l,@64:8 + bxor #0,r0l + bxor #0,@r0 + bxor #0,@64:8 + diff --git a/gas/testsuite/gas/h8300/branches.s b/gas/testsuite/gas/h8300/branches.s new file mode 100644 index 00000000000..25806153c42 --- /dev/null +++ b/gas/testsuite/gas/h8300/branches.s @@ -0,0 +1,10 @@ + .text +h8300_branches: + bsr h8300_branches + jmp h8300_branches + jmp @r0 + jmp @@16:8 + jsr h8300_branches + jsr @r0 + jsr @@16:8 + diff --git a/gas/testsuite/gas/h8300/cbranch.s b/gas/testsuite/gas/h8300/cbranch.s new file mode 100644 index 00000000000..ae3d53ed88c --- /dev/null +++ b/gas/testsuite/gas/h8300/cbranch.s @@ -0,0 +1,23 @@ + .text +h8300_cbranch: + bra h8300_cbranch + bt h8300_cbranch + brn h8300_cbranch + bf h8300_cbranch + bhi h8300_cbranch + bls h8300_cbranch + bcc h8300_cbranch + bhs h8300_cbranch + bcs h8300_cbranch + blo h8300_cbranch + bne h8300_cbranch + beq h8300_cbranch + bvc h8300_cbranch + bvs h8300_cbranch + bpl h8300_cbranch + bmi h8300_cbranch + bge h8300_cbranch + blt h8300_cbranch + bgt h8300_cbranch + ble h8300_cbranch + diff --git a/gas/testsuite/gas/h8300/compare.s b/gas/testsuite/gas/h8300/compare.s new file mode 100644 index 00000000000..60c1a417d76 --- /dev/null +++ b/gas/testsuite/gas/h8300/compare.s @@ -0,0 +1,6 @@ + .text +h8300_cmp: + cmp.b #0,r0l + cmp.b r0h,r0l + cmp.w r0,r1 + diff --git a/gas/testsuite/gas/h8300/decimal.s b/gas/testsuite/gas/h8300/decimal.s new file mode 100644 index 00000000000..8d4c0a0da9d --- /dev/null +++ b/gas/testsuite/gas/h8300/decimal.s @@ -0,0 +1,5 @@ + .text +h8300_decimal: + daa r0l + das r0l + diff --git a/gas/testsuite/gas/h8300/divmul.s b/gas/testsuite/gas/h8300/divmul.s new file mode 100644 index 00000000000..37372ce4841 --- /dev/null +++ b/gas/testsuite/gas/h8300/divmul.s @@ -0,0 +1,5 @@ + .text +h8300_div_mul: + divxu r0l,r1 + mulxu r0l,r1 + diff --git a/gas/testsuite/gas/h8300/h8300.exp b/gas/testsuite/gas/h8300/h8300.exp new file mode 100644 index 00000000000..e98260572a9 --- /dev/null +++ b/gas/testsuite/gas/h8300/h8300.exp @@ -0,0 +1,573 @@ +# +# Some H8/300 tests +# +proc do_h8300_add_sub {} { + set testname "addsub.s: h8300 add/sub tests" + set x 0 + + gas_start "addsub.s" "-al" + + # Check each instruction bit pattern to verify it got + # assembled correctly. + while 1 { + expect { + -re " +\[0-9\]+ 0000 8910\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0002 0819\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0004 0912\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0006 0B04\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0008 0B85\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000a 0E89\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000c 9210\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000e 1889\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0010 1901\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0012 1B04\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0014 1B85\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0016 1E89\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0018 B210\[^\n\]*\n" { set x [expr $x+1] } + timeout { perror "timeout\n; break } + 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 == 13] then { pass $testname } else { fail $testname } +} + +proc do_h8300_logical {} { + set testname "logical.s: h8300 logical tests" + set x 0 + + gas_start "logical.s" "-al" + + # Check each instruction bit pattern to verify it got + # assembled correctly. + while 1 { + expect { + -re " +\[0-9\]+ 0000 E910\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0002 1691\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0004 0610\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0006 C810\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0008 1498\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000a 0410\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000c D810\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000e 1589\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0010 0510\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0012 1788\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0014 1708\[^\n\]*\n" { set x [expr $x+1] } + timeout { perror "timeout\n; break } + 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 } +} + +proc do_h8300_cbranch {} { + set testname "cbranch.s: h8300 conditional branch tests" + set x 0 + + gas_start "cbranch.s" "-al" + + # Check each instruction bit pattern to verify it got + # assembled correctly. + while 1 { + expect { + -re " +\[0-9\]+ 0000 4000\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0002 4000\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0004 4100\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0006 4100\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0008 4200\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000a 4300\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000c 4400\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000e 4400\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0010 4500\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0012 4500\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0014 4600\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0016 4700\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0018 4800\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 001a 4900\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 001c 4A00\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 001e 4B00\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0020 4C00\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0022 4D00\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0024 4E00\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0026 4F00\[^\n\]*\n" { set x [expr $x+1] } + timeout { perror "timeout\n; break } + 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 == 20] then { pass $testname } else { fail $testname } +} + +proc do_h8300_bitops1 {} { + set testname "bitops1.s: h8300 bitops tests #1" + set x 0 + + gas_start "bitops1.s" "-al" + + # Check each instruction bit pattern to verify it got + # assembled correctly. + while 1 { + expect { + -re " +\[0-9\]+ 0000 7608\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0002 7C007600\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0006 7E407600\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000a 7208\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000c 7D007200\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0010 7F407200\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0014 6298\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0016 7D006290\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 001a 7F406290\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 001e 7688\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0020 7C007680\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0024 7E407680\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0028 7788\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 002a 7C007780\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 002e 7E407780\[^\n\]*\n" { set x [expr $x+1] } + timeout { perror "timeout\n; break } + 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 == 15] then { pass $testname } else { fail $testname } +} + +proc do_h8300_bitops2 {} { + set testname "bitops2.s: h8300 bitops tests #2" + set x 0 + + gas_start "bitops2.s" "-al" + + # Check each instruction bit pattern to verify it got + # assembled correctly. + while 1 { + expect { + -re " +\[0-9\]+ 0000 7488\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0002 7C007480\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0006 7E407480\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000a 6788\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000c 7D006780\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0010 7F406780\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0014 7588\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0016 7C007580\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 001a 7E407580\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 001e 7708\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0020 7C007700\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0024 7E407700\[^\n\]*\n" { set x [expr $x+1] } + timeout { perror "timeout\n; break } + 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 == 12] then { pass $testname } else { fail $testname } +} + +proc do_h8300_bitops3 {} { + set testname "bitops3.s: h8300 bitops tests #3" + set x 0 + + gas_start "bitops3.s" "-al" + + # Check each instruction bit pattern to verify it got + # assembled correctly. + while 1 { + expect { + -re " +\[0-9\]+ 0000 7108\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0002 7D007100\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0006 7F407100\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000a 6198\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000c 7D006190\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0010 7F406190\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0014 7008\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0016 7D007000\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 001a 7F407000\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 001e 6098\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0020 7D006090\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0024 7F406090\[^\n\]*\n" { set x [expr $x+1] } + timeout { perror "timeout\n; break } + 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 == 12] then { pass $testname } else { fail $testname } +} + +proc do_h8300_bitops4 {} { + set testname "bitops4.s: h8300 bitops tests #4" + set x 0 + + gas_start "bitops4.s" "-al" + + # Check each instruction bit pattern to verify it got + # assembled correctly. + while 1 { + expect { + -re " +\[0-9\]+ 0000 7408\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0002 7C007400\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0006 7E407400\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000a 6708\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000c 7D006700\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0010 7F406700\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0014 7308\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0016 7C007300\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 001a 7E407300\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 001e 6398\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0020 7C006390\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0024 7E406390\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0028 7508\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 002a 7C007500\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 002e 7E407500\[^\n\]*\n" { set x [expr $x+1] } + timeout { perror "timeout\n; break } + 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 == 12] then { pass $testname } else { fail $testname } +} + +proc do_h8300_branches {} { + set testname "branches.s: h8300 branch tests" + set x 0 + + gas_start "branches.s" "-al" + + # Check each instruction bit pattern to verify it got + # assembled correctly. + while 1 { + expect { + -re " +\[0-9\]+ 0000 5500\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0002 5A000000\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0006 5900\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0008 5B00\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000a 5E000000\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000e 5D00\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0010 5F00\[^\n\]*\n" { set x [expr $x+1] } + timeout { perror "timeout\n; break } + 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 == 7] then { pass $testname } else { fail $testname } +} + +proc do_h8300_compare {} { + set testname "compare.s: h8300 compare tests" + set x 0 + + gas_start "compare.s" "-al" + + # Check each instruction bit pattern to verify it got + # assembled correctly. + while 1 { + expect { + -re " +\[0-9\]+ 0000 A800\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0002 1C08\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0004 1D01\[^\n\]*\n" { set x [expr $x+1] } + timeout { perror "timeout\n; break } + 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 == 3] then { pass $testname } else { fail $testname } +} + +proc do_h8300_decimal {} { + set testname "decimal.s: h8300 decimal tests" + set x 0 + + gas_start "decimal.s" "-al" + + # Check each instruction bit pattern to verify it got + # assembled correctly. + while 1 { + expect { + -re " +\[0-9\]+ 0000 0F08\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0002 1F08\[^\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 == 2] then { pass $testname } else { fail $testname } +} + +proc do_h8300_incdec {} { + set testname "incdec.s: h8300 incdec tests" + set x 0 + + gas_start "incdec.s" "-al" + + # Check each instruction bit pattern to verify it got + # assembled correctly. + while 1 { + expect { + -re " +\[0-9\]+ 0000 1A08\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0002 0A08\[^\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 == 2] then { pass $testname } else { fail $testname } +} + +proc do_h8300_divmul {} { + set testname "divmul.s: h8300 divmul tests" + set x 0 + + gas_start "divmul.s" "-al" + + # Check each instruction bit pattern to verify it got + # assembled correctly. + while 1 { + expect { + -re " +\[0-9\]+ 0000 5181\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0002 5081\[^\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 == 2] then { pass $testname } else { fail $testname } +} + +proc do_h8300_misc {} { + set testname "misc.s: h8300 misc tests" + set x 0 + + gas_start "misc.s" "-al" + + # Check each instruction bit pattern to verify it got + # assembled correctly. + while 1 { + expect { + -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] } + 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 } + + setup_xfail "h8300*-*-*" + fail "h8300 movfpe/movtpe tests" +} + +proc do_h8300_movb {} { + set testname "movb.s: h8300 movb tests" + set x 0 + + gas_start "movb.s" "-al" + + # Check each instruction bit pattern to verify it got + # assembled correctly. + while 1 { + expect { + -re " +\[0-9\]+ 0000 0C89\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0002 F810\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0004 6818\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0006 6E180010\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000a 6C18\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000c 2810\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000e 6A080000\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0012 6898\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0014 6E980000\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0018 6C98\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 001a 3810\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 001c 6A880000\[^\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 == 12] then { pass $testname } else { fail $testname } +} + +proc do_h8300_movw {} { + set testname "movw.s: h8300 movw tests" + set x 0 + + gas_start "movw.s" "-al" + + # Check each instruction bit pattern to verify it got + # assembled correctly. + while 1 { + expect { + -re " +\[0-9\]+ 0000 0D01\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0002 79000010\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0006 6910\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0008 6F100010\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000c 6D10\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000e 6B000000\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0012 6990\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0014 6F900010\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0018 6D90\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 001a 6B800000\[^\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 == 10] then { pass $testname } else { fail $testname } +} + +proc do_h8300_pushpop {} { + set testname "pushpop.s: h8300 pushpop tests" + set x 0 + + gas_start "pushpop.s" "-al" + + # Check each instruction bit pattern to verify it got + # assembled correctly. + while 1 { + expect { + -re " +\[0-9\]+ 0000 6D70\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0002 6DF0\[^\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 == 2] then { pass $testname } else { fail $testname } +} + +proc do_h8300_rotate_shift {} { + set testname "rotshift.s: h8300 rotate and shift tests" + set x 0 + + gas_start "rotshift.s" "-al" + + # Check each instruction bit pattern to verify it got + # assembled correctly. + while 1 { + expect { + -re " +\[0-9\]+ 0000 1288\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0002 1388\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0004 1208\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0006 1308\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 0008 1088\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000a 1188\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000c 1008\[^\n\]*\n" { set x [expr $x+1] } + -re " +\[0-9\]+ 000e 1108\[^\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 } +} + + +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_branches + do_h8300_compare + do_h8300_decimal + do_h8300_incdec + do_h8300_divmul + do_h8300_misc + do_h8300_movb + do_h8300_movw + do_h8300_pushpop + do_h8300_rotate_shift + + + # 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" +} diff --git a/gas/testsuite/gas/h8300/incdec.s b/gas/testsuite/gas/h8300/incdec.s new file mode 100644 index 00000000000..26188277317 --- /dev/null +++ b/gas/testsuite/gas/h8300/incdec.s @@ -0,0 +1,5 @@ + .text +h8300_incdec: + dec r0l + inc r0l + diff --git a/gas/testsuite/gas/h8300/logical.s b/gas/testsuite/gas/h8300/logical.s new file mode 100644 index 00000000000..3f7e3b7145d --- /dev/null +++ b/gas/testsuite/gas/h8300/logical.s @@ -0,0 +1,14 @@ + .text +h8300_logical: + and #16,r1l + and r1l,r1h + andc #16,ccr + or #16,r0l + or r1l,r0l + orc #16,ccr + xor #16,r0l + xor r0l,r1l + xorc #16,ccr + neg r0l + not r0l + diff --git a/gas/testsuite/gas/h8300/misc.s b/gas/testsuite/gas/h8300/misc.s new file mode 100644 index 00000000000..1f6f8084b67 --- /dev/null +++ b/gas/testsuite/gas/h8300/misc.s @@ -0,0 +1,13 @@ + .text +h8300_misc: + eepmov + ldc #0,ccr + ldc r0l,ccr +; movfpe 16:16,r0l +; movtpe r0l,16:16 + nop + rte + rts + sleep + stc ccr,r0l + diff --git a/gas/testsuite/gas/h8300/movb.s b/gas/testsuite/gas/h8300/movb.s new file mode 100644 index 00000000000..b1dfc692fbd --- /dev/null +++ b/gas/testsuite/gas/h8300/movb.s @@ -0,0 +1,15 @@ + .text +h8300_movb: + mov.b r0l,r1l + mov.b #16,r0l + mov.b @r1,r0l + mov.b @(16:16,r1),r0l + mov.b @r1+,r0l + mov.b @16:8,r0l + mov.b @h8300_movb:16,r0l + mov.b r0l,@r1 + mov.b r0l,@(16:16,r1) + mov.b r0l,@r1- + mov.b r0l,@16:8 + mov.b r0l,@h8300_movb:16 + diff --git a/gas/testsuite/gas/h8300/movw.s b/gas/testsuite/gas/h8300/movw.s new file mode 100644 index 00000000000..4a733dc11f9 --- /dev/null +++ b/gas/testsuite/gas/h8300/movw.s @@ -0,0 +1,13 @@ + .text +h8300_movw: + mov.w r0,r1 + mov.w #16,r0 + mov.w @r1,r0 + mov.w @(16:16,r1),r0 + mov.w @r1+,r0 + mov.w @h8300_movw:16,r0 + mov.w r0,@r1 + mov.w r0,@(16:16,r1) + mov.w r0,@r1- + mov.w r0,@h8300_movw:16 + diff --git a/gas/testsuite/gas/h8300/pushpop.s b/gas/testsuite/gas/h8300/pushpop.s new file mode 100644 index 00000000000..941b7357537 --- /dev/null +++ b/gas/testsuite/gas/h8300/pushpop.s @@ -0,0 +1,5 @@ + .text +h8300_push_pop: + pop r0 + push r0 + diff --git a/gas/testsuite/gas/h8300/rotshift.s b/gas/testsuite/gas/h8300/rotshift.s new file mode 100644 index 00000000000..a9aa87df95e --- /dev/null +++ b/gas/testsuite/gas/h8300/rotshift.s @@ -0,0 +1,11 @@ + .text +h8300_rotate_shift: + rotl r0l + rotr r0l + rotxl r0l + rotxr r0l + shal r0l + shar r0l + shll r0l + shlr r0l +