[nvptx] Use define_insn parametrization

Parametrize some define_insn to simplify code in define_expands generating
those insns.

Build and reg-tested on x86_64 with nvptx accelerator.

2019-06-18  Tom de Vries  <tdevries@suse.de>

	* config/nvptx/nvptx-protos.h (gen_set_softstack_insn): Remove.
	* config/nvptx/nvptx.c (gen_set_softstack_insn): Remove.
	* config/nvptx/nvptx.md (define_insn "set_softstack_<mode>"): Rename to ...
	(define_insn "@set_softstack_<mode>"): ... this.
	(define_insn "omp_simt_enter_<mode>"): Rename to ...
	(define_insn "@omp_simt_enter_<mode>"): ... this.
	(define_insn "omp_simt_exit_<mode>"): Rename to ...
	(define_insn "@omp_simt_exit_<mode>"): ... this.

From-SVN: r272413
This commit is contained in:
Tom de Vries 2019-06-18 09:19:41 +00:00 committed by Tom de Vries
parent 787783a035
commit 8b72af1703
4 changed files with 20 additions and 34 deletions

View file

@ -1,3 +1,14 @@
2019-06-18 Tom de Vries <tdevries@suse.de>
* config/nvptx/nvptx-protos.h (gen_set_softstack_insn): Remove.
* config/nvptx/nvptx.c (gen_set_softstack_insn): Remove.
* config/nvptx/nvptx.md (define_insn "set_softstack_<mode>"): Rename to ...
(define_insn "@set_softstack_<mode>"): ... this.
(define_insn "omp_simt_enter_<mode>"): Rename to ...
(define_insn "@omp_simt_enter_<mode>"): ... this.
(define_insn "omp_simt_exit_<mode>"): Rename to ...
(define_insn "@omp_simt_exit_<mode>"): ... this.
2019-06-18 Richard Sandiford <richard.sandiford@arm.com>
* tree-vect-loop-manip.c (vect_set_loop_masks_directly): Remove

View file

@ -57,6 +57,5 @@ extern const char *nvptx_output_set_softstack (unsigned);
extern const char *nvptx_output_simt_enter (rtx, rtx, rtx);
extern const char *nvptx_output_simt_exit (rtx);
extern const char *nvptx_output_red_partition (rtx, rtx);
extern rtx gen_set_softstack_insn (rtx);
#endif
#endif

View file

@ -112,18 +112,6 @@ enum nvptx_data_area
DATA_AREA_MAX
};
rtx
gen_set_softstack_insn (rtx op)
{
gcc_assert (GET_MODE (op) == Pmode);
if (GET_MODE (op) == DImode)
return gen_set_softstack_di (op);
else if (GET_MODE (op) == SImode)
return gen_set_softstack_si (op);
else
gcc_unreachable ();
}
/* We record the data area in the target symbol flags. */
#define SYMBOL_DATA_AREA(SYM) \
(nvptx_data_area)((SYMBOL_REF_FLAGS (SYM) >> SYMBOL_FLAG_MACH_DEP_SHIFT) \

View file

@ -1025,8 +1025,8 @@
""
{
if (TARGET_SOFT_STACK)
emit_insn (gen_set_softstack_insn (gen_rtx_REG (Pmode,
SOFTSTACK_PREV_REGNUM)));
emit_insn (gen_set_softstack (Pmode, gen_rtx_REG (Pmode,
SOFTSTACK_PREV_REGNUM)));
emit_jump_insn (gen_return ());
DONE;
})
@ -1059,7 +1059,7 @@
{
emit_move_insn (stack_pointer_rtx,
gen_rtx_MINUS (Pmode, stack_pointer_rtx, operands[1]));
emit_insn (gen_set_softstack_insn (stack_pointer_rtx));
emit_insn (gen_set_softstack (Pmode, stack_pointer_rtx));
emit_move_insn (operands[0], virtual_stack_dynamic_rtx);
DONE;
}
@ -1071,7 +1071,7 @@
DONE;
})
(define_insn "set_softstack_<mode>"
(define_insn "@set_softstack_<mode>"
[(unspec [(match_operand:P 0 "nvptx_register_operand" "R")]
UNSPEC_SET_SOFTSTACK)]
"TARGET_SOFT_STACK"
@ -1087,7 +1087,7 @@
if (TARGET_SOFT_STACK)
{
emit_move_insn (operands[0], operands[1]);
emit_insn (gen_set_softstack_insn (operands[0]));
emit_insn (gen_set_softstack (Pmode, operands[0]));
}
DONE;
})
@ -1237,7 +1237,7 @@
;; Patterns for OpenMP SIMD-via-SIMT lowering
(define_insn "omp_simt_enter_<mode>"
(define_insn "@omp_simt_enter_<mode>"
[(set (match_operand:P 0 "nvptx_register_operand" "=R")
(unspec_volatile:P [(match_operand:P 1 "nvptx_nonmemory_operand" "Ri")
(match_operand:P 2 "nvptx_nonmemory_operand" "Ri")]
@ -1261,13 +1261,7 @@
cfun->machine->simt_stack_align = MAX (UINTVAL (operands[2]),
cfun->machine->simt_stack_align);
cfun->machine->has_simtreg = true;
gcc_assert (GET_MODE (operands[0]) == Pmode);
if (GET_MODE (operands[0]) == DImode)
emit_insn (gen_omp_simt_enter_di (operands[0], operands[1], operands[2]));
else if (GET_MODE (operands[0]) == SImode)
emit_insn (gen_omp_simt_enter_si (operands[0], operands[1], operands[2]));
else
gcc_unreachable ();
emit_insn (gen_omp_simt_enter (Pmode, operands[0], operands[1], operands[2]));
DONE;
})
@ -1275,17 +1269,11 @@
[(match_operand 0 "nvptx_register_operand" "R")]
""
{
gcc_assert (GET_MODE (operands[0]) == Pmode);
if (GET_MODE (operands[0]) == DImode)
emit_insn (gen_omp_simt_exit_di (operands[0]));
else if (GET_MODE (operands[0]) == SImode)
emit_insn (gen_omp_simt_exit_si (operands[0]));
else
gcc_unreachable ();
emit_insn (gen_omp_simt_exit (Pmode, operands[0]));
DONE;
})
(define_insn "omp_simt_exit_<mode>"
(define_insn "@omp_simt_exit_<mode>"
[(unspec_volatile [(match_operand:P 0 "nvptx_register_operand" "R")]
UNSPECV_SIMT_EXIT)]
""