diff options
author | liuhongt <hongtao.liu@intel.com> | 2023-03-06 15:35:37 +0800 |
---|---|---|
committer | liuhongt <hongtao.liu@intel.com> | 2023-05-30 17:53:58 +0800 |
commit | d8545fb2c71683f407bfd96706103297d4d6e27b (patch) | |
tree | 0cccd887436470d455190f3ccba625f9ee0e3619 /gcc/rtl.h | |
parent | 365b1d5493988b6bd40183d1fe49bd8a3b32a6bb (diff) | |
download | gcc-d8545fb2c71683f407bfd96706103297d4d6e27b.zip gcc-d8545fb2c71683f407bfd96706103297d4d6e27b.tar.gz gcc-d8545fb2c71683f407bfd96706103297d4d6e27b.tar.bz2 |
Detect bswap + rotate for byte permutation in pass_bswap.
The patch doesn't handle:
1. cast64_to_32,
2. memory source with rsize < range.
gcc/ChangeLog:
PR middle-end/108938
* gimple-ssa-store-merging.cc (is_bswap_or_nop_p): New
function, cut from original find_bswap_or_nop function.
(find_bswap_or_nop): Add a new parameter, detect bswap +
rotate and save rotate result in the new parameter.
(bswap_replace): Add a new parameter to indicate rotate and
generate rotate stmt if needed.
(maybe_optimize_vector_constructor): Adjust for new rotate
parameter in the upper 2 functions.
(pass_optimize_bswap::execute): Ditto.
(imm_store_chain_info::output_merged_store): Ditto.
gcc/testsuite/ChangeLog:
* gcc.target/i386/pr108938-1.c: New test.
* gcc.target/i386/pr108938-2.c: New test.
* gcc.target/i386/pr108938-3.c: New test.
* gcc.target/i386/pr108938-load-1.c: New test.
* gcc.target/i386/pr108938-load-2.c: New test.
Diffstat (limited to 'gcc/rtl.h')
0 files changed, 0 insertions, 0 deletions