public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/102976] New: MMA test case emits wrong code when building a vector pair
@ 2021-10-28  0:33 bergner at gcc dot gnu.org
  2021-10-28  0:35 ` [Bug target/102976] " bergner at gcc dot gnu.org
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: bergner at gcc dot gnu.org @ 2021-10-28  0:33 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 102976
           Summary: MMA test case emits wrong code when building a vector
                    pair
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: bergner at gcc dot gnu.org
  Target Milestone: ---

The following test case generates wrong code using trunk and GCC11:

[bergner@pike debug]$ cat bug.c 
#include <altivec.h>
void
bug (__vector_pair *dst)
{
  register vector unsigned char vec0 asm ("vs44");
  register vector unsigned char vec1 asm ("vs32");
  __builtin_vsx_build_pair (dst, vec0, vec1);
}
[bergner@pike debug]$ gcc -S -O2 -mcpu=power10 bug.c
[bergner@pike debug]$ cat bug.s 
bug:
        xxlor 0,32,32
        xxlor 1,32,32
        stxvp 0,0(3)
        blr

The above only copies one of the inputs into the output pair, when it should
copy both r44 and r32, like so:
bug:
        xxlor 0,44,44
        xxlor 1,32,32
        stxvp 0,0(3)
        blr

This is due to a missing early clobber in the MMA patterns.  I have a fix I'm
testing.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug target/102976] MMA test case emits wrong code when building a vector pair
  2021-10-28  0:33 [Bug target/102976] New: MMA test case emits wrong code when building a vector pair bergner at gcc dot gnu.org
@ 2021-10-28  0:35 ` bergner at gcc dot gnu.org
  2021-10-28  0:35 ` bergner at gcc dot gnu.org
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: bergner at gcc dot gnu.org @ 2021-10-28  0:35 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |chip.kerchner at ibm dot com,
                   |                            |dje at gcc dot gnu.org,
                   |                            |raji at linux dot vnet.ibm.com,
                   |                            |segher at gcc dot gnu.org,
                   |                            |wschmidt at gcc dot gnu.org
           Assignee|unassigned at gcc dot gnu.org      |bergner at gcc dot gnu.org
             Target|                            |powerpc*-*-*
   Last reconfirmed|                            |2021-10-27

--- Comment #1 from Peter Bergner <bergner at gcc dot gnu.org> ---
Mine.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug target/102976] MMA test case emits wrong code when building a vector pair
  2021-10-28  0:33 [Bug target/102976] New: MMA test case emits wrong code when building a vector pair bergner at gcc dot gnu.org
  2021-10-28  0:35 ` [Bug target/102976] " bergner at gcc dot gnu.org
@ 2021-10-28  0:35 ` bergner at gcc dot gnu.org
  2021-10-28  1:44 ` bergner at gcc dot gnu.org
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: bergner at gcc dot gnu.org @ 2021-10-28  0:35 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
     Ever confirmed|0                           |1
   Last reconfirmed|2021-10-27 00:00:00         |2021-10-28

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug target/102976] MMA test case emits wrong code when building a vector pair
  2021-10-28  0:33 [Bug target/102976] New: MMA test case emits wrong code when building a vector pair bergner at gcc dot gnu.org
  2021-10-28  0:35 ` [Bug target/102976] " bergner at gcc dot gnu.org
  2021-10-28  0:35 ` bergner at gcc dot gnu.org
@ 2021-10-28  1:44 ` bergner at gcc dot gnu.org
  2021-11-16 18:15 ` cvs-commit at gcc dot gnu.org
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: bergner at gcc dot gnu.org @ 2021-10-28  1:44 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
                URL|                            |https://gcc.gnu.org/piperma
                   |                            |il/gcc-patches/2021-October
                   |                            |/582749.html
   Target Milestone|---                         |12.0

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug target/102976] MMA test case emits wrong code when building a vector pair
  2021-10-28  0:33 [Bug target/102976] New: MMA test case emits wrong code when building a vector pair bergner at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2021-10-28  1:44 ` bergner at gcc dot gnu.org
@ 2021-11-16 18:15 ` cvs-commit at gcc dot gnu.org
  2021-11-29 17:12 ` cvs-commit at gcc dot gnu.org
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2021-11-16 18:15 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Peter Bergner <bergner@gcc.gnu.org>:

https://gcc.gnu.org/g:4cdf7db9a39d18bd536d816a5751d4d3cf23808b

commit r12-5319-g4cdf7db9a39d18bd536d816a5751d4d3cf23808b
Author: Peter Bergner <bergner@linux.ibm.com>
Date:   Tue Nov 16 12:14:22 2021 -0600

    rs6000: MMA test case emits wrong code when building a vector pair
[PR102976]

    PR102976 shows a test case where we generate wrong code when building
    a vector pair from 2 vector registers.  The bug here is that with unlucky
    register assignments, we can clobber one of the input operands before
    we write both registers of the output operand.  The solution is to use
    early-clobbers in the assemble pair and accumulator patterns.

    2021-11-16  Peter Bergner  <bergner@linux.ibm.com>

    gcc/
            PR target/102976
            * config/rs6000/mma.md (*vsx_assemble_pair): Add early-clobber for
            output operand.
            (*mma_assemble_acc): Likewise.

    gcc/testsuite/
            PR target/102976
            * gcc.target/powerpc/pr102976.c: New test.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug target/102976] MMA test case emits wrong code when building a vector pair
  2021-10-28  0:33 [Bug target/102976] New: MMA test case emits wrong code when building a vector pair bergner at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2021-11-16 18:15 ` cvs-commit at gcc dot gnu.org
@ 2021-11-29 17:12 ` cvs-commit at gcc dot gnu.org
  2022-01-15  6:00 ` cvs-commit at gcc dot gnu.org
  2022-02-23 18:08 ` bergner at gcc dot gnu.org
  6 siblings, 0 replies; 8+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2021-11-29 17:12 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-11 branch has been updated by Peter Bergner
<bergner@gcc.gnu.org>:

https://gcc.gnu.org/g:2b6cfe7c4ee98b2c38e6a6d98742f1efb2fc9a79

commit r11-9341-g2b6cfe7c4ee98b2c38e6a6d98742f1efb2fc9a79
Author: Peter Bergner <bergner@linux.ibm.com>
Date:   Tue Nov 16 12:14:22 2021 -0600

    rs6000: MMA test case emits wrong code when building a vector pair
[PR102976]

    PR102976 shows a test case where we generate wrong code when building
    a vector pair from 2 vector registers.  The bug here is that with unlucky
    register assignments, we can clobber one of the input operands before
    we write both registers of the output operand.  The solution is to use
    early-clobbers in the assemble pair and accumulator patterns.

    2021-11-16  Peter Bergner  <bergner@linux.ibm.com>

    gcc/
            PR target/102976
            * config/rs6000/mma.md (*vsx_assemble_pair): Add early-clobber for
            output operand.
            (*mma_assemble_acc): Likewise.

    gcc/testsuite/
            PR target/102976
            * gcc.target/powerpc/pr102976.c: New test.

    (cherry picked from commit 4cdf7db9a39d18bd536d816a5751d4d3cf23808b)

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug target/102976] MMA test case emits wrong code when building a vector pair
  2021-10-28  0:33 [Bug target/102976] New: MMA test case emits wrong code when building a vector pair bergner at gcc dot gnu.org
                   ` (4 preceding siblings ...)
  2021-11-29 17:12 ` cvs-commit at gcc dot gnu.org
@ 2022-01-15  6:00 ` cvs-commit at gcc dot gnu.org
  2022-02-23 18:08 ` bergner at gcc dot gnu.org
  6 siblings, 0 replies; 8+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-01-15  6:00 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-10 branch has been updated by Peter Bergner
<bergner@gcc.gnu.org>:

https://gcc.gnu.org/g:7729d2c96d5eac9537c78d368bbc037bea13f988

commit r10-10399-g7729d2c96d5eac9537c78d368bbc037bea13f988
Author: Peter Bergner <bergner@linux.ibm.com>
Date:   Tue Nov 16 12:14:22 2021 -0600

    rs6000: MMA test case emits wrong code when building a vector pair
[PR102976]

    PR102976 shows a test case where we generate wrong code when building
    a vector pair from 2 vector registers.  The bug here is that with unlucky
    register assignments, we can clobber one of the input operands before
    we write both registers of the output operand.  The solution is to use
    early-clobbers in the assemble pair and accumulator patterns.

    2021-11-16  Peter Bergner  <bergner@linux.ibm.com>

    gcc/
            PR target/102976
            * config/rs6000/mma.md (*vsx_assemble_pair): Add early-clobber for
            output operand.
            (*mma_assemble_acc): Likewise.

    gcc/testsuite/
            PR target/102976
            * gcc.target/powerpc/pr102976.c: New test.

    (cherry picked from commit 4cdf7db9a39d18bd536d816a5751d4d3cf23808b)

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug target/102976] MMA test case emits wrong code when building a vector pair
  2021-10-28  0:33 [Bug target/102976] New: MMA test case emits wrong code when building a vector pair bergner at gcc dot gnu.org
                   ` (5 preceding siblings ...)
  2022-01-15  6:00 ` cvs-commit at gcc dot gnu.org
@ 2022-02-23 18:08 ` bergner at gcc dot gnu.org
  6 siblings, 0 replies; 8+ messages in thread
From: bergner at gcc dot gnu.org @ 2022-02-23 18:08 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|ASSIGNED                    |RESOLVED

--- Comment #5 from Peter Bergner <bergner at gcc dot gnu.org> ---
Fixed everywhere.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2022-02-23 18:08 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-28  0:33 [Bug target/102976] New: MMA test case emits wrong code when building a vector pair bergner at gcc dot gnu.org
2021-10-28  0:35 ` [Bug target/102976] " bergner at gcc dot gnu.org
2021-10-28  0:35 ` bergner at gcc dot gnu.org
2021-10-28  1:44 ` bergner at gcc dot gnu.org
2021-11-16 18:15 ` cvs-commit at gcc dot gnu.org
2021-11-29 17:12 ` cvs-commit at gcc dot gnu.org
2022-01-15  6:00 ` cvs-commit at gcc dot gnu.org
2022-02-23 18:08 ` bergner at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).