]> git.ipfire.org Git - thirdparty/gcc.git/commit
Software mitigation: Disable gather generation in vectorization for GDS affected...
authorliuhongt <hongtao.liu@intel.com>
Thu, 10 Aug 2023 03:41:39 +0000 (11:41 +0800)
committerliuhongt <hongtao.liu@intel.com>
Wed, 16 Aug 2023 01:18:06 +0000 (09:18 +0800)
commit3064d1f5c48cb6ce1b4133570dd08ecca8abb52d
tree46ab8bae6faf850daa3843d6ffd6aaf2bc1e874a
parentf5f7d03bb9634b052a7b4469f10db10e20a8bbc4
Software mitigation: Disable gather generation in vectorization for GDS affected Intel Processors.

For more details of GDS (Gather Data Sampling), refer to
https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/advisory-guidance/gather-data-sampling.html

After microcode update, there's performance regression. To avoid that,
the patch disables gather generation in autovectorization but uses
gather scalar emulation instead.

gcc/ChangeLog:

* config/i386/i386-options.cc (m_GDS): New macro.
* config/i386/x86-tune.def (X86_TUNE_USE_GATHER_2PARTS): Don't
enable for m_GDS.
(X86_TUNE_USE_GATHER_4PARTS): Ditto.
(X86_TUNE_USE_GATHER): Ditto.

gcc/testsuite/ChangeLog:

* gcc.target/i386/avx2-gather-2.c: Adjust options to keep
gather vectorization.
* gcc.target/i386/avx2-gather-6.c: Ditto.
* gcc.target/i386/avx512f-pr88464-1.c: Ditto.
* gcc.target/i386/avx512f-pr88464-5.c: Ditto.
* gcc.target/i386/avx512vl-pr88464-1.c: Ditto.
* gcc.target/i386/avx512vl-pr88464-11.c: Ditto.
* gcc.target/i386/avx512vl-pr88464-3.c: Ditto.
* gcc.target/i386/avx512vl-pr88464-9.c: Ditto.
* gcc.target/i386/pr88531-1b.c: Ditto.
* gcc.target/i386/pr88531-1c.c: Ditto.
12 files changed:
gcc/config/i386/i386-options.cc
gcc/config/i386/x86-tune.def
gcc/testsuite/gcc.target/i386/avx2-gather-2.c
gcc/testsuite/gcc.target/i386/avx2-gather-6.c
gcc/testsuite/gcc.target/i386/avx512f-pr88464-1.c
gcc/testsuite/gcc.target/i386/avx512f-pr88464-5.c
gcc/testsuite/gcc.target/i386/avx512vl-pr88464-1.c
gcc/testsuite/gcc.target/i386/avx512vl-pr88464-11.c
gcc/testsuite/gcc.target/i386/avx512vl-pr88464-3.c
gcc/testsuite/gcc.target/i386/avx512vl-pr88464-9.c
gcc/testsuite/gcc.target/i386/pr88531-1b.c
gcc/testsuite/gcc.target/i386/pr88531-1c.c