diff options
Diffstat (limited to 'gas/testsuite/gas/mri')
31 files changed, 447 insertions, 0 deletions
diff --git a/gas/testsuite/gas/mri/char.d b/gas/testsuite/gas/mri/char.d new file mode 100644 index 00000000000..025f4b5914f --- /dev/null +++ b/gas/testsuite/gas/mri/char.d @@ -0,0 +1,9 @@ +#objcopy: -O srec +#name: MRI character constants +#as: -M + +# Test MRI character constants + +S0.* +S113....(61616263616263646500000061276200)|(61616263646362610000006500622761).* +#pass diff --git a/gas/testsuite/gas/mri/char.s b/gas/testsuite/gas/mri/char.s new file mode 100644 index 00000000000..7b0a83a9d2e --- /dev/null +++ b/gas/testsuite/gas/mri/char.s @@ -0,0 +1,6 @@ +; Test MRI style character constants. + + dc.b 'a' + dc.b 'abc' + dc.l 'abcde' + dc.l 'a''b' diff --git a/gas/testsuite/gas/mri/comment.d b/gas/testsuite/gas/mri/comment.d new file mode 100644 index 00000000000..30434dd2f85 --- /dev/null +++ b/gas/testsuite/gas/mri/comment.d @@ -0,0 +1,9 @@ +#nm: --extern-only +#name: MRI comments +#as: -M + +# Test MRI comments + +0+02 A RAM +0+01 A ROM + * U label diff --git a/gas/testsuite/gas/mri/comment.s b/gas/testsuite/gas/mri/comment.s new file mode 100644 index 00000000000..857318fa654 --- /dev/null +++ b/gas/testsuite/gas/mri/comment.s @@ -0,0 +1,13 @@ + xref label + xdef ROM,RAM + * this is a comment + + dc.l label loop if we haven't reach end yet + +ROM EQU $00000001 * word wide +RAM EQU $00000002 word wide + dc.l RAM + dc.l 0 ,really,a,comment +; a comment + ; another comment + ; another comment diff --git a/gas/testsuite/gas/mri/common.d b/gas/testsuite/gas/mri/common.d new file mode 100644 index 00000000000..c1c1530c213 --- /dev/null +++ b/gas/testsuite/gas/mri/common.d @@ -0,0 +1,8 @@ +#nm: --extern-only +#name: MRI common sections +#as: -M + +# Test MRI common sections + +0+08 C 00com2 +0+08 C com1 diff --git a/gas/testsuite/gas/mri/common.s b/gas/testsuite/gas/mri/common.s new file mode 100644 index 00000000000..d735c6b9205 --- /dev/null +++ b/gas/testsuite/gas/mri/common.s @@ -0,0 +1,11 @@ +; Test MRI common sections + common com1 + ds.l 1 +com2 common 00 + ds.l 1 +incom ds.l 1 + common com1 + ds.l 1 + data + dc.l com1 + dc.l incom diff --git a/gas/testsuite/gas/mri/constants.d b/gas/testsuite/gas/mri/constants.d new file mode 100644 index 00000000000..7210022284d --- /dev/null +++ b/gas/testsuite/gas/mri/constants.d @@ -0,0 +1,20 @@ +#nm: --extern-only +#name: MRI constants +#as: -M + +# Test MRI style constants + +0*0 T foo +0*a A s01 +0*a A s02 +0*a A s03 +0*a A s04 +0*a A s05 +0*a A s06 +0*a A s07 +0*a A s08 +0*a A s09 +0*61 A s10 +0*61 A s11 +0*61626364 A s12 +0*61276200 A s13 diff --git a/gas/testsuite/gas/mri/constants.s b/gas/testsuite/gas/mri/constants.s new file mode 100644 index 00000000000..0034e6765e1 --- /dev/null +++ b/gas/testsuite/gas/mri/constants.s @@ -0,0 +1,31 @@ + xdef s01,s02,s03,s04,s05,s06,s07,s08,s09,s10,s11,s12,s13 +s01 equ %1010 +s02 equ 1010b +s03 equ @12 +s04 equ 12o +s05 equ 12q +s06 equ 10 +s07 equ 10d +s08 equ $a +s09 equ 0ah +s10 equ 'a' +s11 equ A'a' +s12 equ 'abcd' +s13 equ 'a''b' + + xdef foo +foo + moveq.l #%1010,d0 + moveq.l #1010b,d0 + moveq.l #@12,d0 + moveq.l #12o,d0 + moveq.l #12q,d0 + moveq.l #10,d0 + moveq.l #10d,d0 + moveq.l #$a,d0 + moveq.l #0ah,d0 + moveq.l #'a',d0 + moveq.l #A'a',d0 + nop + + end diff --git a/gas/testsuite/gas/mri/empty.s b/gas/testsuite/gas/mri/empty.s new file mode 100644 index 00000000000..94c2cdd71de --- /dev/null +++ b/gas/testsuite/gas/mri/empty.s @@ -0,0 +1,9 @@ +SBT MACRO ; empty macro + ENDM + + SBT arg1 + SBT arg2 - one tww + SBT arg3 - one two three + SBT arg4 - one two three four + SBT arg5 - one two three four five + SBT arg6 - one two (three) diff --git a/gas/testsuite/gas/mri/equ.d b/gas/testsuite/gas/mri/equ.d new file mode 100644 index 00000000000..e5f9a867768 --- /dev/null +++ b/gas/testsuite/gas/mri/equ.d @@ -0,0 +1,7 @@ +#nm: --extern-only +#name: MRI EQU +#as: -M + +# Test the MRI EQU directive + +0*4 A SYMBOL diff --git a/gas/testsuite/gas/mri/equ.s b/gas/testsuite/gas/mri/equ.s new file mode 100644 index 00000000000..a6512a10cae --- /dev/null +++ b/gas/testsuite/gas/mri/equ.s @@ -0,0 +1,3 @@ +# Test the MRI EQU directive + XDEF SYMBOL +SYMBOL EQU 4 diff --git a/gas/testsuite/gas/mri/expr.d b/gas/testsuite/gas/mri/expr.d new file mode 100644 index 00000000000..71dee4eb21f --- /dev/null +++ b/gas/testsuite/gas/mri/expr.d @@ -0,0 +1,11 @@ +#nm: --extern-only +#name: MRI expressions +#as: -M + +# Test expressions in MRI mode + +00* A s1 +00*12 A s2 +00*6 A s3 +(00000000)?ff* A s4 +00* A s5 diff --git a/gas/testsuite/gas/mri/expr.s b/gas/testsuite/gas/mri/expr.s new file mode 100644 index 00000000000..57677c18e16 --- /dev/null +++ b/gas/testsuite/gas/mri/expr.s @@ -0,0 +1,7 @@ +; Test expressions in MRI mode + xdef s1,s2,s3,s4,s5 +s1 equ 1>2 +s2 equ 3<<1*3 +s3 equ 5!!3 +s4 equ "0 +s5 equ (1>=2)!(1<>1) diff --git a/gas/testsuite/gas/mri/float.d b/gas/testsuite/gas/mri/float.d new file mode 100644 index 00000000000..dea627afa65 --- /dev/null +++ b/gas/testsuite/gas/mri/float.d @@ -0,0 +1,10 @@ +#objcopy: -O srec +#name: MRI floating point constants +#as: -M + +# Test MRI floating point constants + +S0.* +S118....(123456789ABCDEF03F800000412000004120000042)|(F0DEBC9A785634120000803F000020410000204100).* +S10.....(C80000)|(00C842).* +#pass diff --git a/gas/testsuite/gas/mri/float.s b/gas/testsuite/gas/mri/float.s new file mode 100644 index 00000000000..637f9c6c919 --- /dev/null +++ b/gas/testsuite/gas/mri/float.s @@ -0,0 +1,7 @@ +; Test floating point constants in MRI mode. + + dc.d :1234_5678_9abc_def0 + dc.s 1.0 + dc.s 1e1 + dc.s 1_e_1 + dc.s 1E2 diff --git a/gas/testsuite/gas/mri/for.d b/gas/testsuite/gas/mri/for.d new file mode 100644 index 00000000000..e75fb95c7bb --- /dev/null +++ b/gas/testsuite/gas/mri/for.d @@ -0,0 +1,30 @@ +#objdump: -d --prefix-addresses +#name: MRI structured for +#as: -M + +# Test MRI structured for pseudo-op. + +.*: file format .* + +Disassembly of section .text: +0+000 <foo> clrw %d1 +0+002 <foo\+(0x|)2> movew #1,%d0 +0+006 <foo\+(0x|)6> cmpiw #10,%d0 +0+00a <foo\+(0x|)a> blts 0+016 <foo\+(0x|)16> +0+00c <foo\+(0x|)c> addw %d0,%d1 +0+00e <foo\+(0x|)e> bvcs 0+012 <foo\+(0x|)12> +0+010 <foo\+(0x|)10> bras 0+016 <foo\+(0x|)16> +0+012 <foo\+(0x|)12> addqw #2,%d0 +0+014 <foo\+(0x|)14> bras 0+006 <foo\+(0x|)6> +0+016 <foo\+(0x|)16> clrw %d1 +0+018 <foo\+(0x|)18> movew #10,%d0 +0+01c <foo\+(0x|)1c> cmpiw #1,%d0 +0+020 <foo\+(0x|)20> bgts 0+030 <foo\+(0x|)30> +0+022 <foo\+(0x|)22> cmpiw #100,%d1 +0+026 <foo\+(0x|)26> bgts 0+02a <foo\+(0x|)2a> +0+028 <foo\+(0x|)28> bras 0+02c <foo\+(0x|)2c> +0+02a <foo\+(0x|)2a> addw %d0,%d1 +0+02c <foo\+(0x|)2c> subqw #1,%d0 +0+02e <foo\+(0x|)2e> bras 0+01c <foo\+(0x|)1c> +0+030 <foo\+(0x|)30> nop +0+032 <foo\+(0x|)32> nop diff --git a/gas/testsuite/gas/mri/for.s b/gas/testsuite/gas/mri/for.s new file mode 100644 index 00000000000..7524725a4b7 --- /dev/null +++ b/gas/testsuite/gas/mri/for.s @@ -0,0 +1,22 @@ +; Test MRI structured for pseudo-op. + + xdef foo +foo + clr d1 + for d0 = #1 to #10 by #2 do + add d0,d1 arbitrary text 'in comment field + if <vs> then + break + endi + endf + + clr d1 + for d0 = #10 downto #1 do + if d1 <ge> #100 then + next + endi + add d0,d1 + endf + + nop + nop diff --git a/gas/testsuite/gas/mri/if.d b/gas/testsuite/gas/mri/if.d new file mode 100644 index 00000000000..832972cd402 --- /dev/null +++ b/gas/testsuite/gas/mri/if.d @@ -0,0 +1,25 @@ +#objdump: -d --prefix-addresses +#name: MRI structured if +#as: -M + +# Test MRI structured if pseudo-op. + +.*: file format .* + +Disassembly of section .text: +0+000 <foo> cmpw %d1,%d0 +0+002 <foo\+(0x|)2> bles 0+014 <foo\+(0x|)14> +0+004 <foo\+(0x|)4> cmpw %d2,%d0 +0+006 <foo\+(0x|)6> bles 0+014 <foo\+(0x|)14> +0+008 <foo\+(0x|)8> cmpw %d1,%d2 +0+00a <foo\+(0x|)a> bles 0+010 <foo\+(0x|)10> +0+00c <foo\+(0x|)c> movew %d1,%d3 +0+00e <foo\+(0x|)e> bras 0+012 <foo\+(0x|)12> +0+010 <foo\+(0x|)10> movew %d2,%d3 +0+012 <foo\+(0x|)12> bras 0+01e <foo\+(0x|)1e> +0+014 <foo\+(0x|)14> cmpw %d0,%d1 +0+016 <foo\+(0x|)16> bgts 0+01c <foo\+(0x|)1c> +0+018 <foo\+(0x|)18> cmpw %d0,%d2 +0+01a <foo\+(0x|)1a> bles 0+01e <foo\+(0x|)1e> +0+01c <foo\+(0x|)1c> movew %d0,%d3 +0+01e <foo\+(0x|)1e> nop diff --git a/gas/testsuite/gas/mri/if.s b/gas/testsuite/gas/mri/if.s new file mode 100644 index 00000000000..2646be8ab12 --- /dev/null +++ b/gas/testsuite/gas/mri/if.s @@ -0,0 +1,17 @@ +; Test MRI structured if pseudo-op. + + xdef foo +foo + if d1 <gt> d0 and d2 <gt> d0 then + if d1 <gt> d2 then + move d1,d3 + else + move d2,d3 + endi + else + if d0 <gt> d1 or d0 <gt> d2 then + move d0,d3 + endi + endi + + nop diff --git a/gas/testsuite/gas/mri/immconst.d b/gas/testsuite/gas/mri/immconst.d new file mode 100644 index 00000000000..ef2da10afd6 --- /dev/null +++ b/gas/testsuite/gas/mri/immconst.d @@ -0,0 +1,22 @@ +#objdump: -d --prefix-addresses +#name: MRI immediate constants +#as: -M +#source: constants.s + +# Test MRI immediate constants + +.*: file format .* + +Disassembly of section .text: +0+000 <foo> moveq #10,%d0 +0+002 <foo\+(0x|)2> moveq #10,%d0 +0+004 <foo\+(0x|)4> moveq #10,%d0 +0+006 <foo\+(0x|)6> moveq #10,%d0 +0+008 <foo\+(0x|)8> moveq #10,%d0 +0+00a <foo\+(0x|)a> moveq #10,%d0 +0+00c <foo\+(0x|)c> moveq #10,%d0 +0+00e <foo\+(0x|)e> moveq #10,%d0 +0+010 <foo\+(0x|)10> moveq #10,%d0 +0+012 <foo\+(0x|)12> moveq #97,%d0 +0+014 <foo\+(0x|)14> moveq #97,%d0 +0+016 <foo\+(0x|)16> nop diff --git a/gas/testsuite/gas/mri/label.d b/gas/testsuite/gas/mri/label.d new file mode 100644 index 00000000000..9ce5858daf7 --- /dev/null +++ b/gas/testsuite/gas/mri/label.d @@ -0,0 +1,8 @@ +#nm: --extern-only +#name: MRI label +#as: -M + +# Test using an MRI style label + +0000* T LABEL +[ ]*U SYMBOL diff --git a/gas/testsuite/gas/mri/label.s b/gas/testsuite/gas/mri/label.s new file mode 100644 index 00000000000..b05ec2a4f4b --- /dev/null +++ b/gas/testsuite/gas/mri/label.s @@ -0,0 +1,5 @@ +; Test using an MRI style label +* Also test MRI style comments +! And another comment + XDEF LABEL +LABEL DC.L SYMBOL ; And yet another comment diff --git a/gas/testsuite/gas/mri/moveml.d b/gas/testsuite/gas/mri/moveml.d new file mode 100644 index 00000000000..2c36fa8ee5c --- /dev/null +++ b/gas/testsuite/gas/mri/moveml.d @@ -0,0 +1,27 @@ +#objdump: -d +#name: MRI moveml +#as: -M + +.*: +file format .* + +Disassembly of section .text: + +0+000 <.text>: + 0: 4cdf 07fc moveml %sp@\+,%d2-%a2 + 4: 4cdf 07fc moveml %sp@\+,%d2-%a2 + 8: 48f9 07fc 0000 moveml %d2-%a2,0 <.text> + e: 0000 + 10: 48f9 07fc 0000 moveml %d2-%a2,0 <.text> + 16: 0000 + 18: 4cf9 07fc 0000 moveml 0 <.text>,%d2-%a2 + 1e: 0000 + 20: 4cf9 07fc 0000 moveml 0 <.text>,%d2-%a2 + 26: 0000 + 28: 4cf9 07fc 0001 moveml 16000 <fdsa>,%d2-%a2 + 2e: 6000 + 30: 4cf9 07fc 0001 moveml 16000 <fdsa>,%d2-%a2 + 36: 6000 + 38: 48f9 07fc 0001 moveml %d2-%a2,16000 <fdsa> + 3e: 6000 + 40: 48f9 07fc 0001 moveml %d2-%a2,16000 <fdsa> + 46: 6000 diff --git a/gas/testsuite/gas/mri/moveml.s b/gas/testsuite/gas/mri/moveml.s new file mode 100644 index 00000000000..b8fc728ba85 --- /dev/null +++ b/gas/testsuite/gas/mri/moveml.s @@ -0,0 +1,17 @@ +asdf reg a0-a2/d2-d7 +fdsa equ $16000 + + movem.l (sp)+,a0-a2/d2-d7 + movem.l (sp)+,asdf + + movem.l a0-a2/d2-d7,symbol + movem.l asdf,symbol + + movem.l symbol,a0-a2/d2-d7 + movem.l symbol,asdf + + movem.l fdsa,a0-a2/d2-d7 + movem.l fdsa,asdf + + movem.l a0-a2/d2-d7,fdsa + movem.l asdf,fdsa diff --git a/gas/testsuite/gas/mri/mri.exp b/gas/testsuite/gas/mri/mri.exp new file mode 100644 index 00000000000..f3fcded1e59 --- /dev/null +++ b/gas/testsuite/gas/mri/mri.exp @@ -0,0 +1,28 @@ +# +# Test the m68k MRI compatibility mode. +# +# I originally thought that most of tests applied to any MRI +# assembler, but it turns out that different MRI assemblers use +# different syntaxes. +# + +if ![istarget "m68*-*-*"] { + return +} + +run_dump_test label +run_dump_test equ +run_dump_test constants +run_dump_test immconst +run_dump_test float +run_dump_test char +run_dump_test expr +run_dump_test common +run_dump_test comment +gas_test "empty.s" "-M" "" "MRI empty macro" +run_dump_test for +run_dump_test if +run_dump_test repeat +run_dump_test while +run_dump_test semi +run_dump_test moveml diff --git a/gas/testsuite/gas/mri/repeat.d b/gas/testsuite/gas/mri/repeat.d new file mode 100644 index 00000000000..3cc5f638390 --- /dev/null +++ b/gas/testsuite/gas/mri/repeat.d @@ -0,0 +1,16 @@ +#objdump: -d --prefix-addresses +#name: MRI structured repeat +#as: -M + +# Test MRI structured repeat pseudo-op. + +.*: file format .* + +Disassembly of section .text: +0+000 <foo> bccs 0+000 <foo> +0+002 <foo\+(0x|)2> clrw %d1 +0+004 <foo\+(0x|)4> addqw #1,%d1 +0+006 <foo\+(0x|)6> cmpiw #10,%d1 +0+00a <foo\+(0x|)a> bgts 0+004 <foo\+(0x|)4> +0+00c <foo\+(0x|)c> nop +0+00e <foo\+(0x|)e> nop diff --git a/gas/testsuite/gas/mri/repeat.s b/gas/testsuite/gas/mri/repeat.s new file mode 100644 index 00000000000..0e4ea2b6527 --- /dev/null +++ b/gas/testsuite/gas/mri/repeat.s @@ -0,0 +1,14 @@ +; Test MRI structured repeat pseudo-op. + + xdef foo +foo + repeat + until <cs> + + clr d1 + repeat + add #1,d1 + until d1 <ge> #10 + + nop + nop diff --git a/gas/testsuite/gas/mri/semi.d b/gas/testsuite/gas/mri/semi.d new file mode 100644 index 00000000000..0decce18472 --- /dev/null +++ b/gas/testsuite/gas/mri/semi.d @@ -0,0 +1,9 @@ +#objdump: -s -j .text +#name: MRI semi +#as: -M + +.*: .* + +Contents of section .text: + 0000 3b203b20 3a203a20 00000000 00000000 ; ; : : ........ + 0010 00000000 00000000 00000000 00000000 ................ diff --git a/gas/testsuite/gas/mri/semi.s b/gas/testsuite/gas/mri/semi.s new file mode 100644 index 00000000000..5b30677c470 --- /dev/null +++ b/gas/testsuite/gas/mri/semi.s @@ -0,0 +1,14 @@ +semicolon macro + dc.b '; ' + endm + +colon macro + dc.b ': ' + endm + + semicolon + dc.b '; ' + colon + dc.b ': ' + + p2align 5 diff --git a/gas/testsuite/gas/mri/while.d b/gas/testsuite/gas/mri/while.d new file mode 100644 index 00000000000..d8dd37a3594 --- /dev/null +++ b/gas/testsuite/gas/mri/while.d @@ -0,0 +1,18 @@ +#objdump: -d --prefix-addresses +#name: MRI structured while +#as: -M + +# Test MRI structure while pseudo-op. + +.*: file format .* + +Disassembly of section .text: +0+000 <foo> bccs 0+004 <foo\+(0x|)4> +0+002 <foo\+(0x|)2> bras 0+000 <foo> +0+004 <foo\+(0x|)4> clrw %d1 +0+006 <foo\+(0x|)6> cmpiw #10,%d1 +0+00a <foo\+(0x|)a> blts 0+010 <foo\+(0x|)10> +0+00c <foo\+(0x|)c> addqw #1,%d1 +0+00e <foo\+(0x|)e> bras 0+006 <foo\+(0x|)6> +0+010 <foo\+(0x|)10> nop +0+012 <foo\+(0x|)12> nop diff --git a/gas/testsuite/gas/mri/while.s b/gas/testsuite/gas/mri/while.s new file mode 100644 index 00000000000..35cbdbbbc15 --- /dev/null +++ b/gas/testsuite/gas/mri/while.s @@ -0,0 +1,14 @@ +; Test MRI structured while pseudo-op. + + xdef foo +foo + while <cs> do + endw + + clr d1 + while d1 <le> #10 do + add #1,d1 + endw + + nop + nop |