aboutsummaryrefslogtreecommitdiff
path: root/gcc/rtl.h
diff options
context:
space:
mode:
authorliuhongt <hongtao.liu@intel.com>2023-03-06 15:35:37 +0800
committerliuhongt <hongtao.liu@intel.com>2023-05-30 17:53:58 +0800
commitd8545fb2c71683f407bfd96706103297d4d6e27b (patch)
tree0cccd887436470d455190f3ccba625f9ee0e3619 /gcc/rtl.h
parent365b1d5493988b6bd40183d1fe49bd8a3b32a6bb (diff)
downloadgcc-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