Type-safe Runtime Code Generation with LLVM
The embedded high-performance language Accelerate has got a new backend based on LLVM, which generates code for multicore GPUs and CPUs. In a new paper, we describe this code generator, which is —as far as we are aware— the first practical code generator that is fully type preserving from the source language down to generating low-level LLVM intermediate code (in SSA form). In addition to its novel safety features, the new backend generates vectorised SIMD code for x86_64 CPUs (using LLVM’s vectorisation support) and achieves competitive performance on a range of preliminary benchmarks.