[Bug target/126589] [13/14/15/16/17 Regression] Complex-mul vectorisation not honoring signed zeros
"cvs-commit at gcc dot gnu.org via Gcc-bugs" <[email protected]> Tue, 04 Aug 2026 14:25:19 +0000
| Newsgroups | gmane.comp.gcc.bugs |
|---|---|
| Message-ID | <[email protected]/bugzilla/> |
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D126589 --- Comment #2 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Tamar Christina <[email protected]= >: https://gcc.gnu.org/g:3565f0b780965a097fdeea07b94fcfe768998a65 commit r17-2946-g3565f0b780965a097fdeea07b94fcfe768998a65 Author: Tamar Christina <[email protected]> Date: Tue Aug 4 15:24:53 2026 +0100 vect: try all 8 multiplication orderings for complex patterns [PR126589] PR126589 make COMPLEX_MUL require -fno-signed-zeros for AArch64, but wh= en using this we miss many of the complex matching. This is because we get a different order of the operands for multiplication. We normally try just flipping the two multiplies around but not their operands. This patch changes it to try all 8 variants. Note that they still have= to pass compatible_complex_nodes_p and df analysis in linear_loads_p so we won't accept invalid combinations. There are no tests for this but it prevents patch 2 from introducing failures. gcc/ChangeLog: PR target/126589 * tree-vect-slp-patterns.cc (vect_validate_multiplication): Refactor. (vect_validate_multiplication_commutative): New. (complex_mul_pattern::matches, complex_fms_pattern::matches): U= se it.=