Hi, This patch adds new intrinsics for new ADCX, ADOX, RDSEED and PREFETCHW instructions, introduced here: http://software.intel.com/en-us/avx/
Bootstrapped on x86-64, testing is in progress. Is it ok for trunk? Changelog entry: 2012-07-17 Michael Zolotukhin <michael.v.zolotuk...@intel.com> * common/config/i386/i386-common.c (OPTION_MASK_ISA_RDSEED_SET): New. (OPTION_MASK_ISA_ADX_SET): Likewise. (OPTION_MASK_ISA_PRFCHW_SET): Likewise. (OPTION_MASK_ISA_RDSEED_UNSET): Likewise. (OPTION_MASK_ISA_ADX_UNSET): Likewise. (OPTION_MASK_ISA_PRFCHW_UNSET): Likewise. (ix86_handle_option): Handle mrdseed, madx and mprfchw options. * config.gcc (i[34567]86-*-*): Add rdseedintrin.h, adxintrin.h and prfchwintrin.h. (x86_64-*-*): Likewise. * config/i386/adxintrin.h: New header. * config/i386/prfchwintrin.h: Likewise. * config/i386/rdseedintrin.h: Likewise. * config/i386/cpuid.h (bit_RDSEED): New. (bit_ADX): Likewise. (bit_PRFCHW): Likewise. (bit_BMI): Formatting fix. (bit_HLE): Likewise. (bit_RTM): Likewise. * config/i386/driver-i386.c (host_detect_local_cpu): Detect ADCX/ADOX, RDSEED and PREFETCHW support. * config/i386/i386-builtin-types.def (UCHAR_FTYPE_UCHAR_UINT_UINT_PINT): New function type. (UCHAR_FTYPE_UCHAR_ULONGLONG_ULONGLONG_PINT): Likewise. * config/i386/i386-c.c: Define __RDSEED__, __ADX__, and __PRFCHW__ if needed. * config/i386/i386.c (ix86_target_string): Define -mrdseed, -madx, -mprfchw options. Formatting fixes. (PTA_HLE): Formatting fix. (PTA_RDSEED): New. (PTA_ADX): Likewise. (PTA_PRFCHW): Likewise. (ix86_option_override_internal): Handle new options. (ix86_valid_target_attribute_inner_p): Add OPT_mrdseed, OPT_madx, and OPT_mprfchw. (ix86_builtins): Add IX86_BUILTIN_ADDXCARRY32, IX86_BUILTIN_ADDXCARRY64, IX86_BUILTIN_RDSEED16, IX86_BUILTIN_RDSEED32, IX86_BUILTIN_RDSEED64. (ix86_init_mmx_sse_builtins): Define corresponding built-ins. (ix86_expand_builtin): Handle these built-ins. (ix86_expand_args_builtin): Handle new function types. * config/i386/i386.h (TARGET_RDSEED): New. (TARGET_ADX): Likewise. (TARGET_PRFCHW): Likewise. * config/i386/i386.md (UNSPEC_ADCX): New. (UNSPEC_RDSEED): Likewise. (attributes): Add rdseed, adx, prfchw. (adcx<mode>): New define_insn. (rdseed<mode>): Likewise. (prefetch): Enable for TARGET_PRFCHW. (prefetchw_<mode>): New define_insn for write-prefetch. (prefetch_3dnow_<mode>): Keep only read-prefetch here. * config/i386/i386.opt (mrdseed): New. (madx): Likewise. (mprfchw): Likewise. * config/i386/mm3dnow.h: Move _m_prefetchw from here to prfchwintrin.h. * config/i386/x86intrin.h: Include prfchwintrin.h, rdseedintrin.h, adxintrin.h. testsuite/Changelog entry: 2012-07-17 Michael Zolotukhin <michael.v.zolotuk...@intel.com> * gcc.target/i386/adx-addxcarry32-1.c: New. * gcc.target/i386/adx-addxcarry32-2.c: New. * gcc.target/i386/adx-addxcarry64-1.c: New. * gcc.target/i386/adx-addxcarry64-2.c: New. * gcc.target/i386/adx-check.h: New. * gcc.target/i386/i386.exp: New. * gcc.target/i386/prefetchw-1.c: New. * gcc.target/i386/rdseed16-1.c: New. * gcc.target/i386/rdseed32-1.c: New. * gcc.target/i386/rdseed64-1.c: New. -- --- Best regards, Michael V. Zolotukhin, Software Engineer Intel Corporation.
adx_rdseed_prefetchw_intrin.patch
Description: Binary data