[ was: Re: [nvptx] vector length patch series ] On 14-12-18 20:58, Tom de Vries wrote: > 0011-nvptx-Add-thread-count-parm-to-bar.sync.patch
Factored out this patch, committed. Thanks, - Tom
[nvptx] Generalize bar.sync instruction Allow the logical barrier operand of nvptx_barsync to be a register, and add a thread count operand. Build and reg-tested on x86_64 with nvptx accelerator. 2018-12-17 Tom de Vries <tdevr...@suse.de> * config/nvptx/nvptx.md (nvptx_barsync): Add and handle operand. * config/nvptx/nvptx.c (nvptx_wsync): Update call to gen_nvptx_barsync. --- gcc/config/nvptx/nvptx.c | 2 +- gcc/config/nvptx/nvptx.md | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c index a354811194c..1ad3ba92caa 100644 --- a/gcc/config/nvptx/nvptx.c +++ b/gcc/config/nvptx/nvptx.c @@ -3974,7 +3974,7 @@ nvptx_wpropagate (bool pre_p, bool is_call, basic_block block, rtx_insn *insn) static rtx nvptx_wsync (bool after) { - return gen_nvptx_barsync (GEN_INT (after)); + return gen_nvptx_barsync (GEN_INT (after), GEN_INT (0)); } #if WORKAROUND_PTXJIT_BUG diff --git a/gcc/config/nvptx/nvptx.md b/gcc/config/nvptx/nvptx.md index ca00b1d8073..f1f6fe0c404 100644 --- a/gcc/config/nvptx/nvptx.md +++ b/gcc/config/nvptx/nvptx.md @@ -1454,10 +1454,16 @@ [(set_attr "atomic" "true")]) (define_insn "nvptx_barsync" - [(unspec_volatile [(match_operand:SI 0 "const_int_operand" "")] + [(unspec_volatile [(match_operand:SI 0 "nvptx_nonmemory_operand" "Ri") + (match_operand:SI 1 "const_int_operand")] UNSPECV_BARSYNC)] "" - "\\tbar.sync\\t%0;" + { + if (INTVAL (operands[1]) == 0) + return "\\tbar.sync\\t%0;"; + else + return "\\tbar.sync\\t%0, %1;"; + } [(set_attr "predicable" "false")]) (define_expand "memory_barrier"