Skip to content
Snippets Groups Projects
Commit e2c80d23 authored by Hu, Lin1's avatar Hu, Lin1 Committed by Haochen Jiang
Browse files

[PATCH 1/2] AVX10.2: Support saturating convert instructions

gcc/ChangeLog:

	* config.gcc: Add avx10_2satcvtintrin.h and
	avx10_2-512satcvtintrin.h.
	* config/i386/i386-builtin-types.def:
	Add DEF_FUNCTION_TYPE (V8HI, V8BF, V8HI, UQI),
	(V16HI, V16BF, V16HI, UHI), (V32HI, V32BF, V32HI, USI),
	(V16SI, V16SF, V16SI, UHI, INT), (V16HI, V16BF, V16HI, UHI, INT),
	(V32HI, V32BF, V32HI, USI, INT).
	* config/i386/i386-builtin.def (BDESC): Add new builtins.
	* config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
	V32HI_FTYPE_V32BF_V32HI_USI, V16HI_FTYPE_V16BF_V16HI_UHI,
	V8HI_FTYPE_V8BF_V8HI_UQI.
	(ix86_expand_round_builtin): Handle V32HI_FTYPE_V32BF_V32HI_USI_INT,
	V16SI_FTYPE_V16SF_V16SI_UHI_INT, V16HI_FTYPE_V16BF_V16HI_UHI_INT.
	* config/i386/immintrin.h: Include avx10_2satcvtintrin.h and
	avx10_2-512savcvtintrin.h.
	* config/i386/sse.md:
	(UNSPEC_CVTNE_BF16_IBS_ITER): New iterator.
	(sat_cvt_sign_prefix): Ditto.
	(sat_cvt_trunc_prefix): Ditto.
	(UNSPEC_CVT_PH_IBS_ITER): Ditto.
	(UNSPEC_CVTT_PH_IBS_ITER): Ditto.
	(UNSPEC_CVT_PS_IBS_ITER): Ditto.
	(UNSPEC_CVTT_PS_IBS_ITER): Ditto.
	(avx10_2_cvt<sat_cvt_trunc_prefix>nebf162i<sat_cvt_sign_prefix>bs<mode><mask_name>):
	New define_insn.
	(avx10_2_cvtph2i<sat_cvt_sign_prefix>bs<mode><mask_name><round_name>):
	Ditto.
	(avx10_2_cvttph2i<sat_cvt_sign_prefix>bs<mode><mask_name><round_saeonly_name>):
	Ditto.
	(avx10_2_cvtps2i<sat_cvt_sign_prefix>bs<mode><mask_name><round_name>):
	Ditto.
	(avx10_2_cvttps2i<sat_cvt_sign_prefix>bs<mode><mask_name><round_saeonly_name>):
	Ditto.
	* config/i386/avx10_2-512satcvtintrin.h: New file.
	* config/i386/avx10_2satcvtintrin.h: Ditto.

gcc/testsuite/ChangeLog:

	* gcc.target/i386/avx-1.c: Add macros.
	* 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/avx512f-helper.h: Add new test macro.
	* gcc.target/i386/m512-check.h: Add new type.
	* gcc.target/i386/avx10_2-512-satcvt-1.c: New test.
	* gcc.target/i386/avx10_2-512-vcvtnebf162ibs-2.c: Ditto.
	* gcc.target/i386/avx10_2-512-vcvtnebf162iubs-2.c: Ditto.
	* gcc.target/i386/avx10_2-512-vcvtph2ibs-2.c: Ditto.
	* gcc.target/i386/avx10_2-512-vcvtph2iubs-2.c: Ditto.
	* gcc.target/i386/avx10_2-512-vcvtps2ibs-2.c: Ditto.
	* gcc.target/i386/avx10_2-512-vcvtps2iubs-2.c: Ditto.
	* gcc.target/i386/avx10_2-512-vcvttnebf162ibs-2.c: Ditto.
	* gcc.target/i386/avx10_2-512-vcvttnebf162iubs-2.c: Ditto.
	* gcc.target/i386/avx10_2-512-vcvttph2ibs-2.c: Ditto.
	* gcc.target/i386/avx10_2-512-vcvttph2iubs-2.c: Ditto.
	* gcc.target/i386/avx10_2-512-vcvttps2ibs-2.c: Ditto.
	* gcc.target/i386/avx10_2-512-vcvttps2iubs-2.c: Ditto.
	* gcc.target/i386/avx10_2-satcvt-1.c: Ditto.
	* gcc.target/i386/avx10_2-vcvtnebf162ibs-2.c: Ditto.
	* gcc.target/i386/avx10_2-vcvtnebf162iubs-2.c: Ditto.
	* gcc.target/i386/avx10_2-vcvtph2ibs-2.c: Ditto.
	* gcc.target/i386/avx10_2-vcvtph2iubs-2.c: Ditto.
	* gcc.target/i386/avx10_2-vcvtps2ibs-2.c: Ditto.
	* gcc.target/i386/avx10_2-vcvttnebf162ibs-2.c: Ditto.
	* gcc.target/i386/avx10_2-vcvttnebf162iubs-2.c: Ditto.
	* gcc.target/i386/avx10_2-vcvttph2ibs-2.c: Ditto.
	* gcc.target/i386/avx10_2-vcvttph2iubs-2.c: Ditto.
	* gcc.target/i386/avx10_2-vcvttps2ibs-2.c: Ditto.
	* gcc.target/i386/avx10_2-vcvttps2iubs-2.c: Ditto.
parent 5cb67ddd
No related branches found
No related tags found
Loading
Showing
with 2649 additions and 1 deletion
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment