Improving the Effectiveness and Generality of GCC Auto-Vectorization
summary
Presents concrete GCC compiler changes to improve auto-vectorization by analyzing groups of related GIMPLE statements in a loop to enable two transforms: coalescing ASTs to implement SLP-style vectorization across independent computations, and target-specific permutation selection that emits only the register shuffles actually available on the ISA. Describes the implementation in GCC, shows microbenchmarks comparing performance before and after these changes, identifies loop patterns and vector widths that benefit versus those that still require runtime shuffles, and provides code examples and patch-level design details.
AI-written summary · about
chapters (5)
- 0:00Introduction to GCC auto-vectorization
- 8:43Current challenges in auto-vectorization
- 18:03Proposed improvements and techniques
- 25:09Implementation and optimization results
- 31:01Future directions and Q&A
related talks
52mUnderstanding Compiler Optimization
15mNot So Fast: Understanding and Mitigating Negative Impacts of Compiler Optimizations on Code Reuse G
18mPreview RISC-V GCC Features and Optimization Improvements for GCC-14
17mRecent Developments in Optimizing Compilers for RISC-V
14mOn-Stack Replacement for Program Generators and Source-to-Source Compilers
27mImproving Vectorization Heuristics in a Dynamic Compiler with Machine Learning Models
01h 01mIntroduction to Vector Parallelism
43mAuto-Vectorization in HotSpot
