gas: blackfin: gas: blackfin: reject invalid BYTEOP16M insns
authorMike Frysinger <vapier@gentoo.org>
Tue, 29 Mar 2011 05:51:22 +0000 (05:51 +0000)
committerMike Frysinger <vapier@gentoo.org>
Tue, 29 Mar 2011 05:51:22 +0000 (05:51 +0000)
The destination registers must be different with BYTEOP16M insns,
otherwise the hardware throws up an exception.  So reject them.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
gas/ChangeLog
gas/config/bfin-parse.y
gas/testsuite/ChangeLog
gas/testsuite/gas/bfin/expected_errors.l
gas/testsuite/gas/bfin/expected_errors.s

index 428d266..5ae246e 100644 (file)
@@ -1,5 +1,10 @@
 2011-03-29  Mike Frysinger  <vapier@gentoo.org>
 
+       * config/bfin-parse.y (BYTEOP16M): 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 (BYTEOP16P): Return yyerror when dest
        reg $2 is the same as dest reg $4.
 
index 12e7525..7961e2e 100644 (file)
@@ -849,6 +849,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))
index 2472627..20aeb3f 100644 (file)
@@ -1,5 +1,10 @@
 2011-03-29  Mike Frysinger  <vapier@gentoo.org>
 
+       * gas/bfin/expected_errors.s: Add invalid BYTEOP16M 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 BYTEOP16P insn tests.
        * gas/bfin/expected_errors.l: Add new error messages.
 
index 216c8e1..1c12e65 100644 (file)
 .*:131: Error: Illegal dest register combination. Input text was A0.H.
 .*:133: Error: Illegal dest register combination.
 .*:134: Error: Illegal dest register combination.
+.*:135: Error: Illegal dest register combination.
+.*:136: Error: Illegal dest register combination.
index 677103c..a671a2c 100644 (file)
 
        (R0, R0) = BYTEOP16P (R1:0, R3:2);
        (R7, R7) = BYTEOP16P (R1:0, R3:2);
+       (R1, R1) = BYTEOP16M (R1:0, R3:2);
+       (R4, R4) = BYTEOP16M (R1:0, R3:2);