aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.opencl/convs_casts.exp
diff options
context:
space:
mode:
authorKen Werner <ken.werner@de.ibm.com>2010-11-05 14:31:30 +0000
committerKen Werner <ken.werner@de.ibm.com>2010-11-05 14:31:30 +0000
commitf4b8a18de7f165283091323b11e9e363dadb8b62 (patch)
tree5e42a431d5add30b82af29bebc879a9c49f6ef07 /gdb/testsuite/gdb.opencl/convs_casts.exp
parentaa291e2d99dd5e6be27b43c721fa92edae076138 (diff)
downloadfsf-binutils-gdb-f4b8a18de7f165283091323b11e9e363dadb8b62.zip
fsf-binutils-gdb-f4b8a18de7f165283091323b11e9e363dadb8b62.tar.gz
fsf-binutils-gdb-f4b8a18de7f165283091323b11e9e363dadb8b62.tar.bz2
gdb:
* NEWS: Mention OpenCL C language support. * Makefile.in (SFILES): Add opencl-lang.c. (COMMON_OBS): Add opencl-lang.o. * opencl-lang.c: New File * defs.h (enum language): Add language_opencl. * dwarf2read.c (read_file_scope): Handle DW_AT_producer for the IBM XL C OpenCL compiler. * c-lang.h: Include "parser-defs.h". (evaluate_subexp_c): Declare. * c-lang.c (evaluate_subexp_c): Remove the static qualifier. (c_op_print_tab): Add declaration. * eval.c (binop_promote): Handle language_opencl. * c-exp.y: Lookup the primitive types instead of referring to the builtins. gdb/testsuite: * Makefile.in (ALL_SUBDIRS): Add gdb.opencl. * configure.ac (AC_OUTPUT): Add gdb.opencl/Makefile. * configure: Regenerate. * gdb.opencl/Makefile.in: New File. * gdb.opencl/datatypes.exp: Likewise. * gdb.opencl/datatypes.cl: Likewise. * gdb.opencl/operators.exp: Likewise. * gdb.opencl/operators.cl: Likewise. * gdb.opencl/vec_comps.exp: Likewise. * gdb.opencl/vec_comps.cl: Likewise. * gdb.opencl/convs_casts.exp: Likewise. * gdb.opencl/convs_casts.cl: Likewise. * lib/opencl.exp: Likewise. * lib/opencl_hostapp.c: Likewise. * lib/opencl_kernel.cl: Likewise. * lib/cl_util.c: Likewise. * lib/cl_util.c: Likewise. * gdb.base/default.exp (set language): Add "opencl" to the list of languages. gdb/doc: * gdb.texinfo: (Summary) Add mention about OpenCL C language support. (OpenCL C): New node.
Diffstat (limited to 'gdb/testsuite/gdb.opencl/convs_casts.exp')
-rw-r--r--gdb/testsuite/gdb.opencl/convs_casts.exp95
1 files changed, 95 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.opencl/convs_casts.exp b/gdb/testsuite/gdb.opencl/convs_casts.exp
new file mode 100644
index 0000000..34ea635
--- /dev/null
+++ b/gdb/testsuite/gdb.opencl/convs_casts.exp
@@ -0,0 +1,95 @@
+# 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>.
+#
+# Tests GDBs support for OpenCL type conversions and casts.
+
+if $tracelevel {
+ strace $tracelevel
+}
+
+load_lib opencl.exp
+
+if { [skip_opencl_tests] } {
+ return 0
+}
+
+set testfile "convs_casts"
+set clprogram [remote_download target ${srcdir}/${subdir}/${testfile}.cl]
+
+# Compile the generic OpenCL host app
+if { [gdb_compile_opencl_hostapp "${clprogram}" "${testfile}" "" ] != "" } {
+ untested ${testfile}.exp
+ return -1
+}
+
+# Load the OpenCL app
+clean_restart ${testfile}
+
+# Set breakpoint at the OpenCL kernel
+gdb_test_multiple "break testkernel" "set pending breakpoint" {
+ -re ".*Function \"testkernel\" not defined.*Make breakpoint pending.*y or \\\[n\\\]. $" {
+ gdb_test "y" "Breakpoint.*testkernel.*pending." "set pending breakpoint (without symbols)"
+ }
+}
+
+gdb_run_cmd
+gdb_test "" ".*Breakpoint.*1.*testkernel.*" "run"
+
+# Retrieve some information about availability of OpenCL extensions
+set have_cl_khr_fp64 [get_integer_valueof "have_cl_khr_fp64" 0]
+set have_cl_khr_fp16 [get_integer_valueof "have_cl_khr_fp16" 0]
+
+proc vec_casts { name } {
+ global have_cl_khr_fp16 have_cl_khr_fp64
+ set types {"char" "uchar" "short" "ushort" "int" "uint" "long" "ulong" "half" "float" "double"}
+ set len [llength ${types}]
+
+ for {set i 0} {$i < ${len}} {incr i} {
+ set type [lindex ${types} $i]
+
+ gdb_test "print/d (${type}2)${name}" " = \\{123, 123\\}"
+ gdb_test "print/d (${type}3)${name}" " = \\{123, 123, 123\\}"
+ gdb_test "print/d (${type}4)${name}" " = \\{123, 123, 123, 123\\}"
+ gdb_test "print/d (${type}8)${name}" " = \\{123, 123, 123, 123, 123, 123, 123, 123\\}"
+ gdb_test "print/d (${type}16)${name}" " = \\{123 <repeats 16 times>\\}"
+
+ gdb_test "ptype (${type}2)${name}" "${type} \\\[2\\\]"
+ gdb_test "ptype (${type}3)${name}" "${type} \\\[3\\\]"
+ gdb_test "ptype (${type}4)${name}" "${type} \\\[4\\\]"
+ gdb_test "ptype (${type}8)${name}" "${type} \\\[8\\\]"
+ gdb_test "ptype (${type}16)${name}" "${type} \\\[16\\\]"
+ }
+}
+
+vec_casts "c"
+vec_casts "uc"
+vec_casts "s"
+vec_casts "us"
+vec_casts "i"
+vec_casts "ui"
+vec_casts "l"
+vec_casts "ul"
+if { ${have_cl_khr_fp16} } {
+ vec_casts "h"
+}
+vec_casts "f"
+if { ${have_cl_khr_fp64} } {
+ vec_casts "d"
+}
+
+# Delete the OpenCL program source
+remote_file target delete ${clprogram}