rkotler at mips.com
Mon May 6 15:08:50 PDT 2013
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
> 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.
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.
>> There are other stubs to be created for other parts of the mips32
>> 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
>> 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() &&
>> So a simple method in AsmPrinter would be the easiest for people to
>> 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
>> of the compiler emitting inline assembly.
>>>> Alternately I could change the logic in AsmPrinter to not print a
>>>> line if
>>>> the inlline asm start/end string is null.
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
More information about the llvm-dev