2008-11-21 Sterling Augustine <sterling@tensilica.com>
authorSterling Augustine <saugustine@google.com>
Fri, 21 Nov 2008 22:13:32 +0000 (22:13 +0000)
committerSterling Augustine <saugustine@google.com>
Fri, 21 Nov 2008 22:13:32 +0000 (22:13 +0000)
        * xtensa-isa.c (xtensa_state_is_shared_or): New function.

2008-11-21  Sterling Augustine  <sterling@tensilica.com>

        * xtensa-isa-internal.h (XTENSA_STATE_IS_SHARED_OR): New flag.
        * xtensa-isa.h (xtensa_state_is_shared_or): New prototype.

2008-11-21  Sterling Augustine  <sterling@tensilica.com>

        * config/tc-xtensa.c (check_t1_t2_reads_and_writes): Call
        xtensa_state_is_shared_or to allow multiple opcodes within a
        single FLIX bundle to write to these special states.

bfd/ChangeLog
bfd/xtensa-isa.c
gas/ChangeLog
gas/config/tc-xtensa.c
include/ChangeLog
include/xtensa-isa-internal.h
include/xtensa-isa.h

index 650ff2ed8d6f6fe6bcc6e9334f2da961d03dd101..48f3039e0297439a923187adbb5880a7dd5606e2 100644 (file)
@@ -1,3 +1,7 @@
+2008-11-21  Sterling Augustine  <sterling@tensilica.com>
+
+       * xtensa-isa.c (xtensa_state_is_shared_or): New function.
+
 2008-11-21  Hans-Peter Nilsson  <hp@axis.com>
 
        * elf-bfd.h (struct elf_backend_data): New member got_elt_size.
index 35b27db84d4b3966195d4755d0c934b416d2a281..138f6eceb7254e696c3c8cf0876c863489b6e43c 100644 (file)
@@ -1526,6 +1526,17 @@ xtensa_state_is_exported (xtensa_isa isa, xtensa_state st)
 }
 
 
+int
+xtensa_state_is_shared_or (xtensa_isa isa, xtensa_state st)
+{
+  xtensa_isa_internal *intisa = (xtensa_isa_internal *) isa;
+  CHECK_STATE (intisa, st, XTENSA_UNDEFINED);
+  if ((intisa->states[st].flags & XTENSA_STATE_IS_SHARED_OR) != 0)
+    return 1;
+  return 0;
+}
+
+
 \f
 /* Sysregs.  */
 
index 3fdd10bbaa5e8caf1407f0532f1fcc307b2f2462..b36db8e1dcb15aff0fc7d4b01e1079e25ad0346b 100644 (file)
@@ -1,3 +1,9 @@
+2008-11-21  Sterling Augustine  <sterling@tensilica.com>
+
+       * config/tc-xtensa.c (check_t1_t2_reads_and_writes): Call
+       xtensa_state_is_shared_or to allow multiple opcodes within a
+       single FLIX bundle to write to these special states.
+
 2008-11-19  Hans-Peter Nilsson  <hp@axis.com>
 
        * config/tc-cris.c (cris_number_to_imm): Apply S_SET_THREAD_LOCAL
index f1ccd2833472a6aa9400a3f2c38a356ae19048de..6646ef7be66d4da31c2d700d920a571384c14e53 100644 (file)
@@ -6539,7 +6539,7 @@ check_t1_t2_reads_and_writes (TInsn *t1, TInsn *t2)
        {
          xtensa_state t1_so = xtensa_stateOperand_state (isa, t1->opcode, i);
          t1_inout = xtensa_stateOperand_inout (isa, t1->opcode, i);
-         if (t1_so != t2_so)
+         if (t1_so != t2_so || xtensa_state_is_shared_or (isa, t1_so) == 1)
            continue;
 
          if (t2_inout == 'i' && (t1_inout == 'm' || t1_inout == 'o'))
index 082147b4d4d63b8cb306753a926f247f76a11790..c6a6caef48155184940f619a3e3878a8305bf06b 100644 (file)
@@ -1,3 +1,8 @@
+2008-11-21  Sterling Augustine  <sterling@tensilica.com>
+
+       * xtensa-isa-internal.h (XTENSA_STATE_IS_SHARED_OR): New flag.
+       * xtensa-isa.h (xtensa_state_is_shared_or): New prototype.
+
 2008-11-19  Bob Wilson  <bob.wilson@acm.org>
        
        * xtensa-config.h (XCHAL_HAVE_MUL16, XCHAL_HAVE_MUL32, XCHAL_HAVE_DIV32)
index 9ea23e440698f244686cbd2a4463af6dc941989c..ae1f1679f404213675d28a7050a6f36a513f1ad4 100644 (file)
@@ -1,5 +1,5 @@
 /* Internal definitions for configurable Xtensa ISA support.
-   Copyright 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright 2003, 2004, 2005, 2008 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -15,7 +15,8 @@
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301,
+   USA.  */
 
 #ifndef XTENSA_ISA_INTERNAL_H
 #define XTENSA_ISA_INTERNAL_H
@@ -33,6 +34,7 @@
 #define XTENSA_OPCODE_IS_CALL          0x00000008
 
 #define XTENSA_STATE_IS_EXPORTED       0x00000001
+#define XTENSA_STATE_IS_SHARED_OR      0x00000002
 
 #define XTENSA_INTERFACE_HAS_SIDE_EFFECT 0x00000001
 
index c4e31ed7ff6c6ab1f7efe15f27e320c99622a250..69ac60d4b3a1690a45e72c593b60dffe50e02d06 100644 (file)
@@ -1,5 +1,5 @@
 /* Interface definition for configurable Xtensa ISA support.
-   Copyright 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+   Copyright 2003, 2004, 2005, 2006, 2008 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -15,7 +15,8 @@
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, 
+   USA.  */
 
 #ifndef XTENSA_LIBISA_H
 #define XTENSA_LIBISA_H
@@ -686,6 +687,13 @@ extern int
 xtensa_state_is_exported (xtensa_isa isa, xtensa_state st);
 
 
+/* Check for a "shared_or" state.  Returns 0 if the condition is false,
+   1 if the condition is true, and XTENSA_UNDEFINED on error.  */
+
+extern int
+xtensa_state_is_shared_or (xtensa_isa isa, xtensa_state st);
+
+
 \f
 /* Sysregs ("special registers" and "user registers").  */