summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorarphaman <arphaman@gmail.com>2013-09-01 14:01:04 +0100
committerarphaman <arphaman@gmail.com>2013-09-01 14:01:04 +0100
commit1e6e1abbcdd3fada164c5f3fa8b6bbabacce4766 (patch)
tree6cac1924c6fd2e8db53a6b4a3fa534d1cdcbe7f0
parentb01eea1baac4a840bbcbfa2339b4adc4f89650fb (diff)
downloadlibflangrt-1e6e1abbcdd3fada164c5f3fa8b6bbabacce4766.tar.gz
ETIME is now defined for two kinds of real
-rw-r--r--include/System/System.h5
-rw-r--r--lib/System/System.cpp15
2 files changed, 16 insertions, 4 deletions
diff --git a/include/System/System.h b/include/System/System.h
index 66394c8..fad55ea 100644
--- a/include/System/System.h
+++ b/include/System/System.h
@@ -13,8 +13,11 @@
#include "Libflang.h"
LIBFLANG_ABI void libflang_sys_init();
+
LIBFLANG_ABI void *libflang_malloc(size_t size);
LIBFLANG_ABI void libflang_free(void *ptr);
-LIBFLANG_ABI float libflang_etime(float *time0, float *time1);
+
+LIBFLANG_ABI double libflang_etime(double *time0, double *time1);
+LIBFLANG_ABI float libflang_etimef(float *time0, float *time1);
#endif
diff --git a/lib/System/System.cpp b/lib/System/System.cpp
index 1f6df53..44b1a83 100644
--- a/lib/System/System.cpp
+++ b/lib/System/System.cpp
@@ -19,12 +19,21 @@ LIBFLANG_ABI void libflang_free(void *ptr) {
free(ptr);
}
-LIBFLANG_ABI float libflang_etime(float *time0, float *time1) {
+template<typename T>
+static T etime(T *time0, T* time1) {
timeval stop;
gettimeofday(&stop, nullptr);
int64_t diff = stop.tv_usec - programStart.tv_usec;
- *time0 = float(double(diff) / 1000000.0);
- *time1 = 0.0f;
+ *time0 = T(double(diff) / 1000000.0);
+ *time1 = T(0.0);
return *time0 + *time1;
}
+
+LIBFLANG_ABI double libflang_etime(double *time0, double *time1) {
+ return etime(time0, time1);
+}
+
+LIBFLANG_ABI float libflang_etimef(float *time0, float *time1) {
+ return etime(time0, time1);
+}