As advertised to some, I've checked in a BETA VERSION of my vector
extensions to LLVM. It is checked in as a CVS branch off of the main
line. You can get the branch by doing a normal llvm checkout and
adding the argument -r vector_llvm. E.g., to check out from anonymous
CVS, you would do this:
• cvs -d :pserver:[hidden email]:/var/cvs/llvm login
• Hit the return key when prompted for the password.
• cvs -z3 -d :pserver:[hidden email]:/var/cvs/llvm co -r
This will produce a fresh tree with the Vector LLVM stuff in it.
Vector LLVM consists of three main components:
1. Extensions to the VM core to support both fixed and variable
vectors, and operations on them (the fixed vectors subsume the 'Packed
Type' from regular LLVM).
2. A C API and supporting LLVM transformation for writing Vector LLVM
at the C level using special functions that can be integrated with
"normal" scalar code, compiled through llvm-gcc, and turned into Vector
3. Very rudimentary backend support for turning fixed vectors into
AltiVec and/or SSE via the C backend and the gcc SIMD intrinsics for C.
I've also written a backend for the Motorola RSVP coprocessor
architecture that uses variable length vectors, but I can't check this
in because it's proprietary.
#1 above is documented in llvm/src/docs/LangRef.html. I'm working on
documentation for #2 and #3.
Feel free to check it out Vector LLVM and play with it.
Comments/suggestions are welcome.
Robert L. Bocchino Jr. wrote:
> As advertised to some, I've checked in a BETA VERSION of my vector
> extensions to LLVM.
For those who aren't familiar with it, Vector-LLVM is an research project
that Rob is working on to extend LLVM to support Cray-like and
Fortran-90-like vectors, and is still in early development stages.
Support for SIMD vectors is in the mainline LLVM distribution and
continues to be improved independently of his work.