[llvm-commits] [test-suite] r125147 - in /test-suite/trunk: Makefile.programs Makefile.rules tools/Makefile tools/fpcmp.c tools/timeit.c

Daniel Dunbar daniel at zuster.org
Tue Feb 8 16:44:15 PST 2011


Author: ddunbar
Date: Tue Feb  8 18:44:15 2011
New Revision: 125147

URL: http://llvm.org/viewvc/llvm-project?rev=125147&view=rev
Log:
test-suite: Start sketching some tools.
 - timeit is just a simple replacement for /usr/bin/time which prints a whopping
   four digits of precision. That's right, FOUR!
 - fpcmp is just stubbed out at the moment. Yes, I will be reimplementing fpcmp
   in C.

Added:
    test-suite/trunk/tools/fpcmp.c
    test-suite/trunk/tools/timeit.c
Modified:
    test-suite/trunk/Makefile.programs
    test-suite/trunk/Makefile.rules
    test-suite/trunk/tools/Makefile

Modified: test-suite/trunk/Makefile.programs
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/Makefile.programs?rev=125147&r1=125146&r2=125147&view=diff
==============================================================================
--- test-suite/trunk/Makefile.programs (original)
+++ test-suite/trunk/Makefile.programs Tue Feb  8 18:44:15 2011
@@ -136,6 +136,11 @@
 RUNSAFELY := $(RUNSAFELY) -u $(RUNUNDER)
 endif
 
+ifdef TIMEIT
+RUNSAFELY := $(RUNSAFELY) -t "$(TIMEIT)"
+RUNSAFELYLOCAL := $(RUNSAFELYLOCAL) -t "$(TIMEIT)"
+endif
+
 RUNSAFELY := $(RUNSAFELY) $(RUNTIMELIMIT) $(EXIT_OK)
 RUNSAFELYLOCAL := $(RUNSAFELYLOCAL) $(RUNTIMELIMIT) $(EXIT_OK)
 endif

Modified: test-suite/trunk/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/Makefile.rules?rev=125147&r1=125146&r2=125147&view=diff
==============================================================================
--- test-suite/trunk/Makefile.rules (original)
+++ test-suite/trunk/Makefile.rules Tue Feb  8 18:44:15 2011
@@ -317,7 +317,18 @@
 LPROF     = $(LLVMTOOLCURRENT)/llvm-prof$(EXEEXT)
 LBUGPOINT = $(LLVMTOOLCURRENT)/bugpoint$(EXEEXT)
 LFINDMISOPT= $(LLVM_SRC_ROOT)/utils/findmisopt
+
+ifeq ($(HAS_LLVM),1)
 FPCMP     = $(LLVMTOOLCURRENT)/fpcmp
+else
+FPCMP     = $(PROJ_OBJ_ROOT)/tools/fpcmp
+endif
+
+ifeq ($(HAS_LLVM),0)
+# Not strictly related to HAS_LLVM, but otherwise in generally tools weren't
+# being built.
+TIMEIT    = $(PROJ_OBJ_ROOT)/tools/timeit
+endif
 
 LCC := $(LLVMCC)
 LCXX := $(LLVMCXX)

Modified: test-suite/trunk/tools/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/tools/Makefile?rev=125147&r1=125146&r2=125147&view=diff
==============================================================================
--- test-suite/trunk/tools/Makefile (original)
+++ test-suite/trunk/tools/Makefile Tue Feb  8 18:44:15 2011
@@ -1,2 +1,10 @@
 LEVEL=..
 include $(LEVEL)/Makefile.programs
+
+all:: timeit fpcmp
+
+timeit: timeit.c
+	$(CC) $(CFLAGS) -O3 -o $@ $<
+
+fpcmp: fpcmp.c
+	$(CC) $(CFLAGS) -O3 -o $@ $<

Added: test-suite/trunk/tools/fpcmp.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/tools/fpcmp.c?rev=125147&view=auto
==============================================================================
--- test-suite/trunk/tools/fpcmp.c (added)
+++ test-suite/trunk/tools/fpcmp.c Tue Feb  8 18:44:15 2011
@@ -0,0 +1,14 @@
+/*===-- timeit.c - LLVM Test Suite Timing Tool ------------------*- C++ -*-===*\
+|*                                                                            *|
+|*                     The LLVM Compiler Infrastructure                       *|
+|*                                                                            *|
+|* This file is distributed under the University of Illinois Open Source      *|
+|* License. See LICENSE.TXT for details.                                      *|
+|*                                                                            *|
+\*===----------------------------------------------------------------------===*/
+
+#include <stdio.h>
+
+int main(int argc, char * const argv[]) {
+  return 0;
+}

Added: test-suite/trunk/tools/timeit.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/tools/timeit.c?rev=125147&view=auto
==============================================================================
--- test-suite/trunk/tools/timeit.c (added)
+++ test-suite/trunk/tools/timeit.c Tue Feb  8 18:44:15 2011
@@ -0,0 +1,83 @@
+/*===-- timeit.c - LLVM Test Suite Timing Tool ------------------*- C++ -*-===*\
+|*                                                                            *|
+|*                     The LLVM Compiler Infrastructure                       *|
+|*                                                                            *|
+|* This file is distributed under the University of Illinois Open Source      *|
+|* License. See LICENSE.TXT for details.                                      *|
+|*                                                                            *|
+\*===----------------------------------------------------------------------===*/
+
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/resource.h>
+#include <sys/time.h>
+#include <sys/wait.h>
+
+int g_posix_mode = 0;
+
+static double sample_wall_time(void) {
+  struct timeval t;
+  gettimeofday(&t, NULL);
+  return (double) t.tv_sec + t.tv_usec * 1.e-6;
+}
+
+int execute(char * const argv[]) {
+  double start_time = sample_wall_time();
+  pid_t pid = fork();
+
+  double real_time, user_time, sys_time;
+  struct rusage usage;
+  int res, status;
+
+  if (!pid) {
+    execvp(argv[0], argv);
+    perror("execvp");
+    return 127;
+  }
+
+  res = waitpid(pid, &status, 0);
+  if (res < 0) {
+    perror("waitpid");
+    return 126;
+  }
+
+  real_time = sample_wall_time() - start_time;
+
+  if (getrusage(RUSAGE_CHILDREN, &usage) < 0) {
+    perror("getrusage");
+    return 125;
+  }
+  user_time = (double) usage.ru_utime.tv_sec + usage.ru_utime.tv_usec/1000000.0;
+  sys_time = (double) usage.ru_stime.tv_sec + usage.ru_stime.tv_usec/1000000.0;
+
+  if (g_posix_mode) {
+    fprintf(stderr, "real %12.4f\nuser %12.4f\nsys  %12.4f\n",
+            real_time, user_time, sys_time);
+  } else {
+    fprintf(stderr, "%12.4f real %12.4f user %12.4f sys\n",
+            real_time, user_time, sys_time);
+  }
+
+  return WEXITSTATUS(status);
+}
+
+int main(int argc, char * const argv[]) {
+  int i;
+
+  for (i = 1; i != argc; ++i) {
+    if (argv[i][0] != '-')
+      break;
+
+    switch (argv[i][1]) {
+    case 'p':
+      g_posix_mode = 1;
+      continue;
+
+    default:
+      fprintf(stderr, "error: invalid argument '%s'\n", argv[i]);
+      return 1;
+    }
+  }
+
+  return execute(&argv[i]);
+}





More information about the llvm-commits mailing list