aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2019-06-17 14:50:21 +0000
committerTom de Vries <vries@gcc.gnu.org>2019-06-17 14:50:21 +0000
commit8b243438b3b2f6410360fb1d26e527aba70accf7 (patch)
tree191b6862cf2b189c1cdf8b81238bae890334d9f0 /gcc
parentf32f75858a14e7b304df7a71dae15d75081b0deb (diff)
downloadgcc-8b243438b3b2f6410360fb1d26e527aba70accf7.zip
gcc-8b243438b3b2f6410360fb1d26e527aba70accf7.tar.gz
gcc-8b243438b3b2f6410360fb1d26e527aba70accf7.tar.bz2
[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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog18
-rw-r--r--gcc/config/nvptx/nvptx-protos.h1
-rw-r--r--gcc/config/nvptx/nvptx.c12
-rw-r--r--gcc/config/nvptx/nvptx.md38
4 files changed, 60 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index dfcf057..807ce3d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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>
diff --git a/gcc/config/nvptx/nvptx-protos.h b/gcc/config/nvptx/nvptx-protos.h
index be09a15..061897a 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 c53a1ae..aa4a67f 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 3ed5296..84c0ea4 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_<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_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_<mode>"
+ [(unspec_volatile [(match_operand:P 0 "nvptx_register_operand" "R")]
UNSPECV_SIMT_EXIT)]
""
{