[LLVMdev] Extending LLVM
rujoshi at uiuc.edu
Fri Mar 26 16:57:01 PST 2004
I would also find this extension framework useful.
Particularly, I would like to add intrinsics (without
checking them into the LLVM source), and an "opaque"
instruction which does not write to memory (and hence can
be DCEliminated). Just a thought...
---- Original message ----
>Date: Fri, 26 Mar 2004 14:41:17 -0800
>From: Reid Spencer <reid at x10sys.com>
>Subject: Re: [LLVMdev] Extending LLVM
>To: LLVMdev List <llvmdev at cs.uiuc.edu>
> I was going to wait to bring this up but since the
> topic has been addressed ...
> Would people other than myself find it useful to
> have a standardized extension framework for LLVM?
> I'm thinking of something that would allow new LLVM
> instructions, fundamental types, structured types,
> etc. This would require significant work to allow
> the various pieces of LLVM (assembler, disassembler,
> runtime, JIT, optimization, analysis, code gen,
> etc.) to be extended arbitrarily. Each extension
> would be a self-contained piece of code that could
> be dynamically loaded by LLVM core and used at the
> right times during LLVM execution. Such things as
> threading support, advanced math functions,
> scientific computations and types
> (rational,complex,etc.), higher order data
> structures, etc. could all be done as extensions
> instead of adding them to the core. This would keep
> the core small(ish) and allow researchers and
> implementors to add things to LLVM in an isolated
> What think ye?
> On Fri, 2004-03-26 at 11:29, Chris Lattner wrote:
> On Fri, 26 Mar 2004, Bill Wendling wrote:
> > It is possible to extend LLVM to add, say, matrix operations at a higher
> > level and then "lower" them into some version of LLVM "proper" after
> > performing any transformations on them, right? Also, it's possible to
> > have any custom-made types (like "matrix") as well?
> It is certainly possible to do things like this. I would recommend adding
> a small set of intrinsic functions for the various operations that you
> would like to support (matrix matrix multiply, etc), which your high-level
> passes would easily recognize and be able to transform. You would then
> have a lowering pass that did the obvious expansion on them.
> I don't think that you'd need to have an LLVM "matrix" type. You should
> be able to just use a two dimensional array, or opaque type, or
>signature.asc (1k bytes)
More information about the llvm-dev