[Bug target/96446] ICE when spilling an MMA accumulator

2020-08-09 Thread bergner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96446

Peter Bergner  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #7 from Peter Bergner  ---
Fixed everywhere.

[Bug target/96446] ICE when spilling an MMA accumulator

2020-08-08 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96446

--- Comment #6 from CVS Commits  ---
The releases/gcc-10 branch has been updated by Peter Bergner
:

https://gcc.gnu.org/g:38b240a9dc7186a51e577dd3ff73c31af3cfb0ab

commit r10-8594-g38b240a9dc7186a51e577dd3ff73c31af3cfb0ab
Author: Peter Bergner 
Date:   Thu Aug 6 10:03:03 2020 -0500

rs6000: Don't ICE when spilling an MMA accumulator

When we spill an accumulator that has a known zero value, LRA will emit
a new (set (reg:PXI ...) 0) insn, but it does not use the mma_xxsetaccz
pattern to do it, leading to an unrecognized insn ICE.  The solution here
is to move the xxsetaccz instruction into the movpxi pattern and have the
xxsetaccz pattern call the move pattern.

2020-08-06  Peter Bergner  

gcc/
PR target/96446
* config/rs6000/mma.md (*movpxi): Add xxsetaccz generation.
Disable split for zero constant source operand.
(mma_xxsetaccz): Change to define_expand.  Call gen_movpxi.

gcc/testsuite/
PR target/96446
* gcc.target/powerpc/pr96446.c: New test.

(cherry picked from commit 9c376d1c166e7c8b10bba6f1675d2471ffe8447f)

[Bug target/96446] ICE when spilling an MMA accumulator

2020-08-06 Thread bergner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96446

Peter Bergner  changed:

   What|Removed |Added

   Target Milestone|--- |10.3

--- Comment #5 from Peter Bergner  ---
Fixed on trunk.  Waiting for it to bake there for a day or two before
backporting to the GCC 10 branch.

[Bug target/96446] ICE when spilling an MMA accumulator

2020-08-06 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96446

--- Comment #4 from CVS Commits  ---
The master branch has been updated by Peter Bergner :

https://gcc.gnu.org/g:9c376d1c166e7c8b10bba6f1675d2471ffe8447f

commit r11-2595-g9c376d1c166e7c8b10bba6f1675d2471ffe8447f
Author: Peter Bergner 
Date:   Thu Aug 6 10:03:03 2020 -0500

rs6000: Don't ICE when spilling an MMA accumulator

When we spill an accumulator that has a known zero value, LRA will emit
a new (set (reg:PXI ...) 0) insn, but it does not use the mma_xxsetaccz
pattern to do it, leading to an unrecognized insn ICE.  The solution here
is to move the xxsetaccz instruction into the movpxi pattern and have the
xxsetaccz pattern call the move pattern.

2020-08-06  Peter Bergner  

gcc/
PR target/96446
* config/rs6000/mma.md (*movpxi): Add xxsetaccz generation.
Disable split for zero constant source operand.
(mma_xxsetaccz): Change to define_expand.  Call gen_movpxi.

gcc/testsuite/
PR target/96446
* gcc.target/powerpc/pr96446.c: New test.

[Bug target/96446] ICE when spilling an MMA accumulator

2020-08-05 Thread bergner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96446

--- Comment #3 from Peter Bergner  ---
(In reply to Segher Boessenkool from comment #2)
> *movpxi tries to not split xxsetaccz insns, but that one is only for
> fpr_reg_operand as operands[0], while *movpxi uses something more
> general.

As we discussed offline, I have already moved xxsetaccz into the movpxi pattern
and I changed the xxsetaccz pattern (needed for the builtin expansion) into a
define_expand that just calls gen_movpxi.  This fixes the ICE above.  However,
I've hit a somewhat related issue with both __vector_pair and __vector_quad
vars being passed as a parameter to an unprototyped function leading to another
ICE or infinite loop.  I'm still digging into that.

[Bug target/96446] ICE when spilling an MMA accumulator

2020-08-05 Thread segher at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96446

--- Comment #2 from Segher Boessenkool  ---
*movpxi tries to not split xxsetaccz insns, but that one is only for
fpr_reg_operand as operands[0], while *movpxi uses something more
general.

[Bug target/96446] ICE when spilling an MMA accumulator

2020-08-03 Thread bergner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96446

Peter Bergner  changed:

   What|Removed |Added

 Target||powerpc*-*-*
 Status|UNCONFIRMED |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |bergner at gcc dot 
gnu.org
 CC||dje at gcc dot gnu.org,
   ||segher at gcc dot gnu.org,
   ||wschmidt at gcc dot gnu.org
 Ever confirmed|0   |1
   Last reconfirmed||2020-08-03

--- Comment #1 from Peter Bergner  ---
Confirmed and Mine.