VecImp

About

SIMD instructions are common in CPUs for years now. Using these instructions effectively requires not only vectorization of code, but also modifications to the data layout. However, automatic vectorization techniques are often not powerful enough and suffer from restricted scope of applicability; hence, programmers often vectorize their programs manually by using intrinsics: compiler-known functions that directly expand to machine instructions. They significantly decrease programmer productivity by enforcing a very error-prone and hard-to-read assembly-like programming style. Furthermore, intrinsics are not portable because they are tied to a specific instruction set.

VecImp is a theoretical calculus which can be used to extend the type system and semantics of any imperative language for use with portable and efficient SIMD programming. Work is underway to include VecImp into a C/C++-compiler.

Publications

Conferences

Technical Reports