Re: define_split for specific split pass

2011-08-16 Thread Kirill Yukhin
I think, Ilya, wants to run his pass, say, in 208r.split4 only. Seems both split2, split3 and split4 all run under `reload_complete` set to true. Any ideas? -- Thanks, K On Tue, Aug 16, 2011 at 8:47 PM, Andrew Pinski wrote: > On Tue, Aug 16, 2011 at 6:32 AM, Ilya Enkovich wrote: >> Hello, >> >

Re: define_split for specific split pass

2011-08-16 Thread Andrew Pinski
On Tue, Aug 16, 2011 at 6:32 AM, Ilya Enkovich wrote: > Hello, > > Is there any way to specify in define_split predicate that it should > work in some particular pass only? I need to create split which works > in pass_split_before_sched2 only. So split before RA? try conventionalizing it on !rel

Re: define_split

2010-11-10 Thread Andrew Stubbs
On 09/11/10 22:54, Michael Meissner wrote: The split pass would then break this back into three insns: (insn ... (set (reg:SF ACC_REGISTER) (mult:SF (reg:SF 124) (reg:SF 125 (insn ... (set (reg:SF ACC_REGISTER)

Re: define_split

2010-11-10 Thread Paolo Bonzini
On 11/10/2010 12:47 AM, Joern Rennecke wrote: I remember that it has been there even before the GNU GCC project started using cvs. Fortunately, we still have the translated history from RCS going backeven further... but the earliest mention of find_split_point in combine.c is shown as having

Re: define_split

2010-11-09 Thread Joern Rennecke
Quoting Michael Meissner : Generally you need to tighten the pattern conditions to make sure it doesn't match. Sometimes the only sane and effective way of tightening the pattern conditions is to have an insn condition of "0". At which point the define_insn_and_split becomes syntactic sugar (p

Re: define_split

2010-11-09 Thread Joern Rennecke
Quoting Michael Meissner : So whether the passes in between combine and the split pass care, is a different question. I didn't recall that combine had this split feature. I remember that it has been there even before the GNU GCC project started using cvs. Fortunately, we still have the tran

Re: define_split

2010-11-09 Thread Michael Meissner
On Tue, Nov 09, 2010 at 01:38:17PM -0500, Joern Rennecke wrote: > Quoting Paolo Bonzini : > > >On 11/09/2010 05:38 PM, Joern Rennecke wrote: > >>A define_insn will be recognized in all contexts. > >>Having an insn pattern for an insn that does not actually exist can cause > >>all kinds of unintend

Re: define_split

2010-11-09 Thread Michael Meissner
On Tue, Nov 09, 2010 at 09:38:28AM +0200, roy rosen wrote: > I still don't understand the difference between your two examples: > If you write a define_split then whenever during combine it gets into > a pattern which matches the define_split then it splits. > > What is the difference when writing

Re: define_split

2010-11-09 Thread Joern Rennecke
Quoting Paolo Bonzini : On 11/09/2010 05:38 PM, Joern Rennecke wrote: A define_insn will be recognized in all contexts. Having an insn pattern for an insn that does not actually exist can cause all kinds of unintended consequences as the optimizers try to generate and recognize 'optimized' patt

Re: define_split

2010-11-09 Thread Paolo Bonzini
On 11/09/2010 05:38 PM, Joern Rennecke wrote: A define_insn will be recognized in all contexts. Having an insn pattern for an insn that does not actually exist can cause all kinds of unintended consequences as the optimizers try to generate and recognize 'optimized' patterns, or when reload does

Re: define_split

2010-11-09 Thread Joern Rennecke
Quoting Paolo Bonzini : As I understand it, this will also give combine the ability to do two->two (and two->N) transformations, though indirectly through the temporary insn. Given this, could you explain further the benefits of combiner-split define_split vs. define_insn_and_split. A define_

Re: define_split

2010-11-09 Thread Paolo Bonzini
On 11/09/2010 10:22 AM, Joern Rennecke wrote: Quoting roy rosen : What is the difference when writing define_insn_and_split? From what I understood from the docs then if there is such an insn then the split does not occur so it would simply match it as an insn without splitting and at the end w

Re: define_split

2010-11-09 Thread Joern Rennecke
Quoting roy rosen : What is the difference when writing define_insn_and_split? From what I understood from the docs then if there is such an insn then the split does not occur so it would simply match it as an insn without splitting and at the end would print the #? Can you please elaborate? T

Re: define_split

2010-11-08 Thread roy rosen
2010/11/8 Michael Meissner : > On Thu, Oct 28, 2010 at 09:11:44AM +0200, roy rosen wrote: >> Hi all, >> >> I am trying to use define_split, but it seems to me that I don't >> understand how it is used. >> It says in the gccint.pdf (which I use as my tutorial (is there >> anything better or more up

Re: define_split

2010-11-08 Thread Michael Meissner
On Thu, Oct 28, 2010 at 09:11:44AM +0200, roy rosen wrote: > Hi all, > > I am trying to use define_split, but it seems to me that I don't > understand how it is used. > It says in the gccint.pdf (which I use as my tutorial (is there > anything better or more up to date?)) that the combiner only us

Re: define_split

2010-11-02 Thread Joern Rennecke
Quoting Ian Lance Taylor : Can you give us some examples of useful combine-split patterns? sh.md: ;; combiner splitter for test-and-branch on single bit in register. This ;; is endian dependent because the non-paradoxical subreg looks different ;; on big endian. (define_split [(set (pc)

Re: define_split

2010-11-02 Thread Ian Lance Taylor
Joern Rennecke writes: > Quoting Ian Lance Taylor : > >> That said, this is not a very interesting use of splits these days and >> it could probably be removed without doing any noticeable harm. These >> days most people just write the complex pattern using define_insn, and >> then write a defin

Re: define_split

2010-11-02 Thread Joern Rennecke
Quoting Ian Lance Taylor : That said, this is not a very interesting use of splits these days and it could probably be removed without doing any noticeable harm. These days most people just write the complex pattern using define_insn, and then write a define_split (or a define_insn_and_split) w

Re: define_split

2010-10-29 Thread Ian Lance Taylor
roy rosen writes: > How are they split before register allocation or scheduling. We've > said that in any case only the combiner does the splitting. No, we haven't said that. Or, if we did, we made a mistake. The documentation I see says "There are two cases where you should specify how to spl

Re: define_split

2010-10-28 Thread roy rosen
2010/10/29 Ian Lance Taylor : > roy rosen writes: > >> I am trying to use define_split, but it seems to me that I don't >> understand how it is used. >> It says in the gccint.pdf (which I use as my tutorial (is there >> anything better or more up to date?)) > > Assuming you built gccint.pdf from t

Re: define_split

2010-10-28 Thread Ian Lance Taylor
roy rosen writes: > I am trying to use define_split, but it seems to me that I don't > understand how it is used. > It says in the gccint.pdf (which I use as my tutorial (is there > anything better or more up to date?)) Assuming you built gccint.pdf from the gcc sources that you are using for d