From b029aac1801ae1950e19bafef966eae28ce5b29f Mon Sep 17 00:00:00 2001
From: Thomas Schwinge <tschwinge@baylibre.com>
Date: Wed, 17 Jul 2024 23:11:31 +0200
Subject: [PATCH] Make 'target-supports.exp' additions for nvptx target
generally available
..., instead of just 'gcc.target/nvptx/nvptx.exp'.
gcc/testsuite/lib/
* gcc.target/nvptx/nvptx.exp: Move 'target-supports.exp' additions
for nvptx target...
* lib/target-supports-nvptx.exp: ... into this new file.
* lib/target-supports.exp: Load it.
---
gcc/testsuite/gcc.target/nvptx/nvptx.exp | 66 -------------------
.../target-supports-nvptx.exp} | 27 ++------
gcc/testsuite/lib/target-supports.exp | 11 ++++
3 files changed, 15 insertions(+), 89 deletions(-)
copy gcc/testsuite/{gcc.target/nvptx/nvptx.exp => lib/target-supports-nvptx.exp} (81%)
@@ -25,72 +25,6 @@ if ![istarget nvptx*-*-*] then {
# 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 by default compiles for at least PTX ISA version 6.0.
-proc check_effective_target_default_ptx_isa_version_at_least_6_0 { } {
- return [check_effective_target_default_ptx_isa_version_at_least 6 0]
-}
-
-# 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 {
similarity index 81%
copy from gcc/testsuite/gcc.target/nvptx/nvptx.exp
copy to gcc/testsuite/lib/target-supports-nvptx.exp
@@ -1,5 +1,6 @@
-# Specific regression driver for nvptx.
-# Copyright (C) 2015-2024 Free Software Foundation, Inc.
+# 'target-supports.exp' additions for nvptx target.
+
+# Copyright (C) 2022-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
@@ -15,15 +16,11 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-# GCC testsuite that uses the `dg.exp' driver.
-
-# Exit immediately if this isn't a nvptx target.
+# Return early 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.
@@ -90,19 +87,3 @@ proc add_options_for_ptx_alias { flags } {
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
@@ -13620,3 +13620,14 @@ proc check_effective_target_check_jsonschema { } {
return 0;
}
}
+
+# Feature/target-specific additions via 'target-supports-*.exp' files.
+# If not applicable, these should 'return' early, for example.
+
+# In order to avoid having to fix up all GCC target libraries' '*.exp' files,
+# we're using 'source' here instead of 'load_lib'. Conceptually, this means
+# that these 'target-supports-*.exp' files are never to be loaded individually,
+# but are contained in 'load_lib target-supports.exp'.
+set d [file dirname [info script]]
+source $d/target-supports-nvptx.exp
+unset d
--
2.34.1