[llvm-commits] Fwd: Speeding up instruction selection

Roman Levenstein romix.llvm at googlemail.com
Mon Apr 21 11:54:18 PDT 2008


Hi Evan,

 Good point. This code is here due to the historical reasons ;-) I
 introduced it when I was experimenting with different alternatives and
 then forgot to remove it... The commit version will not contain it.

 Any further comments on this patch? Can I commit it or is it too early?

 - Roman

 2008/4/21, Evan Cheng <evan.cheng at apple.com>:

> +  if (left->NodeQueueId && right->NodeQueueId)
 >  +    return (left->NodeQueueId < right->NodeQueueId);
 >  +  return left->NodeNum < right->NodeNum;
 >
 >  Why would NodeQueueId ever be zero? Nodes that are entered into the queue
 > must have this field set, no?
 >
 >  Evan
 >
 >
 >  On Apr 18, 2008, at 4:31 AM, Roman Levenstein wrote:
 >
 >
 > >
 > > Hi Evan,
 > >
 > > 2008/4/2, Evan Cheng <evan.cheng at apple.com>:
 > >
 > > >
 > > > On Apr 2, 2008, at 1:57 AM, Roman Levenstein wrote:
 > > >
 > > >
 > > > > 2008/4/2, Evan Cheng <evan.cheng at apple.com>:
 > > > >
 > > > > >
 > > > > > On Apr 2, 2008, at 12:55 AM, Roman Levenstein wrote:
 > > > > >
 > > > > >
 > > > > > > Hi Evan,
 > > > > > >
 > > > > > > 2008/4/1, Evan Cheng <evan.cheng at apple.com>:
 > > > > > >
 > > > > > > > Please hold off checking it in for a bit. llvm tot is having
 > some
 > > > > > > > problems and I'd like to get to the bottom of it first.
 > > > > > > >
 > > > > > >
 > > > > > > OK.
 > > > > > >
 > > > > > >
 > > > > > > > Also, the tie breaker is less than ideal. I think we need a tie-
 > > > > > > > breaker that is "the SUnit that's added to the queue is
 > preferred".
 > > > > > > > That means it prefers nodes which are closer to the end of
 > block.
 > > > > > > > What
 > > > > > > > do you think?
 > > > > > > >
 > > > > > >
 > > > > > > Do you actually mean "the SUnit that's added to the queue LAST (or
 > > > > > > FIRST) is preferred"? I'll think about it.
 > > > > > >
 > > > > >
 > > > > >
 > > > > > Yep "first".  Basically, if all else being equal, let the node
 > that's
 > > > > > ready first be scheduled first. We can add a order id to SUnit which
 > > > > > gets set when it's pushed into the ready queue. What do you think?
 > > > > >
 > > > >
 > > > > Makes sense. The queue should have a global "current id" counter. Its
 > > > > current value is assigned to each node being inserted into the ready
 > > > > queue and then incremented. When the node is removed from the queue
 > > > > for any reason, its queue order id is reset. It should be rather easy
 > > > > to implement.
 > > > >
 > > >
 > >
 > >
 > > >
 > > > > BTW, do you really want this queue order id in the SUnit or in a
 > > > > separate array indexed by SUnit unique ids?
 > > > >
 > > >
 > > >
 > > > It should be in SUnit since the sort functions don't have access to
 > > > ScheduleDAG members.
 > > >
 > >
 > > Please find and review the attached patch implementing:
 > > - a proper tie-breaker as discussed above.
 > > - and unmodified part for replacing the slow std::priority_queue by
 > > std::set, as it I already did before.
 > >
 > > What do you think?
 > >
 > > -Roman
 > > <ScheduleDAGRRList.patch>
 > >
 >
 >



More information about the llvm-commits mailing list