[LLVMdev] #APP/#NOAPP

reed kotler rkotler at mips.com
Mon May 6 15:08:50 PDT 2013


Hi Hal,

I think that it's perfectly valid to generate inline assembler and it
looks 1000 times cleaner than if I tried to do this same work with
selection DAG.

> I hope you don't mind if I play devil's advocate here...
>
> Why is this so complicated that it would be messy to do, at least in part, at a lower level? I can understand needing IR-level analysis for some kinds of transformations, but late IR-level passes can insert target-specific intrinsics, those can be matched to pseudo instructions, and those pseudo instructions can be expanded (as late as necessary) by a custom inserter. I agree that this may add more boiler-plate work, but it is not immediately obvious why this would be 1000x messier.
>
>   -Hal
I should probably qualify this with "1000 times messier for me" :)

In this case the whole problem fit neatly in a simple IR level module pass.

I had to create an alternate calling convention for one part but 
otherwise this IR
pass made an otherwise very messy problem easy to implement.

Reed

>> There are other stubs to be created for other parts of the mips32
>> port.
>>
>> So I'd like to get a solution to these ugly APP/NOAPP markers.
>>
>> Maybe you would not do things this way but I think it's a perfectly
>> valid approach.
>> No two people have 100% the same idea of what is best practices.
>>
>> The following kind of patch works without adding a mode to asm
>> printer
>> but in general is harder
>> for people to use since they have to get a hook to MCAsm in order to
>> change the inline_asm_start/end
>> strings. (In AsmPrinter) on a per function basis.
>>
>>     if (OutStreamer.hasRawTextSupport() &&
>>     MAI->getInlineAsmStart()[0])
>>       OutStreamer.EmitRawText(Twine("\t")+MAI->getCommentString()+
>>                               MAI->getInlineAsmStart());
>>
>> So a simple method in AsmPrinter would be the easiest for people to
>> use.
>>
>> It just turns off the APP/NOAPP markers which we should be able to do
>> anyway; it's independent of the discussion regarding the goodness or
>> not
>> of the compiler emitting inline assembly.
>>
>>
>> Reed
>>
>>
>>
>>>> Alternately I could change the logic in AsmPrinter to not print a
>>>> line if
>>>> the inlline asm start/end string is null.
>>>>
>>>> ????
>>>>
>>>> TIA.
>>>>
>>>> Reed
>>>>
>>> Cheers,
>>> Rafael
>>
>> _______________________________________________
>> 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