invoke.texi (Option Summary, [...]): Document -mserialize-volatile and -mno-serialize-volatile Xtensa options.

* 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
This commit is contained in:
Bob Wilson 2008-03-15 00:46:54 +00:00 committed by Bob Wilson
parent 45de3658e9
commit 66e58b3338
6 changed files with 34 additions and 9 deletions

View 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

View 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

View 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 ()

View 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.
@ -928,7 +928,7 @@
(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";
}
@ -944,7 +944,7 @@
(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";
}

View 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

View 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