# Copyright 2010-2012 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 operators.

load_lib opencl.exp

if { [skip_opencl_tests] } {
    return 0
}

set testfile "operators"
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 "tbreak testkernel" \
    "" \
    "Set pending breakpoint" \
    ".*Function \"testkernel\" not defined.*Make breakpoint pending.*y or \\\[n\\\]. $" \
    "y"

gdb_run_cmd
gdb_test "" ".*reakpoint.*1.*testkernel.*" "run"

# Continue to the marker
gdb_breakpoint [gdb_get_line_number "marker" "${clprogram}"]
gdb_continue_to_breakpoint "marker"

# 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 check_basic { name type isfloat } {
  gdb_test "print/d ${name}a" " = 2"
  gdb_test "print/d ${name}b" " = 1"
  gdb_test "print/d ${name}4a" " = \\{2, 4, 8, 16\\}"
  gdb_test "print/d ${name}4b" " = \\{1, 2, 8, 4\\}"

  gdb_test "ptype ${name}a" "type = ${type}"
  gdb_test "ptype ${name}b" "type = ${type}"
  gdb_test "ptype ${name}4a" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}4b" "type = ${type} \\\[4\\\]"

  if { ! ${isfloat} } {
    gdb_test "print/d u${name}a" " = 2"
    gdb_test "print/d u${name}b" " = 1"
    gdb_test "print/d u${name}4a" " = \\{2, 4, 8, 16\\}"
    gdb_test "print/d u${name}4b" " = \\{1, 2, 8, 4\\}"
    gdb_test "ptype u${name}a" "type = (unsigned ${type}|u${type})"
    gdb_test "ptype u${name}b" "type = (unsigned ${type}|u${type})"
    gdb_test "ptype u${name}4a" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
  }
}

# Arithmetic operators
proc check_arithmetic_ops { name type isfloat size } {
  # scalar with scalar
  gdb_test "print/d ${name}a + ${name}b" " = 3"
  gdb_test "print/d ${name}a - ${name}b" " = 1"
  gdb_test "print/d ${name}a * ${name}b" " = 2"
  gdb_test "print/d ${name}a / ${name}b" " = 2"
  # scalar with vector
  gdb_test "print/d ${name}a + ${name}4b" " = \\{3, 4, 10, 6\\}"
  gdb_test "print/d ${name}4a - ${name}b" " = \\{1, 3, 7, 15\\}"
  gdb_test "print/d ${name}4a * ${name}b" " = \\{2, 4, 8, 16\\}"
  gdb_test "print/d ${name}a / ${name}4b" " = \\{2, 1, 0, 0\\}"
  # vector with vector
  gdb_test "print/d ${name}4a + ${name}4b" " = \\{3, 6, 16, 20\\}"
  gdb_test "print/d ${name}4a - ${name}4b" " = \\{1, 2, 0, 12\\}"
  gdb_test "print/d ${name}4a * ${name}4b" " = \\{2, 8, 64, 64\\}"
  gdb_test "print/d ${name}4a / ${name}4b" " = \\{2, 2, 1, 4\\}"

  # scalar
  gdb_test "print/d ${name}a++" " = 2"
  gdb_test "print/d ++${name}a" " = 4"
  gdb_test "print/d ${name}a--" " = 4"
  gdb_test "print/d --${name}a" " = 2"
  gdb_test "print/d +${name}a" " = 2"
  gdb_test "print/d -${name}a" " = -2"
  # vector
  gdb_test "print/d ${name}4a++" " = \\{2, 4, 8, 16\\}"
  gdb_test "print/d ++${name}4a" " = \\{4, 6, 10, 18\\}"
  gdb_test "print/d ${name}4a--" " = \\{4, 6, 10, 18\\}"
  gdb_test "print/d --${name}4a" " = \\{2, 4, 8, 16\\}"
  gdb_test "print/d +${name}4a" " = \\{2, 4, 8, 16\\}"
  gdb_test "print/d -${name}4a" " = \\{-2, -4, -8, -16\\}"

  # scalar with vector
  gdb_test "ptype ${name}a + ${name}4b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}4a - ${name}b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}a * ${name}4b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}4a / ${name}b" "type = ${type} \\\[4\\\]"
  # vector with vector
  gdb_test "ptype ${name}4a + ${name}4b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}4a - ${name}4b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}4a * ${name}4b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}4a / ${name}4b" "type = ${type} \\\[4\\\]"

  # scalar
  gdb_test "ptype ${name}a++" "type = ${type}"
  gdb_test "ptype ++${name}a" "type = ${type}"
  gdb_test "ptype ${name}a--" "type = ${type}"
  gdb_test "ptype --${name}a" "type = ${type}"
  # vector
  gdb_test "ptype ${name}4a++" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ++${name}4a" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}4a--" "type = ${type} \\\[4\\\]"
  gdb_test "ptype --${name}4a" "type = ${type} \\\[4\\\]"
  gdb_test "ptype +${name}4a" "type = ${type} \\\[4\\\]"
  gdb_test "ptype -${name}4a" "type = ${type} \\\[4\\\]"

  if { ${isfloat} } {
    # scalar with scalar
    gdb_test "ptype ${name}a + ${name}b" "type = ${type}"
    gdb_test "ptype ${name}a - ${name}b" "type = ${type}"
    gdb_test "ptype ${name}a * ${name}b" "type = ${type}"
    gdb_test "ptype ${name}a / ${name}b" "type = ${type}"
    # scalar
    gdb_test "ptype +${name}a" "type = ${type}"
    gdb_test "ptype -${name}a" "type = ${type}"
  } else {
    # scalar with scalar
    gdb_test "print/d ${name}a % ${name}b" " = 0"
    # scalar with vector
    gdb_test "print/d ${name}4a % ${name}b" " = \\{0, 0, 0, 0\\}"
    # vector with vector
    gdb_test "print/d ${name}4a % ${name}b" " = \\{0, 0, 0, 0\\}"

    # scalar with scalar
    gdb_test "print/d u${name}a + u${name}b" " = 3"
    gdb_test "print/d u${name}a - u${name}b" " = 1"
    gdb_test "print/d u${name}a * u${name}b" " = 2"
    gdb_test "print/d u${name}a / u${name}b" " = 2"
    gdb_test "print/d u${name}a % u${name}b" " = 0"
    # scalar with vector
    gdb_test "print/d u${name}a + u${name}4b" " = \\{3, 4, 10, 6\\}"
    gdb_test "print/d u${name}4a - u${name}b" " = \\{1, 3, 7, 15\\}"
    gdb_test "print/d u${name}4a * u${name}b" " = \\{2, 4, 8, 16\\}"
    gdb_test "print/d u${name}a / u${name}4b" " = \\{2, 1, 0, 0\\}"
    gdb_test "print/d u${name}4a % u${name}b" " = \\{0, 0, 0, 0\\}"
    # vector with vector
    gdb_test "print/d u${name}4a + u${name}4b" " = \\{3, 6, 16, 20\\}"
    gdb_test "print/d u${name}4a - u${name}4b" " = \\{1, 2, 0, 12\\}"
    gdb_test "print/d u${name}4a * u${name}4b" " = \\{2, 8, 64, 64\\}"
    gdb_test "print/d u${name}4a / u${name}4b" " = \\{2, 2, 1, 4\\}"
    gdb_test "print/d u${name}4a % u${name}4b" " = \\{0, 0, 0, 0\\}"

    # scalar
    gdb_test "print/d u${name}a++" " = 2"
    gdb_test "print/d ++u${name}a" " = 4"
    gdb_test "print/d u${name}a--" " = 4"
    gdb_test "print/d --u${name}a" " = 2"
    gdb_test "print/d +u${name}a" " = 2"
    gdb_test "print/x -u${name}a" " = 0x.*fe"
    # vector
    gdb_test "print/d u${name}4a++" " = \\{2, 4, 8, 16\\}"
    gdb_test "print/d ++u${name}4a" " = \\{4, 6, 10, 18\\}"
    gdb_test "print/d u${name}4a--" " = \\{4, 6, 10, 18\\}"
    gdb_test "print/d --u${name}4a" " = \\{2, 4, 8, 16\\}"
    gdb_test "print/d +u${name}4a" " = \\{2, 4, 8, 16\\}"
    gdb_test "print/x -u${name}4a" " = \\{0x.*fe, 0x.*fc, 0x.*f8, 0x.*f0\\}"

    # scalar with scalar
    if { ${size} < 4 } {
      gdb_test "ptype ${name}a + ${name}b" "type = int"
      gdb_test "ptype ${name}a - ${name}b" "type = int"
      gdb_test "ptype ${name}a * ${name}b" "type = int"
      gdb_test "ptype ${name}a / ${name}b" "type = int"
      gdb_test "ptype ${name}a % ${name}b" "type = int"
      gdb_test "ptype +${name}a" "type = int"
      gdb_test "ptype -${name}a" "type = int"
      gdb_test "ptype u${name}a + u${name}b" "type = int"
      gdb_test "ptype u${name}a - u${name}b" "type = int"
      gdb_test "ptype u${name}a * u${name}b" "type = int"
      gdb_test "ptype u${name}a / u${name}b" "type = int"
      gdb_test "ptype u${name}a % u${name}b" "type = int"
      gdb_test "ptype +u${name}a" "type = int"
      gdb_test "ptype -u${name}a" "type = int"
    } elseif { ${size} == 4 } {
      gdb_test "ptype ${name}a + ${name}b" "type = int"
      gdb_test "ptype ${name}a - ${name}b" "type = int"
      gdb_test "ptype ${name}a * ${name}b" "type = int"
      gdb_test "ptype ${name}a / ${name}b" "type = int"
      gdb_test "ptype ${name}a % ${name}b" "type = int"
      gdb_test "ptype +${name}a" "type = int"
      gdb_test "ptype -${name}a" "type = int"
      gdb_test "ptype u${name}a + u${name}b" "type = (unsigned int|uint)"
      gdb_test "ptype u${name}a - u${name}b" "type = (unsigned int|uint)"
      gdb_test "ptype u${name}a * u${name}b" "type = (unsigned int|uint)"
      gdb_test "ptype u${name}a / u${name}b" "type = (unsigned int|uint)"
      gdb_test "ptype u${name}a % u${name}b" "type = (unsigned int|uint)"
      gdb_test "ptype +u${name}a" "type = (unsigned int|uint)"
      gdb_test "ptype -u${name}a" "type = (unsigned int|uint)"
    } else { # ${size} == 8
      gdb_test "ptype ${name}a + ${name}b" "type = long"
      gdb_test "ptype ${name}a - ${name}b" "type = long"
      gdb_test "ptype ${name}a * ${name}b" "type = long"
      gdb_test "ptype ${name}a / ${name}b" "type = long"
      gdb_test "ptype ${name}a % ${name}b" "type = long"
      gdb_test "ptype +${name}a" "type = long"
      gdb_test "ptype -${name}a" "type = long"
      gdb_test "ptype u${name}a + u${name}b" "type = (unsigned long|ulong)"
      gdb_test "ptype u${name}a - u${name}b" "type = (unsigned long|ulong)"
      gdb_test "ptype u${name}a * u${name}b" "type = (unsigned long|ulong)"
      gdb_test "ptype u${name}a / u${name}b" "type = (unsigned long|ulong)"
      gdb_test "ptype u${name}a % u${name}b" "type = (unsigned long|ulong)"
      # scalar
      gdb_test "ptype +u${name}a" "type = (unsigned long|ulong)"
      gdb_test "ptype -u${name}a" "type = (unsigned long|ulong)"
    }
    gdb_test "ptype u${name}a++" "type = (unsigned ${type}|u${type})"
    gdb_test "ptype ++u${name}a" "type = (unsigned ${type}|u${type})"
    gdb_test "ptype u${name}a--" "type = (unsigned ${type}|u${type})"
    gdb_test "ptype --u${name}a" "type = (unsigned ${type}|u${type})"
    # scalar with vector
    gdb_test "ptype ${name}a % ${name}4b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype u${name}a + u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a - u${name}b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}a * u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a / u${name}b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}a % u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    # vector with vector
    gdb_test "ptype ${name}4a % ${name}4b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype u${name}4a + u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a - u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a * u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a / u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a % u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a++" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype ++u${name}4a" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a--" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype --u${name}4a" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype +u${name}4a" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype -u${name}4a" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
  }
}

# Relational operators
proc check_relational_ops { name type isfloat size } {
  # scalar with scalar
  gdb_test "print/d ${name}a > ${name}b" " = 1"
  gdb_test "print/d ${name}b < ${name}a" " = 1"
  gdb_test "print/d ${name}b >= ${name}a" " = 0"
  gdb_test "print/d ${name}a <= ${name}b" " = 0"
  # scalar with vector
  gdb_test "print/d ${name}4a > ${name}b" " = \\{-1, -1, -1, -1\\}"
  gdb_test "print/d ${name}a < ${name}4b" " = \\{0, 0, -1, -1\\}"
  gdb_test "print/d ${name}4a >= ${name}b" " = \\{-1, -1, -1, -1\\}"
  gdb_test "print/d ${name}a <= ${name}4b" " = \\{0, -1, -1, -1\\}"
  # vector with vector
  gdb_test "print/d ${name}4a > ${name}4b" " = \\{-1, -1, 0, -1\\}"
  gdb_test "print/d ${name}4b < ${name}4a" " = \\{-1, -1, 0, -1\\}"
  gdb_test "print/d ${name}4b >= ${name}4a" " = \\{0, 0, -1, 0\\}"
  gdb_test "print/d ${name}4a <= ${name}4b" " = \\{0, 0, -1, 0\\}"

  # result type should be int for scalars
  gdb_test "ptype ${name}a < ${name}b" "type = int"
  gdb_test "ptype ${name}a > ${name}b" "type = int"
  gdb_test "ptype ${name}a <= ${name}b" "type = int"
  gdb_test "ptype ${name}a >= ${name}b" "type = int"

  if { ${isfloat} } {
    if { ${size} == 2 } {
      # result type should be short for half precision floating point vectors
      # scalar with vector
      gdb_test "ptype ${name}4a > ${name}b" "type = short \\\[4\\\]"
      gdb_test "ptype ${name}a < ${name}4b" "type = short \\\[4\\\]"
      gdb_test "ptype ${name}4a >= ${name}b" "type = short \\\[4\\\]"
      gdb_test "ptype ${name}a <= ${name}4b" "type = short \\\[4\\\]"
      # vector with vector
      gdb_test "ptype ${name}4a > ${name}4b" "type = short \\\[4\\\]"
      gdb_test "ptype ${name}4a < ${name}4b" "type = short \\\[4\\\]"
      gdb_test "ptype ${name}4a >= ${name}4b" "type = short \\\[4\\\]"
      gdb_test "ptype ${name}4a <= ${name}4b" "type = short \\\[4\\\]"
    } elseif { ${size} == 4 } {
      # result type should be int for single precision floating point vectors
      # scalar with vector
      gdb_test "ptype ${name}4a > ${name}b" "type = int \\\[4\\\]"
      gdb_test "ptype ${name}a < ${name}4b" "type = int \\\[4\\\]"
      gdb_test "ptype ${name}4a >= ${name}b" "type = int \\\[4\\\]"
      gdb_test "ptype ${name}a <= ${name}4b" "type = int \\\[4\\\]"
      # vector with vector
      gdb_test "ptype ${name}4a > ${name}4b" "type = int \\\[4\\\]"
      gdb_test "ptype ${name}4a < ${name}4b" "type = int \\\[4\\\]"
      gdb_test "ptype ${name}4a >= ${name}4b" "type = int \\\[4\\\]"
      gdb_test "ptype ${name}4a <= ${name}4b" "type = int \\\[4\\\]"
    } else { # ${size} == 8
      # result type should be long for double precision floating point vectors
      # scalar with vector
      gdb_test "ptype ${name}4a > ${name}b" "type = long \\\[4\\\]"
      gdb_test "ptype ${name}a < ${name}4b" "type = long \\\[4\\\]"
      gdb_test "ptype ${name}4a >= ${name}b" "type = long \\\[4\\\]"
      gdb_test "ptype ${name}a <= ${name}4b" "type = long \\\[4\\\]"
      # vector with vector
      gdb_test "ptype ${name}4a > ${name}4b" "type = long \\\[4\\\]"
      gdb_test "ptype ${name}4a < ${name}4b" "type = long \\\[4\\\]"
      gdb_test "ptype ${name}4a >= ${name}4b" "type = long \\\[4\\\]"
      gdb_test "ptype ${name}4a <= ${name}4b" "type = long \\\[4\\\]"
    }
  } else {
    # scalar with scalar
    gdb_test "print/d u${name}a > u${name}b" " = 1"
    gdb_test "print/d u${name}b < u${name}a" " = 1"
    gdb_test "print/d u${name}b >= u${name}a" " = 0"
    gdb_test "print/d u${name}a <= u${name}b" " = 0"
    # scalar with vector
    gdb_test "print/d u${name}4a > u${name}b" " = \\{-1, -1, -1, -1\\}"
    gdb_test "print/d u${name}a < u${name}4b" " = \\{0, 0, -1, -1\\}"
    gdb_test "print/d u${name}4a >= u${name}b" " = \\{-1, -1, -1, -1\\}"
    gdb_test "print/d u${name}a <= u${name}4b" " = \\{0, -1, -1, -1\\}"
    # vector with vector
    gdb_test "print/d u${name}4a > u${name}4b" " = \\{-1, -1, 0, -1\\}"
    gdb_test "print/d u${name}4b < u${name}4a" " = \\{-1, -1, 0, -1\\}"
    gdb_test "print/d u${name}4b >= u${name}4a" " = \\{0, 0, -1, 0\\}"
    gdb_test "print/d u${name}4a <= u${name}4b" " = \\{0, 0, -1, 0\\}"

    # result type for unsigned operands is signed
    # scalar with scalar
    gdb_test "ptype u${name}a < u${name}b" "type = int"
    gdb_test "ptype u${name}a > u${name}b" "type = int"
    gdb_test "ptype u${name}a <= u${name}b" "type = int"
    gdb_test "ptype u${name}a >= u${name}b" "type = int"
    # scalar with vector
    gdb_test "ptype u${name}4a > u${name}b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype u${name}a < u${name}4b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype u${name}4a >= u${name}b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype u${name}a <= u${name}4b" "type = ${type} \\\[4\\\]"
    # vector with vector
    gdb_test "ptype u${name}4a > u${name}4b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype u${name}4a < u${name}4b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype u${name}4a >= u${name}4b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype u${name}4a <= u${name}4b" "type = ${type} \\\[4\\\]"
  }
}

# Equality operators
proc check_equality_ops { name type isfloat size } {
  # scalar with scalar
  gdb_test "print/d ${name}a == ${name}b" " = 0"
  gdb_test "print/d ${name}a != ${name}b" " = 1"
  # scalar with vector
  gdb_test "print/d ${name}4a == ${name}b" " = \\{0, 0, 0, 0\\}"
  gdb_test "print/d ${name}a != ${name}4b" " = \\{-1, 0, -1, -1\\}"
  # vector with vector
  gdb_test "print/d ${name}4a == ${name}4b" " = \\{0, 0, -1, 0\\}"
  gdb_test "print/d ${name}4a != ${name}4b" " = \\{-1, -1, 0, -1\\}"

  # scalar with scalar
  gdb_test "ptype ${name}a == ${name}b" "type = int"
  gdb_test "ptype ${name}a != ${name}b" "type = int"

  if { ${isfloat} } {
    if { ${size} == 2 } {
      # result type should be short for half precision floating point vectors
      # scalar with vector
      gdb_test "ptype ${name}4a == ${name}b" "type = short \\\[4\\\]"
      gdb_test "ptype ${name}a != ${name}4b" "type = short \\\[4\\\]"
      # vector with vector
      gdb_test "ptype ${name}4a == ${name}4b" "type = short \\\[4\\\]"
      gdb_test "ptype ${name}4a != ${name}4b" "type = short \\\[4\\\]"
    } elseif { ${size} == 4 } {
      # result type should be int for single precision floating point vectors
      # scalar with vector
      gdb_test "ptype ${name}4a == ${name}b" "type = int \\\[4\\\]"
      gdb_test "ptype ${name}a != ${name}4b" "type = int \\\[4\\\]"
      # vector with vector
      gdb_test "ptype ${name}4a == ${name}4b" "type = int \\\[4\\\]"
      gdb_test "ptype ${name}4a != ${name}4b" "type = int \\\[4\\\]"
    } else { # ${size} == 8
      # result type should be long for double precision floating point vectors
      # scalar with vector
      gdb_test "ptype ${name}4a == ${name}b" "type = long \\\[4\\\]"
      gdb_test "ptype ${name}a != ${name}4b" "type = long \\\[4\\\]"
      # vector with vector
      gdb_test "ptype ${name}4a == ${name}4b" "type = long \\\[4\\\]"
      gdb_test "ptype ${name}4a != ${name}4b" "type = long \\\[4\\\]"
    }
  } else {
    # scalar with scalar
    gdb_test "print/d u${name}a == u${name}b" " = 0"
    gdb_test "print/d u${name}a != u${name}b" " = 1"
    # scalar with vector
    gdb_test "print/d u${name}4a == u${name}b" " = \\{0, 0, 0, 0\\}"
    gdb_test "print/d u${name}a != u${name}4b" " = \\{-1, 0, -1, -1\\}"
    # vector with vector
    gdb_test "print/d u${name}4a == u${name}4b" " = \\{0, 0, -1, 0\\}"
    gdb_test "print/d u${name}4b != u${name}4a" " = \\{-1, -1, 0, -1\\}"

    # result type for unsigned operands is signed
    # scalar with scalar
    gdb_test "ptype u${name}a == u${name}b" "type = int"
    gdb_test "ptype u${name}a != u${name}b" "type = int"
    # scalar with vector
    gdb_test "ptype u${name}4a == u${name}b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype u${name}a != u${name}4b" "type = ${type} \\\[4\\\]"
    # vector with vector
    gdb_test "ptype u${name}4a == u${name}4b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype u${name}4a != u${name}4b" "type = ${type} \\\[4\\\]"
  }
}

# Shift operators
proc check_shift_ops { name type size } {
  # scalar with scalar
  gdb_test "print/d ${name}a << ${name}b" " = 4"
  gdb_test "print/d ${name}a >> ${name}b" " = 1"
  gdb_test "print/d u${name}a << u${name}b" " = 4"
  gdb_test "print/d u${name}a >> u${name}b" " = 1"
  # scalar with vector
  gdb_test "print/d ${name}4a << ${name}b" " = \\{4, 8, 16, 32\\}"
  gdb_test "print/d ${name}4a >> ${name}b" " = \\{1, 2, 4, 8\\}"
  gdb_test "print/d u${name}4a << u${name}b" " = \\{4, 8, 16, 32\\}"
  gdb_test "print/d u${name}4a >> u${name}b" " = \\{1, 2, 4, 8\\}"
  # vector with vector
  if { ${size} == 1 } {
    gdb_test "print/d ${name}4a << ${name}4b" " = \\{4, 16, 0, 0\\}"
    gdb_test "print/d u${name}4a << u${name}4b" " = \\{4, 16, 0, 0\\}"
  } else {
    gdb_test "print/d ${name}4a << ${name}4b" " = \\{4, 16, 2048, 256\\}"
    gdb_test "print/d u${name}4a << u${name}4b" " = \\{4, 16, 2048, 256\\}"
  }
  gdb_test "print/d ${name}4a >> ${name}4b" " = \\{1, 1, 0, 1\\}"
  gdb_test "print/d u${name}4a >> u${name}4b" " = \\{1, 1, 0, 1\\}"

  # scalar with scalar
  if { ${size} < 4 } {
    gdb_test "ptype ${name}a << ${name}b" "type = int"
    gdb_test "ptype ${name}a >> ${name}b" "type = int"
    gdb_test "ptype u${name}a << u${name}b" "type = int"
    gdb_test "ptype u${name}a >> u${name}b" "type = int"
  } elseif { ${size} == 4 } {
    gdb_test "ptype ${name}a << ${name}b" "type = int"
    gdb_test "ptype ${name}a >> ${name}b" "type = int"
    gdb_test "ptype u${name}a << u${name}b" "type = (unsigned int|uint)"
    gdb_test "ptype u${name}a >> u${name}b" "type = (unsigned int|uint)"
  } else { # ${size} == 8
    gdb_test "ptype ${name}a << ${name}b" "type = long"
    gdb_test "ptype ${name}a >> ${name}b" "type = long"
    gdb_test "ptype u${name}a << u${name}b" "type = (unsigned long|ulong)"
    gdb_test "ptype u${name}a >> u${name}b" "type = (unsigned long|ulong)"
  }
  # scalar with vector
  gdb_test "ptype ${name}4a << ${name}b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}4a >> ${name}b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype u${name}4a << u${name}b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
  gdb_test "ptype u${name}4a >> u${name}b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
  # vector with vector
  gdb_test "ptype ${name}4a << ${name}4b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}4a >> ${name}4b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype u${name}4a << u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
  gdb_test "ptype u${name}4a >> u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
}

# Bitwise operators
proc check_bitwise_ops { name type size } {
  # scalar with scalar
  gdb_test "print/d ${name}a & ${name}b" " = 0"
  gdb_test "print/d ${name}a | ${name}b" " = 3"
  gdb_test "print/d ${name}a ^ ${name}b" " = 3"
  gdb_test "print/d u${name}a & u${name}b" " = 0"
  gdb_test "print/d u${name}a | u${name}b" " = 3"
  gdb_test "print/d u${name}a ^ u${name}b" " = 3"
  # scalar with vector
  gdb_test "print/d ${name}4a & ${name}b" " = \\{0, 0, 0, 0\\}"
  gdb_test "print/d ${name}a | ${name}4b" " = \\{3, 2, 10, 6\\}"
  gdb_test "print/d ${name}4a ^ ${name}b" " = \\{3, 5, 9, 17\\}"
  gdb_test "print/d u${name}4a & u${name}b" " = \\{0, 0, 0, 0\\}"
  gdb_test "print/d u${name}a | u${name}4b" " = \\{3, 2, 10, 6\\}"
  gdb_test "print/d u${name}4a ^ u${name}b" " = \\{3, 5, 9, 17\\}"
  # vector with vector
  gdb_test "print/d ${name}4a & ${name}4b" " = \\{0, 0, 8, 0\\}"
  gdb_test "print/d ${name}4a | ${name}4b" " = \\{3, 6, 8, 20\\}"
  gdb_test "print/d ${name}4a ^ ${name}4b" " = \\{3, 6, 0, 20\\}"
  gdb_test "print/d u${name}4a & u${name}4b" " = \\{0, 0, 8, 0\\}"
  gdb_test "print/d u${name}4a | u${name}4b" " = \\{3, 6, 8, 20\\}"
  gdb_test "print/d u${name}4a ^ u${name}4b" " = \\{3, 6, 0, 20\\}"

  # scalar with scalar
  if { ${size} < 4 } {
    gdb_test "ptype ${name}a & ${name}b" "type = int"
    gdb_test "ptype ${name}a | ${name}b" "type = int"
    gdb_test "ptype ${name}a ^ ${name}b" "type = int"
    gdb_test "ptype u${name}a & u${name}b" "type = int"
    gdb_test "ptype u${name}a | u${name}b" "type = int"
    gdb_test "ptype u${name}a ^ u${name}b" "type = int"
  } elseif { ${size} == 4 } {
    gdb_test "ptype ${name}a & ${name}b" "type = int"
    gdb_test "ptype ${name}a | ${name}b" "type = int"
    gdb_test "ptype ${name}a ^ ${name}b" "type = int"
    gdb_test "ptype u${name}a & u${name}b" "type = (unsigned int|uint)"
    gdb_test "ptype u${name}a | u${name}b" "type = (unsigned int|uint)"
    gdb_test "ptype u${name}a ^ u${name}b" "type = (unsigned int|uint)"
  } else { # ${size} == 8
    gdb_test "ptype ${name}a & ${name}b" "type = long"
    gdb_test "ptype ${name}a | ${name}b" "type = long"
    gdb_test "ptype ${name}a ^ ${name}b" "type = long"
    gdb_test "ptype u${name}a & u${name}b" "type = (unsigned long|ulong)"
    gdb_test "ptype u${name}a | u${name}b" "type = (unsigned long|ulong)"
    gdb_test "ptype u${name}a ^ u${name}b" "type = (unsigned long|ulong)"
  }
  # scalar with vector
  gdb_test "ptype ${name}4a & ${name}b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}a | ${name}4b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}4a ^ ${name}b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype u${name}4a & u${name}b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
  gdb_test "ptype u${name}a | u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
  gdb_test "ptype u${name}4a ^ u${name}b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
  # vector with vector
  gdb_test "ptype ${name}4a & ${name}4b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}4a | ${name}4b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}4a ^ ${name}4b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype u${name}4a & u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
  gdb_test "ptype u${name}4a | u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
  gdb_test "ptype u${name}4a ^ u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"

  # scalar
  if { ${size} < 8 } {
    gdb_test "print/x ~${name}a" " = 0xfffffffd"
    gdb_test "print/x ~u${name}a" " = 0xfffffffd"
  } else {
    gdb_test "print/x ~${name}a" " = 0xfffffffffffffffd"
    gdb_test "print/x ~u${name}a" " = 0xfffffffffffffffd"
  }
  # vector
  if { ${size} == 1 } {
    gdb_test "print/x ~${name}4a" " = \\{0xfd, 0xfb, 0xf7, 0xef\\}"
    gdb_test "print/x ~u${name}4a" " = \\{0xfd, 0xfb, 0xf7, 0xef\\}"
  } elseif { ${size} == 2 } {
    gdb_test "print/x ~${name}4a" " = \\{0xfffd, 0xfffb, 0xfff7, 0xffef\\}"
    gdb_test "print/x ~u${name}4a" " = \\{0xfffd, 0xfffb, 0xfff7, 0xffef\\}"
  } elseif { ${size} == 4 } {
    gdb_test "print/x ~${name}4a" " = \\{0xfffffffd, 0xfffffffb, 0xfffffff7, 0xffffffef\\}"
    gdb_test "print/x ~u${name}4a" " = \\{0xfffffffd, 0xfffffffb, 0xfffffff7, 0xffffffef\\}"
  } else { # ${size} == 8
    gdb_test "print/x ~${name}4a" " = \\{0xfffffffffffffffd, 0xfffffffffffffffb, 0xfffffffffffffff7, 0xffffffffffffffef\\}"
    gdb_test "print/x ~u${name}4a" " = \\{0xfffffffffffffffd, 0xfffffffffffffffb, 0xfffffffffffffff7, 0xffffffffffffffef\\}"
  }
  # scalar
  if { ${size} < 4 } {
    gdb_test "ptype ~${name}a" "type = int"
    gdb_test "ptype ~u${name}a" "type = int"
  } elseif { ${size} == 4 } {
    gdb_test "ptype ~${name}a" "type = int"
    gdb_test "ptype ~u${name}a" "type = (unsigned int|uint)"
  } else { # ${size} == 8
    gdb_test "ptype ~${name}a" "type = long"
    gdb_test "ptype ~u${name}a" "type = (unsigned long|ulong)"
  }
  # vector
  gdb_test "ptype ~${name}4a" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ~u${name}4a" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
}

# Logical operators
proc check_logical_ops { name type isfloat size } {
  # scalar
  gdb_test "print/d !${name}a " " = 0"
  gdb_test "print/d !!${name}a " " = 1"
  # vector
  gdb_test "print/d !${name}4a " " = \\{0, 0, 0, 0\\}"
  gdb_test "print/d !!${name}4a " " = \\{-1, -1, -1, -1\\}"

  # scalar with scalar
  gdb_test "print/d ${name}a && ${name}b" " = 1"
  gdb_test "print/d ${name}a && !${name}b" " = 0"
  gdb_test "print/d ${name}a || ${name}b" " = 1"
  gdb_test "print/d ${name}a || !${name}b" " = 1"
  gdb_test "print/d !${name}a || !${name}b" " = 0"

  # scalar with vector
  gdb_test "print/d ${name}4a && ${name}b" " = \\{-1, -1, -1, -1\\}"
  gdb_test "print/d ${name}4a && !${name}b" " = \\{0, 0, 0, 0\\}"
  gdb_test "print/d ${name}a || ${name}4b" " = \\{-1, -1, -1, -1\\}"
  gdb_test "print/d ${name}a || !${name}4b" " = \\{-1, -1, -1, -1\\}"
  gdb_test "print/d !${name}4a || !${name}b" " = \\{0, 0, 0, 0\\}"
  # vector with vector
  gdb_test "print/d ${name}4a && ${name}4b" " = \\{-1, -1, -1, -1\\}"
  gdb_test "print/d ${name}4a || ${name}4b" " = \\{-1, -1, -1, -1\\}"

  # result type should be int for scalars
  gdb_test "ptype !${name}a" "type = int"
  gdb_test "ptype ${name}a && ${name}b" "type = int"
  gdb_test "ptype ${name}a || ${name}b" "type = int"

  if { ${isfloat} } {
    if { ${size} == 2 } {
      # result type should be short for half precision floating point vectors
      # scalar with vector
      gdb_test "ptype ${name}4a && ${name}b" "type = short \\\[4\\\]"
      gdb_test "ptype ${name}a || ${name}4b" "type = short \\\[4\\\]"
      # vector with vector
      gdb_test "ptype !${name}4a" "type = short \\\[4\\\]"
      gdb_test "ptype ${name}4a && ${name}4b" "type = short \\\[4\\\]"
      gdb_test "ptype ${name}4a || ${name}4b" "type = short \\\[4\\\]"
    } elseif { ${size} == 4 } {
      # result type should be int for single precision floating point vectors
      # scalar with vector
      gdb_test "ptype ${name}4a && ${name}b" "type = int \\\[4\\\]"
      gdb_test "ptype ${name}a || ${name}4b" "type = int \\\[4\\\]"
      # vector with vector
      gdb_test "ptype !${name}4a" "type = int \\\[4\\\]"
      gdb_test "ptype ${name}4a && ${name}4b" "type = int \\\[4\\\]"
      gdb_test "ptype ${name}4a || ${name}4b" "type = int \\\[4\\\]"
    } else { # ${size} == 8
      # result type should be long for double precision floating point vectors
      # scalar with vector
      gdb_test "ptype ${name}4a && ${name}b" "type = long \\\[4\\\]"
      gdb_test "ptype ${name}a || ${name}4b" "type = long \\\[4\\\]"
      # vector with vector
      gdb_test "ptype !${name}4a" "type = long \\\[4\\\]"
      gdb_test "ptype ${name}4a && ${name}4b" "type = long \\\[4\\\]"
      gdb_test "ptype ${name}4a || ${name}4b" "type = long \\\[4\\\]"
    }
  } else {
    # unsigned scalar
    gdb_test "print/d !u${name}a " " = 0"
    gdb_test "print/d !!u${name}a " " = 1"
    # unsigned vector
    gdb_test "print/d !u${name}4a " " = \\{0, 0, 0, 0\\}"
    gdb_test "print/d !!u${name}4a " " = \\{-1, -1, -1, -1\\}"

    # scalar with scalar
    gdb_test "print/d u${name}a && u${name}b" " = 1"
    gdb_test "print/d u${name}a || u${name}b" " = 1"
    # scalar with vector
    gdb_test "print/d u${name}4a && u${name}b" " = \\{-1, -1, -1, -1\\}"
    gdb_test "print/d u${name}a || u${name}4b" " = \\{-1, -1, -1, -1\\}"
    # vector with vector
    gdb_test "print/d u${name}4a && u${name}4b" " = \\{-1, -1, -1, -1\\}"
    gdb_test "print/d u${name}4a || u${name}4b" " = \\{-1, -1, -1, -1\\}"

    # scalar
    gdb_test "ptype !u${name}a" "type = int"
    # vector
    gdb_test "ptype !${name}4a" "type = ${type} \\\[4\\\]"
    gdb_test "ptype !u${name}4a" "type = ${type} \\\[4\\\]"

    # scalar with vector
    gdb_test "ptype ${name}4a && ${name}b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype ${name}a || ${name}4b" "type = ${type} \\\[4\\\]"
    # result type for unsigned vector operand is signed
    gdb_test "ptype u${name}4a && u${name}b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype u${name}a || u${name}4b" "type = ${type} \\\[4\\\]"
    # vector with vector
    gdb_test "ptype ${name}4a && ${name}4b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype ${name}4a || ${name}4b" "type = ${type} \\\[4\\\]"
    # result type for unsigned vector operand is signed
    gdb_test "ptype u${name}4a && u${name}4b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype u${name}4a || u${name}4b" "type = ${type} \\\[4\\\]"
  }
}

# Conditional operator
proc check_conditional_op { name type isfloat } {
  # scalar with scalar
  gdb_test "print/d ${name}a ? ${name}b : ${name}a" " = 1"
  gdb_test "print/d !${name}a ? ${name}b : ${name}a" " = 2"
  # scalar with vector
  gdb_test "print/d ${name}4a ? ${name}4b : ${name}a" " = \\{1, 2, 8, 4\\}"
  gdb_test "print/d ${name}4a ? ${name}b : ${name}4a" " = \\{1, 1, 1, 1\\}"
  gdb_test "print/d ${name}4a > 4 ? 1 : ${name}4a" " = \\{2, 4, 1, 1\\}"
  gdb_test "print/d ${name}4a > 4 ? ${name}4b : ${name}a" " = \\{2, 2, 8, 4\\}"
  # vector with vector
  gdb_test "print/d ${name}4a ? ${name}4b : ${name}4a" " = \\{1, 2, 8, 4\\}"
  gdb_test "print/d ${name}4a > 4 ? ${name}4b : ${name}4a" " = \\{2, 4, 8, 4\\}"

  # scalar with scalar
  gdb_test "ptype ${name}a ? ${name}b : ${name}a" "type = ${type}"
  # scalar with vector
  gdb_test "ptype ${name}4a ? ${name}4b : ${name}a" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}4a ? ${name}b : ${name}4a" "type = ${type} \\\[4\\\]"
  # vector with vector
  gdb_test "ptype ${name}4a ? ${name}4b : ${name}4a" "type = ${type} \\\[4\\\]"

  if { !${isfloat} } {
    # scalar with scalar
    gdb_test "print/d u${name}a ? u${name}b : u${name}a" " = 1"
    gdb_test "print/d !u${name}a ? u${name}b : u${name}a" " = 2"
    # scalar with vector
    gdb_test "print/d u${name}4a ? u${name}4b : u${name}a" " = \\{1, 2, 8, 4\\}"
    gdb_test "print/d u${name}4a ? u${name}b : u${name}4a" " = \\{1, 1, 1, 1\\}"
    gdb_test "print/d u${name}4a > 4 ? 1 : u${name}4a" " = \\{2, 4, 1, 1\\}"
    gdb_test "print/d u${name}4a > 4 ? u${name}4b : u${name}a" " = \\{2, 2, 8, 4\\}"
    # vector with vector
    gdb_test "print/d u${name}4a ? u${name}4b : u${name}4a" " = \\{1, 2, 8, 4\\}"
    gdb_test "print/d u${name}4a > 4 ? u${name}4b : u${name}4a" " = \\{2, 4, 8, 4\\}"

    # scalar with scalar
    gdb_test "ptype u${name}a ? u${name}b : u${name}a" "type = (unsigned ${type}|u${type})"
    # scalar with vector
    gdb_test "ptype u${name}4a ? u${name}4b : u${name}a" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a ? u${name}b : u${name}4a" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    # vector with vector
    gdb_test "ptype u${name}4a ? u${name}4b : u${name}4a" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
  }
}

# Assignment operators
proc check_assignment_ops { name type isfloat size } {
  # scalar with scalar
  gdb_test "print/d ${name}a = ${name}b" " = 1"
  gdb_test "print/d ${name}a = 2" " = 2"
  gdb_test "print/d ${name}a += ${name}b" " = 3"
  gdb_test "print/d ${name}a -= ${name}b" " = 2"
  gdb_test "print/d ${name}b *= ${name}a" " = 2"
  gdb_test "print/d ${name}b /= ${name}a" " = 1"
  # scalar with vector
  gdb_test "print/d ${name}4a = ${name}b" " = \\{1, 1, 1, 1\\}"
  gdb_test "print/d ${name}4a = \{2, 4, 8, 16\}" " = \\{2, 4, 8, 16\\}"
  gdb_test "print/d ${name}4a += ${name}b" " = \\{3, 5, 9, 17\\}"
  gdb_test "print/d ${name}4a -= ${name}b" " = \\{2, 4, 8, 16\\}"
  gdb_test "print/d ${name}4b *= ${name}a" " = \\{2, 4, 16, 8\\}"
  gdb_test "print/d ${name}4b /= ${name}a" " = \\{1, 2, 8, 4\\}"
  # vector with vector
  gdb_test "print/d ${name}4a = ${name}4b" " = \\{1, 2, 8, 4\\}"
  gdb_test "print/d ${name}4a = \{2, 4, 8, 16\}" " = \\{2, 4, 8, 16\\}"
  gdb_test "print/d ${name}4a += ${name}4b" " = \\{3, 6, 16, 20\\}"
  gdb_test "print/d ${name}4a -= ${name}4b" " = \\{2, 4, 8, 16\\}"
  gdb_test "print/d ${name}4b *= ${name}4a" " = \\{2, 8, 64, 64\\}"
  gdb_test "print/d ${name}4b /= ${name}4a" " = \\{1, 2, 8, 4\\}"

  # scalar with scalar
  gdb_test "ptype ${name}a = ${name}b" "type = ${type}"
  gdb_test "ptype ${name}a += ${name}b" "type = ${type}"
  gdb_test "ptype ${name}a -= ${name}b" "type = ${type}"
  gdb_test "ptype ${name}a *= ${name}b" "type = ${type}"
  gdb_test "ptype ${name}a /= ${name}b" "type = ${type}"
  # scalar with vector
  gdb_test "ptype ${name}4a = ${name}b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}4a += ${name}b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}4a -= ${name}b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}4b *= ${name}a" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}4b /= ${name}a" "type = ${type} \\\[4\\\]"
  # vector with vector
  gdb_test "ptype ${name}4a = ${name}4b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}4a += ${name}4b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}4a -= ${name}4b" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}4b *= ${name}4a" "type = ${type} \\\[4\\\]"
  gdb_test "ptype ${name}4b /= ${name}4a" "type = ${type} \\\[4\\\]"

  if { !${isfloat} } {
    # scalar with scalar
    gdb_test "print/d ${name}a %= ${name}b" " = 0"
    gdb_test "print/d ${name}a = 2" " = 2"
    gdb_test "print/d ${name}a <<= ${name}b" " = 4"
    gdb_test "print/d ${name}a = 2" " = 2"
    gdb_test "print/d ${name}a >>= ${name}b" " = 1"
    gdb_test "print/d ${name}a = 2" " = 2"
    gdb_test "print/d ${name}a &= ${name}b" " = 0"
    gdb_test "print/d ${name}a = 2" " = 2"
    gdb_test "print/d ${name}a |= ${name}b" " = 3"
    gdb_test "print/d ${name}a = 2" " = 2"
    gdb_test "print/d ${name}a ^= ${name}b" " = 3"
    gdb_test "print/d ${name}a = 2" " = 2"
    # scalar with vector
    gdb_test "print/d ${name}4b %= ${name}a" " = \\{1, 0, 0, 0\\}"
    gdb_test "print/d ${name}4b = \{1, 2, 8, 4\}" " = \\{1, 2, 8, 4\\}"
    gdb_test "print/d ${name}4a <<= ${name}b" " = \\{4, 8, 16, 32\\}"
    gdb_test "print/d ${name}4a >>= ${name}b" " = \\{2, 4, 8, 16\\}"
    gdb_test "print/d ${name}4a &= ${name}b" " = \\{0, 0, 0, 0\\}"
    gdb_test "print/d ${name}4a = \{2, 4, 8, 16\}" " = \\{2, 4, 8, 16\\}"
    gdb_test "print/d ${name}4a |= ${name}b" " = \\{3, 5, 9, 17\\}"
    gdb_test "print/d ${name}4a = \{2, 4, 8, 16\}" " = \\{2, 4, 8, 16\\}"
    gdb_test "print/d ${name}4a ^= ${name}b" " = \\{3, 5, 9, 17\\}"
    gdb_test "print/d ${name}4a = \{2, 4, 8, 16\}" " = \\{2, 4, 8, 16\\}"
    # vector with vector
    gdb_test "print/d ${name}4b %= ${name}4a" " = \\{1, 2, 0, 4\\}"
    gdb_test "print/d ${name}4b = \{1, 2, 8, 4\}" " = \\{1, 2, 8, 4\\}"
    if { ${size} == 1 } {
      gdb_test "print/d ${name}4a <<= ${name}4b" " = \\{4, 16, 0, 0\\}"
      gdb_test "print/d ${name}4a >>= ${name}4b" " = \\{2, 4, 0, 0\\}"
      gdb_test "print/d ${name}4a = \{2, 4, 8, 16\}" " = \\{2, 4, 8, 16\\}"
    } else {
      gdb_test "print/d ${name}4a <<= ${name}4b" " = \\{4, 16, 2048, 256\\}"
      gdb_test "print/d ${name}4a >>= ${name}4b" " = \\{2, 4, 8, 16\\}"
    }
    gdb_test "print/d ${name}4a &= ${name}4b" " = \\{0, 0, 8, 0\\}"
    gdb_test "print/d ${name}4a = \{2, 4, 8, 16\}" " = \\{2, 4, 8, 16\\}"
    gdb_test "print/d ${name}4a |= ${name}4b" " = \\{3, 6, 8, 20\\}"
    gdb_test "print/d ${name}4a = \{2, 4, 8, 16\}" " = \\{2, 4, 8, 16\\}"
    gdb_test "print/d ${name}4a ^= ${name}4b" " = \\{3, 6, 0, 20\\}"
    gdb_test "print/d ${name}4a = \{2, 4, 8, 16\}" " = \\{2, 4, 8, 16\\}"

    # scalar with scalar
    gdb_test "ptype ${name}a %= ${name}b" "type = ${type}"
    gdb_test "ptype ${name}a <<= ${name}b" "type = ${type}"
    gdb_test "ptype ${name}a >>= ${name}b" "type = ${type}"
    gdb_test "ptype ${name}a &= ${name}b" "type = ${type}"
    gdb_test "ptype ${name}a |= ${name}b" "type = ${type}"
    gdb_test "ptype ${name}a ^= ${name}b" "type = ${type}"
    # scalar with vector
    gdb_test "ptype ${name}4a %= ${name}b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype ${name}4a <<= ${name}b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype ${name}4a >>= ${name}b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype ${name}4a &= ${name}b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype ${name}4a |= ${name}b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype ${name}4a ^= ${name}b" "type = ${type} \\\[4\\\]"
    # vector with vector
    gdb_test "ptype ${name}4a %= ${name}4b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype ${name}4a <<= ${name}4b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype ${name}4a >>= ${name}4b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype ${name}4a &= ${name}4b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype ${name}4a |= ${name}4b" "type = ${type} \\\[4\\\]"
    gdb_test "ptype ${name}4a ^= ${name}4b" "type = ${type} \\\[4\\\]"

    # scalar with scalar
    gdb_test "print/d u${name}a = u${name}b" " = 1"
    gdb_test "print/d u${name}a = 2" " = 2"
    gdb_test "print/d u${name}a += u${name}b" " = 3"
    gdb_test "print/d u${name}a -= u${name}b" " = 2"
    gdb_test "print/d u${name}b *= u${name}a" " = 2"
    gdb_test "print/d u${name}b /= u${name}a" " = 1"
    gdb_test "print/d u${name}a %= u${name}b" " = 0"
    gdb_test "print/d u${name}a = 2" " = 2"
    gdb_test "print/d u${name}a <<= u${name}b" " = 4"
    gdb_test "print/d u${name}a = 2" " = 2"
    gdb_test "print/d u${name}a >>= u${name}b" " = 1"
    gdb_test "print/d u${name}a = 2" " = 2"
    gdb_test "print/d u${name}a &= u${name}b" " = 0"
    gdb_test "print/d u${name}a = 2" " = 2"
    gdb_test "print/d u${name}a |= u${name}b" " = 3"
    gdb_test "print/d u${name}a = 2" " = 2"
    gdb_test "print/d u${name}a ^= u${name}b" " = 3"
    gdb_test "print/d u${name}a = 2" " = 2"
    # scalar with vector
    gdb_test "print/d u${name}4a = u${name}b" " = \\{1, 1, 1, 1\\}"
    gdb_test "print/d u${name}4a = \{2, 4, 8, 16\}" " = \\{2, 4, 8, 16\\}"
    gdb_test "print/d u${name}4a += u${name}b" " = \\{3, 5, 9, 17\\}"
    gdb_test "print/d u${name}4a -= u${name}b" " = \\{2, 4, 8, 16\\}"
    gdb_test "print/d u${name}4b *= u${name}a" " = \\{2, 4, 16, 8\\}"
    gdb_test "print/d u${name}4b /= u${name}a" " = \\{1, 2, 8, 4\\}"
    gdb_test "print/d u${name}4b %= u${name}a" " = \\{1, 0, 0, 0\\}"
    gdb_test "print/d u${name}4b = \{1, 2, 8, 4\}" " = \\{1, 2, 8, 4\\}"
    gdb_test "print/d u${name}4a <<= u${name}b" " = \\{4, 8, 16, 32\\}"
    gdb_test "print/d u${name}4a >>= u${name}b" " = \\{2, 4, 8, 16\\}"
    gdb_test "print/d u${name}4a &= u${name}b" " = \\{0, 0, 0, 0\\}"
    gdb_test "print/d u${name}4a = \{2, 4, 8, 16\}" " = \\{2, 4, 8, 16\\}"
    gdb_test "print/d u${name}4a |= u${name}b" " = \\{3, 5, 9, 17\\}"
    gdb_test "print/d u${name}4a = \{2, 4, 8, 16\}" " = \\{2, 4, 8, 16\\}"
    gdb_test "print/d u${name}4a ^= u${name}b" " = \\{3, 5, 9, 17\\}"
    gdb_test "print/d u${name}4a = \{2, 4, 8, 16\}" " = \\{2, 4, 8, 16\\}"
    # vector with vector
    gdb_test "print/d u${name}4a = u${name}4b" " = \\{1, 2, 8, 4\\}"
    gdb_test "print/d u${name}4a = \{2, 4, 8, 16\}" " = \\{2, 4, 8, 16\\}"
    gdb_test "print/d u${name}4a += u${name}4b" " = \\{3, 6, 16, 20\\}"
    gdb_test "print/d u${name}4a -= u${name}4b" " = \\{2, 4, 8, 16\\}"
    gdb_test "print/d u${name}4b *= u${name}4a" " = \\{2, 8, 64, 64\\}"
    gdb_test "print/d u${name}4b /= u${name}4a" " = \\{1, 2, 8, 4\\}"
    gdb_test "print/d u${name}4b %= u${name}4a" " = \\{1, 2, 0, 4\\}"
    gdb_test "print/d u${name}4b = \{1, 2, 8, 4\}" " = \\{1, 2, 8, 4\\}"
    if { ${size} == 1 } {
      gdb_test "print/d u${name}4a <<= u${name}4b" " = \\{4, 16, 0, 0\\}"
      gdb_test "print/d u${name}4a >>= u${name}4b" " = \\{2, 4, 0, 0\\}"
      gdb_test "print/d u${name}4a = \{2, 4, 8, 16\}" " = \\{2, 4, 8, 16\\}"
    } else {
      gdb_test "print/d u${name}4a <<= u${name}4b" " = \\{4, 16, 2048, 256\\}"
      gdb_test "print/d u${name}4a >>= u${name}4b" " = \\{2, 4, 8, 16\\}"
    }
    gdb_test "print/d u${name}4a &= u${name}4b" " = \\{0, 0, 8, 0\\}"
    gdb_test "print/d u${name}4a = \{2, 4, 8, 16\}" " = \\{2, 4, 8, 16\\}"
    gdb_test "print/d u${name}4a |= u${name}4b" " = \\{3, 6, 8, 20\\}"
    gdb_test "print/d u${name}4a = \{2, 4, 8, 16\}" " = \\{2, 4, 8, 16\\}"
    gdb_test "print/d u${name}4a ^= u${name}4b" " = \\{3, 6, 0, 20\\}"
    gdb_test "print/d u${name}4a = \{2, 4, 8, 16\}" " = \\{2, 4, 8, 16\\}"

    # scalar with scalar
    gdb_test "ptype u${name}a = u${name}b" "type = (unsigned ${type}|u${type})"
    gdb_test "ptype u${name}a += u${name}b" "type = (unsigned ${type}|u${type})"
    gdb_test "ptype u${name}a -= u${name}b" "type = (unsigned ${type}|u${type})"
    gdb_test "ptype u${name}a *= u${name}b" "type = (unsigned ${type}|u${type})"
    gdb_test "ptype u${name}a /= u${name}b" "type = (unsigned ${type}|u${type})"
    gdb_test "ptype u${name}a %= u${name}b" "type = (unsigned ${type}|u${type})"
    gdb_test "ptype u${name}a <<= u${name}b" "type = (unsigned ${type}|u${type})"
    gdb_test "ptype u${name}a >>= u${name}b" "type = (unsigned ${type}|u${type})"
    gdb_test "ptype u${name}a &= u${name}b" "type = (unsigned ${type}|u${type})"
    gdb_test "ptype u${name}a |= u${name}b" "type = (unsigned ${type}|u${type})"
    gdb_test "ptype u${name}a ^= u${name}b" "type = (unsigned ${type}|u${type})"
    # scalar with vector
    gdb_test "ptype u${name}4a = u${name}b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a += u${name}b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a -= u${name}b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4b *= u${name}a" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4b /= u${name}a" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a %= u${name}b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a <<= u${name}b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a >>= u${name}b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a &= u${name}b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a |= u${name}b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a ^= u${name}b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    # vector with vector
    gdb_test "ptype u${name}4a = u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a += u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a -= u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4b *= u${name}4a" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4b /= u${name}4a" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a %= u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a <<= u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a >>= u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a &= u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a |= u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
    gdb_test "ptype u${name}4a ^= u${name}4b" "type = (unsigned ${type}|u${type}) \\\[4\\\]"
  }
}

proc do_check { name type isfloat size } {
  check_basic ${name} ${type} ${isfloat}
  check_arithmetic_ops ${name} ${type} ${isfloat} ${size}
  check_relational_ops ${name} ${type} ${isfloat} ${size}
  check_equality_ops ${name} ${type} ${isfloat} ${size}
  if { !${isfloat} } {
    check_shift_ops ${name} ${type} ${size}
    check_bitwise_ops ${name} ${type} ${size}
  }
  check_logical_ops ${name} ${type} ${isfloat} ${size}
  check_conditional_op ${name} ${type} ${isfloat}
  check_assignment_ops ${name} ${type} ${isfloat} ${size}
}

do_check "c" "char" 0 1
do_check "s" "short" 0 2
do_check "i" "int" 0 4
do_check "l" "long" 0 8
if { ${have_cl_khr_fp16} } {
  do_check "h" "half" 1 2
}
do_check "f" "float" 1 4
if { ${have_cl_khr_fp64} } {
  do_check "d" "double" 1 8
}
# Delete the OpenCL program source
remote_file target delete ${clprogram}
