* gas/cris/regprefix-err-1.s, gas/cris/rd-regprefix-1.s,

gas/cris/rd-regprefix-1.d, gas/cris/rd-regprefix-1b.d,
	gas/cris/us-err-1.s, gas/cris/us-err-2.s, gas/cris/us-err-3.s: New.
	* gas/cris/cris.exp: Loop run_dump_test over files matching rd-*.d.
This commit is contained in:
Hans-Peter Nilsson 2000-09-29 18:39:31 +00:00
parent b4db717d67
commit 37260204fd
8 changed files with 191 additions and 0 deletions

View File

@ -326,6 +326,17 @@ if [istarget cris-*-*] then {
#untested "disassembling special regs"
#untested "disassembling unimplemented special regs"
# *PLEASE* make new "simple" run_dump_test-tests match "rd-*.d", so
# they will be picked up automatically through this construct. This
# so you don't need to change cris.exp. (As perhaps should have been
# originally done for cases below, but which is not worth fixing now.)
set rd_test_list [lsort [glob -nocomplain $srcdir/$subdir/rd-*.d]]
for { set i 0 } { $i < [llength $rd_test_list] } { incr i } {
# We need to strip the ".d", but can leave the dirname.
verbose [file rootname [lindex $rd_test_list $i]]
run_dump_test [file rootname [lindex $rd_test_list $i]]
}
# Broken word handling got erroneously triggers for this and
# got out-of-bounds errors.
# FIXME: Check closer that this gets the expected results and fix

View File

@ -0,0 +1,34 @@
#objdump: -dr
#as: --underscore
#name: Register prefixes 1 defaulted to no.
.*:[ ]+file format .*-cris
Disassembly of section \.text:
00000000 <start>:
[ ]+0:[ ]+6556[ ]+test\.d[ ]+r5
[ ]+2:[ ]+3496[ ]+move[ ]+r4,ibr
[ ]+4:[ ]+01a1 e44b[ ]+move\.d[ ]+r4,\[r10\+1\]
[ ]+8:[ ]+bab9[ ]+jsr[ ]+r10
[ ]+a:[ ]+607a[ ]+move\.d[ ]+\[r0\],r7
[ ]+c:[ ]fce1 7ebe[ ]+push[ ]+srp
[ ]+10:[ ]+74a6[ ]+move[ ]+irp,r4
[ ]+12:[ ]+40a5 e44b[ ]+move\.d[ ]+r4,\[r0\+r10\.b\]
[ ]+16:[ ]+6ffd 0000 0000 705a[ ]+move[ ]+ccr,\[pc\+0[ ]+<start>\]
[ ]+18:[ ]+(R_CRIS_)?32[ ]+r16
[ ]+1e:[ ]fce1 7ebe[ ]+push[ ]+srp
[ ]+22:[ ]+60a5 e44b[ ]+move\.d[ ]+r4,\[r0\+r10\.d\]
[ ]+26:[ ]+6ffd 0000 0000 705a[ ]+move[ ]+ccr,\[pc\+0[ ]+<start>\]
[ ]+28:[ ]+(R_CRIS_)?32[ ]+r16
[ ]+2e:[ ]+6556[ ]+test\.d[ ]+r5
[ ]+30:[ ]+3496[ ]+move[ ]+r4,ibr
[ ]+32:[ ]+01a1 e44b[ ]+move\.d[ ]+r4,\[r10\+1\]
[ ]+36:[ ]+bab9[ ]+jsr[ ]+r10
[ ]+38:[ ]+6f5e 0000 0000[ ]+move\.d[ ]+0[ ]+<start>,r5
[ ]+3a:[ ]+(R_CRIS_)?32[ ]+r5
[ ]+3e:[ ]+3f9e 0000 0000[ ]+move[ ]+0[ ]+<start>,ibr
[ ]+40:[ ]+(R_CRIS_)?32[ ]+r4
[ ]+44:[ ]+7f0d 0100 0000 e44b[ ]+move\.d[ ]+r4,\[1[ ]+<start\+0x1>\]
[ ]+46:[ ]+(R_CRIS_)?32[ ]+r10\+0x1
[ ]+4c:[ ]+3fbd 0000 0000[ ]+jsr[ ]+0[ ]+<start>
[ ]+4e:[ ]+(R_CRIS_)?32[ ]+r10
[ ]+\.\.\.

View File

@ -0,0 +1,41 @@
; Test (no_)register_prefixes a bit. Register prefix may or may not be
; mandated when we get here.
start:
; Ambiguous. Depends on default.
move.d r5,$r5
move r4,$ibr
move.d $r4,[r10+1]
jsr r10
move.d [r0],$r7
; Non-ambiguous, with a prefix.
push $srp
move $irp,$r4
move.d $r4,[$r0+$r10.b]
move $ccr,[$pc+r16]
.syntax no_register_prefix
; Some invalid with mandated register prefix; check that they pass.
push srp
move.d r4,[r0+r10.d]
move $ccr,[$pc+r16]
; Ambiguity interpreted one way...
move.d r5,$r5
move r4,$ibr
move.d $r4,[r10+1]
jsr r10
.syntax register_prefix
; Ambiguity interpreted the other way.
move.d r5,$r5
move r4,$ibr
move.d $r4,[r10+1]
jsr r10

View File

@ -0,0 +1,43 @@
#objdump: -dr
#as: --no-underscore --em=criself
#source: rd-regprefix-1.s
#name: Register prefixes 1 defaulted to yes.
# We have to force ELF here, since --no-underscore is invalid with a.out
# (separately tested). We make sure we get the target translation to
# elf32-cris (not elf32-us-cris) as well so we spell out the target name.
.*:[ ]+file format elf32-cris
Disassembly of section \.text:
00000000 <start>:
[ ]+0:[ ]+6f5e 0000 0000[ ]+move\.d[ ]+0[ ]+<start>,\$r5
[ ]+2:[ ]+(R_CRIS_)?32[ ]+r5
[ ]+6:[ ]+3f9e 0000 0000[ ]+move[ ]+0[ ]+<start>,\$ibr
[ ]+8:[ ]+(R_CRIS_)?32[ ]+r4
[ ]+c:[ ]+7f0d 0100 0000 e44b[ ]+move\.d[ ]+\$r4,\[1[ ]+<start\+0x1>\]
[ ]+e:[ ]+(R_CRIS_)?32[ ]+r10\+0x1
[ ]+14:[ ]+3fbd 0000 0000[ ]+jsr[ ]+0[ ]+<start>
[ ]+16:[ ]+(R_CRIS_)?32[ ]+r10
[ ]+1a:[ ]+7f0d 0000 0000[ ]+677a[ ]+move\.d[ ]+\[0[ ]+<start>\],\$r7
[ ]+1c:[ ]+(R_CRIS_)?32[ ]+r0
[ ]+22:[ ]+fce1 7ebe[ ]+push[ ]+\$srp
[ ]+26:[ ]+74a6[ ]+move[ ]+\$irp,\$r4
[ ]+28:[ ]+40a5 e44b[ ]+move\.d[ ]+\$r4,\[\$r0\+\$r10\.b\]
[ ]+2c:[ ]+6ffd 0000 0000 705a[ ]+move[ ]+\$ccr,\[\$pc\+0[ ]+<start>\]
[ ]+2e:[ ]+(R_CRIS_)?32[ ]+r16
[ ]+34:[ ]+fce1 7ebe[ ]+push[ ]+\$srp
[ ]+38:[ ]+60a5 e44b[ ]+move\.d[ ]+\$r4,\[\$r0\+\$r10\.d\]
[ ]+3c:[ ]+6ffd 0000 0000 705a[ ]+move[ ]+\$ccr,\[\$pc\+0[ ]+<start>\]
[ ]+3e:[ ]+(R_CRIS_)?32[ ]+r16
[ ]+44:[ ]+6556[ ]+test\.d[ ]+\$r5
[ ]+46:[ ]+3496[ ]+move[ ]+\$r4,\$ibr
[ ]+48:[ ]+01a1 e44b[ ]+move\.d[ ]+\$r4,\[\$r10\+1\]
[ ]+4c:[ ]+bab9[ ]+jsr[ ]+\$r10
[ ]+4e:[ ]+6f5e 0000 0000[ ]+move\.d[ ]+0[ ]+<start>,\$r5
[ ]+50:[ ]+(R_CRIS_)?32[ ]+r5
[ ]+54:[ ]+3f9e 0000 0000[ ]+move[ ]+0[ ]+<start>,\$ibr
[ ]+56:[ ]+(R_CRIS_)?32[ ]+r4
[ ]+5a:[ ]+7f0d 0100 0000[ ]+e44b[ ]+move\.d[ ]+\$r4,\[1[ ]+<start\+0x1>\]
[ ]+5c:[ ]+(R_CRIS_)?32[ ]+r10\+0x1
[ ]+62:[ ]+3fbd 0000 0000[ ]+jsr[ ]+0[ ]+<start>
[ ]+64:[ ]+(R_CRIS_)?32[ ]+r10

View File

@ -0,0 +1,34 @@
; Test that we get errors when we require a register prefix.
; { dg-do assemble }
.syntax register_prefix
start:
; Some simple tests that we indeed require a register prefix, and some
; that should not be flagged as syntax errors.
push srp ; { dg-error "(Illegal|Invalid) operands" }
push r3 ; { dg-error "(Illegal|Invalid) operands" }
move.d $r7,r8 ; { dg-error "(Illegal|Invalid) operands" }
move.d r8,[$r11] ; { dg-error "(Illegal|Invalid) operands" }
move.d $r8,[$r11+]
move.d $r8,[$r10+$r9.b]
move.d $r7,[$r10+[$r1].d]
move.d $r7,[$r10+[$r3+].w]
move $r8,srp ; { dg-error "(Illegal|Invalid) operands" }
move ccr,$r13 ; { dg-error "(Illegal|Invalid) operands" }
movem r4,[$r12+] ; { dg-error "(Illegal|Invalid) operands" }
; Here we have no ambiguity; r10 can only be a symbol when we reuire a
; prefix. It does not just miss a size specifier, e.g. as in [r12+r10.d].
move.d $r13,[$r12+r10]
.syntax no_register_prefix
; Perhaps in this one we should backtrack and retry r10 as a symbol, but
; the ambiguity is closer to a programming error, so we should catch it as
; such.
move.d $r13,[$r12+r10] ; { dg-error "(Illegal|Invalid) operands" }
move.d r13,[r12+r16] ; No register named r16 so must be a symbol.
nop

View File

@ -0,0 +1,8 @@
; Test that we get an error with mismatching options.
; { dg-do assemble }
; { dg-options "--no-underscore --em=crisaout" }
; { dg-error ".* --no-underscore is invalid with a.out format" "" { target cris-*-* } 0 }
start:
nop

View File

@ -0,0 +1,10 @@
; Test that we get an error when directive does not match option.
; Make sure we specify ELF so we don't get spurious failures when testing
; a.out.
; { dg-do assemble }
; { dg-options "--underscore" }
.syntax no_leading_underscore ; { dg-error ".* \.syntax no_leading_underscore requires .* `--no-underscore'" }
start:
nop

View File

@ -0,0 +1,10 @@
; Test that we get an error when directive does not match option.
; Make sure we specify ELF so we don't get spurious failures when testing
; a.out.
; { dg-do assemble }
; { dg-options "--no-underscore --em=criself" }
.syntax leading_underscore ; { dg-error ".* \.syntax leading_underscore requires .* `--underscore'" }
start:
nop