diff options
author | Andrew Pinski <apinski@cavium.com> | 2012-07-16 17:16:29 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2012-07-16 10:16:29 -0700 |
commit | 053c2b8794ffe02224138b2fa8c365a7da1424e5 (patch) | |
tree | 977f5c8ab489e7dcd1a5c378a56e4d9ea0e90159 | |
parent | 4cca007eaf3f87b785ee8bb28dcf7b2bbe4a5eaf (diff) | |
download | gcc-053c2b8794ffe02224138b2fa8c365a7da1424e5.zip gcc-053c2b8794ffe02224138b2fa8c365a7da1424e5.tar.gz gcc-053c2b8794ffe02224138b2fa8c365a7da1424e5.tar.bz2 |
bswap-1.c: New testcase.
2012-07-16 Andrew Pinski <apinski@cavium.com>
* gcc.c-torture/execute/bswap-1.c: New testcase.
* gcc.c-torture/compile/unalign-1.c: New testcase.
* gcc.c-torture/compile/20120524-1.c: New testcase.
* gcc.c-torture/compile/20101216-1.c: New testcase.
From-SVN: r189543
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/20101216-1.c | 32 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/20120524-1.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/unalign-1.c | 15 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/bswap-1.c | 51 |
5 files changed, 109 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 239baaf..12cf1ca 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2012-07-16 Andrew Pinski <apinski@cavium.com> + + * gcc.c-torture/execute/bswap-1.c: New testcase. + * gcc.c-torture/compile/unalign-1.c: New testcase. + * gcc.c-torture/compile/20120524-1.c: New testcase. + * gcc.c-torture/compile/20101216-1.c: New testcase. + 2012-07-16 Dehao Chen <dehao@google.com> Revert diff --git a/gcc/testsuite/gcc.c-torture/compile/20101216-1.c b/gcc/testsuite/gcc.c-torture/compile/20101216-1.c new file mode 100644 index 0000000..0c58898 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20101216-1.c @@ -0,0 +1,32 @@ +typedef signed int __int32_t; +typedef unsigned int __uint32_t; +typedef union +{ + double value; + struct + { + __uint32_t msw; + __uint32_t lsw; + } parts; +} ieee_double_shape_type; +two52= 4.50359962737049600000e+15, +w6 = -1.63092934096575273989e-03; +double sin_pi(double x) +{ + double y,z; + __int32_t n,ix; +ieee_double_shape_type gh_u; + gh_u.value = (x); +(ix) = gh_u.parts.msw; + if(ix<0x43300000) + z = y+two52; + ieee_double_shape_type gl_u; + gl_u.value = (z); + (n) = gl_u.parts.lsw; + n &= 1; + switch (n) + { + case 0: +__kernel_sin(); + } +} diff --git a/gcc/testsuite/gcc.c-torture/compile/20120524-1.c b/gcc/testsuite/gcc.c-torture/compile/20120524-1.c new file mode 100644 index 0000000..021756b --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20120524-1.c @@ -0,0 +1,4 @@ + char CJPAT_Packet[1508] = {}; +void build_packet(int port, char *packet) { + memcpy(packet, CJPAT_Packet, sizeof(CJPAT_Packet)); +} diff --git a/gcc/testsuite/gcc.c-torture/compile/unalign-1.c b/gcc/testsuite/gcc.c-torture/compile/unalign-1.c new file mode 100644 index 0000000..350111f --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/unalign-1.c @@ -0,0 +1,15 @@ +typedef struct __attribute__ ((__packed__)) +{ + char valueField[2]; +} ptp_tlv_t; +typedef struct __attribute__ ((__packed__)) +{ + char stepsRemoved; + ptp_tlv_t tlv[1]; +} ptp_message_announce_t; +int ptplib_send_announce(int sequenceId, int i) +{ + ptp_message_announce_t tx_packet; + ((long long *)tx_packet.tlv[0].valueField)[sequenceId] = i; + f(&tx_packet); +} diff --git a/gcc/testsuite/gcc.c-torture/execute/bswap-1.c b/gcc/testsuite/gcc.c-torture/execute/bswap-1.c new file mode 100644 index 0000000..ff80c05 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/bswap-1.c @@ -0,0 +1,51 @@ +/* Test __builtin_bswap64 . */ + +unsigned long long g(unsigned long long a) __attribute__((noinline)); +unsigned long long g(unsigned long long a) +{ + return __builtin_bswap64(a); +} + + +unsigned long long f(unsigned long long c) +{ + union { + unsigned long long a; + unsigned char b[8]; + } a, b; + a.a = c; + b.b[0] = a.b[7]; + b.b[1] = a.b[6]; + b.b[2] = a.b[5]; + b.b[3] = a.b[4]; + b.b[4] = a.b[3]; + b.b[5] = a.b[2]; + b.b[6] = a.b[1]; + b.b[7] = a.b[0]; + return b.a; +} + +int main(void) +{ + unsigned long long i; + /* The rest of the testcase assumes 8 byte long long. */ + if (sizeof(i) != sizeof(char)*8) + return 0; + if (f(0x12) != g(0x12)) + __builtin_abort(); + if (f(0x1234) != g(0x1234)) + __builtin_abort(); + if (f(0x123456) != g(0x123456)) + __builtin_abort(); + if (f(0x12345678ull) != g(0x12345678ull)) + __builtin_abort(); + if (f(0x1234567890ull) != g(0x1234567890ull)) + __builtin_abort(); + if (f(0x123456789012ull) != g(0x123456789012ull)) + __builtin_abort(); + if (f(0x12345678901234ull) != g(0x12345678901234ull)) + __builtin_abort(); + if (f(0x1234567890123456ull) != g(0x1234567890123456ull)) + __builtin_abort(); + return 0; +} |