From dafc5b461979fd1bba2dabfd32d01d7a20cd1005 Mon Sep 17 00:00:00 2001 From: Gil Pitney Date: Wed, 10 Dec 2014 14:19:29 -0800 Subject: prefetch: Implemented prefetch builtin (noop'ed) Also, updated CL_DEVICE_LOCAL_MEM_SIZE and Buffer::Buffer() constructor so that Khrnos basic "prefetch" test can pass. Previously, it was trying to allocate huge global buffers (computed based on the LOCAL_MEM_SIZE) and was failing. Signed-off-by: Gil Pitney --- include/cpu.h | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) (limited to 'include') diff --git a/include/cpu.h b/include/cpu.h index 6fa0d90..c7c5976 100644 --- a/include/cpu.h +++ b/include/cpu.h @@ -31,23 +31,27 @@ #include "clc.h" #define PREFETCH_VECTORIZE(PRIM_TYPE) \ - _CLC_OVERLOAD _CLC_DECL void prefetch(const __global PRIM_TYPE *p, size_t num_gentypes); \ - _CLC_OVERLOAD _CLC_DECL void prefetch(const __global PRIM_TYPE##2 *p, size_t num_gentypes); \ - _CLC_OVERLOAD _CLC_DECL void prefetch(const __global PRIM_TYPE##3 *p, size_t num_gentypes); \ - _CLC_OVERLOAD _CLC_DECL void prefetch(const __global PRIM_TYPE##4 *p, size_t num_gentypes); \ - _CLC_OVERLOAD _CLC_DECL void prefetch(const __global PRIM_TYPE##8 *p, size_t num_gentypes); \ - _CLC_OVERLOAD _CLC_DECL void prefetch(const __global PRIM_TYPE##16 *p, size_t num_gentypes); \ - -PREFETCH_VECTORIZE(char) -PREFETCH_VECTORIZE(uchar) -PREFETCH_VECTORIZE(short) -PREFETCH_VECTORIZE(ushort) -PREFETCH_VECTORIZE(int) -PREFETCH_VECTORIZE(uint) -PREFETCH_VECTORIZE(long) -PREFETCH_VECTORIZE(ulong) -PREFETCH_VECTORIZE(float) -PREFETCH_VECTORIZE(double) + _CLC_OVERLOAD _CLC_INLINE void prefetch(const __global PRIM_TYPE *p, size_t num_gentypes){} \ + _CLC_OVERLOAD _CLC_INLINE void prefetch(const __global PRIM_TYPE##2 *p, size_t num_gentypes){} \ + _CLC_OVERLOAD _CLC_INLINE void prefetch(const __global PRIM_TYPE##3 *p, size_t num_gentypes){} \ + _CLC_OVERLOAD _CLC_INLINE void prefetch(const __global PRIM_TYPE##4 *p, size_t num_gentypes){} \ + _CLC_OVERLOAD _CLC_INLINE void prefetch(const __global PRIM_TYPE##8 *p, size_t num_gentypes){} \ + _CLC_OVERLOAD _CLC_INLINE void prefetch(const __global PRIM_TYPE##16 *p, size_t num_gentypes){} \ + + +#define PREFETCH_TYPES() \ + PREFETCH_VECTORIZE(char) \ + PREFETCH_VECTORIZE(uchar) \ + PREFETCH_VECTORIZE(short) \ + PREFETCH_VECTORIZE(ushort) \ + PREFETCH_VECTORIZE(int) \ + PREFETCH_VECTORIZE(uint) \ + PREFETCH_VECTORIZE(long) \ + PREFETCH_VECTORIZE(ulong) \ + PREFETCH_VECTORIZE(float) \ + PREFETCH_VECTORIZE(double) \ + +PREFETCH_TYPES() /*----------------------------------------------------------------------------- * This can be empty since our copy routines are currently synchronous. When -- cgit v1.2.3