invoke.texi (Option Summary, [...]): Document -mserialize-volatile and -mno-serialize...
authorBob Wilson <bob.wilson@acm.org>
Sat, 15 Mar 2008 00:46:54 +0000 (00:46 +0000)
committerBob Wilson <bwilson@gcc.gnu.org>
Sat, 15 Mar 2008 00:46:54 +0000 (00:46 +0000)
        * doc/invoke.texi (Option Summary, Xtensa Options): Document
        -mserialize-volatile and -mno-serialize-volatile Xtensa options.
        * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
        unless TARGET_SERIALIZE_VOLATILE is enabled.
        * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
        * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
        * config/xtensa/xtensa.opt (mserialize_volatile): New option.

From-SVN: r133234

gcc/ChangeLog
gcc/config/xtensa/xtensa.c
gcc/config/xtensa/xtensa.h
gcc/config/xtensa/xtensa.md
gcc/config/xtensa/xtensa.opt
gcc/doc/invoke.texi

index 0da79075f657cb318c726e7f01d697433b17e221..79ef713121eeb4ea43bb666d8e44ce13e557a8c9 100644 (file)
@@ -1,3 +1,13 @@
+2008-03-14  Bob Wilson  <bob.wilson@acm.org>
+       
+       * doc/invoke.texi (Option Summary, Xtensa Options): Document
+       -mserialize-volatile and -mno-serialize-volatile Xtensa options.
+       * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
+       unless TARGET_SERIALIZE_VOLATILE is enabled.
+       * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
+       * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
+       * config/xtensa/xtensa.opt (mserialize_volatile): New option.
+
 2008-03-14  Richard Guenther  <rguenther@suse.de>
 
        PR tree-optimization/34172
index 76cd5f4b38f8e3f9dfd98681fd65ef32dc6d97db..2fb0d345651ba5f492f987fa627f366f13918c06 100644 (file)
@@ -1,5 +1,5 @@
 /* Subroutines for insn-output.c for Tensilica's Xtensa architecture.
-   Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007
+   Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
    Free Software Foundation, Inc.
    Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
 
@@ -1991,7 +1991,7 @@ print_operand (FILE *file, rtx x, int letter)
        {
          /* For a volatile memory reference, emit a MEMW before the
             load or store.  */
-         if (MEM_VOLATILE_P (x))
+         if (MEM_VOLATILE_P (x) && TARGET_SERIALIZE_VOLATILE)
            fprintf (file, "memw\n\t");
        }
       else
index 7e0e9400aadbd514ecc87434d785afbb15071ede..60fc78515b7d67ddc5cd03290d5f150392dd24cd 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions of Tensilica's Xtensa target machine for GNU compiler.
-   Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007
+   Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
    Free Software Foundation, Inc.
    Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
 
@@ -74,8 +74,9 @@ extern unsigned xtensa_current_frame_size;
 #define TARGET_S32C1I          XCHAL_HAVE_S32C1I
 #define TARGET_ABSOLUTE_LITERALS XSHAL_USE_ABSOLUTE_LITERALS
 
-#define TARGET_DEFAULT (                                               \
-  (XCHAL_HAVE_L32R     ? 0 : MASK_CONST16))
+#define TARGET_DEFAULT \
+  ((XCHAL_HAVE_L32R    ? 0 : MASK_CONST16) |                           \
+   MASK_SERIALIZE_VOLATILE)
 
 #define OVERRIDE_OPTIONS override_options ()
 
index 3774a61131a8e4465ed11f76420577894bfcc89d..541eba30732288e8e3fbbcc1a4d1e15e134e3e7a 100644 (file)
@@ -1,5 +1,5 @@
 ;; GCC machine description for Tensilica's Xtensa architecture.
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
+;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
 ;; Free Software Foundation, Inc.
 ;; Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
 
        (plus:SI (match_dup 1) (match_dup 2)))]
   "TARGET_HARD_FLOAT"
 {
-  if (volatile_refs_p (PATTERN (insn)))
+  if (TARGET_SERIALIZE_VOLATILE && volatile_refs_p (PATTERN (insn)))
     output_asm_insn ("memw", operands);
   return "lsiu\t%0, %1, %2";
 }
        (plus:SI (match_dup 0) (match_dup 1)))]
   "TARGET_HARD_FLOAT"
 {
-  if (volatile_refs_p (PATTERN (insn)))
+  if (TARGET_SERIALIZE_VOLATILE && volatile_refs_p (PATTERN (insn)))
     output_asm_insn ("memw", operands);
   return "ssiu\t%2, %0, %1";
 }
index ef3a6af7bb883ec8b1efc284cb3c38e7378ccea3..0be75c4b69a26bb53a9443df01788a4a173e96bc 100644 (file)
@@ -1,6 +1,6 @@
 ; Options for the Tensilica Xtensa port of the compiler.
 
-; Copyright (C) 2005, 2007 Free Software Foundation, Inc.
+; Copyright (C) 2005, 2007, 2008 Free Software Foundation, Inc.
 ;
 ; This file is part of GCC.
 ;
@@ -37,3 +37,7 @@ Automatically align branch targets to reduce branch penalties
 mtext-section-literals
 Target
 Intersperse literal pools with code in the text section
+
+mserialize-volatile
+Target Report Mask(SERIALIZE_VOLATILE)
+-mno-serialize-volatile        Do not serialize volatile memory references with MEMW instructions
index c56f890fec9d7b09f43b99319bbd500d648eb96f..27bf020d813a824b975fd93f6735d45365097433 100644 (file)
@@ -800,6 +800,7 @@ See i386 and x86-64 Options.
 @emph{Xtensa Options}
 @gccoptlist{-mconst16 -mno-const16 @gol
 -mfused-madd  -mno-fused-madd @gol
+-mserialize-volatile  -mno-serialize-volatile @gol
 -mtext-section-literals  -mno-text-section-literals @gol
 -mtarget-align  -mno-target-align @gol
 -mlongcalls  -mno-longcalls}
@@ -14694,6 +14695,15 @@ add/subtract instructions also ensures that the program output is not
 sensitive to the compiler's ability to combine multiply and add/subtract
 operations.
 
+@item -mserialize-volatile
+@itemx -mno-serialize-volatile
+@opindex mserialize-volatile
+@opindex mno-serialize-volatile
+When this option is enabled, GCC inserts @code{MEMW} instructions before
+@code{volatile} memory references to guarantee sequential consistency.
+The default is @option{-mserialize-volatile}.  Use
+@option{-mno-serialize-volatile} to omit the @code{MEMW} instructions.
+
 @item -mtext-section-literals
 @itemx -mno-text-section-literals
 @opindex mtext-section-literals