diff options
Diffstat (limited to 'gcc/doc')
| -rw-r--r-- | gcc/doc/extend.texi | 12 | ||||
| -rw-r--r-- | gcc/doc/invoke.texi | 20 | ||||
| -rw-r--r-- | gcc/doc/md.texi | 20 |
3 files changed, 40 insertions, 12 deletions
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 11f6b02..5f36510 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -6007,6 +6007,16 @@ Specifies the core for which to tune the performance of this function and also whose architectural features to use. The behavior and valid arguments are the same as for the @option{-mcpu=} command-line option. +@cindex @code{max-vectorization} function attribute, RISC-V +@item max-vectorization +@itemx no-max-vectorization +@code{max-vectorization} tells GCC's vectorizer to treat all vector +loops as being more profitable than the original scalar loops when +optimizing the current function. @code{no-max-vectorization} disables +this behavior. +This corresponds to the behavior of the command-line options +@option{-mmax-vectorization} and @option{-mno-max-vectorization}. + @end table The above target attributes can be specified as follows: @@ -10722,7 +10732,7 @@ for more information about the @code{target} attribute and the attribute syntax. The @code{#pragma GCC target} pragma is presently implemented for -x86, ARM, AArch64, PowerPC, and S/390 targets only. +x86, ARM, AArch64, PowerPC, RISC-V, and S/390 targets only. @cindex pragma GCC optimize @item #pragma GCC optimize (@var{string}, @dots{}) diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index a6d2b54..813403a 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -621,7 +621,7 @@ Objective-C and Objective-C++ Dialects}. -ffast-math -ffat-lto-objects -ffinite-loops -ffinite-math-only -ffloat-store -fforward-propagate -ffp-contract=@var{style} -ffp-int-builtin-inexact --ffunction-sections +-ffunction-sections -ffuse-ops-with-volatile-access -fgcse -fgcse-after-reload -fgcse-las -fgcse-lm -fgraphite-identity -fgcse-sm -fhoist-adjacent-loads -fif-conversion -fif-conversion2 -findirect-inlining @@ -13790,6 +13790,15 @@ performed when this option is not used. The default is @option{-ffunction-cse} +@opindex ffuse-ops-with-volatile-access +@opindex fno-fuse-ops-with-volatile-access +@item -ffuse-ops-with-volatile-access +Allow limited optimization of operations with volatile memory access +when doing so does not change the semantics outlined in +@xref{Volatiles,,When is a Volatile Object Accessed?}. + +The default is @option{-ffuse-ops-with-volatile-access} + @opindex fno-zero-initialized-in-bss @opindex fzero-initialized-in-bss @item -fno-zero-initialized-in-bss @@ -22752,7 +22761,8 @@ performance of the code. Permissible values for this option are: @samp{cortex-a520}, @samp{cortex-a520ae}, @samp{cortex-a710}, @samp{cortex-a715}, @samp{cortex-a720}, @samp{cortex-a720ae}, @samp{ampere1}, @samp{ampere1a}, @samp{ampere1b}, @samp{ampere1c}, @samp{cobalt-100}, @samp{apple-m1}, -@samp{apple-m2}, @samp{apple-m3}, @samp{apple-m4} and @samp{native}. +@samp{apple-m2}, @samp{apple-m3}, @samp{apple-m4}, @samp{c1-nano}, +@samp{c1-pro}, @samp{c1-premium} @samp{c1-ultra} and @samp{native}. The values @samp{cortex-a57.cortex-a53}, @samp{cortex-a72.cortex-a53}, @samp{cortex-a73.cortex-a35}, @samp{cortex-a73.cortex-a53}, @@ -32153,6 +32163,12 @@ Do not or do generate unaligned vector memory accesses. The default is set to off unless the processor we are optimizing for explicitly supports element-misaligned vector memory access. +@item -mmax-vectorization +@itemx -mno-max-vectorization +Enable or disable an override to vectorizer cost model making vectorization +always appear profitable. Unlike @option{-fno-vect-cost-model} or +@option{-fvect-cost-model=unlimited} this option does not turn off cost +comparison between different vector modes. @opindex mcmodel= @opindex mcmodel=medlow diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi index 7bf2cc0..86ed4ff 100644 --- a/gcc/doc/md.texi +++ b/gcc/doc/md.texi @@ -5408,18 +5408,20 @@ This pattern is not allowed to @code{FAIL}. @cindex @code{len_load_@var{m}} instruction pattern @item @samp{len_load_@var{m}} -Load (operand 2 + operand 3) elements from memory operand 1 -into vector register operand 0, setting the other elements of -operand 0 to undefined values. Operands 0 and 1 have mode @var{m}, -which must be a vector mode. Operand 2 has whichever integer mode the -target prefers. Operand 3 conceptually has mode @code{QI}. - -Operand 2 can be a variable or a constant amount. Operand 3 specifies a +Load (operand 3 + operand 4) elements from memory operand 1 +into vector register operand 0. Operands 0 and 1 have mode @var{m}, +which must be a vector mode. Operand 3 has whichever integer mode the +target prefers. Operand 2 (the “else value”) is of mode @var{m} and +specifies which value is loaded for the remaining elements. The predicate +of operand 2 must only accept the else values that the target actually +supports. Operand 4 conceptually has mode @code{QI}. + +Operand 3 can be a variable or a constant amount. Operand 4 specifies a constant bias: it is either a constant 0 or a constant -1. The predicate on -operand 3 must only accept the bias values that the target actually supports. +operand 4 must only accept the bias values that the target actually supports. GCC handles a bias of 0 more efficiently than a bias of -1. -If (operand 2 + operand 3) exceeds the number of elements in mode +If (operand 3 + operand 4) exceeds the number of elements in mode @var{m}, the behavior is undefined. If the target prefers the length to be measured in bytes rather than |
