From 811a671042cf922d4f6acaa575d32a3fcacdefdd Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 28 Jan 2019 11:38:29 +0100 Subject: [PATCH] re PR target/89073 (x86 __attribute__ ((target("sha"))) not documented) PR target/89073 * doc/invoke.texi (-mclwb, -mprfchw, -mrdpid, -mrdseed, -msgx, -madx, -mhle, -mavx5124fmaps, -mavx512vnni, -mavx5124vnniw): Document x86 ISA options. (bmi2): Add missing @opindex. * doc/extend.texi (x86 target attribute): Move fma4, lwp, ssse3 options alphabetically. Add missing 3dnow, 3dnowa, adx, avx, avx2, avx5124fmaps, avx5124vnniw, avx512bitalg, avx512bw, avx512cd, avx512dq, avx512er, avx512f, avx512ifma, avx512pf, avx512vbmi, avx512vbmi2, avx512vl, avx512vnni, avx512vpopcntdq, bmi, bmi2, cldemote, clflushopt, clwb, clzero, crc32, cx16, f16c, fma, fsgsbase, fxsr, gfni, hle, lzcnt, movbe, movdir64b, movdiri, mwaitx, pconfig, pku, prefetchwt1, prfchw, ptwrite, rdpid, rdrnd, rdseed, rtm, sahf, sgx, sha, shstk, tbm, vaes, vpclmulqdq, waitpkg, wbnoinvd, xsave, xsavec, xsaveopt and xsaves options. From-SVN: r268335 --- gcc/ChangeLog | 18 +++ gcc/doc/extend.texi | 331 ++++++++++++++++++++++++++++++++++++++++++-- gcc/doc/invoke.texi | 55 ++++++-- 3 files changed, 381 insertions(+), 23 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 943fbd25b93..f4d620870c7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,21 @@ +2019-01-28 Jakub Jelinek + + PR target/89073 + * doc/invoke.texi (-mclwb, -mprfchw, -mrdpid, -mrdseed, -msgx, + -madx, -mhle, -mavx5124fmaps, -mavx512vnni, -mavx5124vnniw): Document + x86 ISA options. + (bmi2): Add missing @opindex. + * doc/extend.texi (x86 target attribute): Move fma4, lwp, ssse3 + options alphabetically. Add missing 3dnow, 3dnowa, adx, avx, avx2, + avx5124fmaps, avx5124vnniw, avx512bitalg, avx512bw, avx512cd, + avx512dq, avx512er, avx512f, avx512ifma, avx512pf, avx512vbmi, + avx512vbmi2, avx512vl, avx512vnni, avx512vpopcntdq, bmi, bmi2, + cldemote, clflushopt, clwb, clzero, crc32, cx16, f16c, fma, fsgsbase, + fxsr, gfni, hle, lzcnt, movbe, movdir64b, movdiri, mwaitx, pconfig, + pku, prefetchwt1, prfchw, ptwrite, rdpid, rdrnd, rdseed, rtm, sahf, + sgx, sha, shstk, tbm, vaes, vpclmulqdq, waitpkg, wbnoinvd, xsave, + xsavec, xsaveopt and xsaves options. + 2019-01-28 Richard Biener PR debug/89076 diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 4044fba753e..f41c7a88a57 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -6021,36 +6021,306 @@ allows specification of target-specific compilation options. On the x86, the following options are allowed: @table @samp +@item 3dnow +@itemx no-3dnow +@cindex @code{target("3dnow")} function attribute, x86 +Enable/disable the generation of the 3DNow!@: instructions. + +@item 3dnowa +@itemx no-3dnowa +@cindex @code{target("3dnowa")} function attribute, x86 +Enable/disable the generation of the enhanced 3DNow!@: instructions. + @item abm @itemx no-abm @cindex @code{target("abm")} function attribute, x86 Enable/disable the generation of the advanced bit instructions. +@item adx +@itemx no-adx +@cindex @code{target("adx")} function attribute, x86 +Enable/disable the generation of the ADX instructions. + @item aes @itemx no-aes @cindex @code{target("aes")} function attribute, x86 Enable/disable the generation of the AES instructions. +@item avx +@itemx no-avx +@cindex @code{target("avx")} function attribute, x86 +Enable/disable the generation of the AVX instructions. + +@item avx2 +@itemx no-avx2 +@cindex @code{target("avx2")} function attribute, x86 +Enable/disable the generation of the AVX2 instructions. + +@item avx5124fmaps +@itemx no-avx5124fmaps +@cindex @code{target("avx5124fmaps")} function attribute, x86 +Enable/disable the generation of the AVX5124FMAPS instructions. + +@item avx5124vnniw +@itemx no-avx5124vnniw +@cindex @code{target("avx5124vnniw")} function attribute, x86 +Enable/disable the generation of the AVX5124VNNIW instructions. + +@item avx512bitalg +@itemx no-avx512bitalg +@cindex @code{target("avx512bitalg")} function attribute, x86 +Enable/disable the generation of the AVX512BITALG instructions. + +@item avx512bw +@itemx no-avx512bw +@cindex @code{target("avx512bw")} function attribute, x86 +Enable/disable the generation of the AVX512BW instructions. + +@item avx512cd +@itemx no-avx512cd +@cindex @code{target("avx512cd")} function attribute, x86 +Enable/disable the generation of the AVX512CD instructions. + +@item avx512dq +@itemx no-avx512dq +@cindex @code{target("avx512dq")} function attribute, x86 +Enable/disable the generation of the AVX512DQ instructions. + +@item avx512er +@itemx no-avx512er +@cindex @code{target("avx512er")} function attribute, x86 +Enable/disable the generation of the AVX512ER instructions. + +@item avx512f +@itemx no-avx512f +@cindex @code{target("avx512f")} function attribute, x86 +Enable/disable the generation of the AVX512F instructions. + +@item avx512ifma +@itemx no-avx512ifma +@cindex @code{target("avx512ifma")} function attribute, x86 +Enable/disable the generation of the AVX512IFMA instructions. + +@item avx512pf +@itemx no-avx512pf +@cindex @code{target("avx512pf")} function attribute, x86 +Enable/disable the generation of the AVX512PF instructions. + +@item avx512vbmi +@itemx no-avx512vbmi +@cindex @code{target("avx512vbmi")} function attribute, x86 +Enable/disable the generation of the AVX512VBMI instructions. + +@item avx512vbmi2 +@itemx no-avx512vbmi2 +@cindex @code{target("avx512vbmi2")} function attribute, x86 +Enable/disable the generation of the AVX512VBMI2 instructions. + +@item avx512vl +@itemx no-avx512vl +@cindex @code{target("avx512vl")} function attribute, x86 +Enable/disable the generation of the AVX512VL instructions. + +@item avx512vnni +@itemx no-avx512vnni +@cindex @code{target("avx512vnni")} function attribute, x86 +Enable/disable the generation of the AVX512VNNI instructions. + +@item avx512vpopcntdq +@itemx no-avx512vpopcntdq +@cindex @code{target("avx512vpopcntdq")} function attribute, x86 +Enable/disable the generation of the AVX512VPOPCNTDQ instructions. + +@item bmi +@itemx no-bmi +@cindex @code{target("bmi")} function attribute, x86 +Enable/disable the generation of the BMI instructions. + +@item bmi2 +@itemx no-bmi2 +@cindex @code{target("bmi2")} function attribute, x86 +Enable/disable the generation of the BMI2 instructions. + +@item cldemote +@itemx no-cldemote +@cindex @code{target("cldemote")} function attribute, x86 +Enable/disable the generation of the CLDEMOTE instructions. + +@item clflushopt +@itemx no-clflushopt +@cindex @code{target("clflushopt")} function attribute, x86 +Enable/disable the generation of the CLFLUSHOPT instructions. + +@item clwb +@itemx no-clwb +@cindex @code{target("clwb")} function attribute, x86 +Enable/disable the generation of the CLWB instructions. + +@item clzero +@itemx no-clzero +@cindex @code{target("clzero")} function attribute, x86 +Enable/disable the generation of the CLZERO instructions. + +@item crc32 +@itemx no-crc32 +@cindex @code{target("crc32")} function attribute, x86 +Enable/disable the generation of the CRC32 instructions. + +@item cx16 +@itemx no-cx16 +@cindex @code{target("cx16")} function attribute, x86 +Enable/disable the generation of the CMPXCHG16B instructions. + @item default @cindex @code{target("default")} function attribute, x86 @xref{Function Multiversioning}, where it is used to specify the default function version. +@item f16c +@itemx no-f16c +@cindex @code{target("f16c")} function attribute, x86 +Enable/disable the generation of the F16C instructions. + +@item fma +@itemx no-fma +@cindex @code{target("fma")} function attribute, x86 +Enable/disable the generation of the FMA instructions. + +@item fma4 +@itemx no-fma4 +@cindex @code{target("fma4")} function attribute, x86 +Enable/disable the generation of the FMA4 instructions. + +@item fsgsbase +@itemx no-fsgsbase +@cindex @code{target("fsgsbase")} function attribute, x86 +Enable/disable the generation of the FSGSBASE instructions. + +@item fxsr +@itemx no-fxsr +@cindex @code{target("fxsr")} function attribute, x86 +Enable/disable the generation of the FXSR instructions. + +@item gfni +@itemx no-gfni +@cindex @code{target("gfni")} function attribute, x86 +Enable/disable the generation of the GFNI instructions. + +@item hle +@itemx no-hle +@cindex @code{target("hle")} function attribute, x86 +Enable/disable the generation of the HLE instruction prefixes. + +@item lwp +@itemx no-lwp +@cindex @code{target("lwp")} function attribute, x86 +Enable/disable the generation of the LWP instructions. + +@item lzcnt +@itemx no-lzcnt +@cindex @code{target("lzcnt")} function attribute, x86 +Enable/disable the generation of the LZCNT instructions. + @item mmx @itemx no-mmx @cindex @code{target("mmx")} function attribute, x86 Enable/disable the generation of the MMX instructions. +@item movbe +@itemx no-movbe +@cindex @code{target("movbe")} function attribute, x86 +Enable/disable the generation of the MOVBE instructions. + +@item movdir64b +@itemx no-movdir64b +@cindex @code{target("movdir64b")} function attribute, x86 +Enable/disable the generation of the MOVDIR64B instructions. + +@item movdiri +@itemx no-movdiri +@cindex @code{target("movdiri")} function attribute, x86 +Enable/disable the generation of the MOVDIRI instructions. + +@item mwaitx +@itemx no-mwaitx +@cindex @code{target("mwaitx")} function attribute, x86 +Enable/disable the generation of the MWAITX instructions. + @item pclmul @itemx no-pclmul @cindex @code{target("pclmul")} function attribute, x86 Enable/disable the generation of the PCLMUL instructions. +@item pconfig +@itemx no-pconfig +@cindex @code{target("pconfig")} function attribute, x86 +Enable/disable the generation of the PCONFIG instructions. + +@item pku +@itemx no-pku +@cindex @code{target("pku")} function attribute, x86 +Enable/disable the generation of the PKU instructions. + @item popcnt @itemx no-popcnt @cindex @code{target("popcnt")} function attribute, x86 Enable/disable the generation of the POPCNT instruction. +@item prefetchwt1 +@itemx no-prefetchwt1 +@cindex @code{target("prefetchwt1")} function attribute, x86 +Enable/disable the generation of the PREFETCHWT1 instructions. + +@item prfchw +@itemx no-prfchw +@cindex @code{target("prfchw")} function attribute, x86 +Enable/disable the generation of the PREFETCHW instruction. + +@item ptwrite +@itemx no-ptwrite +@cindex @code{target("ptwrite")} function attribute, x86 +Enable/disable the generation of the PTWRITE instructions. + +@item rdpid +@itemx no-rdpid +@cindex @code{target("rdpid")} function attribute, x86 +Enable/disable the generation of the RDPID instructions. + +@item rdrnd +@itemx no-rdrnd +@cindex @code{target("rdrnd")} function attribute, x86 +Enable/disable the generation of the RDRND instructions. + +@item rdseed +@itemx no-rdseed +@cindex @code{target("rdseed")} function attribute, x86 +Enable/disable the generation of the RDSEED instructions. + +@item rtm +@itemx no-rtm +@cindex @code{target("rtm")} function attribute, x86 +Enable/disable the generation of the RTM instructions. + +@item sahf +@itemx no-sahf +@cindex @code{target("sahf")} function attribute, x86 +Enable/disable the generation of the SAHF instructions. + +@item sgx +@itemx no-sgx +@cindex @code{target("sgx")} function attribute, x86 +Enable/disable the generation of the SGX instructions. + +@item sha +@itemx no-sha +@cindex @code{target("sha")} function attribute, x86 +Enable/disable the generation of the SHA instructions. + +@item shstk +@itemx no-shstk +@cindex @code{target("shstk")} function attribute, x86 +Enable/disable the shadow stack built-in functions from CET. + @item sse @itemx no-sse @cindex @code{target("sse")} function attribute, x86 @@ -6087,25 +6357,60 @@ Enable/disable the generation of the sse4.2 instructions. @cindex @code{target("sse4a")} function attribute, x86 Enable/disable the generation of the SSE4A instructions. -@item fma4 -@itemx no-fma4 -@cindex @code{target("fma4")} function attribute, x86 -Enable/disable the generation of the FMA4 instructions. +@item ssse3 +@itemx no-ssse3 +@cindex @code{target("ssse3")} function attribute, x86 +Enable/disable the generation of the SSSE3 instructions. + +@item tbm +@itemx no-tbm +@cindex @code{target("tbm")} function attribute, x86 +Enable/disable the generation of the TBM instructions. + +@item vaes +@itemx no-vaes +@cindex @code{target("vaes")} function attribute, x86 +Enable/disable the generation of the VAES instructions. + +@item vpclmulqdq +@itemx no-vpclmulqdq +@cindex @code{target("vpclmulqdq")} function attribute, x86 +Enable/disable the generation of the VPCLMULQDQ instructions. + +@item waitpkg +@itemx no-waitpkg +@cindex @code{target("waitpkg")} function attribute, x86 +Enable/disable the generation of the WAITPKG instructions. + +@item wbnoinvd +@itemx no-wbnoinvd +@cindex @code{target("wbnoinvd")} function attribute, x86 +Enable/disable the generation of the WBNOINVD instructions. @item xop @itemx no-xop @cindex @code{target("xop")} function attribute, x86 Enable/disable the generation of the XOP instructions. -@item lwp -@itemx no-lwp -@cindex @code{target("lwp")} function attribute, x86 -Enable/disable the generation of the LWP instructions. - -@item ssse3 -@itemx no-ssse3 -@cindex @code{target("ssse3")} function attribute, x86 -Enable/disable the generation of the SSSE3 instructions. +@item xsave +@itemx no-xsave +@cindex @code{target("xsave")} function attribute, x86 +Enable/disable the generation of the XSAVE instructions. + +@item xsavec +@itemx no-xsavec +@cindex @code{target("xsavec")} function attribute, x86 +Enable/disable the generation of the XSAVEC instructions. + +@item xsaveopt +@itemx no-xsaveopt +@cindex @code{target("xsaveopt")} function attribute, x86 +Enable/disable the generation of the XSAVEOPT instructions. + +@item xsaves +@itemx no-xsaves +@cindex @code{target("xsaves")} function attribute, x86 +Enable/disable the generation of the XSAVES instructions. @item cld @itemx no-cld diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 8656dfd24cc..580b48e1eb8 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -1266,12 +1266,14 @@ See RS/6000 and PowerPC Options. -mavx2 -mavx512f -mavx512pf -mavx512er -mavx512cd -mavx512vl @gol -mavx512bw -mavx512dq -mavx512ifma -mavx512vbmi -msha -maes @gol -mpclmul -mfsgsbase -mrdrnd -mf16c -mfma -mpconfig -mwbnoinvd @gol --mptwrite -mprefetchwt1 -mclflushopt -mxsavec -mxsaves @gol +-mptwrite -mprefetchwt1 -mclflushopt -mclwb -mxsavec -mxsaves @gol -msse4a -m3dnow -m3dnowa -mpopcnt -mabm -mbmi -mtbm -mfma4 -mxop @gol --mlzcnt -mbmi2 -mfxsr -mxsave -mxsaveopt -mrtm -mlwp @gol +-madx -mlzcnt -mbmi2 -mfxsr -mxsave -mxsaveopt -mrtm -mhle -mlwp @gol -mmwaitx -mclzero -mpku -mthreads -mgfni -mvaes -mwaitpkg @gol -mshstk -mmanual-endbr -mforce-indirect-call -mavx512vbmi2 @gol -mvpclmulqdq -mavx512bitalg -mmovdiri -mmovdir64b -mavx512vpopcntdq @gol +-mavx5124fmaps -mavx512vnni -mavx5124vnniw -mprfchw -mrdpid @gol +-mrdseed -msgx @gol -mcldemote -mms-bitfields -mno-align-stringops -minline-all-stringops @gol -minline-stringops-dynamically -mstringop-strategy=@var{alg} @gol -mmemcpy-strategy=@var{strategy} -mmemset-strategy=@var{strategy} @gol @@ -27877,6 +27879,9 @@ preferred alignment to @option{-mpreferred-stack-boundary=2}. @itemx -mclflushopt @opindex mclflushopt @need 200 +@itemx -mclwb +@opindex mclwb +@need 200 @itemx -mfsgsbase @opindex mfsgsbase @need 200 @@ -27901,9 +27906,21 @@ preferred alignment to @option{-mpreferred-stack-boundary=2}. @itemx -mfma4 @opindex mfma4 @need 200 +@itemx -mprfchw +@opindex mprfchw +@need 200 +@itemx -mrdpid +@opindex mrdpid +@need 200 @itemx -mprefetchwt1 @opindex mprefetchwt1 @need 200 +@itemx -mrdseed +@opindex mrdseed +@need 200 +@itemx -msgx +@opindex msgx +@need 200 @itemx -mxop @opindex mxop @need 200 @@ -27922,10 +27939,14 @@ preferred alignment to @option{-mpreferred-stack-boundary=2}. @itemx -mabm @opindex mabm @need 200 +@itemx -madx +@opindex madx +@need 200 @itemx -mbmi @opindex mbmi @need 200 @itemx -mbmi2 +@opindex mbmi2 @need 200 @itemx -mlzcnt @opindex mlzcnt @@ -27948,6 +27969,9 @@ preferred alignment to @option{-mpreferred-stack-boundary=2}. @itemx -mrtm @opindex mrtm @need 200 +@itemx -mhle +@opindex mhle +@need 200 @itemx -mtbm @opindex mtbm @need 200 @@ -27987,17 +28011,28 @@ preferred alignment to @option{-mpreferred-stack-boundary=2}. @itemx -mavx512vpopcntdq @opindex mavx512vpopcntdq @need 200 +@itemx -mavx5124fmaps +@opindex mavx5124fmaps +@need 200 +@itemx -mavx512vnni +@opindex mavx512vnni +@need 200 +@itemx -mavx5124vnniw +@opindex mavx5124vnniw +@need 200 @itemx -mcldemote @opindex mcldemote These switches enable the use of instructions in the MMX, SSE, -SSE2, SSE3, SSSE3, SSE4.1, AVX, AVX2, AVX512F, AVX512PF, AVX512ER, AVX512CD, -SHA, AES, PCLMUL, FSGSBASE, PTWRITE, RDRND, F16C, FMA, SSE4A, FMA4, XOP, LWP, ABM, -AVX512VL, AVX512BW, AVX512DQ, AVX512IFMA, AVX512VBMI, BMI, BMI2, VAES, WAITPKG, -FXSR, XSAVE, XSAVEOPT, LZCNT, RTM, MWAITX, PKU, IBT, SHSTK, AVX512VBMI2, -GFNI, VPCLMULQDQ, AVX512BITALG, MOVDIRI, MOVDIR64B, -AVX512VPOPCNTDQ, CLDEMOTE, 3DNow!@: or enhanced 3DNow!@: extended instruction -sets. Each has a corresponding @option{-mno-} option to disable use of these -instructions. +SSE2, SSE3, SSSE3, SSE4, SSE4A, SSE4.1, SSE4.2, AVX, AVX2, AVX512F, AVX512PF, +AVX512ER, AVX512CD, AVX512VL, AVX512BW, AVX512DQ, AVX512IFMA, AVX512VBMI, SHA, +AES, PCLMUL, CLFLUSHOPT, CLWB, FSGSBASE, PTWRITE, RDRND, F16C, FMA, PCONFIG, +WBNOINVD, FMA4, PREFETCHW, RDPID, PREFETCHWT1, RDSEED, SGX, XOP, LWP, +3DNow!@:, enhanced 3DNow!@:, POPCNT, ABM, ADX, BMI, BMI2, LZCNT, FXSR, XSAVE, +XSAVEOPT, XSAVEC, XSAVES, RTM, HLE, TBM, MWAITX, CLZERO, PKU, AVX512VBMI2, +GFNI, VAES, WAITPKG, VPCLMULQDQ, AVX512BITALG, MOVDIRI, MOVDIR64B, +AVX512VPOPCNTDQ, AVX5124FMAPS, AVX512VNNI, AVX5124VNNIW, or CLDEMOTE +extended instruction sets. Each has a corresponding @option{-mno-} option to +disable use of these instructions. These extensions are also available as built-in functions: see @ref{x86 Built-in Functions}, for details of the functions enabled and -- 2.30.2