[PATCH] D69110: [DFAPacketizer] Allow up to 64 functional units

James Molloy via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 17 07:21:21 PDT 2019


jmolloy created this revision.
Herald added subscribers: llvm-commits, hiraditya.
Herald added a project: LLVM.
jmolloy added reviewers: ThomasRaoux, kparzysz, majnemer.

To drive the automaton we used a uint64_t as an action type. This
contained the transition's resource requirements as a conjunction:

  (a OR b) AND (b OR c)

We encoded this conjunction as a sequence of four 16-bit bitmasks.
This limited the number of addressable functional units to 16, which
is quite low and has bitten many people in the past.

Instead, the DFAEmitter now generates a lookup table from InstrItinerary
class (index of the ItinData inside the ProcItineraries) to an internal
action index which is essentially a dense embedding of the conjunctive
form. Because we never materialize the conjunctive form, we no longer
have the 16 FU restriction.

In this patch we limit to 64 functional units due to using a uint64_t
bitmask in the DFAEmitter. Now that we've decoupled these representations
we can increase this in future.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D69110

Files:
  llvm/include/llvm/CodeGen/DFAPacketizer.h
  llvm/lib/CodeGen/DFAPacketizer.cpp
  llvm/utils/TableGen/DFAPacketizerEmitter.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D69110.225427.patch
Type: text/x-patch
Size: 31135 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191017/6ad99202/attachment.bin>


More information about the llvm-commits mailing list