| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| <html> |
| <!-- Copyright (C) 1988-2015 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): Nios II Options</title> |
| |
| <meta name="description" content="Using the GNU Compiler Collection (GCC): Nios II Options"> |
| <meta name="keywords" content="Using the GNU Compiler Collection (GCC): Nios II 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="PDP_002d11-Options.html#PDP_002d11-Options" rel="next" title="PDP-11 Options"> |
| <link href="NDS32-Options.html#NDS32-Options" rel="prev" title="NDS32 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="Nios-II-Options"></a> |
| <div class="header"> |
| <p> |
| Next: <a href="PDP_002d11-Options.html#PDP_002d11-Options" accesskey="n" rel="next">PDP-11 Options</a>, Previous: <a href="NDS32-Options.html#NDS32-Options" accesskey="p" rel="prev">NDS32 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="Nios-II-Options-1"></a> |
| <h4 class="subsection">3.17.33 Nios II Options</h4> |
| <a name="index-Nios-II-options"></a> |
| <a name="index-Altera-Nios-II-options"></a> |
| |
| <p>These are the options defined for the Altera Nios II processor. |
| </p> |
| <dl compact="compact"> |
| <dt><code>-G <var>num</var></code></dt> |
| <dd><a name="index-G-2"></a> |
| <a name="index-smaller-data-references-1"></a> |
| <p>Put global and static objects less than or equal to <var>num</var> bytes |
| into the small data or BSS sections instead of the normal data or BSS |
| sections. The default value of <var>num</var> is 8. |
| </p> |
| </dd> |
| <dt><code>-mgpopt</code></dt> |
| <dt><code>-mno-gpopt</code></dt> |
| <dd><a name="index-mgpopt-1"></a> |
| <a name="index-mno_002dgpopt-1"></a> |
| <p>Generate (do not generate) GP-relative accesses for objects in the |
| small data or BSS sections. The default is <samp>-mgpopt</samp> except |
| when <samp>-fpic</samp> or <samp>-fPIC</samp> is specified to generate |
| position-independent code. Note that the Nios II ABI does not permit |
| GP-relative accesses from shared libraries. |
| </p> |
| <p>You may need to specify <samp>-mno-gpopt</samp> explicitly when building |
| programs that include large amounts of small data, including large |
| GOT data sections. In this case, the 16-bit offset for GP-relative |
| addressing may not be large enough to allow access to the entire |
| small data section. |
| </p> |
| </dd> |
| <dt><code>-mel</code></dt> |
| <dt><code>-meb</code></dt> |
| <dd><a name="index-mel-2"></a> |
| <a name="index-meb-2"></a> |
| <p>Generate little-endian (default) or big-endian (experimental) code, |
| respectively. |
| </p> |
| </dd> |
| <dt><code>-mbypass-cache</code></dt> |
| <dt><code>-mno-bypass-cache</code></dt> |
| <dd><a name="index-mno_002dbypass_002dcache"></a> |
| <a name="index-mbypass_002dcache"></a> |
| <p>Force all load and store instructions to always bypass cache by |
| using I/O variants of the instructions. The default is not to |
| bypass the cache. |
| </p> |
| </dd> |
| <dt><code>-mno-cache-volatile</code></dt> |
| <dt><code>-mcache-volatile</code></dt> |
| <dd><a name="index-mcache_002dvolatile"></a> |
| <a name="index-mno_002dcache_002dvolatile"></a> |
| <p>Volatile memory access bypass the cache using the I/O variants of |
| the load and store instructions. The default is not to bypass the cache. |
| </p> |
| </dd> |
| <dt><code>-mno-fast-sw-div</code></dt> |
| <dt><code>-mfast-sw-div</code></dt> |
| <dd><a name="index-mno_002dfast_002dsw_002ddiv"></a> |
| <a name="index-mfast_002dsw_002ddiv"></a> |
| <p>Do not use table-based fast divide for small numbers. The default |
| is to use the fast divide at <samp>-O3</samp> and above. |
| </p> |
| </dd> |
| <dt><code>-mno-hw-mul</code></dt> |
| <dt><code>-mhw-mul</code></dt> |
| <dt><code>-mno-hw-mulx</code></dt> |
| <dt><code>-mhw-mulx</code></dt> |
| <dt><code>-mno-hw-div</code></dt> |
| <dt><code>-mhw-div</code></dt> |
| <dd><a name="index-mno_002dhw_002dmul"></a> |
| <a name="index-mhw_002dmul"></a> |
| <a name="index-mno_002dhw_002dmulx"></a> |
| <a name="index-mhw_002dmulx"></a> |
| <a name="index-mno_002dhw_002ddiv"></a> |
| <a name="index-mhw_002ddiv"></a> |
| <p>Enable or disable emitting <code>mul</code>, <code>mulx</code> and <code>div</code> family of |
| instructions by the compiler. The default is to emit <code>mul</code> |
| and not emit <code>div</code> and <code>mulx</code>. |
| </p> |
| </dd> |
| <dt><code>-mcustom-<var>insn</var>=<var>N</var></code></dt> |
| <dt><code>-mno-custom-<var>insn</var></code></dt> |
| <dd><a name="index-mcustom_002dinsn"></a> |
| <a name="index-mno_002dcustom_002dinsn"></a> |
| <p>Each <samp>-mcustom-<var>insn</var>=<var>N</var></samp> option enables use of a |
| custom instruction with encoding <var>N</var> when generating code that uses |
| <var>insn</var>. For example, <code>-mcustom-fadds=253</code> generates custom |
| instruction 253 for single-precision floating-point add operations instead |
| of the default behavior of using a library call. |
| </p> |
| <p>The following values of <var>insn</var> are supported. Except as otherwise |
| noted, floating-point operations are expected to be implemented with |
| normal IEEE 754 semantics and correspond directly to the C operators or the |
| equivalent GCC built-in functions (see <a href="Other-Builtins.html#Other-Builtins">Other Builtins</a>). |
| </p> |
| <p>Single-precision floating point: |
| </p><dl compact="compact"> |
| <dt>‘<samp>fadds</samp>’, ‘<samp>fsubs</samp>’, ‘<samp>fdivs</samp>’, ‘<samp>fmuls</samp>’</dt> |
| <dd><p>Binary arithmetic operations. |
| </p> |
| </dd> |
| <dt>‘<samp>fnegs</samp>’</dt> |
| <dd><p>Unary negation. |
| </p> |
| </dd> |
| <dt>‘<samp>fabss</samp>’</dt> |
| <dd><p>Unary absolute value. |
| </p> |
| </dd> |
| <dt>‘<samp>fcmpeqs</samp>’, ‘<samp>fcmpges</samp>’, ‘<samp>fcmpgts</samp>’, ‘<samp>fcmples</samp>’, ‘<samp>fcmplts</samp>’, ‘<samp>fcmpnes</samp>’</dt> |
| <dd><p>Comparison operations. |
| </p> |
| </dd> |
| <dt>‘<samp>fmins</samp>’, ‘<samp>fmaxs</samp>’</dt> |
| <dd><p>Floating-point minimum and maximum. These instructions are only |
| generated if <samp>-ffinite-math-only</samp> is specified. |
| </p> |
| </dd> |
| <dt>‘<samp>fsqrts</samp>’</dt> |
| <dd><p>Unary square root operation. |
| </p> |
| </dd> |
| <dt>‘<samp>fcoss</samp>’, ‘<samp>fsins</samp>’, ‘<samp>ftans</samp>’, ‘<samp>fatans</samp>’, ‘<samp>fexps</samp>’, ‘<samp>flogs</samp>’</dt> |
| <dd><p>Floating-point trigonometric and exponential functions. These instructions |
| are only generated if <samp>-funsafe-math-optimizations</samp> is also specified. |
| </p> |
| </dd> |
| </dl> |
| |
| <p>Double-precision floating point: |
| </p><dl compact="compact"> |
| <dt>‘<samp>faddd</samp>’, ‘<samp>fsubd</samp>’, ‘<samp>fdivd</samp>’, ‘<samp>fmuld</samp>’</dt> |
| <dd><p>Binary arithmetic operations. |
| </p> |
| </dd> |
| <dt>‘<samp>fnegd</samp>’</dt> |
| <dd><p>Unary negation. |
| </p> |
| </dd> |
| <dt>‘<samp>fabsd</samp>’</dt> |
| <dd><p>Unary absolute value. |
| </p> |
| </dd> |
| <dt>‘<samp>fcmpeqd</samp>’, ‘<samp>fcmpged</samp>’, ‘<samp>fcmpgtd</samp>’, ‘<samp>fcmpled</samp>’, ‘<samp>fcmpltd</samp>’, ‘<samp>fcmpned</samp>’</dt> |
| <dd><p>Comparison operations. |
| </p> |
| </dd> |
| <dt>‘<samp>fmind</samp>’, ‘<samp>fmaxd</samp>’</dt> |
| <dd><p>Double-precision minimum and maximum. These instructions are only |
| generated if <samp>-ffinite-math-only</samp> is specified. |
| </p> |
| </dd> |
| <dt>‘<samp>fsqrtd</samp>’</dt> |
| <dd><p>Unary square root operation. |
| </p> |
| </dd> |
| <dt>‘<samp>fcosd</samp>’, ‘<samp>fsind</samp>’, ‘<samp>ftand</samp>’, ‘<samp>fatand</samp>’, ‘<samp>fexpd</samp>’, ‘<samp>flogd</samp>’</dt> |
| <dd><p>Double-precision trigonometric and exponential functions. These instructions |
| are only generated if <samp>-funsafe-math-optimizations</samp> is also specified. |
| </p> |
| </dd> |
| </dl> |
| |
| <p>Conversions: |
| </p><dl compact="compact"> |
| <dt>‘<samp>fextsd</samp>’</dt> |
| <dd><p>Conversion from single precision to double precision. |
| </p> |
| </dd> |
| <dt>‘<samp>ftruncds</samp>’</dt> |
| <dd><p>Conversion from double precision to single precision. |
| </p> |
| </dd> |
| <dt>‘<samp>fixsi</samp>’, ‘<samp>fixsu</samp>’, ‘<samp>fixdi</samp>’, ‘<samp>fixdu</samp>’</dt> |
| <dd><p>Conversion from floating point to signed or unsigned integer types, with |
| truncation towards zero. |
| </p> |
| </dd> |
| <dt>‘<samp>floatis</samp>’, ‘<samp>floatus</samp>’, ‘<samp>floatid</samp>’, ‘<samp>floatud</samp>’</dt> |
| <dd><p>Conversion from signed or unsigned integer types to floating-point types. |
| </p> |
| </dd> |
| </dl> |
| |
| <p>In addition, all of the following transfer instructions for internal |
| registers X and Y must be provided to use any of the double-precision |
| floating-point instructions. Custom instructions taking two |
| double-precision source operands expect the first operand in the |
| 64-bit register X. The other operand (or only operand of a unary |
| operation) is given to the custom arithmetic instruction with the |
| least significant half in source register <var>src1</var> and the most |
| significant half in <var>src2</var>. A custom instruction that returns a |
| double-precision result returns the most significant 32 bits in the |
| destination register and the other half in 32-bit register Y. |
| GCC automatically generates the necessary code sequences to write |
| register X and/or read register Y when double-precision floating-point |
| instructions are used. |
| </p> |
| <dl compact="compact"> |
| <dt>‘<samp>fwrx</samp>’</dt> |
| <dd><p>Write <var>src1</var> into the least significant half of X and <var>src2</var> into |
| the most significant half of X. |
| </p> |
| </dd> |
| <dt>‘<samp>fwry</samp>’</dt> |
| <dd><p>Write <var>src1</var> into Y. |
| </p> |
| </dd> |
| <dt>‘<samp>frdxhi</samp>’, ‘<samp>frdxlo</samp>’</dt> |
| <dd><p>Read the most or least (respectively) significant half of X and store it in |
| <var>dest</var>. |
| </p> |
| </dd> |
| <dt>‘<samp>frdy</samp>’</dt> |
| <dd><p>Read the value of Y and store it into <var>dest</var>. |
| </p></dd> |
| </dl> |
| |
| <p>Note that you can gain more local control over generation of Nios II custom |
| instructions by using the <code>target("custom-<var>insn</var>=<var>N</var>")</code> |
| and <code>target("no-custom-<var>insn</var>")</code> function attributes |
| (see <a href="Function-Attributes.html#Function-Attributes">Function Attributes</a>) |
| or pragmas (see <a href="Function-Specific-Option-Pragmas.html#Function-Specific-Option-Pragmas">Function Specific Option Pragmas</a>). |
| </p> |
| </dd> |
| <dt><code>-mcustom-fpu-cfg=<var>name</var></code></dt> |
| <dd><a name="index-mcustom_002dfpu_002dcfg"></a> |
| |
| <p>This option enables a predefined, named set of custom instruction encodings |
| (see <samp>-mcustom-<var>insn</var></samp> above). |
| Currently, the following sets are defined: |
| </p> |
| <p><samp>-mcustom-fpu-cfg=60-1</samp> is equivalent to: |
| </p><div class="smallexample"> |
| <pre class="smallexample">-mcustom-fmuls=252 |
| -mcustom-fadds=253 |
| -mcustom-fsubs=254 |
| -fsingle-precision-constant |
| </pre></div> |
| |
| <p><samp>-mcustom-fpu-cfg=60-2</samp> is equivalent to: |
| </p><div class="smallexample"> |
| <pre class="smallexample">-mcustom-fmuls=252 |
| -mcustom-fadds=253 |
| -mcustom-fsubs=254 |
| -mcustom-fdivs=255 |
| -fsingle-precision-constant |
| </pre></div> |
| |
| <p><samp>-mcustom-fpu-cfg=72-3</samp> is equivalent to: |
| </p><div class="smallexample"> |
| <pre class="smallexample">-mcustom-floatus=243 |
| -mcustom-fixsi=244 |
| -mcustom-floatis=245 |
| -mcustom-fcmpgts=246 |
| -mcustom-fcmples=249 |
| -mcustom-fcmpeqs=250 |
| -mcustom-fcmpnes=251 |
| -mcustom-fmuls=252 |
| -mcustom-fadds=253 |
| -mcustom-fsubs=254 |
| -mcustom-fdivs=255 |
| -fsingle-precision-constant |
| </pre></div> |
| |
| <p>Custom instruction assignments given by individual |
| <samp>-mcustom-<var>insn</var>=</samp> options override those given by |
| <samp>-mcustom-fpu-cfg=</samp>, regardless of the |
| order of the options on the command line. |
| </p> |
| <p>Note that you can gain more local control over selection of a FPU |
| configuration by using the <code>target("custom-fpu-cfg=<var>name</var>")</code> |
| function attribute (see <a href="Function-Attributes.html#Function-Attributes">Function Attributes</a>) |
| or pragma (see <a href="Function-Specific-Option-Pragmas.html#Function-Specific-Option-Pragmas">Function Specific Option Pragmas</a>). |
| </p> |
| </dd> |
| </dl> |
| |
| <p>These additional ‘<samp>-m</samp>’ options are available for the Altera Nios II |
| ELF (bare-metal) target: |
| </p> |
| <dl compact="compact"> |
| <dt><code>-mhal</code></dt> |
| <dd><a name="index-mhal"></a> |
| <p>Link with HAL BSP. This suppresses linking with the GCC-provided C runtime |
| startup and termination code, and is typically used in conjunction with |
| <samp>-msys-crt0=</samp> to specify the location of the alternate startup code |
| provided by the HAL BSP. |
| </p> |
| </dd> |
| <dt><code>-msmallc</code></dt> |
| <dd><a name="index-msmallc"></a> |
| <p>Link with a limited version of the C library, <samp>-lsmallc</samp>, rather than |
| Newlib. |
| </p> |
| </dd> |
| <dt><code>-msys-crt0=<var>startfile</var></code></dt> |
| <dd><a name="index-msys_002dcrt0"></a> |
| <p><var>startfile</var> is the file name of the startfile (crt0) to use |
| when linking. This option is only useful in conjunction with <samp>-mhal</samp>. |
| </p> |
| </dd> |
| <dt><code>-msys-lib=<var>systemlib</var></code></dt> |
| <dd><a name="index-msys_002dlib"></a> |
| <p><var>systemlib</var> is the library name of the library that provides |
| low-level system calls required by the C library, |
| e.g. <code>read</code> and <code>write</code>. |
| This option is typically used to link with a library provided by a HAL BSP. |
| </p> |
| </dd> |
| </dl> |
| |
| <hr> |
| <div class="header"> |
| <p> |
| Next: <a href="PDP_002d11-Options.html#PDP_002d11-Options" accesskey="n" rel="next">PDP-11 Options</a>, Previous: <a href="NDS32-Options.html#NDS32-Options" accesskey="p" rel="prev">NDS32 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> |