gcc: Xtensa Options

1 
1 3.18.59 Xtensa Options
1 ----------------------
1 
1 These options are supported for Xtensa targets:
1 
1 '-mconst16'
1 '-mno-const16'
1      Enable or disable use of 'CONST16' instructions for loading
1      constant values.  The 'CONST16' instruction is currently not a
1      standard option from Tensilica.  When enabled, 'CONST16'
1      instructions are always used in place of the standard 'L32R'
1      instructions.  The use of 'CONST16' is enabled by default only if
1      the 'L32R' instruction is not available.
1 
1 '-mfused-madd'
1 '-mno-fused-madd'
1      Enable or disable use of fused multiply/add and multiply/subtract
1      instructions in the floating-point option.  This has no effect if
1      the floating-point option is not also enabled.  Disabling fused
1      multiply/add and multiply/subtract instructions forces the compiler
1      to use separate instructions for the multiply and add/subtract
1      operations.  This may be desirable in some cases where strict IEEE
1      754-compliant results are required: the fused multiply add/subtract
1      instructions do not round the intermediate result, thereby
1      producing results with _more_ bits of precision than specified by
1      the IEEE standard.  Disabling fused multiply add/subtract
1      instructions also ensures that the program output is not sensitive
1      to the compiler's ability to combine multiply and add/subtract
1      operations.
1 
1 '-mserialize-volatile'
1 '-mno-serialize-volatile'
1      When this option is enabled, GCC inserts 'MEMW' instructions before
1      'volatile' memory references to guarantee sequential consistency.
1      The default is '-mserialize-volatile'.  Use
1      '-mno-serialize-volatile' to omit the 'MEMW' instructions.
1 
1 '-mforce-no-pic'
1      For targets, like GNU/Linux, where all user-mode Xtensa code must
1      be position-independent code (PIC), this option disables PIC for
1      compiling kernel code.
1 
1 '-mtext-section-literals'
1 '-mno-text-section-literals'
1      These options control the treatment of literal pools.  The default
1      is '-mno-text-section-literals', which places literals in a
1      separate section in the output file.  This allows the literal pool
1      to be placed in a data RAM/ROM, and it also allows the linker to
1      combine literal pools from separate object files to remove
1      redundant literals and improve code size.  With
1      '-mtext-section-literals', the literals are interspersed in the
1      text section in order to keep them as close as possible to their
1      references.  This may be necessary for large assembly files.
1      Literals for each function are placed right before that function.
1 
1 '-mauto-litpools'
1 '-mno-auto-litpools'
1      These options control the treatment of literal pools.  The default
1      is '-mno-auto-litpools', which places literals in a separate
1      section in the output file unless '-mtext-section-literals' is
1      used.  With '-mauto-litpools' the literals are interspersed in the
1      text section by the assembler.  Compiler does not produce explicit
1      '.literal' directives and loads literals into registers with 'MOVI'
1      instructions instead of 'L32R' to let the assembler do relaxation
1      and place literals as necessary.  This option allows assembler to
1      create several literal pools per function and assemble very big
1      functions, which may not be possible with
1      '-mtext-section-literals'.
1 
1 '-mtarget-align'
1 '-mno-target-align'
1      When this option is enabled, GCC instructs the assembler to
1      automatically align instructions to reduce branch penalties at the
1      expense of some code density.  The assembler attempts to widen
1      density instructions to align branch targets and the instructions
1      following call instructions.  If there are not enough preceding
1      safe density instructions to align a target, no widening is
1      performed.  The default is '-mtarget-align'.  These options do not
1      affect the treatment of auto-aligned instructions like 'LOOP',
1      which the assembler always aligns, either by widening density
1      instructions or by inserting NOP instructions.
1 
1 '-mlongcalls'
1 '-mno-longcalls'
1      When this option is enabled, GCC instructs the assembler to
1      translate direct calls to indirect calls unless it can determine
1      that the target of a direct call is in the range allowed by the
1      call instruction.  This translation typically occurs for calls to
1      functions in other source files.  Specifically, the assembler
1      translates a direct 'CALL' instruction into an 'L32R' followed by a
1      'CALLX' instruction.  The default is '-mno-longcalls'.  This option
1      should be used in programs where the call target can potentially be
1      out of range.  This option is implemented in the assembler, not the
1      compiler, so the assembly code generated by GCC still shows direct
1      call instructions--look at the disassembled object code to see the
1      actual instructions.  Note that the assembler uses an indirect call
1      for every cross-file call, not just those that really are out of
1      range.
1