[LLVMdev] Inserting a custom switch instruction implementation in backend

Anton Korobeynikov anton at korobeynikov.info
Sat Sep 21 09:59:21 PDT 2013


Hello

Probably the easiest way for you is to lower switch instructions via
IR-to-IR pass in the way you want.

On Sat, Sep 21, 2013 at 3:43 PM, Marcello Maggioni
<marcello at codeplay.com> wrote:
> Hi,
>
> in implementing a backend for a target we work on, I ended up needing to
> lower the switch instruction in a very specific way that is quite different
> from the standard llvm way with the decision trees.
>
> The custom implementation wants to get rid of the decision blocks that llvm
> generates between the actual cases basic blocks and the switch root block.
> What I do currently is basically deleting these blocks manually and moving
> all the successors (updating the PHIs) to the switch root block and splicing
> the instructions in the decision blocks into the switch root block manually
> and then proceed to the removal of these blocks.
>
> This seems to work fine, but is a solution that I not like very much. I
> would prefer being able to lower the switch instructions in my own way
> directly instead of having to let llvm do it its own way and "morph" the
> result into my own.
>
> There is a clean way to custom lower the switch instruction in the backend
> without substituting the entire SelectionDAGBuilder?
>
> Cheers,
> Marcello
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev



-- 
With best regards, Anton Korobeynikov
Faculty of Mathematics and Mechanics, Saint Petersburg State University



More information about the llvm-dev mailing list