This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch][i386, AVX] Adding missing mask[z]_range[_round]_s[d,s] intrinsics


Hi,

This patch adds missing intrinsics for _mm_mask[z]_range[_round]_[sd,ss].

04.12.2017 Olga Makhotina  <olga.makhotina@intel.com>

gcc/
	* config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
	_mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
	_mm_maskz_range_ss, _mm_mask_range_round_ss,
	_mm_maskz_range_round_ss): New intrinsics.
	(__builtin_ia32_rangesd128_round, __builtin_ia32_rangess128_round): Remove.
	(__builtin_ia32_rangesd128_mask_round,
	__builtin_ia32_rangess128_mask_round): New builtins.
	* config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
	__builtin_ia32_rangess128_round): Remove.
	(__builtin_ia32_rangesd128_mask_round,
	__builtin_ia32_rangess128_mask_round): New builtins.
	* config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
	(ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
	((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
	"<round_saeonly_constraint>")): Changed to ...
	((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
	"<round_saeonly_scalar_constraint>")): ... this.
	("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
	%0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
	("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2, %1,
	%0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
	%2<round_saeonly_scalar_mask_op4>, %3}"): ... this.

04.12.2017 Olga Makhotina  <olga.makhotina@intel.com>

gcc/testsuite/
	* gcc.target/i386/avx512dq-vrangesd-1.c (_mm_mask_range_sd,
	_mm_maskz_range_sd, _mm_mask_range_round_sd,
	_mm_maskz_range_round_sd): Test new intrinsics.
	* gcc.target/i386/avx512dq-vrangesd-2.c (_mm_range_sd, _mm_mask_range_sd,
	_mm_maskz_range_sd, _mm_range_round_sd, _mm_mask_range_round_sd,
	_mm_maskz_range_round_sd): Test new intrinsics.
	* gcc.target/i386/avx512dq-vrangess-1.c (_mm_mask_range_ss,
	_mm_maskz_range_ss, _mm_mask_range_round_ss,
	_mm_maskz_range_round_ss): Test new intrinsics.
	* gcc.target/i386/avx512dq-vrangess-2.c (_mm_range_ss, _mm_mask_range_ss,
	_mm_maskz_range_ss, _mm_range_round_ss, _mm_mask_range_round_ss,
	_mm_maskz_range_round_ss): Test new intrinsics.
	* gcc.target/i386/avx-1.c (__builtin_ia32_rangesd128_round,
	__builtin_ia32_rangess128_round): Remove builtins.
	(__builtin_ia32_rangesd128_mask_round,
	__builtin_ia32_rangess128_mask_round): Test new builtins.
	* gcc.target/i386/sse-13.c: Ditto.
	* gcc.target/i386/sse-23.c: Ditto.

Is it ok for trunk?

Thanks,
Olga

Attachment: 0001-range.patch
Description: 0001-range.patch


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]