aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog29
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-10.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-11.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-12.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-13.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-2.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-3.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-4.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-5.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-6.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-7.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-8.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-9.c2
-rw-r--r--gcc/testsuite/gcc.target/mips/branch-helper.h20
-rw-r--r--gcc/testsuite/gcc.target/mips/umips-branch-10.c14
-rw-r--r--gcc/testsuite/gcc.target/mips/umips-branch-11.c13
-rw-r--r--gcc/testsuite/gcc.target/mips/umips-branch-12.c18
-rw-r--r--gcc/testsuite/gcc.target/mips/umips-branch-13.c13
-rw-r--r--gcc/testsuite/gcc.target/mips/umips-branch-14.c17
-rw-r--r--gcc/testsuite/gcc.target/mips/umips-branch-15.c13
-rw-r--r--gcc/testsuite/gcc.target/mips/umips-branch-16.c17
-rw-r--r--gcc/testsuite/gcc.target/mips/umips-branch-5.c13
-rw-r--r--gcc/testsuite/gcc.target/mips/umips-branch-6.c13
-rw-r--r--gcc/testsuite/gcc.target/mips/umips-branch-7.c12
-rw-r--r--gcc/testsuite/gcc.target/mips/umips-branch-8.c14
-rw-r--r--gcc/testsuite/gcc.target/mips/umips-branch-9.c12
26 files changed, 230 insertions, 12 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9ee034f..f02d3e5 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,32 @@
+2015-07-08 Andrew Bennett <andrew.bennett@imgtec.com>
+
+ * gcc.target/mips/branch-2.c: Change NOMIPS16 to NOCOMPRESSION.
+ * gcc.target/mips/branch-3.c: Ditto
+ * gcc.target/mips/branch-4.c: Ditto.
+ * gcc.target/mips/branch-5.c: Ditto.
+ * gcc.target/mips/branch-6.c: Ditto.
+ * gcc.target/mips/branch-7.c: Ditto.
+ * gcc.target/mips/branch-8.c: Ditto.
+ * gcc.target/mips/branch-9.c: Ditto.
+ * gcc.target/mips/branch-10.c: Ditto.
+ * gcc.target/mips/branch-11.c: Ditto.
+ * gcc.target/mips/branch-12.c: Ditto.
+ * gcc.target/mips/branch-13.c: Ditto.
+ * gcc.target/mips/umips-branch-5.c: New file.
+ * gcc.target/mips/umips-branch-6.c: New file.
+ * gcc.target/mips/umips-branch-7.c: New file.
+ * gcc.target/mips/umips-branch-8.c: New file.
+ * gcc.target/mips/umips-branch-9.c: New file.
+ * gcc.target/mips/umips-branch-10.c: New file.
+ * gcc.target/mips/umips-branch-11.c: New file.
+ * gcc.target/mips/umips-branch-12.c: New file.
+ * gcc.target/mips/umips-branch-13.c: New file.
+ * gcc.target/mips/umips-branch-14.c: New file.
+ * gcc.target/mips/umips-branch-15.c: New file.
+ * gcc.target/mips/umips-branch-16.c: New file.
+ * gcc.target/mips/branch-helper.h (OCCUPY_0x10000): New define.
+ (OCCUPY_0xfffc): New define.
+
2015-07-08 Renlin Li <renlin.li@arm.com>
* gcc.target/arm/unsigned-float.c: Different options for hf toolchain.
diff --git a/gcc/testsuite/gcc.target/mips/branch-10.c b/gcc/testsuite/gcc.target/mips/branch-10.c
index e2b1b5f..eb21c16 100644
--- a/gcc/testsuite/gcc.target/mips/branch-10.c
+++ b/gcc/testsuite/gcc.target/mips/branch-10.c
@@ -4,7 +4,7 @@
#include "branch-helper.h"
-NOMIPS16 void
+NOCOMPRESSION void
foo (int (*bar) (void), int *x)
{
*x = bar ();
diff --git a/gcc/testsuite/gcc.target/mips/branch-11.c b/gcc/testsuite/gcc.target/mips/branch-11.c
index 962eb1b..bd8e834 100644
--- a/gcc/testsuite/gcc.target/mips/branch-11.c
+++ b/gcc/testsuite/gcc.target/mips/branch-11.c
@@ -8,7 +8,7 @@
#include "branch-helper.h"
-NOMIPS16 void
+NOCOMPRESSION void
foo (int (*bar) (void), int *x)
{
*x = bar ();
diff --git a/gcc/testsuite/gcc.target/mips/branch-12.c b/gcc/testsuite/gcc.target/mips/branch-12.c
index 4aef160..4944634 100644
--- a/gcc/testsuite/gcc.target/mips/branch-12.c
+++ b/gcc/testsuite/gcc.target/mips/branch-12.c
@@ -4,7 +4,7 @@
#include "branch-helper.h"
-NOMIPS16 void
+NOCOMPRESSION void
foo (int (*bar) (void), int *x)
{
*x = bar ();
diff --git a/gcc/testsuite/gcc.target/mips/branch-13.c b/gcc/testsuite/gcc.target/mips/branch-13.c
index 8a6fb04..f5269b9 100644
--- a/gcc/testsuite/gcc.target/mips/branch-13.c
+++ b/gcc/testsuite/gcc.target/mips/branch-13.c
@@ -8,7 +8,7 @@
#include "branch-helper.h"
-NOMIPS16 void
+NOCOMPRESSION void
foo (int (*bar) (void), int *x)
{
*x = bar ();
diff --git a/gcc/testsuite/gcc.target/mips/branch-2.c b/gcc/testsuite/gcc.target/mips/branch-2.c
index 6409c4c..b60e9cd 100644
--- a/gcc/testsuite/gcc.target/mips/branch-2.c
+++ b/gcc/testsuite/gcc.target/mips/branch-2.c
@@ -5,7 +5,7 @@
#include "branch-helper.h"
-NOMIPS16 void
+NOCOMPRESSION void
foo (volatile int *x)
{
if (__builtin_expect (*x == 0, 1))
diff --git a/gcc/testsuite/gcc.target/mips/branch-3.c b/gcc/testsuite/gcc.target/mips/branch-3.c
index 5fcfece..69300f6 100644
--- a/gcc/testsuite/gcc.target/mips/branch-3.c
+++ b/gcc/testsuite/gcc.target/mips/branch-3.c
@@ -5,7 +5,7 @@
#include "branch-helper.h"
-NOMIPS16 void
+NOCOMPRESSION void
foo (volatile int *x)
{
if (__builtin_expect (*x == 0, 1))
diff --git a/gcc/testsuite/gcc.target/mips/branch-4.c b/gcc/testsuite/gcc.target/mips/branch-4.c
index 31e4909..29f5c9f 100644
--- a/gcc/testsuite/gcc.target/mips/branch-4.c
+++ b/gcc/testsuite/gcc.target/mips/branch-4.c
@@ -4,7 +4,7 @@
#include "branch-helper.h"
-NOMIPS16 void
+NOCOMPRESSION void
foo (volatile int *x)
{
if (__builtin_expect (*x == 0, 1))
diff --git a/gcc/testsuite/gcc.target/mips/branch-5.c b/gcc/testsuite/gcc.target/mips/branch-5.c
index 1e9c120..0538646 100644
--- a/gcc/testsuite/gcc.target/mips/branch-5.c
+++ b/gcc/testsuite/gcc.target/mips/branch-5.c
@@ -6,7 +6,7 @@
#include "branch-helper.h"
-NOMIPS16 void
+NOCOMPRESSION void
foo (volatile int *x)
{
if (__builtin_expect (*x == 0, 1))
diff --git a/gcc/testsuite/gcc.target/mips/branch-6.c b/gcc/testsuite/gcc.target/mips/branch-6.c
index 77e0340..19baee1 100644
--- a/gcc/testsuite/gcc.target/mips/branch-6.c
+++ b/gcc/testsuite/gcc.target/mips/branch-6.c
@@ -4,7 +4,7 @@
#include "branch-helper.h"
-NOMIPS16 void
+NOCOMPRESSION void
foo (volatile int *x)
{
if (__builtin_expect (*x == 0, 1))
diff --git a/gcc/testsuite/gcc.target/mips/branch-7.c b/gcc/testsuite/gcc.target/mips/branch-7.c
index 8ad6808..16c6d8e 100644
--- a/gcc/testsuite/gcc.target/mips/branch-7.c
+++ b/gcc/testsuite/gcc.target/mips/branch-7.c
@@ -6,7 +6,7 @@
#include "branch-helper.h"
-NOMIPS16 void
+NOCOMPRESSION void
foo (volatile int *x)
{
if (__builtin_expect (*x == 0, 1))
diff --git a/gcc/testsuite/gcc.target/mips/branch-8.c b/gcc/testsuite/gcc.target/mips/branch-8.c
index ba5f954..2e46844 100644
--- a/gcc/testsuite/gcc.target/mips/branch-8.c
+++ b/gcc/testsuite/gcc.target/mips/branch-8.c
@@ -4,7 +4,7 @@
#include "branch-helper.h"
-NOMIPS16 void
+NOCOMPRESSION void
foo (int (*bar) (void), int *x)
{
*x = bar ();
diff --git a/gcc/testsuite/gcc.target/mips/branch-9.c b/gcc/testsuite/gcc.target/mips/branch-9.c
index cad1c00..b87f2ba 100644
--- a/gcc/testsuite/gcc.target/mips/branch-9.c
+++ b/gcc/testsuite/gcc.target/mips/branch-9.c
@@ -9,7 +9,7 @@
#include "branch-helper.h"
-NOMIPS16 void
+NOCOMPRESSION void
foo (int (*bar) (void), int *x)
{
*x = bar ();
diff --git a/gcc/testsuite/gcc.target/mips/branch-helper.h b/gcc/testsuite/gcc.target/mips/branch-helper.h
index 85399be..3d033cc 100644
--- a/gcc/testsuite/gcc.target/mips/branch-helper.h
+++ b/gcc/testsuite/gcc.target/mips/branch-helper.h
@@ -33,5 +33,25 @@
D2 ("nop") "\n\t" \
D1 ("nop"))
+/* Emit something that is 0xfffc bytes long, which is the largest
+ permissible range for microMIPS forward branches when branches
+ have delay slots. */
+#define OCCUPY_0xfffc \
+ asm (D13 ("nop32") "\n\t" \
+ D12 ("nop32") "\n\t" \
+ D11 ("nop32") "\n\t" \
+ D10 ("nop32") "\n\t" \
+ D9 ("nop32") "\n\t" \
+ D8 ("nop32") "\n\t" \
+ D7 ("nop32") "\n\t" \
+ D6 ("nop32") "\n\t" \
+ D5 ("nop32") "\n\t" \
+ D4 ("nop32") "\n\t" \
+ D3 ("nop32") "\n\t" \
+ D2 ("nop32") "\n\t" \
+ D1 ("nop32") "\n\t" \
+ D0 ("nop32"))
/* Likewise emit something that is 0x1fffc bytes long. */
#define OCCUPY_0x1fffc do { asm ("nop"); OCCUPY_0x1fff8; } while (0)
+/* Likewise emit something that is 0x10000 bytes long. */
+#define OCCUPY_0x10000 do { asm ("nop32"); OCCUPY_0xfffc; } while (0)
diff --git a/gcc/testsuite/gcc.target/mips/umips-branch-10.c b/gcc/testsuite/gcc.target/mips/umips-branch-10.c
new file mode 100644
index 0000000..714691b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/umips-branch-10.c
@@ -0,0 +1,14 @@
+/* { dg-options "-mshared -mabi=64 -mmicromips" } */
+/* { dg-final { scan-assembler "\tdaddiu\t\\\$3,\\\$3,%lo\\(%neg\\(%gp_rel\\(foo\\)\\)\\)\n" } } */
+/* { dg-final { scan-assembler "\tld\t\\\$1,%got_page\\(\[^)\]*\\)\\(\\\$3\\)\\n" } } */
+/* { dg-final { scan-assembler "\tjr\t\\\$1\n" } } */
+/* { dg-final { scan-assembler-not "\\\$28" } } */
+
+#include "branch-helper.h"
+
+NOMIPS16 void
+foo (volatile int *x)
+{
+ if (__builtin_expect (*x == 0, 1))
+ OCCUPY_0x10000;
+}
diff --git a/gcc/testsuite/gcc.target/mips/umips-branch-11.c b/gcc/testsuite/gcc.target/mips/umips-branch-11.c
new file mode 100644
index 0000000..5050669
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/umips-branch-11.c
@@ -0,0 +1,13 @@
+/* { dg-options "-mshared -mabi=32 -mmicromips" } */
+/* { dg-final { scan-assembler-not "(\\\$28|cpload|cprestore)" } } */
+/* { dg-final { scan-assembler-not "\tjrc?\t\\\$1\n" } } */
+
+#include "branch-helper.h"
+
+NOMIPS16 void
+foo (int (*bar) (void), int *x)
+{
+ *x = bar ();
+ if (__builtin_expect (*x == 0, 1))
+ OCCUPY_0xfffc;
+}
diff --git a/gcc/testsuite/gcc.target/mips/umips-branch-12.c b/gcc/testsuite/gcc.target/mips/umips-branch-12.c
new file mode 100644
index 0000000..a393de9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/umips-branch-12.c
@@ -0,0 +1,18 @@
+/* { dg-options "-mshared -mabi=32 -mmicromips" } */
+/* { dg-final { scan-assembler "\t\\.cpload\t\\\$25\n" } } */
+/* { dg-final { scan-assembler "\t\\.cprestore\t16\n" } } */
+/* { dg-final { scan-assembler "\tlw\t\\\$1,16\\(\\\$(fp|sp)\\)\n" } } */
+/* { dg-final { scan-assembler "\tlw\t\\\$1,%got\\(\[^)\]*\\)\\(\\\$1\\)\n" } } */
+/* { dg-final { scan-assembler "\taddiu\t\\\$1,\\\$1,%lo\\(\[^)\]*\\)\n" } } */
+/* { dg-final { scan-assembler "\tjr\t\\\$1\n" } } */
+/* { dg-final { scan-assembler-not "\\\$28" } } */
+
+#include "branch-helper.h"
+
+NOMIPS16 void
+foo (int (*bar) (void), int *x)
+{
+ *x = bar ();
+ if (__builtin_expect (*x == 0, 1))
+ OCCUPY_0x10000;
+}
diff --git a/gcc/testsuite/gcc.target/mips/umips-branch-13.c b/gcc/testsuite/gcc.target/mips/umips-branch-13.c
new file mode 100644
index 0000000..e84b462
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/umips-branch-13.c
@@ -0,0 +1,13 @@
+/* { dg-options "-mshared -mabi=n32 -mmicromips" } */
+/* { dg-final { scan-assembler-not "(\\\$28|%gp_rel|%got)" } } */
+/* { dg-final { scan-assembler-not "\tjrc?\t\\\$1\n" } } */
+
+#include "branch-helper.h"
+
+NOMIPS16 void
+foo (int (*bar) (void), int *x)
+{
+ *x = bar ();
+ if (__builtin_expect (*x == 0, 1))
+ OCCUPY_0xfffc;
+}
diff --git a/gcc/testsuite/gcc.target/mips/umips-branch-14.c b/gcc/testsuite/gcc.target/mips/umips-branch-14.c
new file mode 100644
index 0000000..f9f30a7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/umips-branch-14.c
@@ -0,0 +1,17 @@
+/* { dg-options "-mshared -mabi=n32 -mmicromips" } */
+/* { dg-final { scan-assembler "\tsd\t\\\$28," } } */
+/* { dg-final { scan-assembler "\tld\t\\\$28," } } */
+/* { dg-final { scan-assembler "\taddiu\t\\\$28,\\\$28,%lo\\(%neg\\(%gp_rel\\(foo\\)\\)\\)\n" } } */
+/* { dg-final { scan-assembler "\tlw\t\\\$1,%got_page\\(\[^)\]*\\)\\(\\\$28\\)\n" } } */
+/* { dg-final { scan-assembler "\taddiu\t\\\$1,\\\$1,%got_ofst\\(\[^)\]*\\)\n" } } */
+/* { dg-final { scan-assembler "\tjr\t\\\$1\n" } } */
+
+#include "branch-helper.h"
+
+NOMIPS16 void
+foo (int (*bar) (void), int *x)
+{
+ *x = bar ();
+ if (__builtin_expect (*x == 0, 1))
+ OCCUPY_0x10000;
+}
diff --git a/gcc/testsuite/gcc.target/mips/umips-branch-15.c b/gcc/testsuite/gcc.target/mips/umips-branch-15.c
new file mode 100644
index 0000000..6704aad
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/umips-branch-15.c
@@ -0,0 +1,13 @@
+/* { dg-options "-mshared -mabi=64 -mmicromips" } */
+/* { dg-final { scan-assembler-not "(\\\$28|%gp_rel|%got)" } } */
+/* { dg-final { scan-assembler-not "\tjrc?\t\\\$1\n" } } */
+
+#include "branch-helper.h"
+
+NOMIPS16 void
+foo (int (*bar) (void), int *x)
+{
+ *x = bar ();
+ if (__builtin_expect (*x == 0, 1))
+ OCCUPY_0xfffc;
+}
diff --git a/gcc/testsuite/gcc.target/mips/umips-branch-16.c b/gcc/testsuite/gcc.target/mips/umips-branch-16.c
new file mode 100644
index 0000000..95f7db5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/umips-branch-16.c
@@ -0,0 +1,17 @@
+/* { dg-options "-mshared -mabi=64 -mmicromips" } */
+/* { dg-final { scan-assembler "\tsd\t\\\$28," } } */
+/* { dg-final { scan-assembler "\tld\t\\\$28," } } */
+/* { dg-final { scan-assembler "\tdaddiu\t\\\$28,\\\$28,%lo\\(%neg\\(%gp_rel\\(foo\\)\\)\\)\n" } } */
+/* { dg-final { scan-assembler "\tld\t\\\$1,%got_page\\(\[^)\]*\\)\\(\\\$28\\)\n" } } */
+/* { dg-final { scan-assembler "\tdaddiu\t\\\$1,\\\$1,%got_ofst\\(\[^)\]*\\)\n" } } */
+/* { dg-final { scan-assembler "\tjr\t\\\$1\n" } } */
+
+#include "branch-helper.h"
+
+NOMIPS16 void
+foo (int (*bar) (void), int *x)
+{
+ *x = bar ();
+ if (__builtin_expect (*x == 0, 1))
+ OCCUPY_0x10000;
+}
diff --git a/gcc/testsuite/gcc.target/mips/umips-branch-5.c b/gcc/testsuite/gcc.target/mips/umips-branch-5.c
new file mode 100644
index 0000000..d124f91
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/umips-branch-5.c
@@ -0,0 +1,13 @@
+/* { dg-options "-mshared -mabi=32 -mmicromips" } */
+/* { dg-final { scan-assembler-not "(\\\$25|\\\$28|cpload)" } } */
+/* { dg-final { scan-assembler-not "\tjr\t\\\$1\n" } } */
+/* { dg-final { scan-assembler-not "\\.cprestore" } } */
+
+#include "branch-helper.h"
+
+NOMIPS16 void
+foo (volatile int *x)
+{
+ if (__builtin_expect (*x == 0, 1))
+ OCCUPY_0xfffc;
+}
diff --git a/gcc/testsuite/gcc.target/mips/umips-branch-6.c b/gcc/testsuite/gcc.target/mips/umips-branch-6.c
new file mode 100644
index 0000000..d688bc9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/umips-branch-6.c
@@ -0,0 +1,13 @@
+/* { dg-options "-mshared -mabi=32 -mmicromips" } */
+/* { dg-final { scan-assembler "\t\\.cpload\t\\\$25\n" } } */
+/* { dg-final { scan-assembler "\tjr\t\\\$1\n" } } */
+/* { dg-final { scan-assembler-not "\\.cprestore" } } */
+
+#include "branch-helper.h"
+
+NOMIPS16 void
+foo (volatile int *x)
+{
+ if (__builtin_expect (*x == 0, 1))
+ OCCUPY_0x10000;
+}
diff --git a/gcc/testsuite/gcc.target/mips/umips-branch-7.c b/gcc/testsuite/gcc.target/mips/umips-branch-7.c
new file mode 100644
index 0000000..294805a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/umips-branch-7.c
@@ -0,0 +1,12 @@
+/* { dg-options "-mshared -mabi=n32 -mmicromips" } */
+/* { dg-final { scan-assembler-not "(\\\$25|\\\$28|%gp_rel|%got)" } } */
+/* { dg-final { scan-assembler-not "\tjrc?\t\\\$1\n" } } */
+
+#include "branch-helper.h"
+
+NOMIPS16 void
+foo (volatile int *x)
+{
+ if (__builtin_expect (*x == 0, 1))
+ OCCUPY_0xfffc;
+}
diff --git a/gcc/testsuite/gcc.target/mips/umips-branch-8.c b/gcc/testsuite/gcc.target/mips/umips-branch-8.c
new file mode 100644
index 0000000..02273cf
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/umips-branch-8.c
@@ -0,0 +1,14 @@
+/* { dg-options "-mshared -mabi=n32 -mmicromips" } */
+/* { dg-final { scan-assembler "\taddiu\t\\\$3,\\\$3,%lo\\(%neg\\(%gp_rel\\(foo\\)\\)\\)\n" } } */
+/* { dg-final { scan-assembler "\tlw\t\\\$1,%got_page\\(\[^)\]*\\)\\(\\\$3\\)\\n" } } */
+/* { dg-final { scan-assembler "\tjr\t\\\$1\n" } } */
+/* { dg-final { scan-assembler-not "\\\$28" } } */
+
+#include "branch-helper.h"
+
+NOMIPS16 void
+foo (volatile int *x)
+{
+ if (__builtin_expect (*x == 0, 1))
+ OCCUPY_0x10000;
+}
diff --git a/gcc/testsuite/gcc.target/mips/umips-branch-9.c b/gcc/testsuite/gcc.target/mips/umips-branch-9.c
new file mode 100644
index 0000000..ab02e88
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/umips-branch-9.c
@@ -0,0 +1,12 @@
+/* { dg-options "-mshared -mabi=64 -mmicromips" } */
+/* { dg-final { scan-assembler-not "(\\\$25|\\\$28|%gp_rel|%got)" } } */
+/* { dg-final { scan-assembler-not "\tjrc?\t\\\$1\n" } } */
+
+#include "branch-helper.h"
+
+NOMIPS16 void
+foo (volatile int *x)
+{
+ if (__builtin_expect (*x == 0, 1))
+ OCCUPY_0xfffc;
+}