[Fusion] Check dest mode instead of src mode 30/45830/1
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 13 Jan 2015 14:08:21 +0000 (14:08 +0000)
committerNikolai Bozhenov <n.bozhenov@samsung.com>
Tue, 11 Aug 2015 14:12:53 +0000 (17:12 +0300)
2015-01-13  Andrew Pinski   <apinski@cavium.com>

        * config/aarch64/aarch64.c (fusion_load_store): Check dest mode
        instead of src mode.

2015-01-13  Andrew Pinski  <apinski@cavium.com>

        * gcc.target/aarch64/store-pair-1.c: New testcase.

Change-Id: I829298a5f9f7dfa9af305e6145984991f32f463f
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@219532 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/aarch64/aarch64.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/store-pair-1.c [new file with mode: 0644]

index 3825fcb..573b753 100644 (file)
@@ -1,3 +1,8 @@
+2015-01-13  Andrew Pinski   <apinski@cavium.com>
+
+       * config/aarch64/aarch64.c (fusion_load_store): Check dest mode
+       instead of src mode.    
+
 2014-12-05  Bin Cheng  <bin.cheng@arm.com>
 
        * config/aarch64/aarch64.md (load_pair<mode>): Split to
index 4caeb53..503faa8 100644 (file)
@@ -9549,8 +9549,8 @@ fusion_load_store (rtx insn, rtx *base, rtx *offset)
   src = SET_SRC (x);
   dest = SET_DEST (x);
 
-  if (GET_MODE (src) != SImode && GET_MODE (src) != DImode
-      && GET_MODE (src) != SFmode && GET_MODE (src) != DFmode)
+  if (GET_MODE (dest) != SImode && GET_MODE (dest) != DImode
+      && GET_MODE (dest) != SFmode && GET_MODE (dest) != DFmode)
     return SCHED_FUSION_NONE;
 
   if (GET_CODE (src) == SIGN_EXTEND)
index cdc6fd9..6806757 100644 (file)
@@ -1,3 +1,7 @@
+2015-01-13  Andrew Pinski  <apinski@cavium.com>
+
+       * gcc.target/aarch64/store-pair-1.c: New testcase.
+
 2014-12-05  Bin Cheng  <bin.cheng@arm.com>
 
        * gcc.target/aarch64/ldp_stp_1.c: New test.
diff --git a/gcc/testsuite/gcc.target/aarch64/store-pair-1.c b/gcc/testsuite/gcc.target/aarch64/store-pair-1.c
new file mode 100644 (file)
index 0000000..a90fc61
--- /dev/null
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+int f(int *a, int b)
+{
+  a[28] = 0;
+  a[29] = b;
+  a[31] = 0;
+}
+
+/* We should be able to produce store pair for the store of 28/29 store. */
+/* { dg-final { scan-assembler "stp\tw(\[0-9\]+)\|(zr), w\[0-9\]+" } } */