From 154db13d9dd66114ec4845308146f4f993b6696c Mon Sep 17 00:00:00 2001 From: geoffk Date: Wed, 1 Nov 2006 05:20:05 +0000 Subject: [PATCH] 2006-10-31 Eric Christopher Falk Hueffner * gcc.dg/builtin-bswap-1.c: New. * gcc.dg/builtin-bswap-2.c: New. * gcc.dg/builtin-bswap-3.c: New. * gcc.dg/builtin-bswap-4.c: New. * gcc.dg/builtin-bswap-5.c: New. * gcc.target/i386/builtin-bswap-1.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118364 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 10 +++++ gcc/testsuite/gcc.dg/builtin-bswap-1.c | 14 ++++++ gcc/testsuite/gcc.dg/builtin-bswap-2.c | 19 ++++++++ gcc/testsuite/gcc.dg/builtin-bswap-3.c | 19 ++++++++ gcc/testsuite/gcc.dg/builtin-bswap-4.c | 59 +++++++++++++++++++++++++ gcc/testsuite/gcc.dg/builtin-bswap-5.c | 16 +++++++ gcc/testsuite/gcc.target/i386/builtin-bswap-1.c | 12 +++++ 7 files changed, 149 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/builtin-bswap-1.c create mode 100644 gcc/testsuite/gcc.dg/builtin-bswap-2.c create mode 100644 gcc/testsuite/gcc.dg/builtin-bswap-3.c create mode 100644 gcc/testsuite/gcc.dg/builtin-bswap-4.c create mode 100644 gcc/testsuite/gcc.dg/builtin-bswap-5.c create mode 100644 gcc/testsuite/gcc.target/i386/builtin-bswap-1.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 479113b..95f4301 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2006-10-31 Eric Christopher + Falk Hueffner + + * gcc.dg/builtin-bswap-1.c: New. + * gcc.dg/builtin-bswap-2.c: New. + * gcc.dg/builtin-bswap-3.c: New. + * gcc.dg/builtin-bswap-4.c: New. + * gcc.dg/builtin-bswap-5.c: New. + * gcc.dg/i386/builtin-bswap-1.c: New. + 2006-10-31 Geoffrey Keating * gcc.dg/inline-16.c: New. diff --git a/gcc/testsuite/gcc.dg/builtin-bswap-1.c b/gcc/testsuite/gcc.dg/builtin-bswap-1.c new file mode 100644 index 0000000..02912db --- /dev/null +++ b/gcc/testsuite/gcc.dg/builtin-bswap-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "" } */ +/* { dg-final { scan-assembler-not "__builtin_" } } */ + +#include + +uint32_t foo (uint32_t a) +{ + int b; + + b = __builtin_bswap32 (a); + + return b; +} diff --git a/gcc/testsuite/gcc.dg/builtin-bswap-2.c b/gcc/testsuite/gcc.dg/builtin-bswap-2.c new file mode 100644 index 0000000..f601056 --- /dev/null +++ b/gcc/testsuite/gcc.dg/builtin-bswap-2.c @@ -0,0 +1,19 @@ +/* { dg-do run } */ +/* { dg-options "" } */ +#include + +extern void abort (void); + +int main (void) +{ + uint32_t a = 4; + uint32_t b; + + b = __builtin_bswap32 (a); + a = __builtin_bswap32 (b); + + if (b == 4 || a != 4) + abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/builtin-bswap-3.c b/gcc/testsuite/gcc.dg/builtin-bswap-3.c new file mode 100644 index 0000000..3416d65 --- /dev/null +++ b/gcc/testsuite/gcc.dg/builtin-bswap-3.c @@ -0,0 +1,19 @@ +/* { dg-do run } */ +/* { dg-options "" } */ +#include + +extern void abort (void); + +int main (void) +{ + uint32_t a = 0x80000000; + uint32_t b; + + b = __builtin_bswap32 (a); + a = __builtin_bswap32 (b); + + if (b != 0x80 || a != 0x80000000) + abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/builtin-bswap-4.c b/gcc/testsuite/gcc.dg/builtin-bswap-4.c new file mode 100644 index 0000000..d14358e --- /dev/null +++ b/gcc/testsuite/gcc.dg/builtin-bswap-4.c @@ -0,0 +1,59 @@ +/* { dg-do run } */ +/* { dg-options "-Wall" } */ + +#include + +#define MAKE_FUN(suffix, type) \ + type my_bswap##suffix(type x) { \ + type result = 0; \ + int shift; \ + for (shift = 0; shift < 8 * sizeof (type); shift += 8) \ + { \ + result <<= 8; \ + result |= (x >> shift) & 0xff; \ + } \ + return result; \ + } \ + +MAKE_FUN(32, uint32_t); +MAKE_FUN(64, uint64_t); + +extern void abort (void); + +#define NUMS32 \ + { \ + 0x00000000UL, \ + 0x11223344UL, \ + 0xffffffffUL, \ + } + +#define NUMS64 \ + { \ + 0x0000000000000000ULL, \ + 0x1122334455667788ULL, \ + 0xffffffffffffffffULL, \ + } + +uint32_t uint32_ts[] = + NUMS32; + +uint64_t uint64_ts[] = + NUMS64; + +#define N(table) (sizeof (table) / sizeof (table[0])) + +int +main (void) +{ + int i; + + for (i = 0; i < N(uint32_ts); i++) + if (__builtin_bswap32 (uint32_ts[i]) != my_bswap32 (uint32_ts[i])) + abort (); + + for (i = 0; i < N(uint64_ts); i++) + if (__builtin_bswap64 (uint64_ts[i]) != my_bswap64 (uint64_ts[i])) + abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/builtin-bswap-5.c b/gcc/testsuite/gcc.dg/builtin-bswap-5.c new file mode 100644 index 0000000..ccac966 --- /dev/null +++ b/gcc/testsuite/gcc.dg/builtin-bswap-5.c @@ -0,0 +1,16 @@ +/* { dg-do run } */ +/* { dg-options "-O" } */ +int +main (void) +{ + /* Test constant folding. */ + extern void link_error (void); + + if (__builtin_bswap32(0xaabbccdd) != 0xddccbbaa) + link_error (); + + if (__builtin_bswap64(0x1122334455667788ULL) != 0x8877665544332211ULL) + link_error (); + + return 0; +} diff --git a/gcc/testsuite/gcc.target/i386/builtin-bswap-1.c b/gcc/testsuite/gcc.target/i386/builtin-bswap-1.c new file mode 100644 index 0000000..a3cf0a0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/builtin-bswap-1.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-options "-march=i486" } */ +/* { dg-final { scan-assembler "bswap" } } */ + +int foo (int a) +{ + int b; + + b = __builtin_bswap (a); + + return b; +} -- 2.7.4