[LLVMdev] Complex load patterns and token factors
Hal Finkel
hfinkel at anl.gov
Sat Jun 23 19:25:48 PDT 2012
On Sat, 23 Jun 2012 21:18:37 -0500
Hal Finkel <hfinkel at anl.gov> wrote:
> On Sat, 23 Jun 2012 22:28:55 +0100
> Tim Northover <t.p.northover at gmail.com> wrote:
>
> > On Sat, Jun 23, 2012 at 04:10:51PM -0500, Hal Finkel wrote:
> > > Working on a target I added this pattern:
> > >
> > > def : Pat<(v4i64 (load xoaddr:$src)),
> > > (QVFCTIDb (QVLFDXb xoaddr:$src))>;
> > >
> > > I'd like to fix this so that it works correctly: the TokenFactor
> > > inputs should be attached to all inner-most instructions. I'm
> > > guessing this is somewhere in SelectionDAGISel.cpp, but if someone
> > > has a more-specific idea, I'd appreciate hearing it.
> >
> > I believe it's a current TableGen limitation. When generating its
> > DAG tables for this kind of thing, TableGen gives output
> > instructions that should take chain a special flag: Opfl_Chain.
> >
> > Unfortunately the way it decides which instructions are worthy of
> > this flag is rather naive:
> > + If an instruction has a built-in pattern (in the Instruciton
> > record), it checks whether that makes use of a chain.
> > + Otherwise, the outer instruction of the Pat gets a chain.
> >
> > So if your QVLFDXb instruction doesn't set the Pattern(s?) field,
> > TableGen won't know it needs the chain.
>
> Tim,
>
> Correct, the instruction has no pattern of its own.
>
> >
> > There's a big comment just above the test about how the current
> > situation is rather broken. I'm currently inclined to add a check
> > for mayLoad and mayStore at that point in TableGeni (see patch),
> > but was waiting until I could give tests and justification on the
> > list before submitting it.
>
> Thanks for sending this!
Please ignore this statement:
> As far as a long-term solution, would it be
> better to update TableGen with this logic instead of putting this in
> ISel?
-Hal
> Also, we should probably include hasUnmodeledSideEffects along
> with mayLoad and mayStore.
>
> -Hal
>
> >
> > Tim.
>
>
>
--
Hal Finkel
Postdoctoral Appointee
Leadership Computing Facility
Argonne National Laboratory
More information about the llvm-dev
mailing list