]> git.ipfire.org Git - thirdparty/gcc.git/commit
nvptx: PTX 'alloca' for '-mptx=7.3'+, '-march=sm_52'+ [PR65181]
authorThomas Schwinge <tschwinge@baylibre.com>
Fri, 6 Dec 2024 23:17:49 +0000 (00:17 +0100)
committerThomas Schwinge <tschwinge@baylibre.com>
Thu, 9 Jan 2025 13:17:11 +0000 (14:17 +0100)
commit3861d362ec7e3c50742fc43833fe9d8674f4070e
treea62824305de2b8c0281fb67b52c7ce5629a35ab5
parent1db025c67fc19612332d1668607ab800f0251520
nvptx: PTX 'alloca' for '-mptx=7.3'+, '-march=sm_52'+ [PR65181]

..., and use it for '-mno-soft-stack': PTX "native" stacks.

PR target/65181
gcc/
* config/nvptx/nvptx.cc (nvptx_get_drap_rtx): Handle
'!TARGET_SOFT_STACK'.
* config/nvptx/nvptx.md (define_c_enum "unspec"): Add
'UNSPEC_STACKSAVE', 'UNSPEC_STACKRESTORE'.
(define_expand "allocate_stack", define_expand "save_stack_block")
(define_expand "save_stack_block"): Handle '!TARGET_SOFT_STACK',
PTX 'alloca'.
(define_insn "@nvptx_alloca_<mode>")
(define_insn "@nvptx_stacksave_<mode>")
(define_insn "@nvptx_stackrestore_<mode>"): New.
* doc/invoke.texi (Nvidia PTX Options): Update '-msoft-stack',
'-mno-soft-stack'.
* doc/sourcebuild.texi (nvptx-specific attributes): Document
'nvptx_runtime_alloca_ptx'.
(Add Options): Document 'nvptx_alloca_ptx'.
gcc/testsuite/
* gcc.target/nvptx/alloca-1.c: Evolve into...
* gcc.target/nvptx/alloca-1-O0.c: ... this, ...
* gcc.target/nvptx/alloca-1-O1.c: ... this, and...
* gcc.target/nvptx/alloca-1-sm_30.c: ... this.
* gcc.target/nvptx/vla-1.c: Evolve into...
* gcc.target/nvptx/vla-1-O0.c: ... this, ...
* gcc.target/nvptx/vla-1-O1.c: ... this, and...
* gcc.target/nvptx/vla-1-sm_30.c: ... this.
* gcc.c-torture/execute/pr36321.c: Adjust.
* gcc.target/nvptx/__builtin_alloca_0-1-O0.c: Likewise.
* gcc.target/nvptx/__builtin_alloca_0-1-O1.c: Likewise.
* gcc.target/nvptx/__builtin_stack_save___builtin_stack_restore-1.c:
Likewise.
* gcc.target/nvptx/softstack.c: Likewise.
* gcc.target/nvptx/__builtin_stack_save___builtin_stack_restore-1-sm_30.c:
New.
* gcc.target/nvptx/alloca-2-O0.c: Likewise.
* gcc.target/nvptx/alloca-3-O1.c: Likewise.
* gcc.target/nvptx/alloca-4-O3.c: Likewise.
* gcc.target/nvptx/alloca-5.c: Likewise.
* lib/target-supports.exp (check_effective_target_alloca): Adjust.
(check_nvptx_default_ptx_isa_target_architecture_at_least)
(check_nvptx_runtime_ptx_isa_target_architecture_at_least)
(check_effective_target_nvptx_runtime_alloca_ptx)
(add_options_for_nvptx_alloca_ptx): New.
libgomp/
* fortran.c (omp_get_device_from_uid_): Adjust.
* testsuite/libgomp.oacc-fortran/privatized-ref-2.f90: Likewise.
23 files changed:
gcc/config/nvptx/nvptx.cc
gcc/config/nvptx/nvptx.md
gcc/doc/invoke.texi
gcc/doc/sourcebuild.texi
gcc/testsuite/gcc.c-torture/execute/pr36321.c
gcc/testsuite/gcc.target/nvptx/__builtin_alloca_0-1-O0.c
gcc/testsuite/gcc.target/nvptx/__builtin_alloca_0-1-O1.c
gcc/testsuite/gcc.target/nvptx/__builtin_stack_save___builtin_stack_restore-1-sm_30.c [new file with mode: 0644]
gcc/testsuite/gcc.target/nvptx/__builtin_stack_save___builtin_stack_restore-1.c
gcc/testsuite/gcc.target/nvptx/alloca-1-O0.c [new file with mode: 0644]
gcc/testsuite/gcc.target/nvptx/alloca-1-O1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/nvptx/alloca-1-sm_30.c [moved from gcc/testsuite/gcc.target/nvptx/alloca-1.c with 83% similarity]
gcc/testsuite/gcc.target/nvptx/alloca-2-O0.c [new file with mode: 0644]
gcc/testsuite/gcc.target/nvptx/alloca-3-O1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/nvptx/alloca-4-O3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/nvptx/alloca-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/nvptx/softstack.c
gcc/testsuite/gcc.target/nvptx/vla-1-O0.c [new file with mode: 0644]
gcc/testsuite/gcc.target/nvptx/vla-1-O1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/nvptx/vla-1-sm_30.c [moved from gcc/testsuite/gcc.target/nvptx/vla-1.c with 83% similarity]
gcc/testsuite/lib/target-supports.exp
libgomp/fortran.c
libgomp/testsuite/libgomp.oacc-fortran/privatized-ref-2.f90