aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorGreta Yorsh <greta.yorsh@arm.com>2013-04-05 18:26:12 +0100
committerGreta Yorsh <gretay@gcc.gnu.org>2013-04-05 18:26:12 +0100
commit4542a38a21fea54d28d2d2b34ef8e12ebb7ca415 (patch)
tree372372b89c0e359b781b42285cc48fa5324b4f47 /gcc/testsuite
parent2385b218b2157281f844a5f58239f15a6db49a33 (diff)
downloadgcc-4542a38a21fea54d28d2d2b34ef8e12ebb7ca415.zip
gcc-4542a38a21fea54d28d2d2b34ef8e12ebb7ca415.tar.gz
gcc-4542a38a21fea54d28d2d2b34ef8e12ebb7ca415.tar.bz2
peep-ldrd-1.c: New test.
2013-04-05 Greta Yorsh <Greta.Yorsh@arm.com> gcc/testsuite * gcc.target/arm/peep-ldrd-1.c: New test. * gcc.target/arm/peep-strd-1.c: Likewise. gcc/ * config/arm/constraints.md (q): New constraint. * config/arm/ldrdstrd.md: New file. * config/arm/arm.md (ldrdstrd.md) New include. (arm_movdi): Use "q" instead of "r" constraint for double-word memory access. (movdf_soft_insn): Likewise. * config/arm/vfp.md (movdi_vfp): Likewise. * config/arm/t-arm (MD_INCLUDES): Add ldrdstrd.md. * config/arm/arm-protos.h (gen_operands_ldrd_strd): New declaration. * config/arm/arm.c (gen_operands_ldrd_strd): New function. (mem_ok_for_ldrd_strd): Likewise. (output_move_double): Update assertion. From-SVN: r197530
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/arm/peep-ldrd-1.c11
-rw-r--r--gcc/testsuite/gcc.target/arm/peep-strd-1.c9
3 files changed, 25 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b60003f..68f7786 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2013-04-05 Greta Yorsh <Greta.Yorsh@arm.com>
+ * gcc.target/arm/peep-ldrd-1.c: New test.
+ * gcc.target/arm/peep-strd-1.c: Likewise.
+
+2013-04-05 Greta Yorsh <Greta.Yorsh@arm.com>
+
* gcc.target/arm/negdi-1.c: New test.
* gcc.target/arm/negdi-2.c: Likewise.
* gcc.target/arm/negdi-3.c: Likewise.
diff --git a/gcc/testsuite/gcc.target/arm/peep-ldrd-1.c b/gcc/testsuite/gcc.target/arm/peep-ldrd-1.c
new file mode 100644
index 0000000..eb2b86e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/peep-ldrd-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_prefer_ldrd_strd } */
+/* { dg-options "-O2" } */
+int foo(int a, int b, int* p, int *q)
+{
+ a = p[2] + p[3];
+ *q = a;
+ *p = a;
+ return a;
+}
+/* { dg-final { scan-assembler "ldrd" } } */
diff --git a/gcc/testsuite/gcc.target/arm/peep-strd-1.c b/gcc/testsuite/gcc.target/arm/peep-strd-1.c
new file mode 100644
index 0000000..bd33076
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/peep-strd-1.c
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_prefer_ldrd_strd } */
+/* { dg-options "-O2" } */
+void foo(int a, int b, int* p)
+{
+ p[2] = a;
+ p[3] = b;
+}
+/* { dg-final { scan-assembler "strd" } } */