(This is a copy of https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70078)
I'd like to clean up this documentation issue, but need some help:
Dominik Vogt 2016-03-04 11:05:16 UTC
> The section "Defining How to Split Instructions" in the gccint
> manual claims
>
> The preparation-statements are simi
gt; 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 !reload_complete .
>
> Thanks,
> 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 conventi
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.
Thanks
Ilya
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)
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
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
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
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
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
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
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
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_spli
though indirectly through the
temporary insn. Given this, could you explain further the benefits of
combiner-split define_split vs. define_insn_and_split.
Paolo
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
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 (
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?))
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
nsn, and
>> then write a define_split (or a define_insn_and_split) which splits up
>> the insn just before register allocation or just before instruction
>> scheduling.
>
> Although such patterns are justified in some cases, adding them willy-nilly
> can make your port
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
should specify
how to split a pattern into multiple insns" and "[t]he insn combiner
phase also splits putative insns."
The first case, the case in which the combiner does not split insns, is
the primary use case for define_split. I believe that we could remove
the combiner's
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?))
>
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
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 uses the
define_split if it doesn't find any define_insn to m
ween all integer and fixed point types working
> as well as SA to SF conversion.
>
> I want to convert the fixed point types smaller than SA to float by
> using define_split to convert to SA then to SF. I am first trying to
> get QQ->SF working, one of the things I tried
conversion.
I want to convert the fixed point types smaller than SA to float by
using define_split to convert to SA then to SF. I am first trying to
get QQ->SF working, one of the things I tried is:
(define_expand "fractqqsf2"
[(set (match_operand:SF 0 &quo
"Mohamed Shafi" <[EMAIL PROTECTED]> writes:
> I have the following define_insn and define_splt pattern
>
> (define_insn "movhi_const"
> [(set (match_operand:HI 0 "register_operand" "=r,r,r,r,r")
> (match_operand:HI 1 &qu
Hello all,
I have the following define_insn and define_splt pattern
(define_insn "movhi_const"
[(set (match_operand:HI 0 "register_operand" "=r,r,r,r,r")
(match_operand:HI 1 "immediate_operand" "L,K,N,O,i"))]
)
(define_s
28 matches
Mail list logo