37 #include "../api_core.h"
38 #include "../Text/string_types.h"
39 #include "../System/cl_platform.h"
61 static unsigned int get_time();
66 enum CL_CPU_ExtensionX86 { mmx, mmx_ex, _3d_now, _3d_now_ex, sse, sse2, sse3, ssse3, sse4_a, sse4_1, sse4_2,
xop, avx, aes, fma3, fma4 };
69 static bool detect_cpu_extension(CL_CPU_ExtensionX86 ext);
70 static bool detect_cpu_extension(CL_CPU_ExtensionPPC ext);
73 static CL_Mutex *get_sharedptr_mutex();
76 static int get_num_cores();
85 static void *aligned_alloc(
size_t size,
size_t alignment = 16);
88 static void aligned_free(
void *ptr);
91 static int capture_stack_trace(
int frames_to_skip,
int max_frames,
void **out_frames,
unsigned int *out_hash = 0);
95 static std::vector<CL_String> get_stack_frames_text(
void **frames,
int num_frames);
101 static void sleep(
int millis);
108 static void pause(
int millis);
127 template<
typename T,
typename P1>
133 template<
typename T,
typename P1,
typename P2>
139 template<
typename T,
typename P1,
typename P2,
typename P3>
145 template<
typename T,
typename P1,
typename P2,
typename P3,
typename P4>
151 template<
typename T,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5>
157 template<
typename T,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6>
163 template<
typename T,
typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6,
typename P7>