* gcc.c-torture/execute/longlong.c: New test.
authorNeil Booth <neil@daikokuya.demon.co.uk>
Fri, 16 Feb 2001 07:43:21 +0000 (07:43 +0000)
committerNeil Booth <neil@gcc.gnu.org>
Fri, 16 Feb 2001 07:43:21 +0000 (07:43 +0000)
From-SVN: r39750

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/longlong.c [new file with mode: 0644]

index 074ac2d6d005c06c648a27cd36d7b34da14aca9f..09576beec2ff30ce818234eb3cd0f6ef6be58f62 100644 (file)
@@ -1,3 +1,7 @@
+2001-02-16  Neil Booth  <neil@daikokuya.demon.co.uk>
+
+       * gcc.c-torture/execute/longlong.c: New test.
+
 Wed Feb 14 21:41:17 2001  J"orn Rennecke <amylaar@redhat.com>
 
        * g++.old-deja/g++.brendan/new2.C (main): Use sizeof.
diff --git a/gcc/testsuite/gcc.c-torture/execute/longlong.c b/gcc/testsuite/gcc.c-torture/execute/longlong.c
new file mode 100644 (file)
index 0000000..daae700
--- /dev/null
@@ -0,0 +1,39 @@
+/* Source: PR 321 modified for test suite by Neil Booth 14 Jan 2001.  */
+
+typedef unsigned long long uint64;
+unsigned int pars;
+
+uint64 b[32];
+uint64 *r = b;
+
+void alpha_ep_extbl_i_eq_0()
+{
+  unsigned int rb, ra, rc;
+
+  rb  = (((unsigned int)(pars) >> 27)) & 0x1fUL;
+  ra  = (((unsigned int)(pars) >> 5)) & 0x1fUL;
+  rc  = (((unsigned int)(pars) >> 0)) & 0x1fUL;
+  {
+    uint64 temp = ((r[ra] >> ((r[rb] & 0x7) << 3)) & 0x00000000000000FFLL); 
+    if (rc != 31) 
+      r[rc] = temp;  
+  }
+}
+
+int 
+main(void)
+{
+  if (sizeof (uint64) == 8)
+    {
+      b[17] = 0x0000000000303882ULL; /* rb */
+      b[2] = 0x534f4f4c494d000aULL; /* ra & rc */
+
+      pars = 0x88000042;       /* 17, 2, 2 coded */
+      alpha_ep_extbl_i_eq_0();
+
+      if (b[2] != 0x4d)
+       abort ();
+    }
+
+  exit (0);
+}