diff options
author | Greta Yorsh <greta.yorsh@arm.com> | 2013-04-05 18:26:12 +0100 |
---|---|---|
committer | Greta Yorsh <gretay@gcc.gnu.org> | 2013-04-05 18:26:12 +0100 |
commit | 4542a38a21fea54d28d2d2b34ef8e12ebb7ca415 (patch) | |
tree | 372372b89c0e359b781b42285cc48fa5324b4f47 /gcc/testsuite | |
parent | 2385b218b2157281f844a5f58239f15a6db49a33 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/peep-ldrd-1.c | 11 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/peep-strd-1.c | 9 |
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" } } */ |