Hi H.J, Done now. Patch attached. Thanks, -Sri. On Tue, May 1, 2012 at 5:08 PM, H.J. Lu wrote: > On Tue, May 1, 2012 at 4:51 PM, Sriraman Tallam wrote: >> Hi, >> >> New patch attached, updated test case and fixed bugs related to >> __PRETTY_FUNCTION_. >> >> Patch also available for review here:  http://codereview.appspot.com/5752064 > > @@ -0,0 +1,39 @@ > +/* Simple test case to check if Multiversioning works.  */ > +/* { dg-do run } */ > +/* { dg-options "-O2 -fPIC" } */ > + > +#include > + > +int foo (); > +int foo () __attribute__ ((target("arch=corei7,sse4.2,popcnt"))); > +/* The target operands in this declaration and the definition are re-ordered. > +   This should still work.  */ > +int foo () __attribute__ ((target("ssse3,avx2"))); > + > +int (*p)() = &foo; > +int main () > +{ > +  return foo () + (*p)(); > +} > + > +int foo () > +{ > +  return 0; > +} > + > +int __attribute__ ((target("arch=corei7,sse4.2,popcnt"))) > +foo () > +{ > +  assert (__builtin_cpu_is ("corei7") > +         && __builtin_cpu_supports ("sse4.2") > +         && __builtin_cpu_supports ("popcnt")); > +  return 0; > +} > + > +int __attribute__ ((target("avx2,ssse3"))) > +foo () > +{ > +  assert (__builtin_cpu_supports ("avx2") > +         && __builtin_cpu_supports ("ssse3")); > +  return 0; > +} > > This test will pass if > > int foo () > { >  return 0; > } > > is selected on processors with AVX.  The run-time test should > check that the right function is selected on the target processor, > not the selected function matches the target attribute. You can > do it by returning different values for each foo and call cpuid > to check if the right foo is selected. > > You should add a testcase for __builtin_cpu_supports to check > all valid arguments. > > -- > H.J.