[LLVMdev] [global-isel] Simplifying the simplifier
Nuno Lopes
nunoplopes at sapo.pt
Sat Aug 10 07:32:35 PDT 2013
Hi Jakob,
Thanks for creating this interesting proposal.
Let me just comment on this part:
>> What might be better is to put some abstract interface between
>> instcombine and the IR, so that instcombine can be run on these
>> pseudo-MIs as well as on IR.
>
> I like the idea of sharing code between IR and MI passes through an
> abstract interface. I think that later stages in the IR pipeline also need
> an instruction optimizer instead of a canonicalizer.
>
> An alternative approach would be to describe these transformations in a
> DSL instead of C++.
> *Legalization*
> - What does 'more legal' mean? Can we restrict the possible legalization
> transformations so the iterative process is guaranteed to make progress?
I've been thinking for a while that we could express the instcombine
transformations in a DSL, and then generate the C++ code from there. The
advantage is that if we formalize the LLVM IR, then we can check the
correctness of all the instcombine transformations for "free".
Moreover, instcombine has also suffered from infinite loops in the past
(because canonicalization did not make progress for some inputs), which is
also your concern with legalization of MI. We have algorithms to prove
termination of rewriting systems, so I believe we could also prove progress
for both instcombine and MI legalization.
I'm mixing MI legalization and instcombine, since I think that the
correctness and progress checking technology that we would need is the
exactly the same.
I wouldn't mind working on this project. But the time-frame on my side is
academic, which may mean 1 or 2 years to be completed.
Nuno
More information about the llvm-dev
mailing list