# Specific regression driver for nvptx. # Copyright (C) 2015-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 GCC; see the file COPYING3. If not see # . # GCC testsuite that uses the `dg.exp' driver. # Exit immediately if this isn't a nvptx target. if ![istarget nvptx*-*-*] then { return } # Load support procs. load_lib gcc-dg.exp # Return 1 if code by default compiles for at least PTX ISA version # major.minor. proc check_effective_target_default_ptx_isa_version_at_least { major minor } { set name default_ptx_isa_version_at_least_${major}_${minor} set supported_p \ [concat \ "((__PTX_ISA_VERSION_MAJOR__ == $major" \ " && __PTX_ISA_VERSION_MINOR__ >= $minor)" \ " || (__PTX_ISA_VERSION_MAJOR__ > $major))"] set src \ [list \ "#if $supported_p" \ "#else" \ "#error unsupported" \ "#endif"] set src [join $src "\n"] set res [check_no_compiler_messages $name assembly $src ""] return $res } # Return 1 if code with PTX ISA version major.minor or higher can be run. proc check_effective_target_runtime_ptx_isa_version_at_least { major minor } { set name runtime_ptx_isa_version_${major}_${minor} set default \ [check_effective_target_default_ptx_isa_version_at_least \ ${major} ${minor}] if { $default } { set flag "" } else { set flag "-mptx=$major.$minor" } set res [check_runtime $name { int main (void) { return 0; } } $flag] return $res } # Return 1 if runtime environment support the PTX ISA directive .alias. proc check_effective_target_runtime_ptx_alias { } { return [check_effective_target_runtime_ptx_isa_version_at_least 6 3] } # Add options to enable using PTX ISA directive .alias. proc add_options_for_ptx_alias { flags } { append flags " -malias" if { ![check_effective_target_default_ptx_isa_version_at_least 6 3] } { append flags " -mptx=6.3" } return $flags } # If a testcase doesn't have special options, use these. global DEFAULT_CFLAGS if ![info exists DEFAULT_CFLAGS] then { set DEFAULT_CFLAGS " -ansi -pedantic-errors" } # Initialize `dg'. dg-init # Main loop. dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \ "" $DEFAULT_CFLAGS # All done. dg-finish