diff options
Diffstat (limited to 'gcc/testsuite/gcc.target/mips')
-rw-r--r-- | gcc/testsuite/gcc.target/mips/mips.exp | 1 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/mips/mmcount-ra-address-1.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/mips/mmcount-ra-address-2.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/mips/mmcount-ra-address-3.c | 9 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/mips/mult-1.c | 14 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/mips/truncate-6.c | 12 |
6 files changed, 51 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/mips/mips.exp b/gcc/testsuite/gcc.target/mips/mips.exp index aef473f89d5..02e031cd15c 100644 --- a/gcc/testsuite/gcc.target/mips/mips.exp +++ b/gcc/testsuite/gcc.target/mips/mips.exp @@ -263,6 +263,7 @@ foreach option { sym32 synci relax-pic-calls + mcount-ra-address } { lappend mips_option_groups $option "-m(no-|)$option" } diff --git a/gcc/testsuite/gcc.target/mips/mmcount-ra-address-1.c b/gcc/testsuite/gcc.target/mips/mmcount-ra-address-1.c new file mode 100644 index 00000000000..cf5b044d636 --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/mmcount-ra-address-1.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -pg -mmcount-ra-address -mabi=64" } */ +/* { dg-final { scan-assembler "\tmove\t\\\$12,\\\$0" } } */ +int bazl(int i) +{ + return i + 2; +} diff --git a/gcc/testsuite/gcc.target/mips/mmcount-ra-address-2.c b/gcc/testsuite/gcc.target/mips/mmcount-ra-address-2.c new file mode 100644 index 00000000000..bef9dd93d80 --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/mmcount-ra-address-2.c @@ -0,0 +1,8 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -pg -mmcount-ra-address -mabi=64" } */ +/* { dg-final { scan-assembler "\tdla\t\\\$12,8\\(\\\$sp\\)" } } */ +int foo (int); +int bar (int i) +{ + return foo (i) + 2; +} diff --git a/gcc/testsuite/gcc.target/mips/mmcount-ra-address-3.c b/gcc/testsuite/gcc.target/mips/mmcount-ra-address-3.c new file mode 100644 index 00000000000..59007e6ef3c --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/mmcount-ra-address-3.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -pg -mmcount-ra-address -mabi=64" } */ +/* { dg-final { scan-assembler "\tdla\t\\\$12,200008\\(\\\$sp\\)" } } */ +int foo (int *); +int bar(int i) +{ + int big[50000]; + return foo (big) + 2; +} diff --git a/gcc/testsuite/gcc.target/mips/mult-1.c b/gcc/testsuite/gcc.target/mips/mult-1.c new file mode 100644 index 00000000000..d82a4778263 --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/mult-1.c @@ -0,0 +1,14 @@ +/* For SI->DI widening multiplication we should use DINS to combine the two + halves. */ +/* { dg-options "-O -mgp64 isa_rev>=2" } */ +/* { dg-final { scan-assembler "\tdins\t" } } */ +/* { dg-final { scan-assembler-not "\tdsll\t" } } */ +/* { dg-final { scan-assembler-not "\tdsrl\t" } } */ +/* { dg-final { scan-assembler-not "\tor\t" } } */ + +NOMIPS16 unsigned long long +f (unsigned int i, unsigned int j) +{ + i++; + return (unsigned long long) i * j; +} diff --git a/gcc/testsuite/gcc.target/mips/truncate-6.c b/gcc/testsuite/gcc.target/mips/truncate-6.c new file mode 100644 index 00000000000..1ccd6c59c3d --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/truncate-6.c @@ -0,0 +1,12 @@ +/* setup_incoming_promotions should detect x to be already sign-extended due + to PROMOTE_MODE. Thus the truncation should be removed by combine. Based + on gcc.c-torture/execute/pr34070-2.c. */ +/* { dg-options "-O -mgp64" } */ +/* { dg-final { scan-assembler-not "\tsll\t\[^\n\]*,0" } } */ + +NOMIPS16 int f(unsigned int x, int n, int *p) +{ + if (p) + *p = 1; + return ((int)x) / (1 << n); +} |