Re: [PATCH] If using branch likelies in MIPS sync code fill the delay slot with a nop

2014-11-26 Thread Richard Sandiford
FWIW, I agree this is the right fix, but: Andrew Bennett writes: > + /* When using branch likely (-mfix-r1), the delay slot instruction > + will be annulled on false. The normal delay slot instructions > + calculate the overall result of the atomic operation and must not > + be

RE: [PATCH] If using branch likelies in MIPS sync code fill the delay slot with a nop

2014-11-20 Thread Matthew Fortune
> Ok to commit? > gcc/ > * config/mips/mips.c (mips_process_sync_loop): Place a nop in the > delay slot of the branch likely instruction. With an updated ChangeLog to account for the changes in the callers, OK. Matthew

RE: [PATCH] If using branch likelies in MIPS sync code fill the delay slot with a nop

2014-11-19 Thread Andrew Bennett
> Please rephrase the comment along the lines of my previous suggestion. > This wording is too complex IMO. The patch containing the updated comment (which also keeps within 72 columns) is below. Ok to commit? Regards, Andrew diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index

RE: [PATCH] If using branch likelies in MIPS sync code fill the delay slot with a nop

2014-11-19 Thread Maciej W. Rozycki
On Wed, 19 Nov 2014, Matthew Fortune wrote: > > @@ -12997,7 +12997,12 @@ mips_process_sync_loop (rtx_insn *insn, rtx > > *operands) > > This will sometimes be a delayed branch; see the write code below > > for details. */ > >mips_multi_add_insn (is_64bit_p ? "scd\t%0,%1" : "sc\t%0

RE: [PATCH] If using branch likelies in MIPS sync code fill the delay slot with a nop

2014-11-19 Thread Matthew Fortune
> diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index > 02268f3..368c6f0 100644 > --- a/gcc/config/mips/mips.c > +++ b/gcc/config/mips/mips.c > @@ -12997,7 +12997,12 @@ mips_process_sync_loop (rtx_insn *insn, rtx > *operands) > This will sometimes be a delayed branch; see the w

RE: [PATCH] If using branch likelies in MIPS sync code fill the delay slot with a nop

2014-11-19 Thread Andrew Bennett
> Yes, removing the second NOP is worth the additional effort. The updated patch is below. Ok to commit? Regards, Andrew diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 02268f3..368c6f0 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -12997,7 +12997,1

RE: [PATCH] If using branch likelies in MIPS sync code fill the delay slot with a nop

2014-11-19 Thread Moore, Catherine
> -Original Message- > From: Matthew Fortune [mailto:matthew.fort...@imgtec.com] > Sent: Tuesday, November 18, 2014 9:42 AM > To: Andrew Bennett; gcc-patches@gcc.gnu.org > Cc: Moore, Catherine; Rozycki, Maciej > Subject: RE: [PATCH] If using branch likelies in MIPS

RE: [PATCH] If using branch likelies in MIPS sync code fill the delay slot with a nop

2014-11-18 Thread Maciej W. Rozycki
On Tue, 18 Nov 2014, Matthew Fortune wrote: > > > With a quick look at `mips_process_sync_loop' it looks to me the > > > other NOP is produced from here: > > > > > > else if (!(required_oldval && cmp)) > > > mips_multi_add_insn ("nop", NULL); > > > > > > -- correct? If so, then can't you j

RE: [PATCH] If using branch likelies in MIPS sync code fill the delay slot with a nop

2014-11-18 Thread Matthew Fortune
> > From: Maciej W. Rozycki [mailto:ma...@codesourcery.com] > > > > On Tue, 18 Nov 2014, Andrew Bennett wrote: > > > > > Produces (for the atomic operation): > > > > > >.setnoat > > > sync > > > 1: > > > ll $3,0($5) > > > and $1,$3,$4 > > > bne

RE: [PATCH] If using branch likelies in MIPS sync code fill the delay slot with a nop

2014-11-18 Thread Andrew Bennett
> From: Maciej W. Rozycki [mailto:ma...@codesourcery.com] > > On Tue, 18 Nov 2014, Andrew Bennett wrote: > > > Produces (for the atomic operation): > > > >.setnoat > > sync > > 1: > > ll $3,0($5) > > and $1,$3,$4 > > bne $1,$7,2f > >

RE: [PATCH] If using branch likelies in MIPS sync code fill the delay slot with a nop

2014-11-18 Thread Maciej W. Rozycki
On Tue, 18 Nov 2014, Andrew Bennett wrote: > Produces (for the atomic operation): > >.setnoat > sync > 1: > ll $3,0($5) > and $1,$3,$4 > bne $1,$7,2f > and $1,$3,$6 > or $1,$1,$8 > sc $1,0($5) >

RE: [PATCH] If using branch likelies in MIPS sync code fill the delay slot with a nop

2014-11-18 Thread Andrew Bennett
> OK, this does look to me like the correct way to address the issue, but > where is the second NOP that you previously mentioned? I fail to see it > here and this code can't be made any better, there isn't anything you > could possibly schedule into the delay slot as there is nothing else to > d

RE: [PATCH] If using branch likelies in MIPS sync code fill the delay slot with a nop

2014-11-18 Thread Maciej W. Rozycki
On Tue, 18 Nov 2014, Andrew Bennett wrote: > My fix places a nop in the delay slot of the branch likely instruction > by using the %~ output operation. This then causes the sync code for the > previous example to be correct: > > .setnoat > sync # 15 sync_new_addsi/2

RE: [PATCH] If using branch likelies in MIPS sync code fill the delay slot with a nop

2014-11-18 Thread Matthew Fortune
> The atomic-compare-exchange-3.c and atomic-op-3.c tests are failing when > using the -mfix-r1 option. This is due to the fact that the delay > slot of the branch instruction that checks if the atomic operation was > not successful can be filled with an operation that returns the output > res

RE: [PATCH] If using branch likelies in MIPS sync code fill the delay slot with a nop

2014-11-18 Thread Andrew Bennett
> -Original Message- > From: Maciej W. Rozycki [mailto:ma...@codesourcery.com] > Sent: 18 November 2014 13:48 > To: Andrew Bennett > Cc: gcc-patches@gcc.gnu.org > Subject: Re: [PATCH] If using branch likelies in MIPS sync code fill the delay > slot with a nop >

Re: [PATCH] If using branch likelies in MIPS sync code fill the delay slot with a nop

2014-11-18 Thread Maciej W. Rozycki
On Tue, 18 Nov 2014, Andrew Bennett wrote: > The atomic-compare-exchange-3.c and atomic-op-3.c tests are failing when > using the -mfix-r1 option. This is due to the fact that the delay > slot of the branch instruction that checks if the atomic operation was > not successful can be filled wi

[PATCH] If using branch likelies in MIPS sync code fill the delay slot with a nop

2014-11-18 Thread Andrew Bennett
Hi, The atomic-compare-exchange-3.c and atomic-op-3.c tests are failing when using the -mfix-r1 option. This is due to the fact that the delay slot of the branch instruction that checks if the atomic operation was not successful can be filled with an operation that returns the output result