Taffo currently ships as 5 LLVM plugins, each one of them containing one LLVM optimization or analysis pass:

  • TaffoInitializer (Initialization pass)
  • TaffoVRA (Value Range Analysis pass)
  • TaffoDTA (Data Type Allocation pass)
  • LLVMFloatToFixed (Conversion pass)
  • LLVMErrorPropagator (Error Propagation pass of the Feedback Estimator)

To execute TAFFO, a simple frontend is provided named taffo, which can be substituted to clang in order to compile or link executables. Behind the scenes, it uses the LLVM opt tool to load one pass at a time and run it on LLVM IR source files.

Up-to-date instructions to set up TAFFO are always available on the GitHub repository.