209 lines
10 KiB
HTML
209 lines
10 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<!-- Copyright (C) 1988-2016 Free Software Foundation, Inc.
|
|
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
under the terms of the GNU Free Documentation License, Version 1.3 or
|
|
any later version published by the Free Software Foundation; with the
|
|
Invariant Sections being "Funding Free Software", the Front-Cover
|
|
Texts being (a) (see below), and with the Back-Cover Texts being (b)
|
|
(see below). A copy of the license is included in the section entitled
|
|
"GNU Free Documentation License".
|
|
|
|
(a) The FSF's Front-Cover Text is:
|
|
|
|
A GNU Manual
|
|
|
|
(b) The FSF's Back-Cover Text is:
|
|
|
|
You have freedom to copy and modify this GNU Manual, like GNU
|
|
software. Copies published by the Free Software Foundation raise
|
|
funds for GNU development. -->
|
|
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
|
|
<head>
|
|
<title>Using the GNU Compiler Collection (GCC): Xtensa Options</title>
|
|
|
|
<meta name="description" content="Using the GNU Compiler Collection (GCC): Xtensa Options">
|
|
<meta name="keywords" content="Using the GNU Compiler Collection (GCC): Xtensa Options">
|
|
<meta name="resource-type" content="document">
|
|
<meta name="distribution" content="global">
|
|
<meta name="Generator" content="makeinfo">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<link href="index.html#Top" rel="start" title="Top">
|
|
<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
|
|
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
|
|
<link href="Submodel-Options.html#Submodel-Options" rel="up" title="Submodel Options">
|
|
<link href="zSeries-Options.html#zSeries-Options" rel="next" title="zSeries Options">
|
|
<link href="Xstormy16-Options.html#Xstormy16-Options" rel="prev" title="Xstormy16 Options">
|
|
<style type="text/css">
|
|
<!--
|
|
a.summary-letter {text-decoration: none}
|
|
blockquote.smallquotation {font-size: smaller}
|
|
div.display {margin-left: 3.2em}
|
|
div.example {margin-left: 3.2em}
|
|
div.indentedblock {margin-left: 3.2em}
|
|
div.lisp {margin-left: 3.2em}
|
|
div.smalldisplay {margin-left: 3.2em}
|
|
div.smallexample {margin-left: 3.2em}
|
|
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
|
|
div.smalllisp {margin-left: 3.2em}
|
|
kbd {font-style:oblique}
|
|
pre.display {font-family: inherit}
|
|
pre.format {font-family: inherit}
|
|
pre.menu-comment {font-family: serif}
|
|
pre.menu-preformatted {font-family: serif}
|
|
pre.smalldisplay {font-family: inherit; font-size: smaller}
|
|
pre.smallexample {font-size: smaller}
|
|
pre.smallformat {font-family: inherit; font-size: smaller}
|
|
pre.smalllisp {font-size: smaller}
|
|
span.nocodebreak {white-space:nowrap}
|
|
span.nolinebreak {white-space:nowrap}
|
|
span.roman {font-family:serif; font-weight:normal}
|
|
span.sansserif {font-family:sans-serif; font-weight:normal}
|
|
ul.no-bullet {list-style: none}
|
|
-->
|
|
</style>
|
|
|
|
|
|
</head>
|
|
|
|
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
|
|
<a name="Xtensa-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="zSeries-Options.html#zSeries-Options" accesskey="n" rel="next">zSeries Options</a>, Previous: <a href="Xstormy16-Options.html#Xstormy16-Options" accesskey="p" rel="prev">Xstormy16 Options</a>, Up: <a href="Submodel-Options.html#Submodel-Options" accesskey="u" rel="up">Submodel Options</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<hr>
|
|
<a name="Xtensa-Options-1"></a>
|
|
<h4 class="subsection">3.18.57 Xtensa Options</h4>
|
|
<a name="index-Xtensa-Options"></a>
|
|
|
|
<p>These options are supported for Xtensa targets:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-mconst16</code></dt>
|
|
<dt><code>-mno-const16</code></dt>
|
|
<dd><a name="index-mconst16"></a>
|
|
<a name="index-mno_002dconst16"></a>
|
|
<p>Enable or disable use of <code>CONST16</code> instructions for loading
|
|
constant values. The <code>CONST16</code> instruction is currently not a
|
|
standard option from Tensilica. When enabled, <code>CONST16</code>
|
|
instructions are always used in place of the standard <code>L32R</code>
|
|
instructions. The use of <code>CONST16</code> is enabled by default only if
|
|
the <code>L32R</code> instruction is not available.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mfused-madd</code></dt>
|
|
<dt><code>-mno-fused-madd</code></dt>
|
|
<dd><a name="index-mfused_002dmadd-5"></a>
|
|
<a name="index-mno_002dfused_002dmadd-5"></a>
|
|
<p>Enable or disable use of fused multiply/add and multiply/subtract
|
|
instructions in the floating-point option. This has no effect if the
|
|
floating-point option is not also enabled. Disabling fused multiply/add
|
|
and multiply/subtract instructions forces the compiler to use separate
|
|
instructions for the multiply and add/subtract operations. This may be
|
|
desirable in some cases where strict IEEE 754-compliant results are
|
|
required: the fused multiply add/subtract instructions do not round the
|
|
intermediate result, thereby producing results with <em>more</em> bits of
|
|
precision than specified by the IEEE standard. Disabling fused multiply
|
|
add/subtract instructions also ensures that the program output is not
|
|
sensitive to the compiler’s ability to combine multiply and add/subtract
|
|
operations.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mserialize-volatile</code></dt>
|
|
<dt><code>-mno-serialize-volatile</code></dt>
|
|
<dd><a name="index-mserialize_002dvolatile"></a>
|
|
<a name="index-mno_002dserialize_002dvolatile"></a>
|
|
<p>When this option is enabled, GCC inserts <code>MEMW</code> instructions before
|
|
<code>volatile</code> memory references to guarantee sequential consistency.
|
|
The default is <samp>-mserialize-volatile</samp>. Use
|
|
<samp>-mno-serialize-volatile</samp> to omit the <code>MEMW</code> instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mforce-no-pic</code></dt>
|
|
<dd><a name="index-mforce_002dno_002dpic"></a>
|
|
<p>For targets, like GNU/Linux, where all user-mode Xtensa code must be
|
|
position-independent code (PIC), this option disables PIC for compiling
|
|
kernel code.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mtext-section-literals</code></dt>
|
|
<dt><code>-mno-text-section-literals</code></dt>
|
|
<dd><a name="index-mtext_002dsection_002dliterals"></a>
|
|
<a name="index-mno_002dtext_002dsection_002dliterals"></a>
|
|
<p>These options control the treatment of literal pools. The default is
|
|
<samp>-mno-text-section-literals</samp>, which places literals in a separate
|
|
section in the output file. This allows the literal pool to be placed
|
|
in a data RAM/ROM, and it also allows the linker to combine literal
|
|
pools from separate object files to remove redundant literals and
|
|
improve code size. With <samp>-mtext-section-literals</samp>, the literals
|
|
are interspersed in the text section in order to keep them as close as
|
|
possible to their references. This may be necessary for large assembly
|
|
files. Literals for each function are placed right before that function.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mauto-litpools</code></dt>
|
|
<dt><code>-mno-auto-litpools</code></dt>
|
|
<dd><a name="index-mauto_002dlitpools"></a>
|
|
<a name="index-mno_002dauto_002dlitpools"></a>
|
|
<p>These options control the treatment of literal pools. The default is
|
|
<samp>-mno-auto-litpools</samp>, which places literals in a separate
|
|
section in the output file unless <samp>-mtext-section-literals</samp> is
|
|
used. With <samp>-mauto-litpools</samp> the literals are interspersed in
|
|
the text section by the assembler. Compiler does not produce explicit
|
|
<code>.literal</code> directives and loads literals into registers with
|
|
<code>MOVI</code> instructions instead of <code>L32R</code> to let the assembler
|
|
do relaxation and place literals as necessary. This option allows
|
|
assembler to create several literal pools per function and assemble
|
|
very big functions, which may not be possible with
|
|
<samp>-mtext-section-literals</samp>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mtarget-align</code></dt>
|
|
<dt><code>-mno-target-align</code></dt>
|
|
<dd><a name="index-mtarget_002dalign"></a>
|
|
<a name="index-mno_002dtarget_002dalign"></a>
|
|
<p>When this option is enabled, GCC instructs the assembler to
|
|
automatically align instructions to reduce branch penalties at the
|
|
expense of some code density. The assembler attempts to widen density
|
|
instructions to align branch targets and the instructions following call
|
|
instructions. If there are not enough preceding safe density
|
|
instructions to align a target, no widening is performed. The
|
|
default is <samp>-mtarget-align</samp>. These options do not affect the
|
|
treatment of auto-aligned instructions like <code>LOOP</code>, which the
|
|
assembler always aligns, either by widening density instructions or
|
|
by inserting NOP instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mlongcalls</code></dt>
|
|
<dt><code>-mno-longcalls</code></dt>
|
|
<dd><a name="index-mlongcalls"></a>
|
|
<a name="index-mno_002dlongcalls"></a>
|
|
<p>When this option is enabled, GCC instructs the assembler to translate
|
|
direct calls to indirect calls unless it can determine that the target
|
|
of a direct call is in the range allowed by the call instruction. This
|
|
translation typically occurs for calls to functions in other source
|
|
files. Specifically, the assembler translates a direct <code>CALL</code>
|
|
instruction into an <code>L32R</code> followed by a <code>CALLX</code> instruction.
|
|
The default is <samp>-mno-longcalls</samp>. This option should be used in
|
|
programs where the call target can potentially be out of range. This
|
|
option is implemented in the assembler, not the compiler, so the
|
|
assembly code generated by GCC still shows direct call
|
|
instructions—look at the disassembled object code to see the actual
|
|
instructions. Note that the assembler uses an indirect call for
|
|
every cross-file call, not just those that really are out of range.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="zSeries-Options.html#zSeries-Options" accesskey="n" rel="next">zSeries Options</a>, Previous: <a href="Xstormy16-Options.html#Xstormy16-Options" accesskey="p" rel="prev">Xstormy16 Options</a>, Up: <a href="Submodel-Options.html#Submodel-Options" accesskey="u" rel="up">Submodel Options</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
|
|
|
|
|
|
</body>
|
|
</html>
|