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:
parent
1823170805
commit
dcbd260a1d
2 changed files with 20 additions and 0 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
})
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue