[llvm-commits] [LLVMdev] [PATCH] Refactoring the DFA generator

Anshuman Dasgupta adasgupt at codeaurora.org
Fri Jun 15 12:31:40 PDT 2012


Hi Ivan,

The patch looks good to me. I have a couple of minor comments:

+void State::AddInsnClass(unsigned InsnClass,
Add a top level comment describing the function

+  std::map<State*, std::set<Transition*, ltTransition>, ltState> 
stateTransitions;
You should be able to use SmallSet here. Also, this line exceeds 80 columns.


On a related note, is the CachedTable mechanism in DFAPacketizer.h 
useful for your architecture? Currently the DFA generator generates one 
table for a given architecture. I had originally added the CachedTable 
mechanism since for a given compilation and subtarget, the DFA only uses 
the subset of the states and transitions. Using a "cache" made sense. At 
one point, I'd like to change the code so that it can generate one DFA 
for every subtarget and remove the CachedTable mechanism. Given the size 
of the DFA for your architecture, however, it may make sense to keep it 
around even if it generates separate tables for each subtarget.

Thanks
-Anshu

---
Qualcomm Innovation Center, Inc is a member of the Code Aurora Forum





On 6/14/2012 8:22 AM, Ivan Llopard wrote:
> Hi,
>
> I've refactored the DFA generator in TableGen because it takes too 
> much time to build the table of our BE and I'd like to share it.
> We have 15 functional units and 13 different itineraries which, in the 
> worst case, can produce 13! states. Fortunately, many of those states 
> are reused :-) but it still takes up to 11min to build the entire 
> table. This patch reduces the build time to 5min, giving a speed-up 
> factor greater than 2.
>
> It contains small changes:
> - Transitions are stored in a set for quicker searches
> - canAddInsnClass() API is split in two API's:
>   - canAddInsnClass() which perform a quick verification about the 
> possibility of having new states for a given InsnClass
>   - AddInsnClass() performs the actual computation of possible states.
>
> I've regenerated the DFA table of Hexagon and all seems to be ok.
>
> What do you think about these changes ?
>
>
> Ivan
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120615/468d8be4/attachment.html>


More information about the llvm-commits mailing list