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];
}

Reply via email to