WEDNESDAY, AUGUST 12, 2026
gcc/tree-optimization Performance Win
Vectorizer handles MMX/SSE mask interaction with AVX512.
Vectorizer now correctly converts between integer and vector integer masks for AVX512.
The GCC vectorizer can now handle the interaction between MMX/SSE integer masks and AVX512 vector integer masks. It introduces a conversion for V2SImode using vcond_mask, addressing a gap in pattern recognition for mask representation. This improves vectorization of code using AVX512 instructions.
In Details
The x86 backend has distinct integer and vector integer mask representations. AVX512 requires converting between these for vectorization. This patch adds support for V2SImode by using vcond_mask in vectorizable_conversion to handle the transition from integer mode masks to vector integer mode masks, which was previously missing pattern support.
For Context
- AVX512
- An extension to x86 instruction set architecture providing 512-bit wide vector registers and instructions, enabling wider data parallelism.
- Vectorizer
- A compiler component that transforms loops and scalar code into vector instructions for parallel execution on suitable hardware.
- V2SImode
- A GCC internal representation for a vector of two single-precision floating-point values or two-element integer vectors.
- vcond_mask
- An AVX512 instruction that conditionally selects elements from a destination vector based on a mask, useful for implementing masked operations.