[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