Bob Frankel
2009-May-04 01:19 UTC
[LLVMdev] leveraging back-end C compiler features in the gcc-based front-end
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body bgcolor="#ffffff" text="#000000"> <font size="-1"><font face="Verdana">i'm looking into using llvm with TI's MSP430, for which a C compiler from TI already exists; the idea here is to use llc -march=c and then pass the generated C code on to the TI compiler. as it turns out, the TI C compiler supports a number of (processor-specific) intrinsics that expose much of the underlying CPU architecture directly to the C programmer -- registers, pseudo-functions for enabling/disabling interrupts and reading/writing status bits, etc.<br> <br> is there a way to leverage these (non-gcc) intrinsics in the llvm gcc-based frontend -- perhaps flagging their use in such a way that they effectively "pass through" the optimizer and are emitted "as is" in the generated C code? in some respects, you can think of this usage as not unlike dropping inline asm code into the C sources.<br> <br> bob frankel<br> <br> </font></font> </body> </html>
Eli Friedman
2009-May-04 01:40 UTC
[LLVMdev] leveraging back-end C compiler features in the gcc-based front-end
On Sun, May 3, 2009 at 6:19 PM, Bob Frankel <bios.bob.frankel at gmail.com> wrote:> i'm looking into using llvm with TI's MSP430Ah, you're in luck then: an MSP430 backend was checked in to SVN today :) I don't think it's mature enough for general use yet, though.> is there a way to leverage these (non-gcc) intrinsics in the llvm gcc-based > frontend -- perhaps flagging their use in such a way that they effectively > "pass through" the optimizer and are emitted "as is" in the generated C > code? in some respects, you can think of this usage as not unlike dropping > inline asm code into the C sources.You could try just generating calls to the builtins in question; if you're lucky, it'll just work... if not, you can always use sed (or equivalent) to manipulate the C output into the correct form. -Eli
Bob Frankel
2009-May-04 02:12 UTC
[LLVMdev] leveraging back-end C compiler features in the gcc-based front-end
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"> </head> <body bgcolor="#ffffff" text="#000000"> <font size="-1"><font face="Verdana">wow!!! i would be interested in trying this.... any helpful instructions (for a novice like me) to get started using the msp430 backend would be helpful....<br> <br> as for your suggestion, it does work -- i can (say) place a call to __get_SR_register() in my front-end source, and it simply shows up in the back-end .c file; other "extensions" to compilers (such as 'interrupt' keyword to generate different prologue/epilogue code) would be a little trickier (though there are presumably already gcc mechansims for flagging interrupt routines??)<br> <br> <br> </font></font><br> Eli Friedman wrote: <blockquote cite="mid:f5aa3e9b0905031840j5511e5d2md2144a0438c32379@mail.gmail.com" type="cite"> <pre wrap="">On Sun, May 3, 2009 at 6:19 PM, Bob Frankel <a class="moz-txt-link-rfc2396E" href="mailto:bios.bob.frankel@gmail.com"><bios.bob.frankel@gmail.com></a> wrote: </pre> <blockquote type="cite"> <pre wrap="">i'm looking into using llvm with TI's MSP430 </pre> </blockquote> <pre wrap=""><!----> Ah, you're in luck then: an MSP430 backend was checked in to SVN today :) I don't think it's mature enough for general use yet, though. </pre> <blockquote type="cite"> <pre wrap="">is there a way to leverage these (non-gcc) intrinsics in the llvm gcc-based frontend -- perhaps flagging their use in such a way that they effectively "pass through" the optimizer and are emitted "as is" in the generated C code? in some respects, you can think of this usage as not unlike dropping inline asm code into the C sources. </pre> </blockquote> <pre wrap=""><!----> You could try just generating calls to the builtins in question; if you're lucky, it'll just work... if not, you can always use sed (or equivalent) to manipulate the C output into the correct form. -Eli _______________________________________________ LLVM Developers mailing list <a class="moz-txt-link-abbreviated" href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a> <a class="moz-txt-link-freetext" href="http://llvm.cs.uiuc.edu">http://llvm.cs.uiuc.edu</a> <a class="moz-txt-link-freetext" href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a> </pre> </blockquote> </body> </html>
Anton Korobeynikov
2009-May-04 08:22 UTC
[LLVMdev] leveraging back-end C compiler features in the gcc-based front-end
Hello, Bob> supports a number of (processor-specific) intrinsics that expose much of the > underlying CPU architecture directly to the C programmer -- registers, > pseudo-functions for enabling/disabling interrupts and reading/writing > status bits, etc.Nothing special here. All this can be implemented either via inline assembler and/or via register-tied variables. I have no idea whether mspgcc supports this, but this certainly possible. -- With best regards, Anton Korobeynikov Faculty of Mathematics and Mechanics, Saint Petersburg State University
Apparently Analagous Threads
- [LLVMdev] leveraging back-end C compiler features in the gcc-based front-end
- [LLVMdev] leveraging back-end C compiler features in the gcc-based front-end
- status of msp430?
- Speex for TI MSP430 microcontroller - estimating CPU speed requirements?
- virt-install -> guest stops at installation end