[llvm-commits] Review request: Hexagon hardware loops
Hal Finkel
hfinkel at anl.gov
Thu Jan 24 09:36:13 PST 2013
----- Original Message -----
> From: "Krzysztof Parzyszek" <kparzysz at codeaurora.org>
> To: "Hal Finkel" <hfinkel at anl.gov>
> Cc: llvm-commits at cs.uiuc.edu
> Sent: Thursday, January 24, 2013 10:30:40 AM
> Subject: Re: Review request: Hexagon hardware loops
>
> On 1/24/2013 10:01 AM, Hal Finkel wrote:
> >
> > + /// Maximum distance between the loop instr and the basic
> > block.
> > + /// Just an estimate.
> > + static const unsigned MAX_LOOP_DISTANCE = 200;
> >
> > Why are you using an estimate? If you know the instruction sizes,
> > don't you know the exact distance which can be compared against
> > the exact limit?
>
> The code can still change from here on, plus we are changing it here
> by
> adding instructions. We have no way of making a precise measurement
> at
> this stage. Doing it later would pose additional difficulties
> (related
> to packetization), so we use an estimate here.
Okay; that makes sense.
>
>
> > + /// The desired flow is: phi ---> bump -+->
> > comparison-in-latch.
> > + /// +-> back to phi
> > + /// Due to some prior code transformations, the actual flow
> > may look
> > + /// like this:
> > + /// phi ---> bump ---> back to phi
> > + /// +-> comparison-in-latch (against upper_bound-bump)
> >
> > Why do some of the arrows have '+' characters in them?
>
> ASCII art. :)
> They were meant to represent a join/split point in the graph, but to
> avoid the spread of the comment, the line with the vertical pipe was
> removed (one + sign is missing in the comment):
>
> phi ---+--> bump ------> back to phi
> |
> +--> comparison-in-latch
>
> This was supposed to illustrate how the value from the phi follows
> two
> different paths: one that increments the induction value, and the
> other
> that uses the value not-yet-incremented.
>
> If this is confusing, I can try to come up with something else. The
> main point was to accomplish something like "an ascii picture is
> worth
> more than a few lines of comment". :)
I figured that it was something like that, but it is less confusing with the pipes included. We don't charge by the line ;)
>
>
> > As far as I can tell, Hexagon has post-increment loads and stores.
> > This would not handle the case where the induction variable is a
> > pointer that is incremented using a post-increment load or store
> > (this applies to fixupInductionVariable as well).
>
> Yes, this is a limitation. This is something we may need to allow in
> the future, but for now could we leave it this way? I'm not sure
> what
> the extent of changes would be to add this functionality, and I'd
> like
> to have it running for some time (i.e. tested) before submitting a
> patch
> here.
Addressing this later is fine. I'll need to add a similar functionality to the PPC version (to handle PPC pre-increment loads and stores).
Thanks again,
Hal
>
>
> > Thanks again,
> > Hal
>
> Thank you. I should have a patch with the comments addressed soon.
>
> -Krzysztof
>
>
>
> --
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
> hosted by The Linux Foundation
>
More information about the llvm-commits
mailing list