diff options
author | Sandra Loosemore <sandra@codesourcery.com> | 2007-07-05 13:08:37 -0400 |
---|---|---|
committer | Sandra Loosemore <sandra@gcc.gnu.org> | 2007-07-05 13:08:37 -0400 |
commit | 0aa222d17b32f6d6388e1e92a1d7bde124277f3d (patch) | |
tree | 412155942760389b80c2e11cd433bae27b0a1df4 /gcc/testsuite | |
parent | 6fd2892a68b395f626c97657096e9a80afa9e154 (diff) | |
download | gcc-0aa222d17b32f6d6388e1e92a1d7bde124277f3d.zip gcc-0aa222d17b32f6d6388e1e92a1d7bde124277f3d.tar.gz gcc-0aa222d17b32f6d6388e1e92a1d7bde124277f3d.tar.bz2 |
Add support for SmartMIPS ASE.
2007-07-05 Sandra Loosemore <sandra@codesourcery.com>
David Ung <davidu@mips.com>
Add support for SmartMIPS ASE.
gcc/
* optabs.c (expand_binop_directly): New, broken out from...
(expand_binop): Here. Make it try rotating in the other
direction even when the second operand isn't constant.
* config/mips/mips.md (*lwxs): New.
* config/mips/mips.opt (msmartmips): New.
* config/mips/mips.c (mips_lwxs_address_p): New.
(mips_rtx_costs): Make it recognize scaled indexed addressing.
* config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
__mips_smartmips when compiling for TARGET_SMARTMIPS.
(ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
(ISA_HAS_LWXS): New.
(ASM_SPEC): Add -msmartmips/-mno-smartmips.
* doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
* testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
* testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
* testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
* testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
* testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
Co-Authored-By: David Ung <davidu@mips.com>
From-SVN: r126370
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/gcc.target/mips/smartmips-lwxs.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/mips/smartmips-ror-1.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/mips/smartmips-ror-2.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/mips/smartmips-ror-3.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/mips/smartmips-ror-4.c | 10 |
5 files changed, 44 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/mips/smartmips-lwxs.c b/gcc/testsuite/gcc.target/mips/smartmips-lwxs.c new file mode 100644 index 0000000..cd9b0b3 --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/smartmips-lwxs.c @@ -0,0 +1,8 @@ +/* { dg-do compile } */ +/* { dg-mips-options "-O -msmartmips -mno-mips16" } */ + +int scaled_indexed_word_load (int a[], int b) +{ + return a[b]; +} +/* { dg-final { scan-assembler "\tlwxs\t" } } */ diff --git a/gcc/testsuite/gcc.target/mips/smartmips-ror-1.c b/gcc/testsuite/gcc.target/mips/smartmips-ror-1.c new file mode 100644 index 0000000..5ad7f34 --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/smartmips-ror-1.c @@ -0,0 +1,8 @@ +/* { dg-do compile } */ +/* { dg-mips-options "-O -msmartmips -mno-mips16" } */ + +int rotate_left (unsigned a, unsigned s) +{ + return (a << s) | (a >> (32 - s)); +} +/* { dg-final { scan-assembler "\tror\t" } } */ diff --git a/gcc/testsuite/gcc.target/mips/smartmips-ror-2.c b/gcc/testsuite/gcc.target/mips/smartmips-ror-2.c new file mode 100644 index 0000000..93d376d --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/smartmips-ror-2.c @@ -0,0 +1,8 @@ +/* { dg-do compile } */ +/* { dg-mips-options "-O -msmartmips -mno-mips16" } */ + +int rotate_right (unsigned a, unsigned s) +{ + return (a >> s) | (a << (32 - s)); +} +/* { dg-final { scan-assembler "\tror\t" } } */ diff --git a/gcc/testsuite/gcc.target/mips/smartmips-ror-3.c b/gcc/testsuite/gcc.target/mips/smartmips-ror-3.c new file mode 100644 index 0000000..ec1c6e2 --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/smartmips-ror-3.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-mips-options "-O -msmartmips -mno-mips16" } */ + +#define S 13 + +int rotate_left_constant (unsigned a) +{ + return (a << S) | (a >> (32 - S)); +} +/* { dg-final { scan-assembler "\tror\t" } } */ diff --git a/gcc/testsuite/gcc.target/mips/smartmips-ror-4.c b/gcc/testsuite/gcc.target/mips/smartmips-ror-4.c new file mode 100644 index 0000000..2a56210 --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/smartmips-ror-4.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-mips-options "-O -msmartmips -mno-mips16" } */ + +#define S 13 + +int rotate_right_constant (unsigned a) +{ + return (a >> S) | (a << (32 - S)); +} +/* { dg-final { scan-assembler "\tror\t" } } */ |