aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meissner <meissner@linux.ibm.com>2018-08-20 23:46:37 +0000
committerMichael Meissner <meissner@gcc.gnu.org>2018-08-20 23:46:37 +0000
commita7e94dc09a4470fde623197382e8dea4553e2d6b (patch)
tree7f70c04abface4896f049270e05a115098eb2556
parentfe7a679e8c4ce1a50afad508e094377bab365ea4 (diff)
downloadgcc-a7e94dc09a4470fde623197382e8dea4553e2d6b.zip
gcc-a7e94dc09a4470fde623197382e8dea4553e2d6b.tar.gz
gcc-a7e94dc09a4470fde623197382e8dea4553e2d6b.tar.bz2
re PR target/87033 (The compiler does not generate the LWAX instruction)
[gcc] 2018-08-20 Michael Meissner <meissner@linux.ibm.com> PR target/87033 * config/rs6000/rs6000.md (extendsi<mode>2): Change constraints from 'Y' to 'YZ' to enable the LWAX instruction to be generated for indexed loads. [gcc/testsuite] 2018-08-20 Michael Meissner <meissner@linux.ibm.com> PR target/87033 * gcc.target/powerpc/pr87033.c: New test. From-SVN: r263678
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/rs6000/rs6000.md2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr87033.c12
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ca49dba..cb9f552 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2018-08-20 Michael Meissner <meissner@linux.ibm.com>
+
+ PR target/87033
+ * config/rs6000/rs6000.md (extendsi<mode>2): Change constraints
+ from 'Y' to 'YZ' to enable the LWAX instruction to be generated
+ for indexed loads.
+
2018-08-20 Nathan Sidwell <nathan@acm.org>
Jeff Law <law@redhat.com>
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index d34fcf0..49e2090 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -988,7 +988,7 @@
"=r, r, wl, wu, wj, wK, wH, wr")
(sign_extend:EXTSI (match_operand:SI 1 "lwa_operand"
- "Y, r, Z, Z, r, wK, wH, ?wIwH")))]
+ "YZ, r, Z, Z, r, wK, wH, ?wIwH")))]
""
"@
lwa%U1%X1 %0,%1
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3708a5c..af86156 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-08-20 Michael Meissner <meissner@linux.ibm.com>
+
+ PR target/87033
+ * gcc.target/powerpc/pr87033.c: New test.
+
2018-08-20 Martin Sebor <msebor@redhat.com>
PR tree-optimization/87034
diff --git a/gcc/testsuite/gcc.target/powerpc/pr87033.c b/gcc/testsuite/gcc.target/powerpc/pr87033.c
new file mode 100644
index 0000000..9d62ce7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr87033.c
@@ -0,0 +1,12 @@
+/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
+/* { dg-options "-O2" } */
+
+/* Insure that a LWAX is generated instead of ADD + LWA. LP64 is needed
+ because the LWA and LWAX instructions are only available in 64-bit mode. */
+long func (int *p, unsigned long n)
+{
+ return p[n];
+}
+
+/* { dg-final { scan-assembler {\mlwax\M} } } */
+/* { dg-final { scan-assembler-not {\mlwa\M} } } */