Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 7 Jan 2013 18:25:03 +0200
From:      David Naylor <naylor.b.david@gmail.com>
To:        freebsd-toolchain@freebsd.org
Cc:        Nathan Whitehorn <nwhitehorn@freebsd.org>, freebsd-arch@freebsd.org
Subject:   Re: LLVM Image Activator
Message-ID:  <201301071825.06439.naylor.b.david@gmail.com>
In-Reply-To: <50E9BC2D.7000302@freebsd.org>
References:  <50E9BC2D.7000302@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
Hi,

Just my 2c

On Sunday, 6 January 2013 20:02:21 Nathan Whitehorn wrote:
> Having LLVM/clang in the base system lets us do some interesting things
> that we couldn't do with GCC. One is that LLVM ships with a JIT for LLVM
> IR as well as components of a toolchain for it (this is what Google's
> pNACL uses) and that you can end up producing binary files that are in
> IR instead of native code. The IR isn't really cross-platform, but does
> let you do CPU-specific optimizations when executed by the JIT, etc.
> 
> The attached patch causes the LLVM JIT (lli) to be built by default
> (adding ~20 seconds to buildworld on my five-year-old laptop) and adds a
> kernel image activator that invokes it when passed LLVM bitcode files.
> It's not completely finished (see the XXX comment in the middle), but it
> does work, as follows:
> 
> $ clang -emit-llvm -c -o hw.ll hw.c
> $ file hw.ll
> hw.ll: LLVM bitcode
> $ lli hw.ll
> Hello world!
> $ chmod a+x hw.ll
> $ ./hw.ll
> Hello world!
> $
> 
> Is there any interest in having features like this? It seems like this
> could provides some interesting possibilities for us and nice
> integration from having imported clang into base.

Would it be possible to have this as a module (and thus in ports)?  Or, 
perhaps, change the sources such these things could be loaded as a module...

Also, with modification to LLVM, wouldn't the existing '#!' mechanism work 
(aka '#!/usr/bin/lli') at the beginning of the file?  

On an aside.  Could you imagine shipping a 'x86' llvm-byte code and get the 
jit (with caching), thus your computer will get full support (speed) from the 
binaries and the binaries will work on all 'x86' related architectures.  (My 
thinking is for things like i386 vs pentium4).  

Regards

[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (FreeBSD)

iEYEABECAAYFAlDq9uIACgkQUaaFgP9pFrKo3ACeNX5ZhxuslKEem1bHkRpR8YQd
HDoAn1Ukz4GTpxieoB7u1C7UFCSJsV90
=r9wK
-----END PGP SIGNATURE-----

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201301071825.06439.naylor.b.david>