Support clwb x86 instruction

Programming / Compilers / GCC - tocarip [138bc75d-0d04-0410-961f-82ee72b054a4] - 21 November 2014 09:52 UTC

gcc/
- common/config/i386/i386-common.c (OPTION_MASK_ISA_CLWB_UNSET, OPTION_MASK_ISA_CLWB_SET): New. (ix86_handle_option): Handle OPT_mclwb.
- config.gcc: Add clwbintrin.h.
- config/i386/clwbintrin.h: New file.
- config/i386/cpuid.h (bit_CLWB): Define.
- config/i386/driver-i386.c (host_detect_local_cpu): Detect clwb.
- config/i386/i386-c.c (ix86_target_macros_internal): Define __CLWB__.
- config/i386/i386.c (ix86_target_string): Add -mclwb. (PTA_CLWB): Define. (ix86_option_override_internal): Handle new option. (ix86_valid_target_attribute_inner_p): Add clwb. (ix86_builtins): Add IX86_BUILTIN_CLWB. (ix86_init_mmx_sse_builtins): Add __builtin_ia32_clwb. (ix86_expand_builtin): Handle IX86_BUILTIN_CLWB.
- config/i386/i386.h (TARGET_CLWB, TARGET_CLWB_P): Define.
- config/i386/i386.md (unspecv): Add UNSPECV_CLWB. (clwb): New instruction.
- config/i386/i386.opt: Add mclwb.
- config/i386/x86intrin.h: Include clwbintrin.h.

gcc/testsuite/

- g++.dg/other/i386-2.C: Add -mclwb.
- g++.dg/other/i386-3.C: Ditto.
- gcc.target/i386/clwb-1.c: New test.
- gcc.target/i386/sse-12.c: Add new options.
- gcc.target/i386/sse-13.c: Ditto.
- gcc.target/i386/sse-14.c: Ditto.
- gcc.target/i386/sse-22.c: Ditto.
- gcc.target/i386/sse-23.c: Ditto.

741c191 Support clwb x86 instruction.
gcc/ChangeLog | 24 ++++++++++++++++
gcc/common/config/i386/i386-common.c | 15 ++++++++++
gcc/config.gcc | 4 +--
gcc/config/i386/clwbintrin.h | 49 ++++++++++++++++++++++++++++++++
gcc/config/i386/cpuid.h | 1 +
gcc/config/i386/driver-i386.c | 6 ++--
gcc/config/i386/i386-c.c | 2 ++
gcc/config/i386/i386.c | 23 +++++++++++++++
gcc/config/i386/i386.h | 2 ++
gcc/config/i386/i386.md | 12 ++++++++
gcc/config/i386/i386.opt | 4 +++
gcc/config/i386/x86intrin.h | 2 ++
gcc/testsuite/ChangeLog | 11 +++++++
gcc/testsuite/g++.dg/other/i386-2.C | 2 +-
gcc/testsuite/g++.dg/other/i386-3.C | 2 +-
gcc/testsuite/gcc.target/i386/clwb-1.c | 11 +++++++
gcc/testsuite/gcc.target/i386/sse-12.c | 2 +-
gcc/testsuite/gcc.target/i386/sse-13.c | 2 +-
gcc/testsuite/gcc.target/i386/sse-14.c | 2 +-
gcc/testsuite/gcc.target/i386/sse-22.c | 2 +-
gcc/testsuite/gcc.target/i386/sse-23.c | 2 +-
21 files changed, 169 insertions(+), 11 deletions(-)

Upstream: gcc.gnu.org


  • Share