diff options
author | Tom de Vries <tdevries@suse.de> | 2022-04-01 11:09:53 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2022-04-01 11:33:57 +0200 |
commit | 215c8c5826c688eaebce4d9cd0d52e9da7bc208f (patch) | |
tree | f1a96f215b32bc93fd047e772f823ea3cf92763a /gcc | |
parent | 15d683d4f0b390b27c54a7c92c6e4f33195bdc93 (diff) | |
download | gcc-215c8c5826c688eaebce4d9cd0d52e9da7bc208f.zip gcc-215c8c5826c688eaebce4d9cd0d52e9da7bc208f.tar.gz gcc-215c8c5826c688eaebce4d9cd0d52e9da7bc208f.tar.bz2 |
[nvptx, testsuite] Fix gcc.target/nvptx/alias-*.c on sm_80
When running test-cases gcc.target/nvptx/alias-*.c on target board
nvptx-none-run/-misa=sm_80 we run into fails because the test-cases add
-mptx=6.3, which doesn't support sm_80.
Fix this by only adding -mptx=6.3 if necessary, and simplify the test-cases by
using ptx_alias feature abstractions:
...
/* { dg-do run { target runtime_ptx_alias } } */
/* { dg-add-options ptx_alias } */
...
Tested on nvptx.
gcc/testsuite/ChangeLog:
2022-04-01 Tom de Vries <tdevries@suse.de>
* gcc.target/nvptx/nvptx.exp
(check_effective_target_runtime_ptx_isa_version_6_3): Rename and
generalize to ...
(check_effective_target_runtime_ptx_isa_version_at_least): .. this.
(check_effective_target_default_ptx_isa_version_at_least)
(check_effective_target_runtime_ptx_alias, add_options_for_ptx_alias):
New proc.
* gcc.target/nvptx/alias-1.c: Use "target runtime_ptx_alias" and
"dg-add-options ptx_alias".
* gcc.target/nvptx/alias-2.c: Same.
* gcc.target/nvptx/alias-3.c: Same.
* gcc.target/nvptx/alias-4.c: Same.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/gcc.target/nvptx/alias-1.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/nvptx/alias-2.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/nvptx/alias-3.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/nvptx/alias-4.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/nvptx/nvptx.exp | 62 |
5 files changed, 70 insertions, 12 deletions
diff --git a/gcc/testsuite/gcc.target/nvptx/alias-1.c b/gcc/testsuite/gcc.target/nvptx/alias-1.c index f68716e..d251eee 100644 --- a/gcc/testsuite/gcc.target/nvptx/alias-1.c +++ b/gcc/testsuite/gcc.target/nvptx/alias-1.c @@ -1,6 +1,7 @@ /* { dg-do link } */ -/* { dg-do run { target runtime_ptx_isa_version_6_3 } } */ -/* { dg-options "-save-temps -malias -mptx=6.3" } */ +/* { dg-do run { target runtime_ptx_alias } } */ +/* { dg-options "-save-temps" } */ +/* { dg-add-options ptx_alias } */ int v; diff --git a/gcc/testsuite/gcc.target/nvptx/alias-2.c b/gcc/testsuite/gcc.target/nvptx/alias-2.c index e2dc9b1..96cb7e2 100644 --- a/gcc/testsuite/gcc.target/nvptx/alias-2.c +++ b/gcc/testsuite/gcc.target/nvptx/alias-2.c @@ -1,6 +1,7 @@ /* { dg-do link } */ -/* { dg-do run { target runtime_ptx_isa_version_6_3 } } */ -/* { dg-options "-save-temps -malias -mptx=6.3 -O2" } */ +/* { dg-do run { target runtime_ptx_alias } } */ +/* { dg-options "-save-temps -O2" } */ +/* { dg-add-options ptx_alias } */ #include "alias-1.c" diff --git a/gcc/testsuite/gcc.target/nvptx/alias-3.c b/gcc/testsuite/gcc.target/nvptx/alias-3.c index 60486e5..39649e3 100644 --- a/gcc/testsuite/gcc.target/nvptx/alias-3.c +++ b/gcc/testsuite/gcc.target/nvptx/alias-3.c @@ -1,6 +1,7 @@ /* { dg-do link } */ -/* { dg-do run { target runtime_ptx_isa_version_6_3 } } */ -/* { dg-options "-save-temps -malias -mptx=6.3" } */ +/* { dg-do run { target runtime_ptx_alias } } */ +/* { dg-options "-save-temps" } */ +/* { dg-add-options ptx_alias } */ /* Copy of alias-1.c, with static __f and f. */ diff --git a/gcc/testsuite/gcc.target/nvptx/alias-4.c b/gcc/testsuite/gcc.target/nvptx/alias-4.c index 956150a..28163c0 100644 --- a/gcc/testsuite/gcc.target/nvptx/alias-4.c +++ b/gcc/testsuite/gcc.target/nvptx/alias-4.c @@ -1,6 +1,7 @@ /* { dg-do link } */ -/* { dg-do run { target runtime_ptx_isa_version_6_3 } } */ -/* { dg-options "-save-temps -malias -mptx=6.3 -O2" } */ +/* { dg-do run { target runtime_ptx_alias } } */ +/* { dg-options "-save-temps -O2" } */ +/* { dg-add-options ptx_alias } */ #include "alias-3.c" diff --git a/gcc/testsuite/gcc.target/nvptx/nvptx.exp b/gcc/testsuite/gcc.target/nvptx/nvptx.exp index e69b6d3..e9622ae 100644 --- a/gcc/testsuite/gcc.target/nvptx/nvptx.exp +++ b/gcc/testsuite/gcc.target/nvptx/nvptx.exp @@ -25,11 +25,65 @@ if ![istarget nvptx*-*-*] then { # Load support procs. load_lib gcc-dg.exp -# Return 1 if code with -mptx=6.3 can be run. -proc check_effective_target_runtime_ptx_isa_version_6_3 { args } { - return [check_runtime run_ptx_isa_6_3 { +# 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; } - } "-mptx=6.3"] + } $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. |