[Bug target/81593] Optimize PowerPC vector set from vector extract
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 MeissnerPR 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
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
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 MeissnerBack 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
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 MeissnerBack 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
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 MeissnerBack 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
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 MeissnerPR 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
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
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.