On Tuesday12/7/10 2:58 PM, Stéphane Letz wrote:

I'm quite dubious of any real optimization you would achieve with this kind of 
approach, using LLVM.
>AFAIKS LLVM link time optimization allows some kind of inter module inlining or possibly constant
> propagation

Well, optimizations can be added :->.
Anyway, in my case (jMax, but it valid for other patch based langauges), things like inlining and loop fusion and software pipelining would help a lot for patches with simple objects like add and multiply.

Again staying in the imperative world makes things much more complicated... go 
functional!

I was born as LISP programmer, so, nothing against, just tell me what to do with existing code bases :->

PS: BTW LLVM is a really nice tool and very interesting things can be done with it, like 
using LLVM bitcode format as an interchange format for different architectures and using 
the JIT for dynamic compilation. We can already do that with Faust LLVM backend where we 
can generate a bitcode binary, then load it and JIT with a generic "LLVM faust 
plug-in" loader. This would allow the same bitcode object to be produced by the 
Faust online compiler for instance and be executed on any target machine.

Great: now image to use a common framework and standard to make Faust generate bitcode interoperable with LLVM plugins generated with other code, and to have an execution framework for these plugin that can be shared between multiple applications.

That would solve quite a number of boring engineering problems, like having wrapper for faust (for jMax, for Pd etc etc) objects for a dozen or so of applications.

OK, may be it is just a dream, but LLVM seems to be an interesting framework to use for this purpose.

Maurizio

_______________________________________________
Linux-audio-dev mailing list
[email protected]
http://lists.linuxaudio.org/listinfo/linux-audio-dev

Reply via email to