[LLVMdev] trying to generate a simple inline asm

Reed Kotler rkotler at mips.com
Sun Apr 21 11:11:02 PDT 2013


On 04/21/2013 03:10 AM, reed kotler wrote:
> I'm trying to just emit simple inline assembler (no constraints, inputs,
> etc.)
>
> Can anyone point me to an example of this..?
>
> This is corresponding to:
>
>    __asm__ ("mfc1 $4,$f12");
>
>
> This is what I tried but it's not correct.
>
>        std::vector<llvm::Type *> AsmArgTypes;
>        llvm::FunctionType *AsmFTy =
> llvm::FunctionType::get(Type::getVoidTy(FStub->getContext()),
>                                  AsmArgTypes, false);
>        llvm::InlineAsm *IA =
>          llvm::InlineAsm::get(AsmFTy, "mfc1 $$4,$$f12", "", true,
>                               /* IsAlignStack */ false,
>                               llvm::InlineAsm::AD_Intel);
>        CallInst::Create(IA, BB);
>
> Probably something stupid I'm doing. I'm debugging now but maybe someone
> knows the answer.
>
> TIA.
>
> Reed
I was close the first time. I derived this from the general clang 
version and I guess you need to include the argument list, even though 
it's null. Too many things to do to deep dive into all of that code 
right now.

       std::vector<llvm::Value*> AsmArgs;

       CallInst::Create(IA, AsmArgs, "", BB);






More information about the llvm-dev mailing list