Hi,
I've prepared a patch for http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49547

I've also prepared a bunch of tests for lzcnt instuction generation.

ChangeLog entry:
2011-07-26  Kirill Yukhin  <kirill.yuk...@intel.com>

        PR target/49547
        * config/i386/abmintrin.h (head): Added check if __LZCNT__ is defined.
        (__lzcnt32): Fixed name according to Spec.
        * config/i386/bmiintrin.h (head): Updated year for Copyright.
        (__lzcnt_u16): Removed.
        (__lzcnt_u32): Removed.
        (__lzcnt_u64): Likewise.
        * config/i386/cpuid.h: New bit defined.
        * 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 entry to array.
        (ix86_option_override_internal): Handling LZCNT option.
        (ix86_valid_target_attribute_inner_p): Likewise.
        (bdesc_args): built-in for LZCNT is extended to work under
        another flag.
        * config/i386/i386.h (TARGET_LZCNT): New.
        (CLZ_DEFINED_VALUE_AT_ZERO): Updated flag name.
        * config/i386/i386.md (clz<mode>2): Target fixed.
        (clz<mode>2_lzcnt): Likewise.
        * doc/invoke.texi: Added mention of -mlzcnt option.
        * doc/extend.texi: Likewise.


testsuite/ChangeLog entry:
2011-07-26  Kirill Yukhin  <kirill.yuk...@intel.com>

        * lib/target-supports.exp (check_lzcnt_hw_available): New.
        (check_effective_target_lzcnt_runtime): Likewise.
        (check_effective_target_lzcnt): Likewise.
        * gcc.target/i386/lzcnt-1.c: New test.
        * gcc.target/i386/lzcnt-2.c: Likewise.
        * gcc.target/i386/lzcnt-2a.c: Likewise.
        * gcc.target/i386/lzcnt-3.c: New test.
        * gcc.target/i386/lzcnt-4.c: Likewise.
        * gcc.target/i386/lzcnt-4a.c: Likewise.
        * gcc.target/i386/lzcnt-5.c: Likewise.
        * gcc.target/i386/lzcnt-6.c: Likewise.
        * gcc.target/i386/lzcnt-6a.c: Likewise.
        * gcc.target/i386/lzcnt-check.h: New driver to run LZCNT-*
        tests only if HW available.

Bootstrapped, make-check-ed. No new fails.
OK for trunk?

Thanks, K

Attachment: lzcnt.gcc.patch
Description: Binary data

Reply via email to