nvptx: Clarify that the PTX "native" stack pointer is handled implicitly at function level [PR65181]

PR target/65181
	gcc/
	* config/nvptx/nvptx.h (STACK_SAVEAREA_MODE): '#define'.
	* config/nvptx/nvptx.md [!TARGET_SOFT_STACK]
	(save_stack_function): 'define_expand'.
	(restore_stack_function): Handle '!TARGET_SOFT_STACK'.
This commit is contained in:
Thomas Schwinge 2024-12-10 11:11:26 +01:00
parent 1823170805
commit dcbd260a1d
2 changed files with 20 additions and 0 deletions

View file

@ -86,6 +86,13 @@
#define Pmode (TARGET_ABI64 ? DImode : SImode)
#define STACK_SIZE_MODE Pmode
/* We always have to maintain the '-msoft-stack' pointer, but the PTX "native"
stack pointer is handled implicitly at function level. */
#define STACK_SAVEAREA_MODE(LEVEL) \
(TARGET_SOFT_STACK ? Pmode \
: (LEVEL == SAVE_FUNCTION ? VOIDmode \
: Pmode))
#include "nvptx-gen.h"
/* There are no 'TARGET_PTX_3_1' and smaller conditionals: our baseline is

View file

@ -1716,11 +1716,24 @@
DONE;
})
(define_expand "save_stack_function"
[(match_operand 0 "register_operand" "")
(match_operand 1 "register_operand" "")]
"!TARGET_SOFT_STACK"
{
/* See 'STACK_SAVEAREA_MODE'. */
gcc_checking_assert (operands[0] == 0);
DONE;
})
(define_expand "restore_stack_function"
[(match_operand 0 "register_operand" "")
(match_operand 1 "register_operand" "")]
""
{
if (!TARGET_SOFT_STACK)
/* See 'STACK_SAVEAREA_MODE'. */
gcc_checking_assert (operands[1] == 0);
DONE;
})