summaryrefslogtreecommitdiff
path: root/gdb/testsuite/lib/cl_util.h
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/testsuite/lib/cl_util.h')
-rw-r--r--gdb/testsuite/lib/cl_util.h88
1 files changed, 88 insertions, 0 deletions
diff --git a/gdb/testsuite/lib/cl_util.h b/gdb/testsuite/lib/cl_util.h
new file mode 100644
index 00000000000..acdbc5d137f
--- /dev/null
+++ b/gdb/testsuite/lib/cl_util.h
@@ -0,0 +1,88 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2010 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ Contributed by Ken Werner <ken.werner@de.ibm.com> */
+
+/* Utility macros and functions for OpenCL applications. */
+
+#ifndef CL_UTIL_H
+#define CL_UTIL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef __APPLE__
+#include <OpenCL/opencl.h>
+#else
+#include <CL/cl.h>
+#endif
+#include <stdio.h>
+
+/* Executes the given OpenCL function and checks its return value.
+ In case of failure (rc != CL_SUCCESS) an error string will be
+ printed to stderr and the program will be terminated. This Macro
+ is only intended for OpenCL routines which return cl_int. */
+
+#define CHK(func)\
+{\
+ int rc = (func);\
+ CHK_ERR (#func, rc);\
+}
+
+/* Macro that checks an OpenCL error code. In case of failure
+ (err != CL_SUCCESS) an error string will be printed to stderr
+ including the prefix and the program will be terminated. This
+ Macro is only intended to use in conjunction with OpenCL routines
+ which take a pointer to a cl_int as an argument to place their
+ error code. */
+
+#define CHK_ERR(prefix, err)\
+if (err != CL_SUCCESS)\
+ {\
+ fprintf (stderr, "CHK_ERR (%s, %d)\n", prefix, err);\
+ fprintf (stderr, "%s:%d error: %s\n", __FILE__, __LINE__,\
+ get_clerror_string (err));\
+ exit (EXIT_FAILURE);\
+ };
+
+/* Return a pointer to a string that describes the error code specified
+ by the errcode argument. */
+
+extern const char *get_clerror_string (int errcode);
+
+/* Prints OpenCL information to stdout. */
+
+extern void print_clinfo ();
+
+/* Reads a given file into the memory and returns a pointer to the data or NULL
+ if the file does not exist. FILENAME specifies the location of the file to
+ be read. SIZE is an output parameter that returns the size of the file in
+ bytes. */
+
+extern const char *read_file (const char * const filename, size_t *size);
+
+/* Saves all program binaries of the given OpenCL PROGRAM. The file
+ names are extracted from the devices. */
+
+extern void save_program_binaries (cl_program program);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* CL_UTIL_H */