[nvptx] Fix missing mode warnings in nvptx.md, omp part
Fix these warnings: ... gcc/config/nvptx/nvptx.md:1074:1: warning: operand 0 missing mode? gcc/config/nvptx/nvptx.md:1240:1: warning: operand 0 missing mode? gcc/config/nvptx/nvptx.md:1240:1: warning: operand 1 missing mode? gcc/config/nvptx/nvptx.md:1240:1: warning: operand 2 missing mode? gcc/config/nvptx/nvptx.md:1268:1: warning: operand 0 missing mode? ... Build and reg-tested on x86_64 with nvptx accelerator. 2019-06-17 Tom de Vries <tdevries@suse.de> * config/nvptx/nvptx-protos.h (gen_set_softstack_insn): Declare. * config/nvptx/nvptx.c (gen_set_softstack_insn): New function. * config/nvptx/nvptx.md (define_insn "set_softstack_insn"): Rename to ... (define_insn "set_softstack_<mode>"): ... this. Use P iterator on match_operand 0. (define_insn "omp_simt_enter_insn"): Rename to ... (define_insn "omp_simt_enter_<mode>"): ... this. Use P iterator on match_operand 0, 1 and 2, as well as the unspec_volatile result. (define_expand "omp_simt_enter): Use gen_omp_simt_enter_di and gen_omp_simt_enter_si. (define_expand "omp_simt_exit"): New. (define_insn "omp_simt_exit"): Rename to ... (define_insn "omp_simt_exit_<mode>"): ... this. Use P iterator on match_operand 0. From-SVN: r272388
This commit is contained in:
parent
f32f75858a
commit
8b243438b3
4 changed files with 60 additions and 9 deletions
|
@ -1,3 +1,21 @@
|
|||
2019-06-17 Tom de Vries <tdevries@suse.de>
|
||||
|
||||
* config/nvptx/nvptx-protos.h (gen_set_softstack_insn): Declare.
|
||||
* config/nvptx/nvptx.c (gen_set_softstack_insn): New function.
|
||||
* config/nvptx/nvptx.md (define_insn "set_softstack_insn"): Rename to
|
||||
...
|
||||
(define_insn "set_softstack_<mode>"): ... this. Use P iterator on
|
||||
match_operand 0.
|
||||
(define_insn "omp_simt_enter_insn"): Rename to ...
|
||||
(define_insn "omp_simt_enter_<mode>"): ... this. Use P iterator on
|
||||
match_operand 0, 1 and 2, as well as the unspec_volatile result.
|
||||
(define_expand "omp_simt_enter): Use gen_omp_simt_enter_di and
|
||||
gen_omp_simt_enter_si.
|
||||
(define_expand "omp_simt_exit"): New.
|
||||
(define_insn "omp_simt_exit"): Rename to ...
|
||||
(define_insn "omp_simt_exit_<mode>"): ... this. Use P iterator on
|
||||
match_operand 0.
|
||||
|
||||
2019-06-17 Matthew Green <mrg@eterna.com.au>
|
||||
Maya Rashish <coypu@sdf.org>
|
||||
|
||||
|
|
|
@ -57,5 +57,6 @@ 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
|
||||
|
|
|
@ -112,6 +112,18 @@ 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) \
|
||||
|
|
|
@ -1071,8 +1071,8 @@
|
|||
DONE;
|
||||
})
|
||||
|
||||
(define_insn "set_softstack_insn"
|
||||
[(unspec [(match_operand 0 "nvptx_register_operand" "R")]
|
||||
(define_insn "set_softstack_<mode>"
|
||||
[(unspec [(match_operand:P 0 "nvptx_register_operand" "R")]
|
||||
UNSPEC_SET_SOFTSTACK)]
|
||||
"TARGET_SOFT_STACK"
|
||||
{
|
||||
|
@ -1237,10 +1237,10 @@
|
|||
|
||||
;; Patterns for OpenMP SIMD-via-SIMT lowering
|
||||
|
||||
(define_insn "omp_simt_enter_insn"
|
||||
[(set (match_operand 0 "nvptx_register_operand" "=R")
|
||||
(unspec_volatile [(match_operand 1 "nvptx_nonmemory_operand" "Ri")
|
||||
(match_operand 2 "nvptx_nonmemory_operand" "Ri")]
|
||||
(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")]
|
||||
UNSPECV_SIMT_ENTER))]
|
||||
""
|
||||
{
|
||||
|
@ -1261,12 +1261,32 @@
|
|||
cfun->machine->simt_stack_align = MAX (UINTVAL (operands[2]),
|
||||
cfun->machine->simt_stack_align);
|
||||
cfun->machine->has_simtreg = true;
|
||||
emit_insn (gen_omp_simt_enter_insn (operands[0], operands[1], operands[2]));
|
||||
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 ();
|
||||
DONE;
|
||||
})
|
||||
|
||||
(define_insn "omp_simt_exit"
|
||||
[(unspec_volatile [(match_operand 0 "nvptx_register_operand" "R")]
|
||||
(define_expand "omp_simt_exit"
|
||||
[(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 ();
|
||||
DONE;
|
||||
})
|
||||
|
||||
(define_insn "omp_simt_exit_<mode>"
|
||||
[(unspec_volatile [(match_operand:P 0 "nvptx_register_operand" "R")]
|
||||
UNSPECV_SIMT_EXIT)]
|
||||
""
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue