gas: blackfin: gas: blackfin: reject invalid BYTEOP16P insns

The destination registers must be different with BYTEOP16P 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:44:56 +00:00
parent c3a7b1206d
commit 0be99d4ba6
5 changed files with 17 additions and 0 deletions

View File

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

View File

@ -831,6 +831,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 (&$9, $11))
return yyerror ("Bad dreg pair");
else if (!valid_dreg_pair (&$13, $15))

View File

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

View File

@ -101,3 +101,5 @@
.*:127: Error: Differing source registers.
.*:129: Error: Register mismatch.
.*:131: Error: Illegal dest register combination. Input text was A0.H.
.*:133: Error: Illegal dest register combination.
.*:134: Error: Illegal dest register combination.

View File

@ -129,3 +129,6 @@
R0 = R3 + R4, R1 = R5 - R6;
R7 = A1.L + A1.H, R7 = A0.L + A0.H;
(R0, R0) = BYTEOP16P (R1:0, R3:2);
(R7, R7) = BYTEOP16P (R1:0, R3:2);