[LLVMdev] trying to generate a simple inline asm

580 views
Skip to first unread message

reed kotler

unread,
Apr 21, 2013, 6:10:50 AM4/21/13
to LLVM Developers Mailing List
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




_______________________________________________
LLVM Developers mailing list
LLV...@cs.uiuc.edu http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

Anton Korobeynikov

unread,
Apr 21, 2013, 6:37:47 AM4/21/13
to reed kotler, LLVM Developers Mailing List
> I'm trying to just emit simple inline assembler (no constraints, inputs,
> etc.)
>
> Can anyone point me to an example of this..?
C++ backend is your friend here.

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

reed kotler

unread,
Apr 21, 2013, 6:40:56 AM4/21/13
to Anton Korobeynikov, LLVM Developers Mailing List
On 04/21/2013 03:37 AM, Anton Korobeynikov wrote:
>> I'm trying to just emit simple inline assembler (no constraints, inputs,
>> etc.)
>>
>> Can anyone point me to an example of this..?
> C++ backend is your friend here.
>
> --
> With best regards, Anton Korobeynikov
> Faculty of Mathematics and Mechanics, Saint Petersburg State University
That's where I'm looking. Unfortunately they are processing the general
case so it's a lot of information to dig though.

I'm working on it.

Reed Kotler

unread,
Apr 21, 2013, 2:11:02 PM4/21/13
to LLVM Developers Mailing List
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);
Reply all
Reply to author
Forward
0 new messages