diff options
-rw-r--r-- | gcc/testsuite/ChangeLog | 14 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/builtin-bswap-1.c | 75 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/builtin-bswap-2.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/builtin-bswap.x | 66 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/builtin-bswap16-1.c | 16 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/builtin-bswap16-2.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/builtin-bswap16.x | 9 |
7 files changed, 116 insertions, 81 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8c86f3c..b5a83f4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,17 @@ +2018-01-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com> + + PR target/65578 + * gcc.target/arm/builtin-bswap.x: New file. + * gcc.target/arm/builtin-bswap-1.c: Include the above. Add checks + and options for armv6t2. + * gcc.target/arm/builtin-bswap-2.c: Include the above. Add checks + and options for Thumb1. + * gcc.target/arm/builtin-bswap16.x: New file. + * gcc.target/arm/builtin-bswap16-1.c: Include the above. Add checks + and options for armv6t2. + * gcc.target/arm/builtin-bswap16-2.c: Include the above. Add checks + and options for Thumb1. + 2018-01-18 Christophe Lyon <christophe.lyon@linaro.org> * gcc.target/arm/pr40887.c: Fix dg-options and dg-add-options diff --git a/gcc/testsuite/gcc.target/arm/builtin-bswap-1.c b/gcc/testsuite/gcc.target/arm/builtin-bswap-1.c index 43195bd..c1e7740 100644 --- a/gcc/testsuite/gcc.target/arm/builtin-bswap-1.c +++ b/gcc/testsuite/gcc.target/arm/builtin-bswap-1.c @@ -1,7 +1,9 @@ /* { dg-do compile } */ -/* { dg-options "-O2" } */ -/* { dg-require-effective-target arm_arch_v6_ok } */ -/* { dg-add-options arm_arch_v6 } */ +/* { dg-require-effective-target arm_arch_v6t2_ok } */ +/* { dg-add-options arm_arch_v6t2 } */ +/* This test depends on if-conversion creating the conditional forms of + of the instructions. Add an -mtune option known to facilitate that. */ +/* { dg-additional-options "-O2 -mtune=cortex-a53" } */ /* { dg-final { scan-assembler-not "orr\[ \t\]" } } */ /* { dg-final { scan-assembler-times "revsh\\t" 1 { target { arm_nothumb } } } } */ /* { dg-final { scan-assembler-times "revshne\\t" 1 { target { arm_nothumb } } } } */ @@ -13,69 +15,4 @@ /* { dg-final { scan-assembler-times "revne\\t" 2 { target { arm_nothumb } } } } */ /* { dg-final { scan-assembler-times "rev\\t" 4 { target { ! arm_nothumb } } } } */ -/* revsh */ -short swaps16 (short x) -{ - return __builtin_bswap16 (x); -} - -extern short foos16 (short); - -/* revshne */ -short swaps16_cond (short x, int y) -{ - short z = x; - if (y) - z = __builtin_bswap16 (x); - return foos16 (z); -} - -/* rev16 */ -unsigned short swapu16 (unsigned short x) -{ - return __builtin_bswap16 (x); -} - -extern unsigned short foou16 (unsigned short); - -/* rev16ne */ -unsigned short swapu16_cond (unsigned short x, int y) -{ - unsigned short z = x; - if (y) - z = __builtin_bswap16 (x); - return foou16 (z); -} - -/* rev */ -int swaps32 (int x) { - return __builtin_bswap32 (x); -} - -extern int foos32 (int); - -/* revne */ -int swaps32_cond (int x, int y) -{ - int z = x; - if (y) - z = __builtin_bswap32 (x); - return foos32 (z); -} - -/* rev */ -unsigned int swapu32 (unsigned int x) -{ - return __builtin_bswap32 (x); -} - -extern unsigned int foou32 (unsigned int); - -/* revne */ -unsigned int swapsu2 (unsigned int x, int y) -{ - int z = x; - if (y) - z = __builtin_bswap32 (x); - return foou32 (z); -} +#include "builtin-bswap.x" diff --git a/gcc/testsuite/gcc.target/arm/builtin-bswap-2.c b/gcc/testsuite/gcc.target/arm/builtin-bswap-2.c new file mode 100644 index 0000000..4ba79aa --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/builtin-bswap-2.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_arch_v6m_ok } */ +/* { dg-add-options arm_arch_v6m } */ +/* { dg-additional-options "-O2" } */ +/* { dg-final { scan-assembler-not "orr\[ \t\]" } } */ +/* { dg-final { scan-assembler-times "revsh\\t" 2 } } */ +/* { dg-final { scan-assembler-times "rev16\\t" 2 } } */ +/* { dg-final { scan-assembler-times "rev\\t" 4 } } */ + +#include "builtin-bswap.x" diff --git a/gcc/testsuite/gcc.target/arm/builtin-bswap.x b/gcc/testsuite/gcc.target/arm/builtin-bswap.x new file mode 100644 index 0000000..c96dbe6 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/builtin-bswap.x @@ -0,0 +1,66 @@ +/* revsh */ +short swaps16 (short x) +{ + return __builtin_bswap16 (x); +} + +extern short foos16 (short); + +/* revshne */ +short swaps16_cond (short x, int y) +{ + short z = x; + if (y) + z = __builtin_bswap16 (x); + return foos16 (z); +} + +/* rev16 */ +unsigned short swapu16 (unsigned short x) +{ + return __builtin_bswap16 (x); +} + +extern unsigned short foou16 (unsigned short); + +/* rev16ne */ +unsigned short swapu16_cond (unsigned short x, int y) +{ + unsigned short z = x; + if (y) + z = __builtin_bswap16 (x); + return foou16 (z); +} + +/* rev */ +int swaps32 (int x) { + return __builtin_bswap32 (x); +} + +extern int foos32 (int); + +/* revne */ +int swaps32_cond (int x, int y) +{ + int z = x; + if (y) + z = __builtin_bswap32 (x); + return foos32 (z); +} + +/* rev */ +unsigned int swapu32 (unsigned int x) +{ + return __builtin_bswap32 (x); +} + +extern unsigned int foou32 (unsigned int); + +/* revne */ +unsigned int swapsu2 (unsigned int x, int y) +{ + int z = x; + if (y) + z = __builtin_bswap32 (x); + return foou32 (z); +} diff --git a/gcc/testsuite/gcc.target/arm/builtin-bswap16-1.c b/gcc/testsuite/gcc.target/arm/builtin-bswap16-1.c index 6920f00..e08a38a 100644 --- a/gcc/testsuite/gcc.target/arm/builtin-bswap16-1.c +++ b/gcc/testsuite/gcc.target/arm/builtin-bswap16-1.c @@ -1,15 +1,7 @@ /* { dg-do compile } */ -/* { dg-options "-O2" } */ -/* { dg-require-effective-target arm_arch_v6_ok } */ -/* { dg-add-options arm_arch_v6 } */ +/* { dg-require-effective-target arm_arch_v6t2_ok } */ +/* { dg-add-options arm_arch_v6t2 } */ +/* { dg-additional-options "-O2" } */ /* { dg-final { scan-assembler-not "orr\[ \t\]" } } */ -unsigned short swapu16_1 (unsigned short x) -{ - return (x << 8) | (x >> 8); -} - -unsigned short swapu16_2 (unsigned short x) -{ - return (x >> 8) | (x << 8); -} +#include "builtin-bswap16.x" diff --git a/gcc/testsuite/gcc.target/arm/builtin-bswap16-2.c b/gcc/testsuite/gcc.target/arm/builtin-bswap16-2.c new file mode 100644 index 0000000..6b709a2 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/builtin-bswap16-2.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_arch_v6m_ok } */ +/* { dg-add-options arm_arch_v6m } */ +/* { dg-additional-options "-O2" } */ +/* { dg-final { scan-assembler-not "orr\[ \t\]" } } */ + +#include "builtin-bswap16.x" diff --git a/gcc/testsuite/gcc.target/arm/builtin-bswap16.x b/gcc/testsuite/gcc.target/arm/builtin-bswap16.x new file mode 100644 index 0000000..1e7f41e --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/builtin-bswap16.x @@ -0,0 +1,9 @@ +unsigned short swapu16_1 (unsigned short x) +{ + return (x << 8) | (x >> 8); +} + +unsigned short swapu16_2 (unsigned short x) +{ + return (x >> 8) | (x << 8); +} |