[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