gas: blackfin: gas: blackfin: reject invalid BYTEUNPACK insns

The destination registers must be different with BYTEUNPACK insns,
otherwise the hardware throws up an exception.  So reject them.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
Mike Frysinger 2011-03-29 05:54:41 +00:00
parent 3823a07437
commit fc99ebdc2b
5 changed files with 14 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2011-03-29 Mike Frysinger <vapier@gentoo.org>
* config/bfin-parse.y (BYTEUNPACK): Return yyerror when dest
reg $2 is the same as dest reg $4.
2011-03-29 Mike Frysinger <vapier@gentoo.org>
* config/bfin-parse.y (BYTEOP16M): Return yyerror when dest

View File

@ -866,6 +866,8 @@ asm_1:
{
if (!IS_DREG ($2) || !IS_DREG ($4))
return yyerror ("Dregs expected");
else if (REG_SAME ($2, $4))
return yyerror ("Illegal dest register combination");
else if (!valid_dreg_pair (&$8, $10))
return yyerror ("Bad dreg pair");
else

View File

@ -1,3 +1,8 @@
2011-03-29 Mike Frysinger <vapier@gentoo.org>
* gas/bfin/expected_errors.s: Add invalid BYTEUNPACK insn tests.
* gas/bfin/expected_errors.l: Add new error messages.
2011-03-29 Mike Frysinger <vapier@gentoo.org>
* gas/bfin/expected_errors.s: Add invalid BYTEOP16M insn tests.

View File

@ -105,3 +105,4 @@
.*:134: Error: Illegal dest register combination.
.*:135: Error: Illegal dest register combination.
.*:136: Error: Illegal dest register combination.
.*:137: Error: Illegal dest register combination.

View File

@ -134,3 +134,4 @@
(R7, R7) = BYTEOP16P (R1:0, R3:2);
(R1, R1) = BYTEOP16M (R1:0, R3:2);
(R4, R4) = BYTEOP16M (R1:0, R3:2);
(R5, R5) = BYTEUNPACK R3:2;