
This commit is the result of the following actions: - Running gdb/copyright.py to update all of the copyright headers to include 2024, - Manually updating a few files the copyright.py script told me to update, these files had copyright headers embedded within the file, - Regenerating gdbsupport/Makefile.in to refresh it's copyright date, - Using grep to find other files that still mentioned 2023. If these files were updated last year from 2022 to 2023 then I've updated them this year to 2024. I'm sure I've probably missed some dates. Feel free to fix them up as you spot them.
153 lines
4.4 KiB
Text
153 lines
4.4 KiB
Text
# Copyright 2023-2024 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/>. */
|
|
|
|
# Support routines for aarch64-specific tests
|
|
|
|
#
|
|
# Return a regular expression that matches what gdb would print for a
|
|
# 1-dimension vector containing ELEMENTS elements of value BYTE.
|
|
#
|
|
# The pattern is of the form "{BYTE <repeats ELEMENTS times>".
|
|
#
|
|
proc 1d_array_value_pattern { byte elements } {
|
|
set brace_open "{"
|
|
set brace_close "}"
|
|
|
|
append data $brace_open $byte
|
|
if {$elements > 1} {
|
|
append data " <repeats $elements times>"
|
|
}
|
|
append data $brace_close
|
|
|
|
verbose -log "1d_array_value_pattern Pattern string is..."
|
|
verbose -log $data
|
|
return $data
|
|
}
|
|
|
|
#
|
|
# Return a regular expression that matches what gdb would print for a
|
|
# 2-dimension vector containing ROWS rows and COLUMNS columns of elements
|
|
# of value BYTE.
|
|
#
|
|
# The pattern is of the form
|
|
# "{{BYTE <repeats COLUMNS times>} <repeats ROWS times>}".
|
|
#
|
|
proc 2d_array_value_pattern { byte rows columns } {
|
|
set brace_open "{"
|
|
set brace_close "}"
|
|
|
|
append data $brace_open [1d_array_value_pattern $byte $columns]
|
|
if {$rows > 1} {
|
|
append data " <repeats $rows times>"
|
|
}
|
|
append data $brace_close
|
|
|
|
verbose -log "2d_array_value_pattern Pattern string is..."
|
|
verbose -log $data
|
|
return $data
|
|
}
|
|
|
|
#
|
|
# Initialize register NAME, a 1-dimension vector, with ELEMENTS elements
|
|
# by setting all elements to BYTE. ELEMENTS is limited at 256 for memory
|
|
# usage purposes.
|
|
#
|
|
# The initialization is of the form "{BYTE, BYTE, BYTE ...}".
|
|
#
|
|
proc initialize_1d_array { name byte elements } {
|
|
set brace_open "{"
|
|
set brace_close "}"
|
|
|
|
append data $brace_open
|
|
|
|
# Build the assignment in a single shot.
|
|
for {set element 0} {$element < $elements} {incr element} {
|
|
# Construct the initializer by appending elements to it.
|
|
append data $byte
|
|
|
|
# If this isn't the last element, add a comma.
|
|
if {[expr $element + 1] < $elements} {
|
|
append data ", "
|
|
}
|
|
}
|
|
append data $brace_close
|
|
|
|
verbose -log "initialization string is..."
|
|
verbose -log $data
|
|
gdb_test_no_output "set $name = $data" "write to $name"
|
|
}
|
|
|
|
#
|
|
# Return an initializer string for a 2-dimension vector with ROWS rows and
|
|
# COLUMNS columns, initializing all elements to BYTE for register NAME.
|
|
#
|
|
# COLUMNS is limited to 256 elements for memory usage purposes.
|
|
#
|
|
# The initialization is of the form "{{BYTE, BYTE}, ..., {BYTE, BYTE}}}".
|
|
#
|
|
proc initialize_2d_array { name byte rows columns } {
|
|
set brace_open "{"
|
|
set brace_close "}"
|
|
|
|
if {[expr $rows * $columns] <= 256} {
|
|
# Build the assignment in a single shot, as we have a maximum of 256
|
|
# elements.
|
|
for {set row 0} {$row < $rows} {incr row} {
|
|
append data $brace_open
|
|
for {set column 0} {$column < $columns} {incr column} {
|
|
# Construct the initializer by appending elements to it.
|
|
append data $byte
|
|
|
|
# If this isn't the last column, add a comma.
|
|
if {[expr $column + 1] < $columns} {
|
|
append data ", "
|
|
}
|
|
}
|
|
|
|
append data $brace_close
|
|
|
|
# If this isn't the last row, add a comma.
|
|
if {[expr $row + 1] < $rows} {
|
|
append data ","
|
|
}
|
|
}
|
|
|
|
set data $brace_open$data
|
|
set data $data$brace_close
|
|
|
|
verbose -log "initialization string is..."
|
|
verbose -log $data
|
|
gdb_test_no_output "set $name = $data" "write to $name"
|
|
} else {
|
|
# There are too many elements to initialize (more than 256), so we
|
|
# will do the initialization row by row.
|
|
for {set row 0} {$row < $rows} {incr row} {
|
|
initialize_1d_array "$name\[$row\]" $byte $columns
|
|
}
|
|
}
|
|
}
|
|
|
|
#
|
|
# Validate the values of the FPSIMD registers.
|
|
#
|
|
proc check_fpsimd_regs { byte state vl svl} {
|
|
set fpsimd_pattern [string_to_regexp [1d_array_value_pattern $byte 16]]
|
|
|
|
for {set number 0} {$number < 32} {incr number} {
|
|
set register_name "\$v${number}\.b\.u"
|
|
gdb_test "print sizeof $register_name" " = 16"
|
|
gdb_test "print $register_name" $fpsimd_pattern
|
|
}
|
|
}
|