[llvm-commits] Fwd: Speeding up instruction selection
Evan Cheng
evan.cheng at apple.com
Mon Apr 21 12:44:35 PDT 2008
On Apr 21, 2008, at 11:54 AM, Roman Levenstein wrote:
> 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?
Please hold off committing for a few days until I have a chance to
evaluate the performance impact. Thanks.
Evan
>
>
> - 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>
>>>
>>
>>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list