#include <stdio.h>
#include <float.h>
-#include <llvm-c/Core.h>
-#include <llvm-c/Analysis.h>
-#include <llvm-c/ExecutionEngine.h>
-#include <llvm-c/Target.h>
-#include <llvm-c/BitWriter.h>
-#include <llvm-c/Transforms/Scalar.h>
+#include "gallivm/lp_bld.h"
#include "pipe/p_state.h"
#include "util/u_format.h"
#include "util/u_math.h"
-#include "util/u_debug_dump.h"
+#include "util/u_dump.h"
-#include "lp_bld_type.h"
+#include "gallivm/lp_bld_type.h"
+
+
+#define LP_TEST_NUM_SAMPLES 32
void
boolean
-test_some(unsigned verbose, FILE *fp, unsigned long n);
+test_some(unsigned verbose, FILE *fp,
+ unsigned long n);
+boolean
+test_single(unsigned verbose, FILE *fp);
boolean
test_all(unsigned verbose, FILE *fp);
-static INLINE uint64_t
+#if defined(PIPE_CC_MSVC)
+
+#include <intrin.h>
+#define rdtsc() __rdtsc()
+
+#elif defined(PIPE_CC_GCC) && (defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64))
+
+static inline uint64_t
rdtsc(void)
{
-#if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64)
uint32_t hi, lo;
__asm__ __volatile__ ("rdtsc" : "=a"(lo), "=d"(hi));
return ((uint64_t)lo) | (((uint64_t)hi) << 32);
+}
+
#else
- return 0;
+
+#define rdtsc() 0
+
#endif
-}
+
float