LLVMdev Digest, Vol 16, Issue 14

------------------------------

Message: 3
Date: Tue, 18 Oct 2005 15:20:29 -0500
From: "Robert L. Bocchino Jr." <bocchino@uiuc.edu>
Subject: [LLVMdev] Vector LLVM checked in!
To: LLVM Developers Mailing List <llvmdev@cs.uiuc.edu>
Message-ID: <64dde68b5934d83056aeb3c9f66afe7e@uiuc.edu>
Content-Type: text/plain; charset="windows-1252"

Hi,

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:anon@llvm-cvs.cs.uiuc.edu:/var/cvs/llvm login
        • Hit the return key when prompted for the password.
        • cvs -z3 -d :pserver:anon@llvm-cvs.cs.uiuc.edu:/var/cvs/llvm co -r
vector_llvm llvm

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
LLVM.

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.

Rob

Robert L. Bocchino Jr.
Ph.D. Student, Computer Science
University of Illinois, Urbana-Champaign
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: text/enriched
Size: 1979 bytes
Desc: not available
Url : http://lists.cs.uiuc.edu/pipermail/llvmdev/attachments/20051018/481354c7/attachment-0001.bin

------------------------------

Bob, do you have an example to show how to specify vectors and their
operations in C?
I.e., is the documentation of the item #2 ready?

Thanks,
-Yiping

Bob, do you have an example to show how to specify vectors and their
operations in C?
I.e., is the documentation of the item #2 ready?

Yes, see $(VLLVM)/docs/VectorCReference.txt, where $(VLLVM) means the source directory of the Vector LLVM tree.

Note that the Vector LLVM tree is way out of date with mainline LLVM, and some of the vector operations (e.g. arithmetic, shuffling, extracting and inserting scalars) are now available in mainline for fixed-length or “packed” vectors. The experimental Vector LLVM branch allows some additional vector operations (e.g., compare, select, pack, and unpack) and also has support for arbitrary-length vectors. Mainline vector support continues to improve, and many of the additional “packed” operations supported by Vector LLVM will eventually be part of mainline. Right now I am working on adding compare and select to mainline and hope to get that checked in soon.

Rob

Robert L. Bocchino Jr.

Ph.D. Student, Computer Science

University of Illinois, Urbana-Champaign