https://gcc.gnu.org/g:671ba57ba3c7a7faf82df2d546d99a90edccefd7
commit r16-5706-g671ba57ba3c7a7faf82df2d546d99a90edccefd7 Author: Sandra Loosemore <[email protected]> Date: Sat Nov 1 20:35:12 2025 +0000 doc, epiphany: Clean up epiphany target options and docs [PR122243] gcc/ChangeLog PR other/122243 * config/epiphany/epiphany.opt (mlong-calls): Make it do something useful. (may-round-for-trunc): Make this undocumented option with a weird name an alias for -mmay-round-for-trunc. (mfp-iarith): Fix doc string. * doc/invoke.texi (Option Summary) <Adapteva Epiphany Options>: Add missing options. (Adapteva Epiphany Options): Document negative forms also when that is not the default, or where it's unclear. Document -may-round-for-trunc and -mfp-iarith. Fix spelling of -mpost-inc and -mpost-modify. Diff: --- gcc/config/epiphany/epiphany.opt | 9 ++++-- gcc/doc/invoke.texi | 61 ++++++++++++++++++++++++++++++++-------- 2 files changed, 56 insertions(+), 14 deletions(-) diff --git a/gcc/config/epiphany/epiphany.opt b/gcc/config/epiphany/epiphany.opt index 9cd93db836a9..4b897540c350 100644 --- a/gcc/config/epiphany/epiphany.opt +++ b/gcc/config/epiphany/epiphany.opt @@ -72,7 +72,7 @@ target Mask(ROUND_NEAREST) Assume round to nearest is selected for purposes of scheduling. mlong-calls -Target Mask(LONG_CALLS) +Target InverseMask(SHORT_CALLS) Generate call insns as indirect calls. mshort-calls @@ -103,7 +103,12 @@ Enum(attr_fp_mode) String(truncate) Value(FP_MODE_ROUND_TRUNC) EnumValue Enum(attr_fp_mode) String(int) Value(FP_MODE_INT) +; This option has never been documented under this name, but it's +; been around since 2012. may-round-for-trunc +Target RejectNegative Undocumented Alias(mmay-round-for-trunc) + +mmay-round-for-trunc Target Mask(MAY_ROUND_FOR_TRUNC) A floating point to integer truncation may be replaced with rounding to save mode switching. @@ -129,7 +134,7 @@ Split unaligned 8 byte vector moves before post-modify address generation. mfp-iarith Target Mask(FP_IARITH) -Use the floating point unit for integer add/subtract. +Use the floating-point unit for integer add/subtract. m1reg- Target RejectNegative Joined Var(epiphany_m1reg) Enum(m1reg) Init(-1) diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index ad8d742bba4a..99279654b915 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -911,7 +911,8 @@ Objective-C and Objective-C++ Dialects}. -mbranch-cost=@var{num} -mcmove -mnops=@var{num} -msoft-cmpsf -msplit-lohi -mpost-inc -mpost-modify -mstack-offset=@var{num} -mround-nearest -mlong-calls -mshort-calls -msmall16 --mfp-mode=@var{mode} -mvect-double -max-vect-align=@var{num} +-mfp-mode=@var{mode} -mmay-round-for-trunc -mfp-iarith +-mvect-double -max-vect-align=@var{num} -msplit-vecmove-early -m1reg-@var{reg}} @emph{AMD GCN Options} (@ref{AMD GCN Options}) @@ -23126,12 +23127,16 @@ These @samp{-m} options are defined for Adapteva Epiphany: @table @gcctabopt @opindex mhalf-reg-file +@opindex mno-half-reg-file @item -mhalf-reg-file +@itemx -mno-half-reg-file Don't allocate any register in the range @code{r32}@dots{}@code{r63}. That allows code to run on hardware variants that lack these registers. @opindex mprefer-short-insn-regs +@opindex mno-prefer-short-insn-regs @item -mprefer-short-insn-regs +@itemx -mno-prefer-short-insn-regs Preferentially allocate registers that allow short instruction generation. This can result in increased instruction count, so this may either reduce or increase overall code size. @@ -23143,7 +23148,9 @@ This cost is only a heuristic and is not guaranteed to produce consistent results across releases. @opindex mcmove +@opindex mno-cmove @item -mcmove +@itemx -mno-cmove Enable the generation of conditional moves. @opindex mnops @@ -23153,6 +23160,7 @@ Emit @var{num} NOPs before every other generated instruction. @opindex mno-soft-cmpsf @opindex msoft-cmpsf @item -mno-soft-cmpsf +@itemx -msoft-cmpsf For single-precision floating-point comparisons, emit an @code{fsub} instruction and test the flags. This is faster than a software comparison, but can get incorrect results in the presence of NaNs, or when two different small @@ -23177,24 +23185,34 @@ toolchain with the appropriate @option{--with-stack-offset=@var{num}} option. @opindex mno-round-nearest @opindex mround-nearest @item -mno-round-nearest -Make the scheduler assume that the rounding mode has been set to +@itemx -mround-nearest +@option{-mno-round-nearest} +makes the scheduler assume that the rounding mode has been set to truncating. The default is @option{-mround-nearest}. @opindex mlong-calls +@opindex mno-long-calls @item -mlong-calls If not otherwise specified by an attribute, assume all calls might be beyond the offset range of the @code{b} / @code{bl} instructions, and therefore load the function address into a register before performing a (otherwise direct) call. This is the default. -@opindex short-calls +@opindex mshort-calls +@opindex mno-short-calls @item -mshort-calls If not otherwise specified by an attribute, assume all direct calls are in the range of the @code{b} / @code{bl} instructions, so use these instructions -for direct calls. The default is @option{-mlong-calls}. +for direct calls. + +The default is @option{-mlong-calls}. Note that @option{-mlong-calls} +is equivalent to @option{-mno-short-calls}, and similarly +@option{-mno-long-calls} is equivalent to @option{-mshort-calls}. @opindex msmall16 +@opindex mno-small16 @item -msmall16 +@itemx -mno-small16 Assume addresses can be loaded as 16-bit unsigned values. This does not apply to function addresses for which @option{-mlong-calls} semantics are in effect. @@ -23236,23 +23254,40 @@ integer multiply, or integer multiply-and-accumulate. The default is @option{-mfp-mode=caller} +@opindex mmay-round-for-trunc +@opindex mno-may-round-for-trunc +@item -mmay-round-for-trunc +@itemx -mno-may-round-for-trunc +This option allows floating point to integer truncation to be replaced +with rounding to save mode switching. It's disabled by default. + +@opindex mfp-iarith +@opindex mno-fp-iarith +@item -mfp-iarith +@itemx -mno-fp-iarith +This option enables use of the floating-point unit for integer add and +subtract. It's disabled by default. + @opindex mno-split-lohi @opindex msplit-lohi -@opindex mno-postinc -@opindex mpostinc +@opindex mno-post-inc +@opindex mpost-inc @opindex mno-postmodify -@opindex mpostmodify -@item -mno-split-lohi -@itemx -mno-postinc -@itemx -mno-postmodify -Code generation tweaks that disable, respectively, splitting of 32-bit +@opindex mpost-modify +@item -msplit-lohi +@itemx -mno-split-lohi +@itemx -mpost-inc +@itemx -mno-post-inc +@itemx -mpost-modify +@itemx -mno-post-modify +Code generation tweaks that control, respectively, splitting of 32-bit loads, generation of post-increment addresses, and generation of post-modify addresses. The defaults are @option{msplit-lohi}, @option{-mpost-inc}, and @option{-mpost-modify}. @opindex mno-vect-double @opindex mvect-double -@item -mnovect-double +@item -mno-vect-double Change the preferred SIMD mode to SImode. The default is @option{-mvect-double}, which uses DImode as preferred SIMD mode. @@ -23265,7 +23300,9 @@ interfaces are unaffected if they don't use SIMD vector modes in places that affect size and/or alignment of relevant types. @opindex msplit-vecmove-early +@opindex mno-split-vecmove-early @item -msplit-vecmove-early +@itemx -mno-split-vecmove-early Split vector moves into single word moves before reload. In theory this can give better register allocation, but so far the reverse seems to be generally the case.
