[llvm-dev] [MachineScheduler] Question about IssueWidth / NumMicroOps
Jonas Paulsson via llvm-dev
llvm-dev at lists.llvm.org
Tue May 15 04:39:17 PDT 2018
Hi Andy,
>> Right now it seems that BeginGroup/EndGroup is only used by SystemZ,
>> or? I see they are used in checkHazard(), which I actually don't see
>> as helpful during pre-RA scheduling for SystemZ. Could this be made
>> optional, or perhaps only done post-RA if target does post-RA
>> scheduling? SystemZ does post-RA scheduling to manage decoder
>> grouping, which is where the BeginGroup/EndGroup and
>> IssueWidth/NumMicroOps is useful. However doing this pre-RA and
>> thereby limiting the freedom of other heuristics (making less
>> instructions available) seems like a bad idea.
>
> I've worked on a few cpus in the past that had issue group
> restrictions. It seems like a natural way to handle special kinds of
> instructions. But I'm not aware of any LLVM backend that depends on it
> for preRA scheduling. If they are, hopefully they're reading this and
> will speak up.
>
> My thinking a few years back was that targets would only run post-RA
> scheduling in rare cases and only for blocks with spill code, as a
> spill-fixup pass. That's not what you, and probably others are doing,
> so if you want to make those Begin/EndGroup post-RA specific, it's
> fine with me. Or you could be more ambitious and introduce the concept
> of a post-RA specific processor resource.
>
This patch: https://reviews.llvm.org/D46870, put those checks under a
post-RA flag, and also covers the NumUOps / IssueWidth the same way.
/Jonas
> -Andy
>
>>
>>> Sorry, I don't have time to draw diagrams and tables. Hopefully you
>>> can makes sense of my long-form rambling.
>> Yes, very helpful to me :-)
>>
>> Thanks again,
>>
>> Jonas
>>
>
More information about the llvm-dev
mailing list