Landing: d9b294889b14
Project / Subsystem
gcc / vect
Date
2026-08-12
Author
Tamar Christina
Commit
d9b294889b14069d6f6c5ce985f17bf8bbf34894
Source
github
Perf win
Yes
Breaking
No
All attributes
- project
- gcc
- subsystem
- vect
- patch_id
- —
- commit_hash
- d9b294889b14069d6f6c5ce985f17bf8bbf34894
- source_type
- github
- headline
- vect: Support complex fused multiply-subtract with non-accumulating destinations
- tldr
- Enables vectorization of a specific form of complex fused multiply-subtract operations, improving performance for complex arithmetic.
- author
- Tamar Christina
- outcome
- committed
- performance_win
- true
- breaking_change
- false
- series_id
- —
- series_parts
- []
- tags
-
- • vect
- • optimization
- • complex numbers
- • SIMD
- discussion_id_link
- —
- bugzilla_pr
- —
- date
- 2026-08-12T00:00:00.000Z
This commit extends the vectorizer’s capability to support an additional form of complex fused multiply-subtract (FMS) operations. Specifically, it enables matching FMS where reassocations result in the top-level operation being a PLUS_MINUS, occurring when the accumulator is different from the destination. This support is crucial for optimizing code that performs complex arithmetic, such as c.real + (a.imag * b.imag - a.real * b.real), especially when the accumulator is not the same as the destination register.