diff options
author | Kewen Lin <linkw@linux.ibm.com> | 2024-11-21 07:41:34 +0000 |
---|---|---|
committer | Kewen Lin <linkw@gcc.gnu.org> | 2024-11-21 07:41:34 +0000 |
commit | 10e702789eeabcc88451e34c2a5c7dccb96190a5 (patch) | |
tree | f21fdfc248078586826b1fb0f8a85a6d7fb740f6 /gcc/doc/invoke.texi | |
parent | baf536754f615c808f02592b765cdd900f240359 (diff) | |
download | gcc-10e702789eeabcc88451e34c2a5c7dccb96190a5.zip gcc-10e702789eeabcc88451e34c2a5c7dccb96190a5.tar.gz gcc-10e702789eeabcc88451e34c2a5c7dccb96190a5.tar.bz2 |
rs6000: Adjust FLOAT128 signbit2 expander for P8 LE [PR114567]
As the associated test case shows, signbit generated assembly
is sub-optimal for _Float128 argument from memory on P8 LE.
On P8 LE, p8swap pass puts an explicit AND -16 on the memory,
which causes mode_dependent_address_p considers it's invalid
to change its mode and combine fails to make use of the
existing pattern signbit<SIGNBIT:mode>2_dm_mem. Considering
it's always more efficient to make use of 8 bytes load and
shift on P8 LE, this patch is to adjust the current expander
and treat it specially.
PR target/114567
gcc/ChangeLog:
* config/rs6000/rs6000.md (expander signbit<FLOAT128:mode>2): Adjust.
(*signbit<mode>2_dm_mem): Rename to ...
(signbit<mode>2_dm_mem): ... this.
gcc/testsuite/ChangeLog:
* gcc.target/powerpc/pr114567.c: New test.
Diffstat (limited to 'gcc/doc/invoke.texi')
0 files changed, 0 insertions, 0 deletions