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. >
bmi1-2.testcases.gcc.patch
Description: Binary data