SHAPES: Adding memory layouts and SIMD capabilities to high-level languagesICOOOLPS paper
While SIMD instruction sets are ubiquitous on modern hard- ware, SIMD instructions are rarely used in software projects. A major reason for this is that efficient SIMD code requires data to be laid out in memory in an unconventional manner, forcing developers to explicitly refactor their code and data structures in order to make use of SIMD. In previous work, we proposed SHAPES, an abstract lay- out specification for enabling memory optimisations for man- aged, object-oriented languages. In this paper, we explain how, by extending SHAPES with well-known constructs from the literature, which are not specific to SIMD, we can extend SHAPES to compile programs to use SIMD instructions. Ultimately, the resulting language seems able to exploit SIMD capabilities without sacrificing ease of development.