aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.target')
-rw-r--r--gcc/testsuite/gcc.target/s390/arch12/aghsghmgh-1.c23
-rw-r--r--gcc/testsuite/gcc.target/s390/arch12/mul-1.c30
-rw-r--r--gcc/testsuite/gcc.target/s390/arch12/mul-2.c16
3 files changed, 69 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/s390/arch12/aghsghmgh-1.c b/gcc/testsuite/gcc.target/s390/arch12/aghsghmgh-1.c
new file mode 100644
index 00000000000..fc844c3e404
--- /dev/null
+++ b/gcc/testsuite/gcc.target/s390/arch12/aghsghmgh-1.c
@@ -0,0 +1,23 @@
+/* { dg-compile } */
+
+long long
+agh (long long a, short int *p)
+{
+ return a + *p;
+}
+
+long long
+sgh (long long a, short int *p)
+{
+ return a - *p;
+}
+
+long long
+mgh (long long a, short int *p)
+{
+ return a * *p;
+}
+
+/* { dg-final { scan-assembler-times "\tagh\t" 1 } } */
+/* { dg-final { scan-assembler-times "\tsgh\t" 1 } } */
+/* { dg-final { scan-assembler-times "\tmgh\t" 1 } } */
diff --git a/gcc/testsuite/gcc.target/s390/arch12/mul-1.c b/gcc/testsuite/gcc.target/s390/arch12/mul-1.c
new file mode 100644
index 00000000000..ef395356b72
--- /dev/null
+++ b/gcc/testsuite/gcc.target/s390/arch12/mul-1.c
@@ -0,0 +1,30 @@
+/* { dg-compile } */
+
+int
+msrkc (int unused, int a, int b)
+{
+ return a * b;
+}
+
+long long
+msgrkc (int unused, long long a, long long b)
+{
+ return a * b;
+}
+
+/* Make sure the 2 operand version are still being used. */
+
+int
+msr (int a, int b)
+{
+ return a * b;
+}
+
+long long
+msgr (long long a, long long b)
+{
+ return a * b;
+}
+
+/* { dg-final { scan-assembler-times "\tmsrkc\t" 1 } } */
+/* { dg-final { scan-assembler-times "\tmsgrkc\t" 1 } } */
diff --git a/gcc/testsuite/gcc.target/s390/arch12/mul-2.c b/gcc/testsuite/gcc.target/s390/arch12/mul-2.c
new file mode 100644
index 00000000000..ad3b11ed6bc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/s390/arch12/mul-2.c
@@ -0,0 +1,16 @@
+/* { dg-do compile { target int128 } } */
+
+__int128
+mgrk (long long a, long long b)
+{
+ return (__int128)a * (__int128)b;
+}
+
+__int128
+mg (long long a, long long *b)
+{
+ return (__int128)a * (__int128)*b;
+}
+
+/* { dg-final { scan-assembler-times "\tmgrk\t" 1 } } */
+/* { dg-final { scan-assembler-times "\tmg\t" 1 } } */