Compiler Support for Control-Flow Linearization Using Architectural Mimicry
summary
Implements an LLVM backend pass that automates control‑flow linearization for reducible graphs using Architectural Mimicry (AMi) mimic execution and persistent instruction qualifiers, inserting activating edges and register‑allocation constraints so live registers stay unaffected. Evaluated on Proteus RISC‑V microbenchmarks: code size +6% and execution time +26% versus baseline, manual AMi linearization averages 1.19x runtime, the compiler 1.26x and naive both‑branches+select is 1.73x. Works for small tests but requires more robustness and formalization for larger programs.
AI-written summary · about
chapters (12)
- 0:00Introduction
- 0:21Overview of the presentation
- 1:08Microarchitectural attacks
- 3:20Architectural mimicry
- 4:44Linearizing branches with AM
- 6:36Programming model limits
- 7:38Research contributions
- 8:25Control flow linearization steps
- 14:45LLVM implementation
- 18:04Evaluation results
- 20:16Future work
- 21:42Question and answer session
related talks
17mRecent Developments in Optimizing Compilers for RISC-V
22mReconciling High-level Optimizations and Low-level Code in LLVM
16mSemiring Optimizations: Dynamic Elision of Expressions with Identity and Absorbing Elements
18mRobustifying Debug Information Updates in LLVM via Control-Flow Conformance Analysis
53mFrom Within: Compiler Testing and Validation via Compilers
29mPartially Evaluating Symbolic Interpreters for All
22mAlgorithm-Aware Hardware Optimization using E-Graph Rewriting: how should we marry(…)
24mTowards Understanding the Costs of Avoiding Out-of-Thin-Air Results
