[Bug target/69493] Poor code generation for return of struct containing vectors on PPC64LE

bergner at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Sep 27 18:37:00 GMT 2017


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

Peter Bergner <bergner at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bergner at gcc dot gnu.org

--- Comment #6 from Peter Bergner <bergner at gcc dot gnu.org> ---
A simpler test case that shows the same problem when compiling for POWER8. When
compiling for POWER9, we get the code we want/expect:

bergner@pike:~/gcc/BUGS/PR70053$ cat pr69493-2.c 
typedef struct
{
  __vector double vx0;
  __vector double vx1;
} vec_t;

vec_t
foo (__vector double a, __vector double b)
{
  vec_t result;
  result.vx0 = a;
  result.vx1 = b;
  return result;
}

bergner@pike:~/gcc/BUGS/PR70053$
/home/bergner/gcc/build/gcc-fsf-mainline-pr70053-debug/gcc/xgcc
-B/home/bergner/gcc/build/gcc-fsf-mainline-pr70053-debug/gcc -S -O2
-mcpu=power8 pr69493-2.c 
bergner@pike:~/gcc/BUGS/PR70053$ cat pr69493-2.s 
...
foo:
        addi 8,1,-96
        li 10,32
        xxpermdi 34,34,34,2
        xxpermdi 35,35,35,2
        li 9,48
        stxvd2x 34,8,10
        stxvd2x 35,8,9
        lxvd2x 34,8,10
        lxvd2x 35,8,9
        xxpermdi 34,34,34,2
        xxpermdi 35,35,35,2
        blr


bergner@pike:~/gcc/BUGS/PR70053$
/home/bergner/gcc/build/gcc-fsf-mainline-pr70053-debug/gcc/xgcc
-B/home/bergner/gcc/build/gcc-fsf-mainline-pr70053-debug/gcc -S -O2
-mcpu=power9 pr69493-2.c 

bergner@pike:~/gcc/BUGS/PR70053$ cat pr69493-2.s 
...
foo:
        blr


More information about the Gcc-bugs mailing list