Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-11-17 Thread Segher Boessenkool
On Fri, Nov 16, 2018 at 10:09:59AM -0600, Segher Boessenkool wrote: > On Mon, Nov 12, 2018 at 11:54:58AM -0700, Jeff Law wrote: > > On 11/12/18 10:52 AM, Andrew Stubbs wrote: > > > If there are two instructions that both have an UNSPEC_VOLATILE, will > > > combine coalesce them into one in the comb

Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-11-16 Thread Segher Boessenkool
On Mon, Nov 12, 2018 at 11:54:58AM -0700, Jeff Law wrote: > On 11/12/18 10:52 AM, Andrew Stubbs wrote: > > If there are two instructions that both have an UNSPEC_VOLATILE, will > > combine coalesce them into one in the combined pattern? > I think you can put a different constant on each. combine (

Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-11-16 Thread Andrew Stubbs
The guideline I would give to determine if you're vulnerable...  Do you have speculation, including the ability to speculate past a memory operation, branch prediction, memory caches and high resolution timer (ie, like a cycle timer).  If you've got those, then the processor is likely vulnerable t

Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-11-15 Thread Andrew Stubbs
On 14/11/2018 22:30, Jeff Law wrote: There's a particular case that has historically been problematical. If you have this kind of sequence in the epilogue restore register using FP move fp->sp (deallocates frame) return Under certain circumstances the scheduler can swa

Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-11-14 Thread Jeff Law
On 11/12/18 5:53 AM, Andrew Stubbs wrote: > On 09/11/2018 19:39, Jeff Law wrote: >>> + >>> +/* Generate epilogue.  Called from gen_epilogue during >>> pro_and_epilogue pass. >>> + >>> +   See gcn_expand_prologue for stack details.  */ >>> + >>> +void >>> +gcn_expand_epilogue (void) >> You probably

Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-11-13 Thread Segher Boessenkool
On Tue, Nov 13, 2018 at 10:23:12AM +, Andrew Stubbs wrote: > Now that Segher says the combine issue is a bug, Well, first show what really happens; if it really deletes a USE, that is a bug yes. rtl.def says: /* Indicate something is used in a way that we don't want to explain. For exampl

Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-11-13 Thread Andrew Stubbs
On 12/11/2018 18:54, Jeff Law wrote: On 11/12/18 10:52 AM, Andrew Stubbs wrote: On 12/11/2018 17:20, Segher Boessenkool wrote: If you don't want useless USEs deleted, use UNSPEC_VOLATILE instead? Or actually use the register, i.e. as input to an actually needed instruction. They're not useles

Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-11-12 Thread Jeff Law
On 11/12/18 10:52 AM, Andrew Stubbs wrote: > On 12/11/2018 17:20, Segher Boessenkool wrote: >> If you don't want useless USEs deleted, use UNSPEC_VOLATILE instead? >> Or actually use the register, i.e. as input to an actually needed >> instruction. > > They're not useless. If we want to do scalar

Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-11-12 Thread Segher Boessenkool
On Mon, Nov 12, 2018 at 05:52:25PM +, Andrew Stubbs wrote: > On 12/11/2018 17:20, Segher Boessenkool wrote: > >If you don't want useless USEs deleted, use UNSPEC_VOLATILE instead? > >Or actually use the register, i.e. as input to an actually needed > >instruction. > > They're not useless. > >

Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-11-12 Thread Andrew Stubbs
On 12/11/2018 17:20, Segher Boessenkool wrote: If you don't want useless USEs deleted, use UNSPEC_VOLATILE instead? Or actually use the register, i.e. as input to an actually needed instruction. They're not useless. If we want to do scalar operations in vector registers (and we often do, on th

Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-11-12 Thread Segher Boessenkool
On Mon, Nov 12, 2018 at 12:53:26PM +, Andrew Stubbs wrote: > >>+/* Implement TARGET_LEGITIMATE_COMBINED_INSN. > >>+ > >>+ Return false if the instruction is not appropriate as a combination > >>of two > >>+ or more instructions. */ > >>+ > >>+bool > >>+gcn_legitimate_combined_insn (rtx_in

Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-11-12 Thread Andrew Stubbs
On 09/11/2018 19:39, Jeff Law wrote: + +/* Generate epilogue. Called from gen_epilogue during pro_and_epilogue pass. + + See gcn_expand_prologue for stack details. */ + +void +gcn_expand_epilogue (void) You probably need a barrier in here to ensure that the scheduler doesn't move an aliased

Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-11-09 Thread Jeff Law
On 9/5/18 7:42 AM, Andrew Stubbs wrote: > This part initially failed to send due to size. > > Here's part 2. > > 0021-gcn-port-pt2.patch [ ... ] You've already addressed Joseph's comments in a follow-up. > > diff --git a/gcc/config/gcn/gcn.c b/gcc/config/gcn/gcn.c > new file mode 100644 > inde

Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-09-12 Thread Joseph Myers
On Wed, 12 Sep 2018, Andrew Stubbs wrote: > > What if the host is x86_64 with the x32 ABI? If the requirement is for > > various types to be the same between the host and GCN, I'd expect that x32 > > ABI on the host means it is unsuitable for using gcn-run. Or are the > > requirements for compat

Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-09-12 Thread Andrew Stubbs
On 12/09/18 16:32, Joseph Myers wrote: + case "$host" in + x86_64*-*-linux-gnu ) + if test "$ac_res" != no; then + extra_programs="${extra_programs} gcn-run\$(exeext)" + fi ac_res is a generic autoconf variable used by a lot of tests

Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-09-12 Thread Joseph Myers
On Wed, 12 Sep 2018, Andrew Stubbs wrote: > > I'd expect this to fail on non-Unix configurations that don't have -ldl, > > and thus to need appropriate conditionals / configure tests to avoid that > > build failure. > > The attached diff from the previous patch should address these issues, I hope

Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-09-12 Thread Andrew Stubbs
On 05/09/18 15:22, Joseph Myers wrote: In cases like this with alternative diagnostic messages using ?:, you need to mark up each message with G_() so they both get extracted for translation by exgettext. [...] This concatenation with a macro won't work with exgettext extracting messages for

Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-09-11 Thread Joseph Myers
On Tue, 11 Sep 2018, Andrew Stubbs wrote: > On 05/09/18 15:44, Joseph Myers wrote: > > On Wed, 5 Sep 2018, Andrew Stubbs wrote: > > > > > I suppose someone might choose to compile things on an alternative system > > > for > > > running on a compatible system, in which case we'd want to simply ski

Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-09-11 Thread Andrew Stubbs
On 05/09/18 15:44, Joseph Myers wrote: On Wed, 5 Sep 2018, Andrew Stubbs wrote: I suppose someone might choose to compile things on an alternative system for running on a compatible system, in which case we'd want to simply skip this binary. How does one normally do this? I'd expect a config

Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-09-05 Thread Joseph Myers
On Wed, 5 Sep 2018, Andrew Stubbs wrote: > I suppose someone might choose to compile things on an alternative system for > running on a compatible system, in which case we'd want to simply skip this > binary. > > How does one normally do this? I'd expect a configure test plus makefile conditiona

Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-09-05 Thread Andrew Stubbs
On 05/09/18 15:22, Joseph Myers wrote: +gcn-run$(exeext): gcn-run.o + +$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ $< -ldl I'd expect this to fail on non-Unix configurations that don't have -ldl, and thus to need appropriate conditionals / configure tests to avoid that build failure. W

Re: [PATCH 21/25] GCN Back-end (part 2/2).

2018-09-05 Thread Joseph Myers
On Wed, 5 Sep 2018, Andrew Stubbs wrote: > + warning_at (decl ? DECL_SOURCE_LOCATION (decl) : UNKNOWN_LOCATION, > + OPT_Wopenacc_dims, > + (dims[GOMP_DIM_VECTOR] > +? "using vector_length (64), ignoring %d" > +: "usi