]> git.ipfire.org Git - thirdparty/gcc.git/commit
Simplify (AND (ASHIFTRT A imm) mask) to (LSHIFTRT A imm) for vector mode.
authorliuhongt <hongtao.liu@intel.com>
Fri, 19 Apr 2024 02:29:34 +0000 (10:29 +0800)
committerliuhongt <hongtao.liu@intel.com>
Thu, 6 Jun 2024 00:34:13 +0000 (08:34 +0800)
commit7876cde25cbd2f026a0ae488e5263e72f8e9bfa0
tree3238e6ab9a5e72c32a1f723ad62874ee868b879a
parent10cb3336ba1ac89b258f627222e668b023a6d3d4
Simplify (AND (ASHIFTRT A imm) mask) to (LSHIFTRT A imm) for vector mode.

When mask is (1 << (prec - imm) - 1) which is used to clear upper bits
of A, then it can be simplified to LSHIFTRT.

i.e Simplify
(and:v8hi
  (ashifrt:v8hi A 8)
  (const_vector 0xff x8))
to
(lshifrt:v8hi A 8)

gcc/ChangeLog:

PR target/114428
* simplify-rtx.cc
(simplify_context::simplify_binary_operation_1):
Simplify (AND (ASHIFTRT A imm) mask) to (LSHIFTRT A imm) for
specific mask.

gcc/testsuite/ChangeLog:

* gcc.target/i386/pr114428-1.c: New test.
gcc/simplify-rtx.cc
gcc/testsuite/gcc.target/i386/pr114428-1.c [new file with mode: 0644]