[PATCH] D94604: [CodeGen] Allow parallel uses of a resource
Andrea Di Biagio via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 18 03:31:12 PST 2021
andreadb added a comment.
I have only skimmed through this patch once, however I think that you can fix the problem in https://reviews.llvm.org/D94605 without introducing your new field `ResourceUses`.
The "problematic" resource is M7UnitVPort
def M7UnitVPort : ProcResource<2> { let BufferSize = 0; }
In your case, you want to allow the consumption of both resource units from a single write.
You can do that if you convert M7UnitVPort into a group (see example below)
def M7UnitVPort0 : ProcResource<1> { let BufferSize = 0; }
def M7UnitVPort1 : ProcResource<1> { let BufferSize = 0; }
def M7UnitVPort : ProcResGroup<[M7UnitVPort0, M7UnitVPort1]>;
At that point, you simply enumerate the resource units in the list of consumed resources. So, something like this:
Example - before:
def : WriteRes<WriteFPMAC64, [M7UnitVFP, M7UnitVPort, M7UnitVPort]>
Example - after:
def : WriteRes<WriteFPMAC64, [M7UnitVFP, M7UnitVPort0, M7UnitVPort1]>
In conclusion, if the goal is to be able to do something like that, then I think the syntax is already expressive enough.
The obvious downside is that currently you need to declare multiple resources to do what you want to do.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D94604/new/
https://reviews.llvm.org/D94604
More information about the llvm-commits
mailing list