diff options
author | Martin Liska <mliska@suse.cz> | 2022-03-06 16:28:20 +0100 |
---|---|---|
committer | Martin Liska <mliska@suse.cz> | 2022-03-06 16:28:20 +0100 |
commit | 1a576b7ac609d4225a3833e3a9c84a9439d0e45e (patch) | |
tree | 7172f94eacd2615a13f0579119f3cd5f42fdcd8e /gcc/doc | |
parent | f015156d6662c3ce367c5834eb109a0a77b56f39 (diff) | |
parent | 98cd717fca9f21625b9c79c9231c2e909d1d93a3 (diff) | |
download | gcc-1a576b7ac609d4225a3833e3a9c84a9439d0e45e.zip gcc-1a576b7ac609d4225a3833e3a9c84a9439d0e45e.tar.gz gcc-1a576b7ac609d4225a3833e3a9c84a9439d0e45e.tar.bz2 |
Merge branch 'master' into devel/sphinx
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/cpp.texi | 8 | ||||
-rw-r--r-- | gcc/doc/extend.texi | 77 | ||||
-rw-r--r-- | gcc/doc/install.texi | 23 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 315 | ||||
-rw-r--r-- | gcc/doc/match-and-simplify.texi | 6 | ||||
-rw-r--r-- | gcc/doc/md.texi | 52 | ||||
-rw-r--r-- | gcc/doc/sourcebuild.texi | 4 | ||||
-rw-r--r-- | gcc/doc/tm.texi | 7 | ||||
-rw-r--r-- | gcc/doc/tm.texi.in | 2 |
9 files changed, 323 insertions, 171 deletions
diff --git a/gcc/doc/cpp.texi b/gcc/doc/cpp.texi index ae21eb9..edf22bf 100644 --- a/gcc/doc/cpp.texi +++ b/gcc/doc/cpp.texi @@ -1569,7 +1569,7 @@ This formulation looks more descriptive, but historically it was less flexible: you had to supply at least one argument after the format string. In standard C, you could not omit the comma separating the named argument from the variable arguments. (Note that this -restriction has been lifted in C++2a, and never existed in GNU C; see +restriction has been lifted in C++20, and never existed in GNU C; see below.) Furthermore, if you left the variable argument empty, you would have @@ -1581,10 +1581,10 @@ eprintf("success!\n", ); @expansion{} fprintf(stderr, "success!\n", ); @end smallexample -This has been fixed in C++2a, and GNU CPP also has a pair of +This has been fixed in C++20, and GNU CPP also has a pair of extensions which deal with this problem. -First, in GNU CPP, and in C++ beginning in C++2a, you are allowed to +First, in GNU CPP, and in C++ beginning in C++20, you are allowed to leave the variable argument out entirely: @smallexample @@ -1593,7 +1593,7 @@ eprintf ("success!\n") @end smallexample @noindent -Second, C++2a introduces the @code{@w{__VA_OPT__}} function macro. +Second, C++20 introduces the @code{@w{__VA_OPT__}} function macro. This macro may only appear in the definition of a variadic macro. If the variable argument has any tokens, then a @code{@w{__VA_OPT__}} invocation expands to its argument; but if the variable argument does diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 854e297..022d8c6 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -7215,6 +7215,12 @@ On x86 targets, the @code{fentry_section} attribute sets the name of the section to record function entry instrumentation calls in when enabled with @option{-pg -mrecord-mcount} +@item nodirect_extern_access +@cindex @code{nodirect_extern_access} function attribute +@opindex mno-direct-extern-access +This attribute, attached to a global variable or function, is the +counterpart to option @option{-mno-direct-extern-access}. + @end table @node Xstormy16 Function Attributes @@ -18271,74 +18277,89 @@ The following built-in functions are available on Linux 64-bit systems that use a future architecture instruction set (@option{-mcpu=power10}): @smallexample -@exdent unsigned long long int -@exdent __builtin_cfuged (unsigned long long int, unsigned long long int) +@exdent unsigned long long +@exdent __builtin_cfuged (unsigned long long, unsigned long long) @end smallexample Perform a 64-bit centrifuge operation, as if implemented by the @code{cfuged} instruction. @findex __builtin_cfuged @smallexample -@exdent unsigned long long int -@exdent __builtin_cntlzdm (unsigned long long int, unsigned long long int) +@exdent unsigned long long +@exdent __builtin_cntlzdm (unsigned long long, unsigned long long) @end smallexample Perform a 64-bit count leading zeros operation under mask, as if implemented by the @code{cntlzdm} instruction. @findex __builtin_cntlzdm @smallexample -@exdent unsigned long long int -@exdent __builtin_cnttzdm (unsigned long long int, unsigned long long int) +@exdent unsigned long long +@exdent __builtin_cnttzdm (unsigned long long, unsigned long long) @end smallexample Perform a 64-bit count trailing zeros operation under mask, as if implemented by the @code{cnttzdm} instruction. @findex __builtin_cnttzdm @smallexample -@exdent unsigned long long int -@exdent __builtin_pdepd (unsigned long long int, unsigned long long int) +@exdent unsigned long long +@exdent __builtin_pdepd (unsigned long long, unsigned long long) @end smallexample Perform a 64-bit parallel bits deposit operation, as if implemented by the @code{pdepd} instruction. @findex __builtin_pdepd @smallexample -@exdent unsigned long long int -@exdent __builtin_pextd (unsigned long long int, unsigned long long int) +@exdent unsigned long long +@exdent __builtin_pextd (unsigned long long, unsigned long long) @end smallexample Perform a 64-bit parallel bits extract operation, as if implemented by the @code{pextd} instruction. @findex __builtin_pextd @smallexample -@exdent vector signed __int128 vsx_xl_sext (signed long long, signed char *); -@exdent vector signed __int128 vsx_xl_sext (signed long long, signed short *); -@exdent vector signed __int128 vsx_xl_sext (signed long long, signed int *); -@exdent vector signed __int128 vsx_xl_sext (signed long long, signed long long *); -@exdent vector unsigned __int128 vsx_xl_zext (signed long long, unsigned char *); -@exdent vector unsigned __int128 vsx_xl_zext (signed long long, unsigned short *); -@exdent vector unsigned __int128 vsx_xl_zext (signed long long, unsigned int *); -@exdent vector unsigned __int128 vsx_xl_zext (signed long long, unsigned long long *); +@exdent vector signed __int128 vsx_xl_sext (signed long long, signed char *) + +@exdent vector signed __int128 vsx_xl_sext (signed long long, signed short *) + +@exdent vector signed __int128 vsx_xl_sext (signed long long, signed int *) + +@exdent vector signed __int128 vsx_xl_sext (signed long long, signed long long *) + +@exdent vector unsigned __int128 vsx_xl_zext (signed long long, unsigned char *) + +@exdent vector unsigned __int128 vsx_xl_zext (signed long long, unsigned short *) + +@exdent vector unsigned __int128 vsx_xl_zext (signed long long, unsigned int *) + +@exdent vector unsigned __int128 vsx_xl_zext (signed long long, unsigned long long *) @end smallexample Load (and sign extend) to an __int128 vector, as if implemented by the ISA 3.1 -@code{lxvrbx} @code{lxvrhx} @code{lxvrwx} @code{lxvrdx} instructions. +@code{lxvrbx}, @code{lxvrhx}, @code{lxvrwx}, and @code{lxvrdx} instructions. @findex vsx_xl_sext @findex vsx_xl_zext @smallexample -@exdent void vec_xst_trunc (vector signed __int128, signed long long, signed char *); -@exdent void vec_xst_trunc (vector signed __int128, signed long long, signed short *); -@exdent void vec_xst_trunc (vector signed __int128, signed long long, signed int *); -@exdent void vec_xst_trunc (vector signed __int128, signed long long, signed long long *); -@exdent void vec_xst_trunc (vector unsigned __int128, signed long long, unsigned char *); -@exdent void vec_xst_trunc (vector unsigned __int128, signed long long, unsigned short *); -@exdent void vec_xst_trunc (vector unsigned __int128, signed long long, unsigned int *); -@exdent void vec_xst_trunc (vector unsigned __int128, signed long long, unsigned long long *); +@exdent void vec_xst_trunc (vector signed __int128, signed long long, signed char *) + +@exdent void vec_xst_trunc (vector signed __int128, signed long long, signed short *) + +@exdent void vec_xst_trunc (vector signed __int128, signed long long, signed int *) + +@exdent void vec_xst_trunc (vector signed __int128, signed long long, signed long long *) + +@exdent void vec_xst_trunc (vector unsigned __int128, signed long long, unsigned char *) + +@exdent void vec_xst_trunc (vector unsigned __int128, signed long long, unsigned short *) + +@exdent void vec_xst_trunc (vector unsigned __int128, signed long long, unsigned int *) + +@exdent void vec_xst_trunc (vector unsigned __int128, signed long long, unsigned long long *) @end smallexample Truncate and store the rightmost element of a vector, as if implemented by the -ISA 3.1 @code{stxvrbx} @code{stxvrhx} @code{stxvrwx} @code{stxvrdx} instructions. +ISA 3.1 @code{stxvrbx}, @code{stxvrhx}, @code{stxvrwx}, and @code{stxvrdx} +instructions. @findex vec_xst_trunc @node PowerPC AltiVec/VSX Built-in Functions diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 9e9d7b5..40198f3 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -236,11 +236,6 @@ To build all languages in a cross-compiler or other configuration where GCC binary (version 4.8 or later) because source code for language frontends other than C might use GCC extensions. -Note that to bootstrap GCC with versions of GCC earlier than 4.8, you -may need to use @option{--disable-stage1-checking}, though -bootstrapping the compiler with such earlier compilers is strongly -discouraged. - @item C standard library and headers In order to build GCC, the C standard library and headers must be present @@ -408,7 +403,7 @@ download_prerequisites installs. @item MPC Library version 1.0.1 (or later) Necessary to build GCC@. It can be downloaded from -@uref{http://www.multiprecision.org/mpc/}. If an MPC source distribution +@uref{https://www.multiprecision.org/mpc/}. If an MPC source distribution is found in a subdirectory of your GCC sources named @file{mpc}, it will be built together with GCC. Alternatively, if MPC is already installed but it is not in your default library search path, the @@ -1579,6 +1574,20 @@ On certain targets this option sets the default stack clash protection guard size as a power of two in bytes. On AArch64 @var{size} is required to be either 12 (4KB) or 16 (64KB). +@item --with-isa-spec=@var{ISA-spec-string} +On RISC-V targets specify the default version of the RISC-V Unprivileged +(formerly User-Level) ISA specification to produce code conforming to. +The possibilities for @var{ISA-spec-string} are: +@table @code +@item 2.2 +Produce code conforming to version 2.2. +@item 20190608 +Produce code conforming to version 20190608. +@item 20191213 +Produce code conforming to version 20191213. +@end table +In the absence of this configuration option the default version is 20191213. + @item --enable-__cxa_atexit Define if you want to use __cxa_atexit, rather than atexit, to register C++ destructors for local statics and global objects. @@ -4142,7 +4151,7 @@ See @uref{https://gcc.gnu.org/PR10877,,bug 10877} for more information. If you receive Signal 11 errors when building on GNU/Linux, then it is possible you have a hardware problem. Further information on this can be -found on @uref{http://www.bitwizard.nl/sig11/,,www.bitwizard.nl}. +found on @uref{https://www.bitwizard.nl/sig11/,,www.bitwizard.nl}. @html <hr /> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 817c940..d91cf5d 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -362,7 +362,7 @@ Objective-C and Objective-C++ Dialects}. -Wswitch -Wno-switch-bool -Wswitch-default -Wswitch-enum @gol -Wno-switch-outside-range -Wno-switch-unreachable -Wsync-nand @gol -Wsystem-headers -Wtautological-compare -Wtrampolines -Wtrigraphs @gol --Wtsan -Wtype-limits -Wundef @gol +-Wtrivial-auto-var-init -Wtsan -Wtype-limits -Wundef @gol -Wuninitialized -Wunknown-pragmas @gol -Wunsuffixed-float-constants -Wunused @gol -Wunused-but-set-parameter -Wunused-but-set-variable @gol @@ -1147,6 +1147,7 @@ See RS/6000 and PowerPC Options. -mabi=@var{ABI-string} @gol -mfdiv -mno-fdiv @gol -mdiv -mno-div @gol +-misa-spec=@var{ISA-spec-string} @gol -march=@var{ISA-string} @gol -mtune=@var{processor-string} @gol -mpreferred-stack-boundary=@var{num} @gol @@ -1399,7 +1400,7 @@ See RS/6000 and PowerPC Options. -mgeneral-regs-only -mcall-ms2sysv-xlogues -mrelax-cmpxchg-loop @gol -mindirect-branch=@var{choice} -mfunction-return=@var{choice} @gol -mindirect-branch-register -mharden-sls=@var{choice} @gol --mindirect-branch-cs-prefix -mneeded} +-mindirect-branch-cs-prefix -mneeded -mno-direct-extern-access} @emph{x86 Windows Options} @gccoptlist{-mconsole -mcygwin -mno-cygwin -mdll @gol @@ -5603,8 +5604,10 @@ warns that an unrecognized option is present. The effectiveness of some warnings depends on optimizations also being enabled. For example @option{-Wsuggest-final-types} is more effective -with link-time optimization and @option{-Wmaybe-uninitialized} does not -warn at all unless optimization is enabled. +with link-time optimization and some instances of other warnings may +not be issued at all unless optimization is enabled. While optimization +in general improves the efficacy of control and data flow sensitive +warnings, in some cases it may also cause false positives. @table @gcctabopt @item -Wpedantic @@ -6913,6 +6916,14 @@ This warning is enabled by default for C and C++ programs. Warn when @code{__sync_fetch_and_nand} and @code{__sync_nand_and_fetch} built-in functions are used. These functions changed semantics in GCC 4.4. +@item -Wtrivial-auto-var-init +@opindex Wtrivial-auto-var-init +@opindex Wno-trivial-auto-var-init +Warn when @code{-ftrivial-auto-var-init} cannot initialize the automatic +variable. A common situation is an automatic variable that is declared +between the controlling expression and the first case label of a @code{switch} +statement. + @item -Wunused-but-set-parameter @opindex Wunused-but-set-parameter @opindex Wno-unused-but-set-parameter @@ -7653,20 +7664,22 @@ void f (char c, int i) @itemx -Warray-bounds=@var{n} @opindex Wno-array-bounds @opindex Warray-bounds -This option is only active when @option{-ftree-vrp} is active -(default for @option{-O2} and above). It warns about subscripts to arrays -that are always out of bounds. This warning is enabled by @option{-Wall}. +Warn about out of bounds subscripts or offsets into arrays. This warning +is enabled by @option{-Wall}. It is more effective when @option{-ftree-vrp} +is active (the default for @option{-O2} and above) but a subset of instances +are issued even without optimization. @table @gcctabopt @item -Warray-bounds=1 -This is the warning level of @option{-Warray-bounds} and is enabled +This is the default warning level of @option{-Warray-bounds} and is enabled by @option{-Wall}; higher levels are not, and must be explicitly requested. @item -Warray-bounds=2 -This warning level also warns about out of bounds access for -arrays at the end of a struct and for arrays accessed through -pointers. This warning level may give a larger number of -false positives and is deactivated by default. +This warning level also warns about out of bounds accesses to trailing +struct members of one-element array types (@pxref{Zero Length}) and about +the intermediate results of pointer arithmetic that may yield out of bounds +values. This warning level may give a larger number of false positives and +is deactivated by default. @end table @item -Warray-compare @@ -7785,7 +7798,9 @@ characters. By default, this warning does not warn about UCNs. It is, however, possible to turn on such checking by using @option{-Wbidi-chars=unpaired,ucn} or -@option{-Wbidi-chars=any,ucn}. +@option{-Wbidi-chars=any,ucn}. Using @option{-Wbidi-chars=ucn} is valid, +and is equivalent to @option{-Wbidi-chars=unpaired,ucn}, if no previous +@option{-Wbidi-chars=any} was specified. @item -Wbool-compare @opindex Wno-bool-compare @@ -12265,10 +12280,15 @@ Initialize automatic variables with either a pattern or with zeroes to increase the security and predictability of a program by preventing uninitialized memory disclosure and use. GCC still considers an automatic variable that doesn't have an explicit -initializer as uninitialized, @option{-Wuninitialized} will still report +initializer as uninitialized, @option{-Wuninitialized} and +@option{-Wanalyzer-use-of-uninitialized-value} will still report warning messages on such automatic variables. With this option, GCC will also initialize any padding of automatic variables that have structure or union types to zeroes. +However, the current implementation cannot initialize automatic variables that +are declared between the controlling expression and the first case of a +@code{switch} statement. Using @option{-Wtrivial-auto-var-init} to report all +such cases. The three values of @var{choice} are: @@ -13414,6 +13434,7 @@ counts to a file called @file{@var{sourcename}.gcda} for each source file. The information in this data file is very dependent on the structure of the generated code, so you must use the same source code and the same optimization options for both compilations. +See details about the file naming in @option{-fprofile-arcs}. With @option{-fbranch-probabilities}, GCC puts a @samp{REG_BR_PROB} note on each @samp{JUMP_INSN} and @samp{CALL_INSN}. @@ -15192,6 +15213,12 @@ explicitly specified and it is not the final executable, otherwise it is the basename of the source file. In both cases any suffix is removed (e.g.@: @file{foo.gcda} for input file @file{dir/foo.c}, or @file{dir/foo.gcda} for output file specified as @option{-o dir/foo.o}). + +Note that if a command line directly links source files, the corresponding +@var{.gcda} files will be prefixed with the unsuffixed name of the output file. +E.g. @code{gcc a.c b.c -o binary} would generate @file{binary-a.gcda} and +@file{binary-b.gcda} files. + @xref{Cross-profiling}. @cindex @command{gcov} @@ -15285,7 +15312,8 @@ profile data file appears in the same directory as the object file. In order to prevent the file name clashing, if the object file name is not an absolute path, we mangle the absolute path of the @file{@var{sourcename}.gcda} file and use it as the file name of a -@file{.gcda} file. See similar option @option{-fprofile-note}. +@file{.gcda} file. See details about the file naming in @option{-fprofile-arcs}. +See similar option @option{-fprofile-note}. When an executable is run in a massive parallel environment, it is recommended to save profile to different folders. That can be done with variables @@ -15575,6 +15603,36 @@ add @code{detect_invalid_pointer_pairs=2} to the environment variable @env{ASAN_OPTIONS}. Using @code{detect_invalid_pointer_pairs=1} detects invalid operation only when both pointers are non-null. +@item -fsanitize=shadow-call-stack +@opindex fsanitize=shadow-call-stack +Enable ShadowCallStack, a security enhancement mechanism used to protect +programs against return address overwrites (e.g. stack buffer overflows.) +It works by saving a function's return address to a separately allocated +shadow call stack in the function prologue and restoring the return address +from the shadow call stack in the function epilogue. Instrumentation only +occurs in functions that need to save the return address to the stack. + +Currently it only supports the aarch64 platform. It is specifically +designed for linux kernels that enable the CONFIG_SHADOW_CALL_STACK option. +For the user space programs, runtime support is not currently provided +in libc and libgcc. Users who want to use this feature in user space need +to provide their own support for the runtime. It should be noted that +this may cause the ABI rules to be broken. + +On aarch64, the instrumentation makes use of the platform register @code{x18}. +This generally means that any code that may run on the same thread as code +compiled with ShadowCallStack must be compiled with the flag +@option{-ffixed-x18}, otherwise functions compiled without +@option{-ffixed-x18} might clobber @code{x18} and so corrupt the shadow +stack pointer. + +Also, because there is no userspace runtime support, code compiled with +ShadowCallStack cannot use exception handling. Use @option{-fno-exceptions} +to turn off exceptions. + +See @uref{https://clang.llvm.org/docs/ShadowCallStack.html} for more +details. + @item -fsanitize=thread @opindex fsanitize=thread Enable ThreadSanitizer, a fast data race detector. @@ -22225,7 +22283,7 @@ The options @option{-metrax4} and @option{-metrax100} are synonyms for @opindex mmul-bug-workaround @opindex mno-mul-bug-workaround Work around a bug in the @code{muls} and @code{mulu} instructions for CPU -models where it applies. This option is active by default. +models where it applies. This option is disabled by default. @item -mpdebug @opindex mpdebug @@ -27207,9 +27265,10 @@ strings must be lower-case. Valid ISA strings include @samp{sm_30} and @item -mptx=@var{version-string} @opindex mptx -Generate code for given the specified PTX version (e.g.@: @samp{6.3}). -Valid version strings include @samp{3.1} and @samp{6.3}. The default PTX -version is 3.1. +Generate code for given the specified PTX version (e.g.@: @samp{7.0}). +Valid version strings include @samp{3.1}, @samp{6.0}, @samp{6.3}, and +@samp{7.0}. The default PTX version is 6.0, unless a higher minimal +version is required for specified PTX ISA via option @option{-misa=}. @item -mmainkernel @opindex mmainkernel @@ -27589,6 +27648,22 @@ Do or don't use hardware instructions for integer division. This requires the M extension. The default is to use them if the specified architecture has these instructions. +@item -misa-spec=@var{ISA-spec-string} +@opindex misa-spec +Specify the version of the RISC-V Unprivileged (formerly User-Level) +ISA specification to produce code conforming to. The possibilities +for @var{ISA-spec-string} are: +@table @code +@item 2.2 +Produce code conforming to version 2.2. +@item 20190608 +Produce code conforming to version 20190608. +@item 20191213 +Produce code conforming to version 20191213. +@end table +The default is @option{-misa-spec=20191213} unless GCC has been configured +with @option{--with-isa-spec=} specifying a different default version. + @item -march=@var{ISA-string} @opindex march Generate code for given RISC-V ISA (e.g.@: @samp{rv64im}). ISA strings must be @@ -27676,6 +27751,10 @@ Generate code for the medium-any code model. The program and its statically defined symbols must be within any single 2 GiB address range. Programs can be statically or dynamically linked. +The code generated by the medium-any code model is position-independent, but is +not guaranteed to function correctly when linked into position-independent +executables or libraries. + @item -mexplicit-relocs @itemx -mno-exlicit-relocs Use or do not use assembler relocation operators when dealing with symbolic @@ -30991,66 +31070,69 @@ instruction set is used, so the code runs on all i686 family chips. When used with @option{-mtune}, it has the same meaning as @samp{generic}. @item pentium2 -Intel Pentium II CPU, based on Pentium Pro core with MMX instruction set -support. +Intel Pentium II CPU, based on Pentium Pro core with MMX and FXSR instruction +set support. @item pentium3 @itemx pentium3m -Intel Pentium III CPU, based on Pentium Pro core with MMX and SSE instruction -set support. +Intel Pentium III CPU, based on Pentium Pro core with MMX, FXSR and SSE +instruction set support. @item pentium-m Intel Pentium M; low-power version of Intel Pentium III CPU -with MMX, SSE and SSE2 instruction set support. Used by Centrino notebooks. +with MMX, SSE, SSE2 and FXSR instruction set support. Used by Centrino +notebooks. @item pentium4 @itemx pentium4m -Intel Pentium 4 CPU with MMX, SSE and SSE2 instruction set support. +Intel Pentium 4 CPU with MMX, SSE, SSE2 and FXSR instruction set support. @item prescott -Improved version of Intel Pentium 4 CPU with MMX, SSE, SSE2 and SSE3 instruction -set support. +Improved version of Intel Pentium 4 CPU with MMX, SSE, SSE2, SSE3 and FXSR +instruction set support. @item nocona Improved version of Intel Pentium 4 CPU with 64-bit extensions, MMX, SSE, -SSE2 and SSE3 instruction set support. +SSE2, SSE3 and FXSR instruction set support. @item core2 -Intel Core 2 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3 -instruction set support. +Intel Core 2 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, CX16, +SAHF and FXSR instruction set support. @item nehalem Intel Nehalem CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, -SSE4.1, SSE4.2 and POPCNT instruction set support. +SSE4.1, SSE4.2, POPCNT, CX16, SAHF and FXSR instruction set support. @item westmere Intel Westmere CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, -SSE4.1, SSE4.2, POPCNT, AES and PCLMUL instruction set support. +SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR and PCLMUL instruction set support. @item sandybridge Intel Sandy Bridge CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, -SSE4.1, SSE4.2, POPCNT, AVX, AES and PCLMUL instruction set support. +SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE and PCLMUL instruction set +support. @item ivybridge Intel Ivy Bridge CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, -SSE4.1, SSE4.2, POPCNT, AVX, AES, PCLMUL, FSGSBASE, RDRND and F16C -instruction set support. +SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND +and F16C instruction set support. @item haswell Intel Haswell CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, -SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, -BMI, BMI2 and F16C instruction set support. +SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, +F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE and HLE instruction set support. @item broadwell Intel Broadwell CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, -SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, -F16C, RDSEED ADCX and PREFETCHW instruction set support. +SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, +F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX and PREFETCHW +instruction set support. @item skylake Intel Skylake CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, -SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, -BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC and XSAVES -instruction set support. +SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, +F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES, +CLFLUSHOPT, XSAVEC, XSAVES and SGX instruction set support. @item bonnell Intel Bonnell CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3 and SSSE3 @@ -31058,113 +31140,121 @@ instruction set support. @item silvermont Intel Silvermont CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, -SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL and RDRND instruction set support. +SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, PCLMUL, PREFETCHW and RDRND +instruction set support. @item goldmont Intel Goldmont CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, -SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, -XSAVEOPT and FSGSBASE instruction set support. +SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, PCLMUL, PREFETCHW, RDRND, AES, SHA, +RDSEED, XSAVE, XSAVEC, XSAVES, XSAVEOPT, CLFLUSHOPT and FSGSBASE instruction +set support. @item goldmont-plus Intel Goldmont Plus CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, -SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, -XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX and UMIP instruction set support. +SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, PCLMUL, PREFETCHW, RDRND, AES, +SHA, RDSEED, XSAVE, XSAVEC, XSAVES, XSAVEOPT, CLFLUSHOPT, FSGSBASE, PTWRITE, +RDPID and SGX instruction set support. @item tremont Intel Tremont CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, -SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, -XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, UMIP, GFNI-SSE, CLWB, MOVDIRI, -MOVDIR64B, CLDEMOTE and WAITPKG instruction set support. +SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, PCLMUL, PREFETCHW, RDRND, AES, SHA, +RDSEED, XSAVE, XSAVEC, XSAVES, XSAVEOPT, CLFLUSHOPT, FSGSBASE, PTWRITE, RDPID, +SGX, CLWB, GFNI-SSE, MOVDIRI, MOVDIR64B, CLDEMOTE and WAITPKG instruction set +support. @item knl Intel Knight's Landing CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, -SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, -BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, PREFETCHWT1, AVX512F, AVX512PF, -AVX512ER and AVX512CD instruction set support. +SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, +RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, +AVX512PF, AVX512ER, AVX512F, AVX512CD and PREFETCHWT1 instruction set support. @item knm Intel Knights Mill CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, -SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, -BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, PREFETCHWT1, AVX512F, AVX512PF, -AVX512ER, AVX512CD, AVX5124VNNIW, AVX5124FMAPS and AVX512VPOPCNTDQ instruction -set support. +SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, +RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, +AVX512PF, AVX512ER, AVX512F, AVX512CD and PREFETCHWT1, AVX5124VNNIW, +AVX5124FMAPS and AVX512VPOPCNTDQ instruction set support. @item skylake-avx512 Intel Skylake Server CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, -SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, -BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, -CLWB, AVX512VL, AVX512BW, AVX512DQ and AVX512CD instruction set support. +SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, +RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, +AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, CLWB, AVX512VL, AVX512BW, +AVX512DQ and AVX512CD instruction set support. @item cannonlake Intel Cannonlake Server CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, -SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, -RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, -XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, -AVX512IFMA, SHA and UMIP instruction set support. +SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, +FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, +PREFETCHW, AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, +AVX512DQ, AVX512CD, PKU, AVX512VBMI, AVX512IFMA and SHA instruction set +support. @item icelake-client -Intel Icelake Client CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, -SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, -RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, -XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, -AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, -AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES instruction set support. +Intel Icelake Client CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, +SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, +RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, +AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ, +AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2 +, VPCLMULQDQ, AVX512BITALG, RDPID and AVX512VPOPCNTDQ instruction set support. @item icelake-server -Intel Icelake Server CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, -SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, -RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, -XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, -AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, -AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES, PCONFIG and WBNOINVD instruction -set support. +Intel Icelake Server CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, +SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, +RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, +AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ, +AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2 +, VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD and CLWB +instruction set support. @item cascadelake Intel Cascadelake CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, -SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, -BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, CLWB, -AVX512VL, AVX512BW, AVX512DQ, AVX512CD and AVX512VNNI instruction set support. +SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, +F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES, +CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, +AVX512CD and AVX512VNNI instruction set support. @item cooperlake Intel cooperlake CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, -SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, -BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, CLWB, -AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI and AVX512BF16 instruction -set support. +SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, +F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES, +CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, +AVX512CD, AVX512VNNI and AVX512BF16 instruction set support. @item tigerlake Intel Tigerlake CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, -SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, -BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, -AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA, CLWB, UMIP, -RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, AVX512BITALG, AVX512VNNI, VPCLMULQDQ, -VAES, PCONFIG, WBNOINVD, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT and KEYLOCKER -instruction set support. +SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, +F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES, +CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD +PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2, +VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, MOVDIRI, MOVDIR64B, CLWB, +AVX512VP2INTERSECT and KEYLOCKER instruction set support. @item sapphirerapids Intel sapphirerapids CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, -SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, -FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, -AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI, AVX512BF16, -MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, -SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8 and AVX-VNNI -instruction set support. +SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, +RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, +AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, CLWB, AVX512VL, AVX512BW, +AVX512DQ, AVX512CD, AVX512VNNI, AVX512BF16 MOVDIRI, MOVDIR64B, +AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, +UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI and AVX512FP16 instruction set +support. @item alderlake Intel Alderlake CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, -XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, UMIP, GFNI-SSE, CLWB, MOVDIRI, -MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, -PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL and AVX-VNNI -instruction set support. +XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, +CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, +VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL and AVX-VNNI instruction set +support. @item rocketlake -Intel Rocketlake CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, -SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, -RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, -XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, -AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, -AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES instruction set support. +Intel Rocketlake CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3 +, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, +F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES, +CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD +PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2, +VPCLMULQDQ, AVX512BITALG, RDPID and AVX512VPOPCNTDQ instruction set support. @item k6 AMD K6 CPU with MMX instruction set support. @@ -32748,6 +32838,19 @@ x32 environments. @opindex mneeded Emit GNU_PROPERTY_X86_ISA_1_NEEDED GNU property for Linux target to indicate the micro-architecture ISA level required to execute the binary. + +@item -mno-direct-extern-access +@opindex mno-direct-extern-access +@opindex mdirect-extern-access +Without @option{-fpic} nor @option{-fPIC}, always use the GOT pointer +to access external symbols. With @option{-fpic} or @option{-fPIC}, +treat access to protected symbols as local symbols. The default is +@option{-mdirect-extern-access}. + +@strong{Warning:} shared libraries compiled with +@option{-mno-direct-extern-access} and executable compiled with +@option{-mdirect-extern-access} may not be binary compatible if +protected symbols are used in shared libraries and executable. @end table @node x86 Windows Options diff --git a/gcc/doc/match-and-simplify.texi b/gcc/doc/match-and-simplify.texi index 63a73ae..055a530 100644 --- a/gcc/doc/match-and-simplify.texi +++ b/gcc/doc/match-and-simplify.texi @@ -374,8 +374,10 @@ for example which moves the outer @code{plus} operation to the inner arms of the @code{vec_cond} expression but only if the actual plus -operations both simplify. Note this is currently only supported -for code generation targeting @code{GIMPLE}. +operations both simplify. Note that on @code{GENERIC} a simple +operand means that the result satisfies @code{!EXPR_P} which +can be limiting if the operation itself simplifies but the +remaining operand is an (unrelated) expression. As intermediate conversions are often optional there is a way to avoid the need to repeat patterns both with and without such diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi index feacb12..f3619c5 100644 --- a/gcc/doc/md.texi +++ b/gcc/doc/md.texi @@ -6360,12 +6360,13 @@ Perform a vector multiply and accumulate that is semantically the same as a multiply and accumulate of complex numbers. @smallexample - complex TYPE c[N]; - complex TYPE a[N]; - complex TYPE b[N]; + complex TYPE op0[N]; + complex TYPE op1[N]; + complex TYPE op2[N]; + complex TYPE op3[N]; for (int i = 0; i < N; i += 1) @{ - c[i] += a[i] * b[i]; + op0[i] = op1[i] * op2[i] + op3[i]; @} @end smallexample @@ -6383,12 +6384,13 @@ the same as a multiply and accumulate of complex numbers where the second multiply arguments is conjugated. @smallexample - complex TYPE c[N]; - complex TYPE a[N]; - complex TYPE b[N]; + complex TYPE op0[N]; + complex TYPE op1[N]; + complex TYPE op2[N]; + complex TYPE op3[N]; for (int i = 0; i < N; i += 1) @{ - c[i] += a[i] * conj (b[i]); + op0[i] = op1[i] * conj (op2[i]) + op3[i]; @} @end smallexample @@ -6405,12 +6407,13 @@ Perform a vector multiply and subtract that is semantically the same as a multiply and subtract of complex numbers. @smallexample - complex TYPE c[N]; - complex TYPE a[N]; - complex TYPE b[N]; + complex TYPE op0[N]; + complex TYPE op1[N]; + complex TYPE op2[N]; + complex TYPE op3[N]; for (int i = 0; i < N; i += 1) @{ - c[i] -= a[i] * b[i]; + op0[i] = op1[i] * op2[i] - op3[i]; @} @end smallexample @@ -6428,12 +6431,13 @@ the same as a multiply and subtract of complex numbers where the second multiply arguments is conjugated. @smallexample - complex TYPE c[N]; - complex TYPE a[N]; - complex TYPE b[N]; + complex TYPE op0[N]; + complex TYPE op1[N]; + complex TYPE op2[N]; + complex TYPE op3[N]; for (int i = 0; i < N; i += 1) @{ - c[i] -= a[i] * conj (b[i]); + op0[i] = op1[i] * conj (op2[i]) - op3[i]; @} @end smallexample @@ -6450,12 +6454,12 @@ Perform a vector multiply that is semantically the same as multiply of complex numbers. @smallexample - complex TYPE c[N]; - complex TYPE a[N]; - complex TYPE b[N]; + complex TYPE op0[N]; + complex TYPE op1[N]; + complex TYPE op2[N]; for (int i = 0; i < N; i += 1) @{ - c[i] = a[i] * b[i]; + op0[i] = op1[i] * op2[i]; @} @end smallexample @@ -6472,12 +6476,12 @@ Perform a vector multiply by conjugate that is semantically the same as a multiply of complex numbers where the second multiply arguments is conjugated. @smallexample - complex TYPE c[N]; - complex TYPE a[N]; - complex TYPE b[N]; + complex TYPE op0[N]; + complex TYPE op1[N]; + complex TYPE op2[N]; for (int i = 0; i < N; i += 1) @{ - c[i] = a[i] * conj (b[i]); + op0[i] = op1[i] * conj (op2[i]); @} @end smallexample diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi index 2d128f4..613ac29 100644 --- a/gcc/doc/sourcebuild.texi +++ b/gcc/doc/sourcebuild.texi @@ -2236,6 +2236,10 @@ ARM target supports the @code{-mfloat-abi=softfp} option. @anchor{arm_hard_ok} ARM target supports the @code{-mfloat-abi=hard} option. +@item arm_mve +@anchor{arm_mve} +ARM target supports generating MVE instructions. + @item arm_v8_1_lob_ok @anchor{arm_v8_1_lob_ok} ARM Target supports executing the Armv8.1-M Mainline Low Overhead Loop diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 41774d1..6e49772 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -13554,3 +13554,10 @@ counters are incremented using atomic operations. Targets not supporting type. @end deftypefn @c hook-end + +@deftypevr {Target Hook} bool TARGET_HAVE_SHADOW_CALL_STACK +@c hook-start:TARGET_HAVE_SHADOW_CALL_STACK +This value is true if the target platform supports +@option{-fsanitize=shadow-call-stack}. The default value is false. +@end deftypevr +@c hook-end diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in index 394b59e..95e5e34 100644 --- a/gcc/doc/tm.texi.in +++ b/gcc/doc/tm.texi.in @@ -8181,3 +8181,5 @@ maintainer is familiar with. @hook TARGET_MEMTAG_UNTAGGED_POINTER @hook TARGET_GCOV_TYPE_SIZE + +@hook TARGET_HAVE_SHADOW_CALL_STACK |