From: Tom de Vries Date: Mon, 17 Jun 2019 14:50:21 +0000 (+0000) Subject: [nvptx] Fix missing mode warnings in nvptx.md, omp part X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8b243438b3b2f6410360fb1d26e527aba70accf7;p=gcc.git [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 * 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_"): ... this. Use P iterator on match_operand 0. (define_insn "omp_simt_enter_insn"): Rename to ... (define_insn "omp_simt_enter_"): ... 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_"): ... this. Use P iterator on match_operand 0. From-SVN: r272388 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dfcf057efce..807ce3da874 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,21 @@ +2019-06-17 Tom de Vries + + * 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_"): ... this. Use P iterator on + match_operand 0. + (define_insn "omp_simt_enter_insn"): Rename to ... + (define_insn "omp_simt_enter_"): ... 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_"): ... this. Use P iterator on + match_operand 0. + 2019-06-17 Matthew Green Maya Rashish diff --git a/gcc/config/nvptx/nvptx-protos.h b/gcc/config/nvptx/nvptx-protos.h index be09a15e49c..061897a3921 100644 --- a/gcc/config/nvptx/nvptx-protos.h +++ b/gcc/config/nvptx/nvptx-protos.h @@ -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 diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c index c53a1ae9f26..aa4a67fbead 100644 --- a/gcc/config/nvptx/nvptx.c +++ b/gcc/config/nvptx/nvptx.c @@ -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) \ diff --git a/gcc/config/nvptx/nvptx.md b/gcc/config/nvptx/nvptx.md index 3ed5296db96..84c0ea45431 100644 --- a/gcc/config/nvptx/nvptx.md +++ b/gcc/config/nvptx/nvptx.md @@ -1071,8 +1071,8 @@ DONE; }) -(define_insn "set_softstack_insn" - [(unspec [(match_operand 0 "nvptx_register_operand" "R")] +(define_insn "set_softstack_" + [(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_" + [(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_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" - [(unspec_volatile [(match_operand 0 "nvptx_register_operand" "R")] +(define_insn "omp_simt_exit_" + [(unspec_volatile [(match_operand:P 0 "nvptx_register_operand" "R")] UNSPECV_SIMT_EXIT)] "" {