Initial revision
authorGuillermo J. Rozas <edu/mit/csail/zurich/gjr>
Fri, 14 Feb 1992 01:50:05 +0000 (01:50 +0000)
committerGuillermo J. Rozas <edu/mit/csail/zurich/gjr>
Fri, 14 Feb 1992 01:50:05 +0000 (01:50 +0000)
v7/src/compiler/documentation/test-c.c [new file with mode: 0644]

diff --git a/v7/src/compiler/documentation/test-c.c b/v7/src/compiler/documentation/test-c.c
new file mode 100644 (file)
index 0000000..be1a663
--- /dev/null
@@ -0,0 +1,76 @@
+/* -*- C -*- */
+
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/documentation/test-c.c,v 1.1 1992/02/14 01:50:05 jinx Exp $ */
+
+#include <stdio.h>
+
+struct two_word_struct
+{
+  long foo;
+  long bar;
+};
+
+struct two_word_struct
+reveal_structure_convention (x, y)
+     long x;
+     long y;
+{
+  struct two_word_struct result;
+
+  result.foo = (x + y);
+  result.bar = (x - y);
+  return (result);
+}
+
+long
+reveal_register_partition
+    (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9,
+     y0, y1, y2, y3, y4, y5, y6, y7, y8, y9,
+     z0, z1, z2, z3, z4, z5, z6, z7, z8, z9,
+     q0, q1)
+long
+  x0, x1, x2, x3, x4, x5, x6, x7, x8, x9,
+  y0, y1, y2, y3, y4, y5, y6, y7, y8, y9,
+  z0, z1, z2, z3, z4, z5, z6, z7, z8, z9,
+  q0, q1;
+{
+  return (  (x0 * y0) + (x1 * y1) + (x2 * y2) + (x3 * y3) + (x4 * y4)
+         + (x5 * y5) + (x6 * y6) + (x7 * y7) + (x8 * y8) + (x9 * y9)
+         + (y0 * z0) + (y1 * z1) + (y2 * z2) + (y3 * z3) + (y4 * z4)
+         + (y5 * z5) + (y6 * z6) + (y7 * z7) + (y8 * z8) + (y9 * z9)
+         + (z0 * q0) + (z1 * q1) + (z2 * x2) + (z3 * x3) + (z4 * x4)
+         + (z5 * x5) + (z6 * x6) + (z7 * x7) + (z8 * x8) + (z9 * x9)
+         + (q0 * x0) + (q1 * x1));
+}
+
+main (argc, argv)
+     int argc;
+     char **argv;
+{
+  extern int atoi ();
+  long values[33];
+  int count;
+  struct two_word_struct temp;
+
+  if (argc != 33)
+  {
+    fprintf (stderr, "usage: Don't run this program!\n");
+    exit (1);
+  }
+  for (count = 1; count < argc; count++)
+    values[count] = ((long) (atoi (argv[count])));
+
+  printf ("result = %ld",
+         (reveal_register_partition
+          (values[ 1], values[ 2], values[ 3], values[ 4], values[ 5],
+           values[ 6], values[ 7], values[ 8], values[ 9], values[10],
+           values[11], values[12], values[13], values[14], values[15],
+           values[16], values[17], values[18], values[19], values[20],
+           values[21], values[22], values[23], values[24], values[25],
+           values[26], values[27], values[28], values[29], values[30],
+           values[31], values[32])));
+
+  temp = (reveal_structure_convention (values[31], values[32]));
+  printf ("temp = {foo = %ld, bar = %ld}\n", temp.foo, temp.bar);
+  exit (0);
+}