diff options
author | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2011-01-06 16:44:13 +0000 |
---|---|---|
committer | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2011-01-06 16:44:13 +0000 |
commit | 857a543e4eced5eb5abfb5c54a1f17edc96c281c (patch) | |
tree | 8a68db3b2ae4b8333cd974eac990ab60b17c66fe /tools/mbench | |
parent | 79f15d051f74e26333c6c73a962d6118e1db85ea (diff) | |
download | mpfr-857a543e4eced5eb5abfb5c54a1f17edc96c281c.tar.gz |
patch from Patrick Pelissier to use clock_getime instead of rdtsc
(use "make rt" instead of "make")
References:
http://stackoverflow.com/questions/3388134/rdtsc-accuracy-across-cpu-cores
http://en.wikipedia.org/wiki/Time_Stamp_Counter
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@7313 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'tools/mbench')
-rw-r--r-- | tools/mbench/Makefile | 6 | ||||
-rw-r--r-- | tools/mbench/timp.h | 16 |
2 files changed, 20 insertions, 2 deletions
diff --git a/tools/mbench/Makefile b/tools/mbench/Makefile index dae31d07a..6029b617d 100644 --- a/tools/mbench/Makefile +++ b/tools/mbench/Makefile @@ -23,6 +23,7 @@ CC=gcc CXX=g++ RANLIB=ranlib CFLAGS=-O2 -fomit-frame-pointer -Wall -g +LDFLAGS= RM=rm -f CP=cp -f MV=mv -f @@ -117,7 +118,7 @@ mfv5-crlibm.o: mfv5-crlibm.cc mfv5.h @(test -f $(CRLIBM)/lib/libcrlibm.a && $(CXX) $(INCLUDES) -I$(CRLIBM)/include/ $(CFLAGS) -c $< && echo "Using CRLIBM.") || ($(CXX) -c mfv5-void.cc -o mfv5-crlibm.o && echo "CRLIBM not found.") mfv5: mfv5.o mfv5-mpfr.o mfv5-mpf.o mfv5-ntl.o mfv5-arprec.o mfv5-pari.o mfv5-cln.o mfv5-libc.o mfv5-crlibm.o - $(CXX) $(CFLAGS) mfv5.o mfv5-mpfr.o mfv5-mpf.o mfv5-ntl.o mfv5-arprec.o mfv5-pari.o mfv5-cln.o mfv5-libc.o mfv5-crlibm.o $(XLIBS) $(LIBS) -o mfv5 + $(CXX) $(CFLAGS) mfv5.o mfv5-mpfr.o mfv5-mpf.o mfv5-ntl.o mfv5-arprec.o mfv5-pari.o mfv5-cln.o mfv5-libc.o mfv5-crlibm.o $(XLIBS) $(LIBS) $(LDFLAGS) -o mfv5 dist: $(DIST) rm -fr $(NAME)-$(VERSION) $(NAME)-$(VERSION).tar $(NAME)-$(VERSION).tar.bz2 @@ -126,3 +127,6 @@ dist: $(DIST) tar cf $(NAME)-$(VERSION).tar $(NAME)-$(VERSION) bzip2 $(NAME)-$(VERSION).tar rm -fr $(NAME)-$(VERSION) + +rt: + make clean all CFLAGS="-O2 -fomit-frame-pointer -Wall -g -DUSE_CLOCK_MONOTONIC" LDFLAGS="-lrt" diff --git a/tools/mbench/timp.h b/tools/mbench/timp.h index 5b7ce6429..fa2194b15 100644 --- a/tools/mbench/timp.h +++ b/tools/mbench/timp.h @@ -35,7 +35,21 @@ http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc., #endif /* High accuracy timing */ -#if defined (__i386__) || defined(__amd64__) +#if defined (USE_CLOCK_MONOTONIC) + +/* Needs to include -lrt in the library section */ +#include <time.h> + +#define timp_rdtsc() \ +({unsigned long long int x; \ + struct timespec ts; \ + clock_gettime(CLOCK_MONOTONIC, &ts); \ + x = ts.tv_sec * 1000000000UL + ts.tv_nsec; \ + x; }) +#define timp_rdtsc_before(time) (time = timp_rdtsc()) +#define timp_rdtsc_after(time) (time = timp_rdtsc()) + +#elif defined (__i386__) || defined(__amd64__) #define timp_rdtsc_before(time) \ __asm__ __volatile__( \ |