          MODULE=Vc
         VERSION=0.5.0
          SOURCE=$MODULE-$VERSION.tar.gz
      SOURCE_URL=https://code.compeng.uni-frankfurt.de/attachments/download/80/
      SOURCE_VFY=sha1:aea6772d89ddcbbc24b7cbf3a23d8bd4ed249d05
        WEB_SITE=http://code.compeng.uni-frankfurt.de/projects/vc
         ENTERED=20110517
         UPDATED=20111209
           SHORT="library to ease explicit vectorization of C++ code"

cat << EOF
The use of SIMD is becoming increasingly important with modern CPUs. The SIMD 
instruction sets are being improved: new instructions are added as well as 
performance improvements relative to the scalar instructions. The next 
generations of CPUs will double the vector width. Neglecting SIMD in 
high-performance code thus becomes more expensive, compared to the theoretical 
performance of CPUs.

The use of SIMD instructions is not easy. C/C++ compilers support some 
extensions to ease development for SSE and the upcoming AVX instructions. 
Commonly intrinsics are the available extension of choice. Intrinsics basically
map every SSE instruction to a C function. The use of these intrinsics leads to
code which is hard to read and maintain in addition to making portability to 
other vector units complicated.

Vc: Vector Classes

Vc is a free software library to ease explicit vectorization of C++ code. It 
has an intuitive API and provides portability between different compilers and 
compiler versions as well as portability between different vector instruction 
sets. Thus an application written with Vc can be compiled for

    SSE2 up to SSE4.2 or SSE4a
    LRBni (currently possible by use of the LRBni prototype header)
    Scalar (fallback which works everywhere)
    in development: AVX

EOF
