Commit 8b72af17 by Tom de Vries Committed by Tom de Vries

[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
parent 787783a0
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> 2019-06-18 Richard Sandiford <richard.sandiford@arm.com>
* tree-vect-loop-manip.c (vect_set_loop_masks_directly): Remove * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Remove
......
...@@ -57,6 +57,5 @@ extern const char *nvptx_output_set_softstack (unsigned); ...@@ -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_enter (rtx, rtx, rtx);
extern const char *nvptx_output_simt_exit (rtx); extern const char *nvptx_output_simt_exit (rtx);
extern const char *nvptx_output_red_partition (rtx, rtx); extern const char *nvptx_output_red_partition (rtx, rtx);
extern rtx gen_set_softstack_insn (rtx);
#endif #endif
#endif #endif
...@@ -112,18 +112,6 @@ enum nvptx_data_area ...@@ -112,18 +112,6 @@ enum nvptx_data_area
DATA_AREA_MAX 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. */ /* We record the data area in the target symbol flags. */
#define SYMBOL_DATA_AREA(SYM) \ #define SYMBOL_DATA_AREA(SYM) \
(nvptx_data_area)((SYMBOL_REF_FLAGS (SYM) >> SYMBOL_FLAG_MACH_DEP_SHIFT) \ (nvptx_data_area)((SYMBOL_REF_FLAGS (SYM) >> SYMBOL_FLAG_MACH_DEP_SHIFT) \
......
...@@ -1025,8 +1025,8 @@ ...@@ -1025,8 +1025,8 @@
"" ""
{ {
if (TARGET_SOFT_STACK) if (TARGET_SOFT_STACK)
emit_insn (gen_set_softstack_insn (gen_rtx_REG (Pmode, emit_insn (gen_set_softstack (Pmode, gen_rtx_REG (Pmode,
SOFTSTACK_PREV_REGNUM))); SOFTSTACK_PREV_REGNUM)));
emit_jump_insn (gen_return ()); emit_jump_insn (gen_return ());
DONE; DONE;
}) })
...@@ -1059,7 +1059,7 @@ ...@@ -1059,7 +1059,7 @@
{ {
emit_move_insn (stack_pointer_rtx, emit_move_insn (stack_pointer_rtx,
gen_rtx_MINUS (Pmode, stack_pointer_rtx, operands[1])); 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); emit_move_insn (operands[0], virtual_stack_dynamic_rtx);
DONE; DONE;
} }
...@@ -1071,7 +1071,7 @@ ...@@ -1071,7 +1071,7 @@
DONE; DONE;
}) })
(define_insn "set_softstack_<mode>" (define_insn "@set_softstack_<mode>"
[(unspec [(match_operand:P 0 "nvptx_register_operand" "R")] [(unspec [(match_operand:P 0 "nvptx_register_operand" "R")]
UNSPEC_SET_SOFTSTACK)] UNSPEC_SET_SOFTSTACK)]
"TARGET_SOFT_STACK" "TARGET_SOFT_STACK"
...@@ -1087,7 +1087,7 @@ ...@@ -1087,7 +1087,7 @@
if (TARGET_SOFT_STACK) if (TARGET_SOFT_STACK)
{ {
emit_move_insn (operands[0], operands[1]); emit_move_insn (operands[0], operands[1]);
emit_insn (gen_set_softstack_insn (operands[0])); emit_insn (gen_set_softstack (Pmode, operands[0]));
} }
DONE; DONE;
}) })
...@@ -1237,7 +1237,7 @@ ...@@ -1237,7 +1237,7 @@
;; Patterns for OpenMP SIMD-via-SIMT lowering ;; 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") [(set (match_operand:P 0 "nvptx_register_operand" "=R")
(unspec_volatile:P [(match_operand:P 1 "nvptx_nonmemory_operand" "Ri") (unspec_volatile:P [(match_operand:P 1 "nvptx_nonmemory_operand" "Ri")
(match_operand:P 2 "nvptx_nonmemory_operand" "Ri")] (match_operand:P 2 "nvptx_nonmemory_operand" "Ri")]
...@@ -1261,13 +1261,7 @@ ...@@ -1261,13 +1261,7 @@
cfun->machine->simt_stack_align = MAX (UINTVAL (operands[2]), cfun->machine->simt_stack_align = MAX (UINTVAL (operands[2]),
cfun->machine->simt_stack_align); cfun->machine->simt_stack_align);
cfun->machine->has_simtreg = true; cfun->machine->has_simtreg = true;
gcc_assert (GET_MODE (operands[0]) == Pmode); emit_insn (gen_omp_simt_enter (Pmode, operands[0], operands[1], operands[2]));
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 ();
DONE; DONE;
}) })
...@@ -1275,17 +1269,11 @@ ...@@ -1275,17 +1269,11 @@
[(match_operand 0 "nvptx_register_operand" "R")] [(match_operand 0 "nvptx_register_operand" "R")]
"" ""
{ {
gcc_assert (GET_MODE (operands[0]) == Pmode); emit_insn (gen_omp_simt_exit (Pmode, operands[0]));
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 ();
DONE; DONE;
}) })
(define_insn "omp_simt_exit_<mode>" (define_insn "@omp_simt_exit_<mode>"
[(unspec_volatile [(match_operand:P 0 "nvptx_register_operand" "R")] [(unspec_volatile [(match_operand:P 0 "nvptx_register_operand" "R")]
UNSPECV_SIMT_EXIT)] UNSPECV_SIMT_EXIT)]
"" ""
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment