rs6000: Update sign extension computation with sext_hwi
commitbb2e5da7ef7740269ae95533179de8d186ee04bc
authorJiufu Guo <guojiufu@linux.ibm.com>
Wed, 30 Nov 2022 05:13:37 +0000 (30 13:13 +0800)
committerJiufu Guo <guojiufu@linux.ibm.com>
Thu, 8 Dec 2022 13:51:28 +0000 (8 21:51 +0800)
tree70f917d483976bd8b9fead8ca9ebadfbc184de39
parent892e8c520be37d0a0f14e2ae375103c5303ed549
rs6000: Update sign extension computation with sext_hwi

This patch just replaces the expression like:
((value & 0xf..f) ^ 0x80..0) - 0x80..0 to better code(e.g. sext_hwi) for
rs6000.cc, rs6000.md and predicates.md (files under rs6000/).

gcc/ChangeLog:

* config/rs6000/predicates.md: Use sext_hwi.
* config/rs6000/rs6000.cc (num_insns_constant_gpr): Likewise.
(darwin_rs6000_legitimate_lo_sum_const_p): Likewise.
(mem_operand_gpr): Likewise.
(mem_operand_ds_form): Likewise.
(rs6000_legitimize_address): Likewise.
(rs6000_emit_set_const): Likewise.
(rs6000_emit_set_long_const): Likewise.
(print_operand): Likewise.
(constant_generates_xxspltiw): Remove unnecessary expressions.
* config/rs6000/rs6000.md: Use sext_hwi.
gcc/config/rs6000/predicates.md
gcc/config/rs6000/rs6000.cc
gcc/config/rs6000/rs6000.md