Reloading an auto-increment addresses

2011-02-11 Thread Mohamed Shafi
Hello all, I am porting GCC 4.5.1 for a private target. For one particular test reloading pass is being asked to reload the following instruction: (insn 45 175 46 11 pr20601-1.c:90 (set (reg/f:PQI 3 g3 [70]) (mem/f:PQI (pre_inc:PQI (reg/f:PQI 1 g1 [orig:55 prephitmp.16 ] [55])) [2 S1 A32]

Re: Reloading an auto-increment addresses

2011-02-11 Thread Paulo J. Matos
On 11/02/11 09:46, Mohamed Shafi wrote: How can i overcome this failure? Can some one suggest a solution? Have you defined TARGET_LEGITIMATE_ADDRESS_P and also BASE_REG_CLASS correctly for your target?

Re: Reloading an auto-increment addresses

2011-02-11 Thread Mohamed Shafi
On 11 February 2011 15:28, Paulo J. Matos wrote: > > > On 11/02/11 09:46, Mohamed Shafi wrote: >> >> How can i overcome this failure?  Can some one suggest a solution? >> > > > Have you defined TARGET_LEGITIMATE_ADDRESS_P and also BASE_REG_CLASS > correctly for your target? > > Yes, I have. Regis

Pruning for torture tests?

2011-02-11 Thread IainS
Hi, On Darwin, we have a number of gcc.c-torture fails reported for both ppc and i386 which are bogus (nothing to do with gcc - but simply warning output from a system tool). For dg-based tests these are pruned - I wonder if it would be worth adding a prune capability to the torture suites

Volatile memory is not general operand

2011-02-11 Thread Paulo J. Matos
Hi, I just noticed something very surprising. There's a clause in general_operand (recog.c): if (! volatile_ok && MEM_VOLATILE_P (op)) return 0; Oh... so, a MEM_VOLATILE_P is _not_ a general operand? Why? This is also not referred to in the documentation of general operand so it

Re: Volatile memory is not general operand

2011-02-11 Thread Eric Botcazou
> I just noticed something very surprising. There's a clause in > general_operand (recog.c): > > if (! volatile_ok && MEM_VOLATILE_P (op)) > return 0; > > Oh... so, a MEM_VOLATILE_P is _not_ a general operand? Why? This is also > not referred to in the documentation of general operand

Scheduling automaton question

2011-02-11 Thread Bernd Schmidt
Suppose I have two insns, one reserving (A|B|C), and the other reserving A. I'm observing that when the first one is scheduled in an otherwise empty state, it reserves the A unit and blocks the second one from being scheduled in the same cycle. This is a problem when there's an anti-dependence of c

Re: Volatile memory is not general operand

2011-02-11 Thread Paulo J. Matos
On 11/02/11 12:03, Eric Botcazou wrote: if (! volatile_ok&& MEM_VOLATILE_P (op)) return 0; . It's more of the other way around: MEM_VOLATILE_P is a general operand unless explicitly requested via init_recog_no_volatile. Some passes, like combine, don't track the volatileness o

Re: Scheduling automaton question

2011-02-11 Thread Alexander Monakov
On Fri, 11 Feb 2011, Bernd Schmidt wrote: > Suppose I have two insns, one reserving (A|B|C), and the other reserving > A. I'm observing that when the first one is scheduled in an otherwise > empty state, it reserves the A unit and blocks the second one from being > scheduled in the same cycle. T

Re: Scheduling automaton question

2011-02-11 Thread Bernd Schmidt
On 02/11/2011 02:13 PM, Alexander Monakov wrote: > Could you please clarify a bit: would the modified behavior match what your > target CPU does? The current behavior matches CPUs without lookahead in > instruction dispatch: the first insn goes to the first matching execution > unit (A), the secon

Re: Volatile memory is not general operand

2011-02-11 Thread Michael Matz
Hi, On Fri, 11 Feb 2011, Paulo J. Matos wrote: > On 11/02/11 12:03, Eric Botcazou wrote: > > > if (! volatile_ok&& MEM_VOLATILE_P (op)) > > > return 0; > >. > > > > It's more of the other way around: MEM_VOLATILE_P is a general operand > > unless > > explicitly requested via init

Re: Scheduling automaton question

2011-02-11 Thread Alex Turjan
Hi, According to me at this moment the scheduler does not support your needs. I was confronted with a similar problem as yours and I solved it by implementing the TARGET_SCHED_DFA_NEW_CYCLE hook. Inside of the function which supports this hook I choose/set the insn reservation that makes possib

Re: Volatile memory is not general operand

2011-02-11 Thread Paulo J. Matos
On 11/02/11 13:56, Michael Matz wrote: The piece of code you quoted also is conditional on volatile_ok. Connect that with what Eric said. Thanks Michael, I guess I should sleep before asking anything else. Now I understand what Eric said.

RE: Vector permutation only deals with # of vector elements same as mask?

2011-02-11 Thread Bingfeng Mei
Thanks. Another question. Is there any plan to vectorize the loops like the following ones? for (i=127; i>=0; i--) { x[i] = y[i] + z[i]; } I found that GCC trunk still cannot handle negative step for store. Even it can, it won't be efficient by introducing redundant permutations o

Re: Vector permutation only deals with # of vector elements same as mask?

2011-02-11 Thread Tim Prince
On 2/11/2011 7:30 AM, Bingfeng Mei wrote: Thanks. Another question. Is there any plan to vectorize the loops like the following ones? for (i=127; i>=0; i--) { x[i] = y[i] + z[i]; } When I last tried, the Sun compilers could vectorize such loops efficiently (for fairly short

Re: Scheduling automaton question

2011-02-11 Thread Frédéric RISS
Le vendredi 11 février 2011 à 13:33 +0100, Bernd Schmidt a écrit : > Suppose I have two insns, one reserving (A|B|C), and the other reserving > A. I'm observing that when the first one is scheduled in an otherwise > empty state, it reserves the A unit and blocks the second one from being > schedule

Re: Scheduling automaton question

2011-02-11 Thread Bernd Schmidt
On 02/11/2011 07:43 PM, Frédéric RISS wrote: > Le vendredi 11 février 2011 à 13:33 +0100, Bernd Schmidt a écrit : >> Suppose I have two insns, one reserving (A|B|C), and the other reserving >> A. I'm observing that when the first one is scheduled in an otherwise >> empty state, it reserves the A un

Re: loop hoisting fails

2011-02-11 Thread Ian Lance Taylor
"Paulo J. Matos" writes: > On 10/02/11 16:04, Ian Lance Taylor wrote: >> Bother. I've encountered that problem before and I think I used a >> sledgehammer (a local patch). It's definitely a bug that gcse doesn't >> consider costs. >> > > I think I might try also patching my local gcc. I guess t

Re: GCC 4.6 performance regressions

2011-02-11 Thread Quentin Neill
On Thu, Feb 10, 2011 at 3:13 AM, Jonathan Wakely wrote: > On 10 February 2011 05:18, Quentin Neill wrote: >> On Wed, Feb 9, 2011 at 2:42 AM, Jonathan Wakely >> wrote: >>> On 9 February 2011 08:34, Sebastian Pop wrote: For example x264 defines CFLAGS="-O4 -ffast-math $CFLAGS", and so >>

Re: Scheduling automaton question

2011-02-11 Thread Vladimir Makarov
On 02/11/2011 07:33 AM, Bernd Schmidt wrote: Suppose I have two insns, one reserving (A|B|C), and the other reserving A. I'm observing that when the first one is scheduled in an otherwise empty state, it reserves the A unit and blocks the second one from being scheduled in the same cycle. This is

Re: Target deprecations for 4.6

2011-02-11 Thread Nathan Froyd
On Fri, Jan 28, 2011 at 01:11:10AM +, Joseph S. Myers wrote: > Here is a concrete list I propose for deprecation in 4.6; please send > any other suggestions... score-* doesn't have a maintainer and score-elf couldn't build libgcc last I checked (it was also mentioned in your previous message).

Re: Target deprecations for 4.6

2011-02-11 Thread Joseph S. Myers
On Fri, 11 Feb 2011, Nathan Froyd wrote: > On Fri, Jan 28, 2011 at 01:11:10AM +, Joseph S. Myers wrote: > > Here is a concrete list I propose for deprecation in 4.6; please send > > any other suggestions... > > score-* doesn't have a maintainer and score-elf couldn't build libgcc > last I che