[LLVMdev] Inserting a custom switch instruction implementation in backend

Hal Finkel hfinkel at anl.gov
Sat Sep 21 15:28:31 PDT 2013


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

In case it helps, lib/Transforms/Utils/LowerSwitch.cpp does generic switch lowering. You might be able to use that as a base for what you need to do.

 -Hal

> 
> 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
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> 

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory



More information about the llvm-dev mailing list