[Bug target/90824] New: PowerPC should generate better code for SFmode splats for power8

meissner at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Jun 10 22:19:00 GMT 2019


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

            Bug ID: 90824
           Summary: PowerPC should generate better code for SFmode splats
                    for power8
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: meissner at gcc dot gnu.org
  Target Milestone: ---

For power7/power8 code generation, we should generate better code for splatting
a SFmode value from memory.

Consider the code:
vector float foo2 (float *p) { return (vector float) { *p, *p, *p, *p }; }

On Power9 we generate the following since we have load word and splat:
foo2:
        lxvwsx 34,0,3
        blr

However on power8, we generate the following:
foo2:
        lxsspx 34,0,3
        xscvdpspn 34,34
        xxspltw 34,34,0
        blr

and on power7, we generate the similar:
foo2:
        lfs 0,0(3)
        xscvdpsp 0,0
        xxspltw 34,0,0
        blr

For this case, the better code to generate is:
foo2:
        lfiwzx 0,0,3
        xxspltw 34,0,0
        blr


More information about the Gcc-bugs mailing list