diff mbox

[Committed] Add some new testcases

Message ID CA+=Sn1k0Nmsjqsj0_tacB-R-CMmnEm4U3N_NTEOE-3y7_k--Vw@mail.gmail.com
State New
Headers show

Commit Message

Andrew Pinski July 16, 2012, 5:16 p.m. UTC
Hi,
  This is just a small collection of testcases which we (Cavium) had locally.
gcc.c-torture/execute/bswap-1.c tests __builtin_bswap64 as there was
no testcases before
gcc.c-torture/compile/unalign-1.c ICEd when movmisalign* patterns were
added to mips.
gcc.c-torture/compile/20120524-1.c ICEd when enhancing mips's copy
block patterns
gcc.c-torture/compile/20101216-1.c ICEd with some of the older
truncate patches (no testcase was added back then)

Committed all as obvious after running the testsuite on x86_64-linux-gnu.

Thanks,
Andrew Pinski

* 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
diff mbox

Patch

Index: testsuite/gcc.c-torture/execute/bswap-1.c
===================================================================
--- testsuite/gcc.c-torture/execute/bswap-1.c	(revision 0)
+++ testsuite/gcc.c-torture/execute/bswap-1.c	(revision 0)
@@ -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;
+}
Index: testsuite/gcc.c-torture/compile/unalign-1.c
===================================================================
--- testsuite/gcc.c-torture/compile/unalign-1.c	(revision 0)
+++ testsuite/gcc.c-torture/compile/unalign-1.c	(revision 0)
@@ -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);
+}
Index: testsuite/gcc.c-torture/compile/20101216-1.c
===================================================================
--- testsuite/gcc.c-torture/compile/20101216-1.c	(revision 0)
+++ testsuite/gcc.c-torture/compile/20101216-1.c	(revision 0)
@@ -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();
+     }
+}
Index: testsuite/gcc.c-torture/compile/20120524-1.c
===================================================================
--- testsuite/gcc.c-torture/compile/20120524-1.c	(revision 0)
+++ testsuite/gcc.c-torture/compile/20120524-1.c	(revision 0)
@@ -0,0 +1,4 @@ 
+  char CJPAT_Packet[1508] = {};
+void build_packet(int port, char *packet) {
+            memcpy(packet, CJPAT_Packet, sizeof(CJPAT_Packet)); 
+}