[Bug target/87555] There is no need for UNSPEC_FMADDSUB

crazylht at gmail dot com gcc-bugzilla@gcc.gnu.org
Fri Jun 18 07:09:03 GMT 2021


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87555

--- Comment #10 from Hongtao.liu <crazylht at gmail dot com> ---

> Note I'm not sure that doing fmaddsub as merge of fma and fms will be
> optimal since that most definitely will preclude combine from recognizing
> fmaddsub from (addsub (mul ..) x) which would be another goal to support
> (PR81904)

I guess you're talking about 

#include <x86intrin.h>
__m128d f(__m128d x, __m128d y, __m128d z){
  return _mm_addsub_pd(_mm_mul_pd(x,y),z);
}

which pass_combine tries

Failed to match this instruction:
(set (reg:V2DF 88)
    (vec_merge:V2DF (minus:V2DF (mult:V2DF (reg:V2DF 90)
                (reg:V2DF 91))
            (reg:V2DF 92))
        (plus:V2DF (mult:V2DF (reg:V2DF 90)
                (reg:V2DF 91))
            (reg:V2DF 92))
        (const_int 1 [0x1])))

but doesn't realize fisrt merge operand is fms and second is fma.


More information about the Gcc-bugs mailing list