* config/tc-sh.c (get_specific): Revert 2002-05-01 change.
authorJoern Rennecke <joern.rennecke@embecosm.com>
Wed, 19 Jun 2002 14:28:09 +0000 (14:28 +0000)
committerJoern Rennecke <joern.rennecke@embecosm.com>
Wed, 19 Jun 2002 14:28:09 +0000 (14:28 +0000)
(assemble_ppi): Generate warning if the same register is used
twice as destination in the same padd / pmuls instruction.

gas/ChangeLog
gas/config/tc-sh.c

index 81c4d9632b444128e9d3eb1f91ada4c9975b3529..caebb52ab0c58be9a8d5d0ea5be6de36fda23afb 100644 (file)
@@ -1,3 +1,9 @@
+Wed Jun 19 15:12:00 2002  Dhananjay R. Deshpande <dhananjayd@kpit.com>
+
+       * config/tc-sh.c (get_specific): Revert 2002-05-01 change.
+       (assemble_ppi): Generate warning if the same register is used
+       twice as destination in the same padd / pmuls instruction.
+
 2002-06-18  Dave Brolley  <brolley@redhat.com>
 
        From Catherine Moore, Michael Meissner, Richard Sandiford, Dave Brolley:
index e62a6f95bd0c9b92c1f83e984161582afc14ed42..968ab4cdc491bfe2102ed7fd28b5d87850153e8a 100644 (file)
@@ -1589,27 +1589,6 @@ get_specific (opcode, operands)
          sh_operand_info *user = operands + n;
          sh_arg_type arg = this_try->arg[n];
 
-         /* If this is a parallel insn check to see if both
-            parts have the same destination register.  */
-         if ((n == 2) && (this_try->nibbles[0] == PPI))
-           {
-             static boolean bIsPPI = false;
-             static int nLastDestReg;
-
-             if (!bIsPPI)
-               {
-                 bIsPPI = true;
-                 nLastDestReg = user->reg;
-               }
-             else /* Second insn.  */
-               {
-                 if (nLastDestReg == user->reg)
-                   as_warn (_("destination register is same for parallel insns"));
-
-                 bIsPPI = false;
-               }
-           }
-
          switch (arg)
            {
            case A_DISP_PC:
@@ -2280,6 +2259,15 @@ assemble_ppi (op_end, opcode)
                default:
                  as_bad (_("bad padd / psub pmuls output operand"));
                }
+               /* Generate waring if destination register for padd / psub
+                  and pmuls is same ( only for A0 or A1 )
+                  If last nibble is 1010 then A0 is used in both padd / psub
+                  and pmuls. If it is 1111 then A1 is used as destination
+                  register in both padd / psub and pmuls */
+
+               if ((((field_b | reg_efg) & 0x000F) == 0x000A)
+                   || (((field_b | reg_efg) & 0x000F) == 0x000F))
+                 as_warn (_("destination register is same for parallel insns"));
            }
          field_b += 0x4000 + reg_efg;
          break;