]> git.ipfire.org Git - thirdparty/gcc.git/commit
AVX10.2: Support convert instructions
authorLevy Hsu <admin@levyhsu.com>
Mon, 26 Aug 2024 02:53:41 +0000 (10:53 +0800)
committerHaochen Jiang <haochen.jiang@intel.com>
Mon, 26 Aug 2024 03:13:38 +0000 (11:13 +0800)
commit2a046117a8376578337dc385f171e908155782b7
tree953c61cd9d37e468232c1eadff880db2746c55cb
parentaf0a06274fce2ca64456f5b13b4bc8ff864a45e4
AVX10.2: Support convert instructions

gcc/ChangeLog:

* config.gcc: Add avx10_2-512convertintrin.h and
avx10_2convertintrin.h.
* config/i386/i386-builtin-types.def: Add new DEF_POINTER_TYPE
and DEF_FUNCTION_TYPE.
* config/i386/i386-builtin.def (BDESC): Add new builtins.
* config/i386/i386-expand.cc (ix86_expand_args_builtin):
Handle AVX10.2.
(ix86_expand_round_builtin): Ditto.
* config/i386/immintrin.h: Include avx10_2-512convertintrin.h,
avx10_2convertintrin.h.
* config/i386/sse.md (VHF_AVX10_2): New iterator.
(bf16_ph): Add 512 bit mode.
(avx10_2_cvt2ps2phx_<mode><mask_name<round_name>): New define_insn.
(ssebvecmode): New iterator.
(UNSPEC_NECONVERTFP8_PACK): Ditto.
(neconvertfp8_pack): Ditto.
(vcvt<neconvertfp8_pack><mode><mask_name>): New define_insn.
(ssebvecmode_2): New iterator.
(UNSPEC_VCVTBIASPH2FP8_PACK): Ditto.
(biasph2fp8_pack): Ditto.
(vcvt<biasph2fp8_pack>v8hf): New expander.
(vcvt<biasph2fp8_pack>v8hf_mask): Ditto.
(*vcvt<biasph2bf8_pack>v8hf): New define_insn.
(*vcvt<biasph2fp8_pack>v8hf_mask): Ditto.
(VHF_AVX10_2_2): New iterator.
(vcvt<biasph2fp8_pack><mode><mask_name>): New define_insn.
(VHF_256_512): New iterator.
(ph2fp8suff): Ditto.
(UNSPEC_NECONVERTPH2FP8_PACK): Ditto.
(neconvertph2fp8): Ditto.
(vcvt<neconvertph2fp8>v8hf_mask): New expander.
(*vcvt<neconvertph2fp8>v8hf): New define_insn.
(*vcvt<neconvertph2fp8>v8hf_mask): Ditto.
(vcvt<neconvertph2fp8><mode><mask_name>): Ditto.
(vcvthf82ph<mode><mask_name>): Ditto.
* config/i386/avx10_2-512convertintrin.h: New file.
* config/i386/avx10_2convertintrin.h: Ditto.

gcc/testsuite/ChangeLog:

* gcc.target/i386/avx-1.c: Add macros for const.
* gcc.target/i386/avx-2.c: Ditto.
* 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.
* gcc.target/i386/avx10_2-512-convert-1.c: New test.
* gcc.target/i386/avx10_2-512-vcvt2ps2phx-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvtbiasph2bf8-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvtbiasph2bf8s-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvtbiasph2hf8-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvtbiasph2hf8s-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvthf82ph-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvtne2ph2bf8-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvtne2ph2bf8s-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvtne2ph2hf8-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvtne2ph2hf8s-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvtneph2bf8-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvtneph2bf8s-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvtneph2hf8-2.c: Ditto.
* gcc.target/i386/avx10_2-512-vcvtneph2hf8s-2.c: Ditto.
* gcc.target/i386/avx10_2-convert-1.c: Ditto.
* gcc.target/i386/avx10_2-vcvt2ps2phx-2.c: Ditto.
* gcc.target/i386/avx10_2-vcvtbiasph2bf8-2.c: Ditto.
* gcc.target/i386/avx10_2-vcvtbiasph2bf8s-2.c: Ditto.
* gcc.target/i386/avx10_2-vcvtbiasph2hf8-2.c: Ditto.
* gcc.target/i386/avx10_2-vcvtbiasph2hf8s-2.c: Ditto.
* gcc.target/i386/avx10_2-vcvthf82ph-2.c: Ditto.
* gcc.target/i386/avx10_2-vcvtne2ph2bf8-2.c: Ditto.
* gcc.target/i386/avx10_2-vcvtne2ph2bf8s-2.c: Ditto.
* gcc.target/i386/avx10_2-vcvtne2ph2hf8-2.c: Ditto.
* gcc.target/i386/avx10_2-vcvtne2ph2hf8s-2.c: Ditto.
* gcc.target/i386/avx10_2-vcvtneph2bf8-2.c: Ditto.
* gcc.target/i386/avx10_2-vcvtneph2bf8s-2.c: Ditto.
* gcc.target/i386/avx10_2-vcvtneph2hf8-2.c: Ditto.
* gcc.target/i386/avx10_2-vcvtneph2hf8s-2.c: Ditto.
* gcc.target/i386/fp8-helper.h: New helper file.

Co-authored-by: Levy Hsu <admin@levyhsu.com>
Co-authored-by: Kong Lingling <lingling.kong@intel.com>
45 files changed:
gcc/config.gcc
gcc/config/i386/avx10_2-512convertintrin.h [new file with mode: 0644]
gcc/config/i386/avx10_2convertintrin.h [new file with mode: 0644]
gcc/config/i386/i386-builtin-types.def
gcc/config/i386/i386-builtin.def
gcc/config/i386/i386-expand.cc
gcc/config/i386/immintrin.h
gcc/config/i386/sse.md
gcc/testsuite/gcc.target/i386/avx-1.c
gcc/testsuite/gcc.target/i386/avx-2.c
gcc/testsuite/gcc.target/i386/avx10_2-512-convert-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvt2ps2phx-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtbiasph2bf8-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtbiasph2bf8s-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtbiasph2hf8-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtbiasph2hf8s-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvthf82ph-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtne2ph2bf8-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtne2ph2bf8s-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtne2ph2hf8-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtne2ph2hf8s-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2bf8-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2bf8s-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2hf8-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2hf8s-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-convert-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-vcvt2ps2phx-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-vcvtbiasph2bf8-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-vcvtbiasph2bf8s-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-vcvtbiasph2hf8-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-vcvtbiasph2hf8s-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-vcvthf82ph-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-vcvtne2ph2bf8-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-vcvtne2ph2bf8s-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-vcvtne2ph2hf8-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-vcvtne2ph2hf8s-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-vcvtneph2bf8-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-vcvtneph2bf8s-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-vcvtneph2hf8-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-vcvtneph2hf8s-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/fp8-helper.h [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/sse-13.c
gcc/testsuite/gcc.target/i386/sse-14.c
gcc/testsuite/gcc.target/i386/sse-22.c
gcc/testsuite/gcc.target/i386/sse-23.c