diff options
Diffstat (limited to 'gcc/testsuite/gcc.target')
-rw-r--r-- | gcc/testsuite/gcc.target/s390/arch12/aghsghmgh-1.c | 23 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/s390/arch12/mul-1.c | 30 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/s390/arch12/mul-2.c | 16 |
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 } } */ |