[LLVMdev] LLVM IR to ISA

David Chisnall David.Chisnall at cl.cam.ac.uk
Mon Nov 3 08:27:50 PST 2014


On 3 Nov 2014, at 08:54, Konstantinos Parasyris <koparasy at gmail.com> wrote:

> Hello,
> 
> After instruction selection I would like to print out the selected instructions with the corresponding LLVM instructions. Something like this:
> 
> LLVM Instruction -> { MCInst,
>                                   MCInst,
>                                   MCInst,
>                                   MCInst
>                                }
> 
> Is there a build-in way to do it?

Instruction selection happens on a basic block basis.  You can dump the IR basic block and the machine basic block relatively easily, but N IR instructions may correspond to M machine instructions.  There's no simple mapping from one IR instruction to multiple native instructions.  For example, consider a GEP followed by a load.  On x86 or ARM, this will typically be folded into a single instruction.  Similarly, a ptrtoint, followed by a sequence of arithmetic, followed by an inttoptr, followed by a load or store may become a single instruction.  The various SelectionDAG phases will split and combine instructions in various ways.

David





More information about the llvm-dev mailing list