Seems like it would be nice to apply LLVM -O3 selectively, perhaps with some kind of pragma/directive in your code, and use the mono JIT as usual for the rest. Is this a possibility? I often know where my performance hotspots are, but switching languages and writing an external library in C is a drudgery. Would it be possible to get close to gcc/C performance for some restricted subset of C# when compiled with LLVM?
There have been some talks since the announcement of Mono.SIMD about providing JIT hints.
There is a partial patch on mono's mailing list archives that provides initial infrastructure for querying for those hints. The initial idea was to provide inlining hints for caller and callee.
If you feel inclined to have such thing, please drop by our irc channel or mailing lists to discuss this and contribute some code.