diff options
-rw-r--r-- | include/System/System.h | 5 | ||||
-rw-r--r-- | lib/System/System.cpp | 15 |
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); +} |