https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102977
--- Comment #6 from Hongtao.liu <crazylht at gmail dot com> --- (In reply to Andrew Pinski from comment #3) > Oh you mean fcmla. > Never mind. (In reply to Andrew Pinski from comment #4) > it is easier to understand what is going wrong with: > #include<complex.h> > > void > foo (_Complex float* a, _Complex float* b, _Complex float *c) > { > for (int i =0 ; i != 4; i++) > a[i] += b[i] * c[i]; > } > > Oh you don't need SVE either because it was added for normal SIMD in > ARMv8.3-a. Yes. For x86 side, AVX512-FP16 have vfcmaddcph/fcmaddcph for _Float16 cmla/conj_cmla, the issue is found when we're working on supporting that. NOTE: slp pattern match for .COMPLEX_MUL is ok. #include<complex.h> void foo (_Complex float* a, _Complex float* b, _Complex float *c) { for (int i =0 ; i != 4; i++) a[i] = b[i] * c[i]; }