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][x86] Add missing intrinsics for DIV[SD,SS] and MUL[SD,SS]


Hi,

This patch adds missing intrinsics for DIVSD, DIVSS, MULSD and MULSS instructions.

2017-05-09  Sebastian Peryt  <sebastian.peryt@intel.com>

gcc/
	* config/i386/avx512fintrin.h (_mm_mask_mul_round_sd,
	_mm_maskz_mul_round_sd, _mm_mask_mul_round_ss,
	_mm_maskz_mul_round_ss, _mm_mask_div_round_sd,
	_mm_maskz_div_round_sd, _mm_mask_div_round_ss,
	_mm_maskz_div_round_ss, _mm_mask_mul_sd, _mm_maskz_mul_sd,
	_mm_mask_mul_ss, _mm_maskz_mul_ss, _mm_mask_div_sd,
	_mm_maskz_div_sd, _mm_mask_div_ss, _mm_maskz_div_ss): New intrinsics.
	* config/i386/i386-builtin-types.def (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT,
	V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): New function type aliases.
	* config/i386/i386-builtin.def (__builtin_ia32_divsd_mask_round,
	__builtin_ia32_divss_mask_round, __builtin_ia32_mulsd_mask_round,
	__builtin_ia32_mulss_mask_round): New builtins.
	* config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT,
	V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types.
	* config/i386/sse.md (<sse>_vm<multdiv_mnemonic><mode>3<round_name>): Renamed to ...
	(<sse>_vm<multdiv_mnemonic><mode>3<mask_name><round_name>): ... this.
	(v<multdiv_mnemonic><ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|%0, %1, %<iptr>2<round_op3>}): Changed to ...
	(v<multdiv_mnemonic><ssescalarmodesuffix>\t{<round_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): ... this.

gcc/testsuite/
	* gcc.target/i386/avx512f-vdivsd-1.c (_mm_mask_div_sd,
	_mm_maskz_div_sd, _mm_mask_div_round_sd,
	_mm_maskz_div_round_sd): Test new intrinsics.
	* gcc.target/i386/avx512f-vdivsd-2.c: New.
	* gcc.target/i386/avx512f-vdivss-1.c (_mm_mask_div_ss,
	_mm_maskz_div_ss, _mm_mask_div_round_ss,
	_mm_maskz_div_round_ss): Test new intrinsics.
	* gcc.target/i386/avx512f-vdivss-2.c: New.
	* gcc.target/i386/avx512f-vmulsd-1.c (_mm_mask_mul_sd,
	_mm_maskz_mul_sd, _mm_mask_mul_round_sd,
	_mm_maskz_mul_round_sd): Test new intrinsics.
	* gcc.target/i386/avx512f-vmulsd-2.c: New.
	* gcc.target/i386/avx512f-vmulss-1.c (_mm_mask_mul_ss,
	_mm_maskz_mul_ss, _mm_mask_mul_round_ss,
	_mm_maskz_mul_round_ss): Test new intrinsics.
	* gcc.target/i386/avx512f-vmulss-2.c: New.
	* gcc.target/i386/avx-1.c (__builtin_ia32_divsd_mask_round,
	__builtin_ia32_divss_mask_round, __builtin_ia32_mulsd_mask_round,
	__builtin_ia32_mulss_mask_round): Test new builtins.
	* gcc.target/i386/sse-13.c: Ditto.
	* gcc.target/i386/sse-23.c: Ditto.
	* gcc.target/i386/sse-14.c (_mm_maskz_div_round_sd,
	_mm_maskz_div_round_ss, _mm_maskz_mul_round_sd,
	_mm_maskz_mul_round_ss): Test new intrinsics.
	* gcc.target/i386/testround-1.c: Ditto.

Is it ok for trunk?

Sebastian

Attachment: DIV[SD_SS]_MUL[SD_SS]_patch.patch
Description: DIV[SD_SS]_MUL[SD_SS]_patch.patch


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