https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107757

--- Comment #3 from Michael Meissner <meissner at gcc dot gnu.org> ---
As Segher says, the test is not quite correct.  I would write it as:

vector long long lsb64_opt()
{
   vector long long a = vec_splats(~0LL);
   __asm__("vsrd %0,%1,%2":"=v"(a):"v"(a),"v"(a));
   return a;
}

or:


vector long long lsb64_opt()
{
   vector long long a = vec_splats(~0LL);
   __asm__("vsrd %0,%1,%1":"=v"(a):"v"(a));
   return a;
}

or even:

vector long long lsb64_opt()
{
   vector long long a = vec_splats(~0LL);
   __asm__("vsrd %0,%0,%0":"+v"(a));
   return a;
}

Reply via email to