+// See LICENSE for license details.
+
#ifndef __UTIL_H
#define __UTIL_H
extern void setStats(int enable);
#endif
+#include <stdint.h>
+
+extern int have_vec;
+
+#define static_assert(cond) switch(0) { case 0: case !!(long)(cond): ; }
+
static void printArray(const char name[], int n, const int arr[])
{
#if HOST_DEBUG
return 0;
}
-#ifndef ncores
-#define ncores 1
-#endif
-
-static void __attribute__((noinline)) barrier()
+static void __attribute__((noinline)) barrier(int ncores)
{
static volatile int sense;
static volatile int count;
__sync_synchronize();
}
+static uint64_t lfsr(uint64_t x)
+{
+ uint64_t bit = (x ^ (x >> 1)) & 1;
+ return (x >> 1) | (bit << 62);
+}
+
#ifdef __riscv
#include "encoding.h"
#endif
+#define stringify_1(s) #s
+#define stringify(s) stringify_1(s)
+#define stats(code, iter) do { \
+ unsigned long _c = -rdcycle(), _i = -rdinstret(); \
+ code; \
+ _c += rdcycle(), _i += rdinstret(); \
+ if (cid == 0) \
+ printf("\n%s: %ld cycles, %ld.%ld cycles/iter, %ld.%ld CPI\n", \
+ stringify(code), _c, _c/iter, 10*_c/iter%10, _c/_i, 10*_c/_i%10); \
+ } while(0)
+
#endif //__UTIL_H