[Bug target/81593] Optimize PowerPC vector set from vector extract

2017-09-13 Thread aldyh at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81593

--- Comment #7 from Aldy Hernandez  ---
Author: aldyh
Date: Wed Sep 13 16:38:06 2017
New Revision: 252334

URL: https://gcc.gnu.org/viewcvs?rev=252334=gcc=rev
Log:
[gcc]
2017-08-07  Michael Meissner  

PR target/81593
* config/rs6000/vsx.md (vsx_concat_, VSX_D): Cleanup
constraints since the -mupper-regs-* switches have been
eliminated.
(vsx_concat__1): New combiner insns to recognize inserting
into a vector from a double word element that was extracted from
another vector, and eliminate extra XXPERMDI instructions.
(vsx_concat__2): Likewise.
(vsx_concat__3): Likewise.
(vsx_set_, VSX_D): Rewrite vector set in terms of vector
concat to allow optimizing inserts from previous extracts.

[gcc/testsuite]
2017-08-07  Michael Meissner  

PR target/81593
* gcc.target/powerpc/vec-setup.h: New tests to test various
combinations of setting up vectors of 2 double word elements.
* gcc.target/powerpc/vec-setup-long.c: Likewise.
* gcc.target/powerpc/vec-setup-double.c: Likewise.
* gcc.target/powerpc/vec-setup-be-long.c: Likewise.
* gcc.target/powerpc/vec-setup-be-double.c: Likewise.
* gcc.target/powerpc/vsx-extract-6.c: New tests for optimzing
vector inserts from vector extracts.
* gcc.target/powerpc/vsx-extract-7.c: Likewise.

Added:
branches/range-gen2/gcc/testsuite/gcc.target/powerpc/vec-setup-be-double.c
branches/range-gen2/gcc/testsuite/gcc.target/powerpc/vec-setup-be-long.c
branches/range-gen2/gcc/testsuite/gcc.target/powerpc/vec-setup-double.c
branches/range-gen2/gcc/testsuite/gcc.target/powerpc/vec-setup-long.c
branches/range-gen2/gcc/testsuite/gcc.target/powerpc/vec-setup.h
branches/range-gen2/gcc/testsuite/gcc.target/powerpc/vsx-extract-6.c
branches/range-gen2/gcc/testsuite/gcc.target/powerpc/vsx-extract-7.c
Modified:
branches/range-gen2/gcc/ChangeLog
branches/range-gen2/gcc/config/rs6000/vsx.md
branches/range-gen2/gcc/testsuite/ChangeLog

[Bug target/81593] Optimize PowerPC vector set from vector extract

2017-08-30 Thread meissner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81593

Michael Meissner  changed:

   What|Removed |Added

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

--- Comment #6 from Michael Meissner  ---
Fix applied in trunk, gcc-7, and gcc-6 branches.

[Bug target/81593] Optimize PowerPC vector set from vector extract

2017-08-30 Thread meissner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81593

--- Comment #5 from Michael Meissner  ---
Author: meissner
Date: Wed Aug 30 13:38:27 2017
New Revision: 251532

URL: https://gcc.gnu.org/viewcvs?rev=251532=gcc=rev
Log:
[gcc]
2017-08-30  Michael Meissner  

Back port from trunk
2017-08-07  Michael Meissner  

PR target/81593
* config/rs6000/vsx.md (vsx_concat__1): New combiner insns
to recognize inserting into a vector from a double word element
that was extracted from another vector, and eliminate extra
XXPERMDI instructions.
(vsx_concat__2): Likewise.
(vsx_concat__3): Likewise.
(vsx_set_, VSX_D): Rewrite vector set in terms of vector
concat to allow optimizing inserts from previous extracts.

[gcc/testsuite]
2017-08-30  Michael Meissner  

Back port from trunk
2017-08-07  Michael Meissner  

PR target/81593
* gcc.target/powerpc/vec-setup.h: New tests to test various
combinations of setting up vectors of 2 double word elements.
* gcc.target/powerpc/vec-setup-long.c: Likewise.
* gcc.target/powerpc/vec-setup-double.c: Likewise.
* gcc.target/powerpc/vec-setup-be-long.c: Likewise.
* gcc.target/powerpc/vec-setup-be-double.c: Likewise.
* gcc.target/powerpc/vsx-extract-6.c: New tests for optimzing
vector inserts from vector extracts.
* gcc.target/powerpc/vsx-extract-7.c: Likewise.


Added:
   
branches/gcc-6-branch/gcc/testsuite/gcc.target/powerpc/vec-setup-be-double.c
  - copied unchanged from r251429,
trunk/gcc/testsuite/gcc.target/powerpc/vec-setup-be-double.c
branches/gcc-6-branch/gcc/testsuite/gcc.target/powerpc/vec-setup-be-long.c
  - copied unchanged from r251429,
trunk/gcc/testsuite/gcc.target/powerpc/vec-setup-be-long.c
branches/gcc-6-branch/gcc/testsuite/gcc.target/powerpc/vec-setup-double.c
  - copied unchanged from r251429,
trunk/gcc/testsuite/gcc.target/powerpc/vec-setup-double.c
branches/gcc-6-branch/gcc/testsuite/gcc.target/powerpc/vec-setup-long.c
  - copied unchanged from r251429,
trunk/gcc/testsuite/gcc.target/powerpc/vec-setup-long.c
branches/gcc-6-branch/gcc/testsuite/gcc.target/powerpc/vec-setup.h
  - copied unchanged from r251429,
trunk/gcc/testsuite/gcc.target/powerpc/vec-setup.h
branches/gcc-6-branch/gcc/testsuite/gcc.target/powerpc/vsx-extract-6.c
branches/gcc-6-branch/gcc/testsuite/gcc.target/powerpc/vsx-extract-7.c
Modified:
branches/gcc-6-branch/gcc/ChangeLog
branches/gcc-6-branch/gcc/config/rs6000/vsx.md
branches/gcc-6-branch/gcc/testsuite/ChangeLog

[Bug target/81593] Optimize PowerPC vector set from vector extract

2017-08-29 Thread meissner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81593

--- Comment #4 from Michael Meissner  ---
Author: meissner
Date: Wed Aug 30 01:14:05 2017
New Revision: 251446

URL: https://gcc.gnu.org/viewcvs?rev=251446=gcc=rev
Log:
2017-08-29  Michael Meissner  

Back port from trunk
2017-08-07  Michael Meissner  

PR target/81593
* gcc.target/powerpc/vsx-extract-6.c: New tests for optimzing
vector inserts from vector extracts.
* gcc.target/powerpc/vsx-extract-7.c: Likewise.


Added:
branches/gcc-7-branch/gcc/testsuite/gcc.target/powerpc/vsx-extract-6.c
  - copied unchanged from r251429,
trunk/gcc/testsuite/gcc.target/powerpc/vsx-extract-6.c
branches/gcc-7-branch/gcc/testsuite/gcc.target/powerpc/vsx-extract-7.c
  - copied unchanged from r251429,
trunk/gcc/testsuite/gcc.target/powerpc/vsx-extract-7.c

[Bug target/81593] Optimize PowerPC vector set from vector extract

2017-08-29 Thread meissner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81593

--- Comment #3 from Michael Meissner  ---
Author: meissner
Date: Wed Aug 30 01:12:21 2017
New Revision: 251445

URL: https://gcc.gnu.org/viewcvs?rev=251445=gcc=rev
Log:
[gcc]
2017-08-29  Michael Meissner  

Back port from trunk
2017-08-07  Michael Meissner  

PR target/81593
* config/rs6000/vsx.md (vsx_concat__1): New combiner insns
to recognize inserting into a vector from a double word element
that was extracted from another vector, and eliminate extra
XXPERMDI instructions.
(vsx_concat__2): Likewise.
(vsx_concat__3): Likewise.
(vsx_set_, VSX_D): Rewrite vector set in terms of vector
concat to allow optimizing inserts from previous extracts.

[gcc/testsuite]
2017-08-29  Michael Meissner  

Back port from trunk
2017-08-07  Michael Meissner  

PR target/81593
* gcc.target/powerpc/vec-setup.h: New tests to test various
combinations of setting up vectors of 2 double word elements.
* gcc.target/powerpc/vec-setup-long.c: Likewise.
* gcc.target/powerpc/vec-setup-double.c: Likewise.
* gcc.target/powerpc/vec-setup-be-long.c: Likewise.
* gcc.target/powerpc/vec-setup-be-double.c: Likewise.


Added:
   
branches/gcc-7-branch/gcc/testsuite/gcc.target/powerpc/vec-setup-be-double.c
  - copied unchanged from r251429,
trunk/gcc/testsuite/gcc.target/powerpc/vec-setup-be-double.c
branches/gcc-7-branch/gcc/testsuite/gcc.target/powerpc/vec-setup-be-long.c
  - copied unchanged from r251429,
trunk/gcc/testsuite/gcc.target/powerpc/vec-setup-be-long.c
branches/gcc-7-branch/gcc/testsuite/gcc.target/powerpc/vec-setup-double.c
  - copied unchanged from r251429,
trunk/gcc/testsuite/gcc.target/powerpc/vec-setup-double.c
branches/gcc-7-branch/gcc/testsuite/gcc.target/powerpc/vec-setup-long.c
  - copied unchanged from r251429,
trunk/gcc/testsuite/gcc.target/powerpc/vec-setup-long.c
branches/gcc-7-branch/gcc/testsuite/gcc.target/powerpc/vec-setup.h
  - copied unchanged from r251429,
trunk/gcc/testsuite/gcc.target/powerpc/vec-setup.h
Modified:
branches/gcc-7-branch/gcc/ChangeLog
branches/gcc-7-branch/gcc/config/rs6000/vsx.md
branches/gcc-7-branch/gcc/testsuite/ChangeLog

[Bug target/81593] Optimize PowerPC vector set from vector extract

2017-08-07 Thread meissner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81593

--- Comment #2 from Michael Meissner  ---
Author: meissner
Date: Mon Aug  7 23:51:27 2017
New Revision: 250936

URL: https://gcc.gnu.org/viewcvs?rev=250936=gcc=rev
Log:
[gcc]
2017-08-07  Michael Meissner  

PR target/81593
* config/rs6000/vsx.md (vsx_concat_, VSX_D): Cleanup
constraints since the -mupper-regs-* switches have been
eliminated.
(vsx_concat__1): New combiner insns to recognize inserting
into a vector from a double word element that was extracted from
another vector, and eliminate extra XXPERMDI instructions.
(vsx_concat__2): Likewise.
(vsx_concat__3): Likewise.
(vsx_set_, VSX_D): Rewrite vector set in terms of vector
concat to allow optimizing inserts from previous extracts.

[gcc/testsuite]
2017-08-07  Michael Meissner  

PR target/81593
* gcc.target/powerpc/vec-setup.h: New tests to test various
combinations of setting up vectors of 2 double word elements.
* gcc.target/powerpc/vec-setup-long.c: Likewise.
* gcc.target/powerpc/vec-setup-double.c: Likewise.
* gcc.target/powerpc/vec-setup-be-long.c: Likewise.
* gcc.target/powerpc/vec-setup-be-double.c: Likewise.
* gcc.target/powerpc/vsx-extract-6.c: New tests for optimzing
vector inserts from vector extracts.
* gcc.target/powerpc/vsx-extract-7.c: Likewise.


Added:
trunk/gcc/testsuite/gcc.target/powerpc/vec-setup-be-double.c
trunk/gcc/testsuite/gcc.target/powerpc/vec-setup-be-long.c
trunk/gcc/testsuite/gcc.target/powerpc/vec-setup-double.c
trunk/gcc/testsuite/gcc.target/powerpc/vec-setup-long.c
trunk/gcc/testsuite/gcc.target/powerpc/vec-setup.h
trunk/gcc/testsuite/gcc.target/powerpc/vsx-extract-6.c
trunk/gcc/testsuite/gcc.target/powerpc/vsx-extract-7.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/rs6000/vsx.md
trunk/gcc/testsuite/ChangeLog

[Bug target/81593] Optimize PowerPC vector set from vector extract

2017-07-27 Thread meissner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81593

Michael Meissner  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2017-07-27
 Ever confirmed|0   |1

[Bug target/81593] Optimize PowerPC vector set from vector extract

2017-07-27 Thread meissner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81593

--- Comment #1 from Michael Meissner  ---
Created attachment 41852
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41852=edit
Proposed patch to fix the problem

Checked on power7 big endian and power8 little endian.