diff options
author | Ken Werner <ken.werner@de.ibm.com> | 2010-11-05 14:31:30 +0000 |
---|---|---|
committer | Ken Werner <ken.werner@de.ibm.com> | 2010-11-05 14:31:30 +0000 |
commit | f4b8a18de7f165283091323b11e9e363dadb8b62 (patch) | |
tree | 5e42a431d5add30b82af29bebc879a9c49f6ef07 /gdb/testsuite/gdb.opencl/convs_casts.exp | |
parent | aa291e2d99dd5e6be27b43c721fa92edae076138 (diff) | |
download | fsf-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.exp | 95 |
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} |