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.