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/x86-64: Support Intel MNI intrinsics


These 2 patches implement Intel MNI intrinsics and fix the 64bit SSE3
intrinsics. The corresponding assembler change is at

http://sourceware.org/ml/binutils/2006-02/msg00322.html


H.J.
----
gcc/

2005-11-17  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/24879
	* config/i386/i386.c (ix86_init_mmx_sse_builtins): Add
	void_ftype_di_di and void_ftype_pcvoid_di_di. Use void_ftype_di_di
	on __builtin_ia32_mwait and void_ftype_pcvoid_di_di on
	__builtin_ia32_monitor for 64bit.
	(ix86_expand_builtin): Support 64bit monitor and mwait.

	* config/i386/pmmintrin.h (_mm_monitor): Remove macro. Use
	inline function.
	(_mm_mwait): Likewise.

	* config/i386/sse.md (sse3_mwait): Make it 32bit only.
	(sse3_mwait64): New. 64bit mwait.
	(sse3_monitor): Make it 32bit only.
	(sse3_monitor64): New. 64bit monitor.

gcc/testsuite/

2005-11-17  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/24879
	* gcc.target/i386/monitor.c: New file.

2006-02-24  H.J. Lu  <hongjiu.lu@intel.com>

	* config.gcc (i[34567]86-*-*): Add tmmintrin.h to extra_headers.
	(x86_64-*-*): Likewise.

	* config/i386/i386.c (pta_flags): Add PTA_MNI.
	(override_options): Check MNI.
	(ix86_builtins): Add IX86_BUILTIN_PHADDW, IX86_BUILTIN_PHADDD,
	IX86_BUILTIN_PHADDSW, IX86_BUILTIN_PHSUBW, IX86_BUILTIN_PHSUBD,
	IX86_BUILTIN_PHSUBSW, IX86_BUILTIN_PMADDUBSW,
	IX86_BUILTIN_PMULHRSW, IX86_BUILTIN_PSHUFB,
	IX86_BUILTIN_PSIGNB, IX86_BUILTIN_PSIGNW, IX86_BUILTIN_PSIGND,
	IX86_BUILTIN_PALIGNR, IX86_BUILTIN_PABSB, IX86_BUILTIN_PABSW,
	IX86_BUILTIN_PABSD, IX86_BUILTIN_PHADDW128,
	IX86_BUILTIN_PHADDD128, IX86_BUILTIN_PHADDSW128,
	IX86_BUILTIN_PHSUBW128, IX86_BUILTIN_PHSUBD128,
	IX86_BUILTIN_PHSUBSW128, IX86_BUILTIN_PMADDUBSW128,
	IX86_BUILTIN_PMULHRSW128, IX86_BUILTIN_PSHUFB128,
	IX86_BUILTIN_PSIGNB128, IX86_BUILTIN_PSIGNW128,
	IX86_BUILTIN_PSIGND128, IX86_BUILTIN_PALIGNR128,
	IX86_BUILTIN_PABSB128, IX86_BUILTIN_PABSW128 and
	IX86_BUILTIN_PABSD128.
	(bdesc_2arg): Add MNI.
	(bdesc_1arg): Likewise.
	(ix86_init_mmx_sse_builtins): Support MNI.
	(ix86_expand_builtin): Likewise.
	* config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Likewise.

	* config/i386/i386.md (UNSPEC_LDQQU): Renamed to ...
	(UNSPEC_LDDQU): This.
	(UNSPEC_PSHUFB): New.
	(UNSPEC_PSIGN): Likewise.
	(UNSPEC_PALIGNR): Likewise.
	Include mmx.md before sse.md.

	* config/i386/i386.opt: Add -mmni.

	* config/i386/sse.md (sse3_lddqu): Updated.
	(mni_phaddwv8hi3): New pattern for MNI.
	(mni_phaddwv4hi3): Likewise.
	(mni_phadddv4si3): Likewise.
	(mni_phadddv2si3): Likewise.
	(mni_phaddswv8hi3): Likewise.
	(mni_phaddswv4hi3): Likewise.
	(mni_phsubwv8hi3): Likewise.
	(mni_phsubwv4hi3): Likewise.
	(mni_phsubdv4si3): Likewise.
	(mni_phsubdv2si3): Likewise.
	(mni_phsubswv8hi3): Likewise.
	(mni_phsubswv4hi3): Likewise.
	(mni_pmaddubswv8hi3): Likewise.
	(mni_pmaddubswv4hi3): Likewise.
	(mni_pmulhrswv8hi3): Likewise.
	(mni_pmulhrswv4hi3): Likewise.
	(mni_pshufbv16qi3): Likewise.
	(mni_pshufbv8qi3): Likewise.
	(mni_psign<mode>3): Likewise.
	(mni_psign<mode>3): Likewise.
	(mni_palignrti): Likewise.
	(mni_palignrdi): Likewise.
	(mni_pabs<mode>2): Likewise.
	(mni_pabs<mode>2): Likewise.

	* config/i386/tmmintrin.h: New file.

	* doc/extend.texi: Document MNI built-in functions.

	* doc/invoke.texi: Document -mmni/-mno-mni switches.

Attachment: gcc-x86-sse3-64bit-7.patch
Description: Text document

Attachment: gcc-4.1-mni-2.patch
Description: Text document


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