Remove copysign post_reload splitter for scalar modes.
authorliuhongt <hongtao.liu@intel.com>
Thu, 9 Sep 2021 06:49:16 +0000 (14:49 +0800)
committerliuhongt <hongtao.liu@intel.com>
Fri, 10 Sep 2021 04:29:28 +0000 (12:29 +0800)
commit60efb1fee9b8985829abf4ed9958691783c2604e
tree06253a9d8baf103822cb7adf13fbf5c97a01461f
parentf84e2f0b7b022123232eb30d579984a8c1880782
Remove copysign post_reload splitter for scalar modes.

It can generate better code just like avx512dq-abs-copysign-1.c
shows.

gcc/ChangeLog:

* config/i386/i386-expand.c (ix86_expand_copysign): Expand
right into ANDNOT + AND + IOR, using paradoxical subregs.
(ix86_split_copysign_const): Remove.
(ix86_split_copysign_var): Ditto.
* config/i386/i386-protos.h (ix86_split_copysign_const): Dotto.
(ix86_split_copysign_var): Ditto.
* config/i386/i386.md (@copysign<mode>3_const): Ditto.
(@copysign<mode>3_var): Ditto.

gcc/testsuite/ChangeLog:

* gcc.target/i386/avx512dq-abs-copysign-1.c: Adjust testcase.
* gcc.target/i386/avx512vl-abs-copysign-1.c: Adjust testcase.
gcc/config/i386/i386-expand.c
gcc/config/i386/i386-protos.h
gcc/config/i386/i386.md
gcc/testsuite/gcc.target/i386/avx512dq-abs-copysign-1.c
gcc/testsuite/gcc.target/i386/avx512vl-abs-copysign-1.c