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

            Bug ID: 86197
           Summary: POWERPC: float128 parameter passing
           Product: gcc
           Version: 7.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: lei at ca dot ibm.com
  Target Milestone: ---

Float128 should be considered qualified vector arguments and should be passed
in vector registers for homogeneous aggregates of up to 8 members.

Currently for homogeneous aggregates of 5+, they are being passed via the
stack.

$ cat a.c

struct E5 {
  __float128 a[5];
};

__float128 testfp128_05(struct E5 a) {
        return a.a[4];
}


Generated asm:

testfp128_05:
        std 3,32(1)
        std 4,40(1)
        std 5,48(1)
        std 6,56(1)
        std 7,64(1)
        std 8,72(1)
        std 9,80(1)
        std 10,88(1)
        lxv 34,96(1)
        blr


Compiler version: 
gcc (GCC) 7.3.0

Reply via email to