| 1 | ; Test that we get errors when we require a register prefix. |
| 2 | |
| 3 | ; { dg-do assemble } |
| 4 | |
| 5 | .syntax register_prefix |
| 6 | start: |
| 7 | |
| 8 | ; Some simple tests that we indeed require a register prefix, and some |
| 9 | ; that should not be flagged as syntax errors. |
| 10 | |
| 11 | push srp ; { dg-error "(Illegal|Invalid) operands" } |
| 12 | push r3 ; { dg-error "(Illegal|Invalid) operands" } |
| 13 | move.d $r7,r8 ; { dg-error "(Illegal|Invalid) operands" } |
| 14 | move.d r8,[$r11] ; { dg-error "(Illegal|Invalid) operands" } |
| 15 | move.d $r8,[$r11+] |
| 16 | move.d $r8,[$r10+$r9.b] |
| 17 | move.d $r7,[$r10+[$r1].d] |
| 18 | move.d $r7,[$r10+[$r3+].w] |
| 19 | move $r8,srp ; { dg-error "(Illegal|Invalid) operands" } |
| 20 | move ccr,$r13 ; { dg-error "(Illegal|Invalid) operands" } |
| 21 | movem r4,[$r12+] ; { dg-error "(Illegal|Invalid) operands" } |
| 22 | |
| 23 | ; Here we have no ambiguity; r10 can only be a symbol when we reuire a |
| 24 | ; prefix. It does not just miss a size specifier, e.g. as in [r12+r10.d]. |
| 25 | move.d $r13,[$r12+r10] |
| 26 | |
| 27 | .syntax no_register_prefix |
| 28 | |
| 29 | ; Perhaps in this one we should backtrack and retry r10 as a symbol, but |
| 30 | ; the ambiguity is closer to a programming error, so we should catch it as |
| 31 | ; such. |
| 32 | move.d $r13,[$r12+r10] ; { dg-error "(Illegal|Invalid) operands" } |
| 33 | move.d r13,[r12+r16] ; No register named r16 so must be a symbol. |
| 34 | nop |