[Mono-dev] GCC + libJIT instead of LLVM

Kirill Kononenko kirill.kononenko at gmail.com
Sun Apr 5 05:25:31 EDT 2009


About the benchmarks you know what I mean I guess. That they don't
prove anything, no matter how hard other people want to prove the
inverse. Concrete figures will be in incoming research papers I am
working right now. So just don't start right now with saying give us
figures :-)


Thanks,
Kirill

2009/4/5 Kirill Kononenko <kirill.kononenko at gmail.com>:
>
>
> After many considerations, I want to let everyone know about a release
> of my work done in a package:
>
>
>
> 0.1.2.5 + / 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
> optimization)
>        * 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
> optimization)
>        * 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
> <http://code.google.com/p/libjit-linear-scan-register-allocator>
>
> Download is at:
>
> http://libjit-linear-scan-register-allocator.googlecode.com/files/libjit-0.1.2.5%2B.tar.gz
>
>
>
> 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.
>
>
> Thanks,
> Kirill
>
>
> 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