Just have a closer look to ABM intrinsics support in GCC Seems, we have popcnt support in separate file: popcntintrin.h
So, after I move lzcnt intrinsics to lzcntintrin.h, abmintrin will become useless and have to be removed at all K On Wed, Jul 27, 2011 at 6:20 PM, H.J. Lu <hjl.to...@gmail.com> wrote: > On Wed, Jul 27, 2011 at 7:06 AM, Kirill Yukhin <kirill.yuk...@gmail.com> > wrote: >> Okay, >> Uros, thanks for correcting me. Here is updated Changelogs and patch. >> >> ChangeLog entry: >> 2011-07-27 Kirill Yukhin <kirill.yuk...@intel.com> >> >> PR target/49547 >> * config/i386/abmintrin.h (head): Check if __LZCNT__ is defined. >> (__lzcnt): Rename to ... >> (__lzcnt32): ... this. >> * config/i386/bmiintrin.h (head): Update copyright year. >> (__lzcnt_u16): Removed. >> (__lzcnt_u32): Removed. >> (__lzcnt_u64): Likewise. >> * config/i386/cpuid.h: New define. >> * config/i386/driver-i386.c (host_detect_local_cpu): Detect >> LZCNT feature. >> * config/i386/i386-c.c (ix86_target_macros_internal): Define >> __LZCNT__ if needed. >> * config/i386/i386.c (ix86_target_string): New option -mlzcnt. >> (ix86_option_override_internal): Handle LZCNT option. >> (ix86_valid_target_attribute_inner_p): Likewise. >> (struct builtin_description bdesc_args) <IX86_BUILTIN_CLZS>: Update. >> * config/i386/i386.h (TARGET_LZCNT): New. >> (CLZ_DEFINED_VALUE_AT_ZERO): Update. >> * config/i386/i386.md (clz<mode>2): Update insn constraint. >> (clz<mode>2_lzcnt): Likewise. >> * doc/invoke.texi: Mention -mlzcnt option. >> * doc/extend.texi: Likewise. > > Please mention config/i386/i386.opt. It is very odd to include > abmintrin.h for lzcnt. What if someone decides to add new intrinsics > for ABM? I think it should be renamed to lzcntintrin.h and make > abmintrin.h include it instead. > > H.J. >