Thanks, for inputs.
Sure, lzcnt useless here. I am updated and tested BMI detection in test driver.

testuite/ChageLog entry:
2011-07-27  Yukhin Kirill  <kirill.yuk...@intel.com>

        * gcc.target/i386/i386.exp (check_effective_target_bmi): New.
        * gcc.target/i386/bmi-andn-1.c: New test.
        * gcc.target/i386/bmi-andn-1a.c: Likewise.
        * gcc.target/i386/bmi-andn-2.c: Likewise.
        * gcc.target/i386/bmi-andn-2a.c: Likewise.
        * gcc.target/i386/bmi-bextr-1.c: Likewise.
        * gcc.target/i386/bmi-bextr-1a.c: Likewise.
        * gcc.target/i386/bmi-bextr-2.c: Likewise.
        * gcc.target/i386/bmi-bextr-2a.c: Likewise.
        * gcc.target/i386/bmi-blsi-1.c: Likewise.
        * gcc.target/i386/bmi-blsi-1a.c: Likewise.
        * gcc.target/i386/bmi-blsi-2.c: Likewise.
        * gcc.target/i386/bmi-blsi-2a.c: Likewise.
        * gcc.target/i386/bmi-blsmsk-1.c: Likewise.
        * gcc.target/i386/bmi-blsmsk-1a.c: Likewise.
        * gcc.target/i386/bmi-blsmsk-2.c: Likewise.
        * gcc.target/i386/bmi-blsmsk-2a.c: Likewise.
        * gcc.target/i386/bmi-blsr-1.c: Likewise.
        * gcc.target/i386/bmi-blsr-1a.c: Likewise.
        * gcc.target/i386/bmi-blsr-2.c: Likewise.
        * gcc.target/i386/bmi-blsr-2a.c: Likewise.
        * gcc.target/i386/bmi-tzcnt-1.c: Likewise.
        * gcc.target/i386/bmi-tzcnt-1a.c: Likewise.
        * gcc.target/i386/bmi-tzcnt-2.c: Likewise.
        * gcc.target/i386/bmi-tzcnt-2a.c: Likewise.


New patch is attached.
Is it OK?

Thanks, K

On Wed, Jul 27, 2011 at 6:23 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
> On Wed, Jul 27, 2011 at 7:08 AM, Kirill Yukhin <kirill.yuk...@gmail.com> 
> wrote:
>> Hi,
>> I've implemented a dozen of tests which cover BMI extensions
>>
>> testsuite/ChangeLog entry:
>> 2011-07-27  Yukhin Kirill  <kirill.yuk...@intel.com>
>>
>>        * gcc.target/i386/i386.exp (check_effective_target_bmi): New.
>>        * gcc.target/i386/bmi-bextr-1.c: New test.
>>        * gcc.target/i386/bmi-bextr-1a.c: Likewise.
>>        * gcc.target/i386/bmi-bextr-2.c: Likewise.
>>        * gcc.target/i386/bmi-bextr-2a.c: Likewise.
>>        * gcc.target/i386/bmi-blsi-1.c: Likewise.
>>        * gcc.target/i386/bmi-blsi-1a.c: Likewise.
>>        * gcc.target/i386/bmi-blsi-2.c: Likewise.
>>        * gcc.target/i386/bmi-blsi-2a.c: Likewise.
>>        * gcc.target/i386/bmi-blsmsk-1.c: Likewise.
>>        * gcc.target/i386/bmi-blsmsk-1a.c: Likewise.
>>        * gcc.target/i386/bmi-blsmsk-2.c: Likewise.
>>        * gcc.target/i386/bmi-blsmsk-2a.c: Likewise.
>>        * gcc.target/i386/bmi-blsr-1.c: Likewise.
>>        * gcc.target/i386/bmi-blsr-1a.c: Likewise.
>>        * gcc.target/i386/bmi-blsr-2.c: Likewise.
>>        * gcc.target/i386/bmi-blsr-2a.c: Likewise.
>>        * gcc.target/i386/bmi-lzcnt-1.c: Likewise.
>>        * gcc.target/i386/bmi-lzcnt-1a.c: Likewise.
>>        * gcc.target/i386/bmi-lzcnt-2.c: Likewise.
>>        * gcc.target/i386/bmi-lzcnt-2a.c: Likewise.
>
> Are you sure your patch have those lzcnt tests?
>
>>        * gcc.target/i386/bmi-tzcnt-1.c: Likewise.
>>        * gcc.target/i386/bmi-tzcnt-1a.c: Likewise.
>>        * gcc.target/i386/bmi-tzcnt-2.c: Likewise.
>>        * gcc.target/i386/bmi-tzcnt-2a.c: Likewise.
>>
>
> BMI check:
>
>  __asm__ ("xchg{l}\t{%%}ebx, %1\n\t"
> +          "cpuid\n\t"
> +          "xchg{l}\t{%%}ebx, %1\n\t"
> +          : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx)
> +          : "0" (7), "2" (0));
>
> is wrong.  It should be
>
>  if (__get_cpuid_max (0, NULL) < 7)
>    return 0;
>
>  __cpuid_count (7, 0, eax, ebx, ecx, edx);
>
>
> --
> H.J.
>

Attachment: bmi1-2.testcases.gcc.patch
Description: Binary data

Reply via email to