[Mono-dev] GCC + libJIT instead of LLVM

Kirill Kononenko kirill.kononenko at gmail.com
Sun Apr 5 04:42:02 EDT 2009


After many considerations, I want to let everyone know about a release
of my work done in a package: + / 0.1.2 1/2 version release (code name: "libJIT-ON-TESTOSTERONE")

        * main branch + libJIT-linear-scan-register-allocator
        * Add optimization levels for IA-32 from 0 to 4
        * Add a new specialized ABI called INTERNAL
        * Add brand new optimized object code generator (level 1, 2, 3, 4 of
        * Various low-level machine dependent optimizations and tricks
        * Aggressive optimization of division by integer constants as
          by Torbjorn Granlund and Peter L. Montgomery in "Division By
Invariant Integers using Multiplication"
        * Add primitive code generators for MMX/Streaming SIMD
Extensions/SSE/SSE2/SSE3 and others
        * Use SIMD SSE/SSE2/SSE3 for floating point values and operations
(level 1, 2, 3, 4 of optimization)
        * Data-flow and control-flow based analysis (level 1, 2, 3, 4 of
        * Fast liveness analysis (level 2 of optimization)
        * Dead-code elimination (level 4 of optimization)
        * Full liveness analysis (level 3, 4 of optimization)
        * Linear scan register allocator algorithm (level 2)
        * Bin packing register allocator algorithm (level 3, 4)
        * Tested on DotGNU Portable.NET Common Language Runtime
          / a Microsoft Common Intermediate Language Virtual Machine

(a special "unofficial" research release version

Download is at:


This work gives a lot of improvement and beats Mono in all benchmarks.

I want to also let know that this is a research project and there is
no target to compete with Novell, or Apple. Simply because it is not
possible. But I am rather looking for cooperation for benefits of all
sides. I will be honored if this work can be a base for a cooperation
with Mono for example.


2009/4/3 Diego Novillo <dnovillo at google.com>:
> On Fri, Apr 3, 2009 at 10:54, Kirill Kononenko
> <kirill.kononenko at gmail.com> wrote:
>> What I want to identify is how both a VM engine(ILDJIT,
>> .NET for example, Mono, Portable.NET), gcc and libJIT could be
>> extended with minimal changes to both, for best user experience for
>> example, is it speed performance, benchmark, code size, or power
>> consumption.
> You still need to do the steps Ian outlined in his message.  For GCC
> maintainers to accept changes (minimal as they may be), you have to
> justify those changes, propose a patch and submit for review.
> Whether the patch is approved or not will depend on whether you
> convinced the GCC maintainers that the feature is useful and that it
> complies with http://gcc.gnu.org/contribute.html.
> It seems like you are still early in your design cycle.  You still
> need to complete steps 1-3 in Ian's list.
> Diego.

More information about the Mono-devel-list mailing list