This repository ties together the different components making up the SPMD vectorizer I created in the course of my B.Sc. thesis. It is target-independent in principle, but has mostly been tested on the Nyuzi processor.
- A fork of LLVM and Clang, which mostly just adds the vectorization pass
- A fork of the Rust compiler, supporting the Nyuzi target and integrating the vectorization pass
- Some benchmarks that were used for performance evaluation
The LLVM and Rust forks are built exactly as the upstream projects, with the caveat that the Rust compiler needs to be pointed at a build of the forked LLVM (see src/bootstrap/config.toml
in the Rust repository).
Running the benchmarks requires a simulator, which can be installed from the Nyuzi repository.
For the benchmarks written in Rust, cross compilation with the custom toolchain is managed via Xargo, so you'll need that as well.