KeyStone Engine continued...
6.) The compiler-rt project
compiler-rt.llvm.org/
Provides highly tuned implementations of the low-level code generator support routines like "__fixunsdfdi" and other calls generated when a target doesn't have a short sequence of native instructions to implement a core IR operation. It also provides implementations of run-time libraries for dynamic testing tools such as AddressSanitizer, ThreadSanitizer, MemorySanitizer, and DataFlowSanitizer.
7.) The MLIR (Multi-Level Intermediate Representation) subproject
mlir.llvm.org/
A novel approach to building reusable and extensible compiler infrastructure. MLIR aims to address software fragmentation, improve compilation for heterogeneous hardware, significantly reduce the cost of building domain specific compilers, and aid in connecting existing compilers together.
8.) The OpenMP subproject
openmp.llvm.org/
openmp.org/
Provides an OpenMP runtime for use with the OpenMP implementation in Clang.
9.) The polly project
polly.llvm.org/
Polly is a high-level loop and data-locality optimizer and optimization infrastructure for LLVM. It uses an abstract mathematical representation based on integer polyhedra to analyze and optimize the memory access pattern of a program. We currently perform classical loop transformations, especially tiling and loop fusion to improve data-locality. Polly can also exploit OpenMP level parallelism, exposing SIMDization opportunities.
10.) The libclc project
libclc.llvm.org/
Aims to implement the OpenCL standard library.
Khronos Group - The OpenCL Specification Version: 1.1
khronos.org/registry/OpenCL/…
11.) The Klee project
klee-se.org/
KLEE Symbolic Execution Engine
KLEE implements a "symbolic virtual machine" which uses a theorem prover to try to evaluate all dynamic paths through a program in an effort to find bugs and to prove properties of functions. A major feature of klee is that it can produce a testcase in the event that it detects a bug.
📄 KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs
KLEE is used to thoroughly check all 89 stand-alone programs in the GNU COREUTILS utility suite, which form the core user-level environment installed on millions of Unix systems, and arguably are the single most heavily tested set of open-source programs in existence. KLEE-generated tests achieve high line coverage — on average over 90% per tool (median: over 94%) — and significantly beat the coverage of the developers' own hand-written test suites.
When we did the same for 75 equivalent tools in the BUSYBOX embedded system suite, results were even better, including 100% coverage on 31 of them. We also used KLEE as a bug finding tool, applying it to 452 applications (over 430K total lines of code), where it found 56 serious bugs, including three in COREUTILS that had been missed for over 15 years. Finally, we used KLEE to cross-check purportedly identical BUSY-BOX & COREUTILS utilities, finding functional correctness errors & a myriad of inconsistencies.
llvm.org/pubs/2008-12-OSDI-K…
PDF
llvm.org/pubs/2008-12-OSDI-K…
📄 KLEE symbolic execution engine in 2019
link.springer.com/content/pd…
📄 KleeNet: Discovering Insidious Interaction Bugs in Wireless Sensor Networks Before Deployment
A debugging environment that effectively discovers such bugs before deployment. KleeNet executes unmodified sensor network applications on symbolic input & automatically injects non-deterministic failures. As a result, KleeNet generates distributed execution paths at high-coverage, including low-probability corner-case situations.
comsys.rwth-aachen.de/filead…
📄 KLEE-Multisolver: Multi-solver Support in Symbolic Execution
srg.doc.ic.ac.uk/files/paper…
KLEE-MultiSolver
An extension to KLEE that uses the metaSMT framework to add support for multiple SMT solvers (Boolector, STP and Z3), & its evaluation on 12 Coreutils applications.
srg.doc.ic.ac.uk/projects/kl…