[LLVMdev] Counting instructions in MCJIT
Jim Grosbach
grosbach at apple.com
Wed Jun 27 09:54:06 PDT 2012
Hi Verena,
There's currently no explicit support for that, no. The MCJIT uses the same pass handling as the static compiler. In particular, it uses TargetMachine::addPassesToEmitMC().
Where you likely really want to hook into the process is the MCStreamer's EmitInstruction() method, as that really will be a 1:1 mapping to machine instructions, including any that come from pseudo-instructions or even inline assembly.
Regards,
Jim
On Jun 27, 2012, at 2:22 AM, Verena Beckham <verena at codeplay.com> wrote:
> Hi there,
>
> I wondered whether anyone could give me any advice about counting
> assembly instructions when using MCJIT?
> For performance regression testing I would like to be able to count the
> number of instructions generated during the jit compilation of a given
> module.
>
> The Statistic class, as far as I understand, cannot collect this data
> per-module (per-ExecutionEngine/per-MCJIT), and there is no way of
> extracting a single statistic without doing string manipulation. I'm
> also doing several code gens in parallel, so even if the class is
> thread-safe, I cannot find the values for the single modules.
>
> In JIT you can add a JITListener, which can count the
> MachineInstructions, with the assumption that there is a (more or less)
> 1-2-1 mapping between machine and assembly instructions. Is there
> something equivalent for MCJIT?
>
> I can write a MachineFunctionPass to do the same, but I can find no way
> of inserting that into the PassManager that MCJIT uses. This means I'm
> replicating the passes and doing code gen twice, basically.
>
> Any advice would be much appreciated!
> Thank you very much,
>
> --
> Verena Beckham
>
> Vice President Engineering
>
> Codeplay Software Ltd
> 45 York Place, Edinburgh, EH1 3HP
> Tel: 0131 466 0503
> Fax: 0131 557 6600
> Website: http://www.codeplay.com
>
> This email and any attachments may contain confidential and /or
> privileged information and is for use by the addressee only. If you
> are not the intended recipient, please notify Codeplay Software Ltd
> immediately and delete the message from your computer. You may not copy
> or forward it,or use or disclose its contents to any other person. Any
> views or other information in this message which do not relate to our
> business are not authorized by Codeplay software Ltd, nor does this
> message form part of any contract unless so stated.
> As internet communications are capable of data corruption Codeplay
> Software Ltd does not accept any responsibility for any changes made to
> this message after it was sent. Please note that Codeplay Software Ltd
> does not accept any liability or responsibility for viruses and it is
> your responsibility to scan any attachments.
> Company registered in England and Wales, number: 04567874
> Registered office: 81 Linkfield Street, Redhill RH1 6BY
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
More information about the llvm-dev
mailing list