[nvptx] Add __PTX_ISA_VERSION_{MAJOR,MINOR}__
authorTom de Vries <tdevries@suse.de>
Tue, 29 Mar 2022 14:04:09 +0000 (16:04 +0200)
committerTom de Vries <tdevries@suse.de>
Tue, 29 Mar 2022 14:16:31 +0000 (16:16 +0200)
commita2eacdbd4c4a698b3b6f27ef5e1f8dd3d836b2e5
treeb048248848706ee3d0368274b9744bae56ffcfa1
parent1625e893cca658a8df3dea50189c932a7025e223
[nvptx] Add __PTX_ISA_VERSION_{MAJOR,MINOR}__

Add preprocessor macros __PTX_ISA_VERSION_MAJOR__ and
__PTX_ISA_VERSION_MINOR__.

For the default 6.0, we have:
...
 $ echo | cc1 -E -dD - 2>&1 | grep PTX_ISA_VERSION
 #define __PTX_ISA_VERSION_MAJOR__ 6
 #define __PTX_ISA_VERSION_MINOR__ 0
...
and for 3.1, we have:
...
 $ echo | cc1 -mptx=3.1 -E -dD - 2>&1 | grep PTX_ISA_VERSION
 #define __PTX_ISA_VERSION_MAJOR__ 3
 #define __PTX_ISA_VERSION_MINOR__ 1
...

These can be used to express things like:
...
 #if __PTX_ISA_VERSION_MAJOR__ >= 4 && __PTX_ISA_VERSION_MAJOR__ >= 1
   /* Code using %dynamic_smem_size.  */
 #else
   /* Fallback code.  */
 #endif
...

Tested on nvptx.

gcc/ChangeLog:

2022-03-29  Tom de Vries  <tdevries@suse.de>

PR target/104857
* config/nvptx/nvptx-c.cc (nvptx_cpu_cpp_builtins): Emit
__PTX_ISA_VERSION_MAJOR__ and __PTX_ISA_VERSION_MINOR__.
* config/nvptx/nvptx.cc (ptx_version_to_number): New function.
* config/nvptx/nvptx-protos.h (ptx_version_to_number): Declare.

gcc/testsuite/ChangeLog:

2022-03-29  Tom de Vries  <tdevries@suse.de>

PR target/104857
* gcc.target/nvptx/ptx31.c: New test.
* gcc.target/nvptx/ptx60.c: New test.
* gcc.target/nvptx/ptx63.c: New test.
* gcc.target/nvptx/ptx70.c: New test.
gcc/config/nvptx/nvptx-c.cc
gcc/config/nvptx/nvptx-protos.h
gcc/config/nvptx/nvptx.cc
gcc/testsuite/gcc.target/nvptx/ptx31.c [new file with mode: 0644]
gcc/testsuite/gcc.target/nvptx/ptx60.c [new file with mode: 0644]
gcc/testsuite/gcc.target/nvptx/ptx63.c [new file with mode: 0644]
gcc/testsuite/gcc.target/nvptx/ptx70.c [new file with mode: 0644]