This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] 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.

Committed.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>

gas/:
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.

gas/testsuite/:
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.
---
 gas/config/bfin-parse.y                  |    2 ++
 gas/testsuite/gas/bfin/expected_errors.l |    1 +
 gas/testsuite/gas/bfin/expected_errors.s |    1 +
 3 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/gas/config/bfin-parse.y b/gas/config/bfin-parse.y
index 7961e2e..797664a 100644
--- a/gas/config/bfin-parse.y
+++ b/gas/config/bfin-parse.y
@@ -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
diff --git a/gas/testsuite/gas/bfin/expected_errors.l b/gas/testsuite/gas/bfin/expected_errors.l
index 1c12e65..40a9043 100644
--- a/gas/testsuite/gas/bfin/expected_errors.l
+++ b/gas/testsuite/gas/bfin/expected_errors.l
@@ -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.
diff --git a/gas/testsuite/gas/bfin/expected_errors.s b/gas/testsuite/gas/bfin/expected_errors.s
index a671a2c..6ff14a6 100644
--- a/gas/testsuite/gas/bfin/expected_errors.s
+++ b/gas/testsuite/gas/bfin/expected_errors.s
@@ -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;
-- 
1.7.4.1


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]