summaryrefslogtreecommitdiff
path: root/tools/mbench
diff options
context:
space:
mode:
authorzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2011-01-06 16:44:13 +0000
committerzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2011-01-06 16:44:13 +0000
commit857a543e4eced5eb5abfb5c54a1f17edc96c281c (patch)
tree8a68db3b2ae4b8333cd974eac990ab60b17c66fe /tools/mbench
parent79f15d051f74e26333c6c73a962d6118e1db85ea (diff)
downloadmpfr-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/Makefile6
-rw-r--r--tools/mbench/timp.h16
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__( \