在 2023/9/6 下午6:58, Xi Ruoyao 写道:
Forgot to mention: I've bootstrapped and regtested this patch on
loongarch64-linux-gnu (with PR110939 patch applied to unbreak the
bootstrapping).  Ok for trunk?

LGTM!

Thanks!


On Wed, 2023-09-06 at 18:46 +0800, Xi Ruoyao wrote:

If mask is a constant with value ((1 << N) - 1) << M we can perform this
optimization.

gcc/ChangeLog:

         PR target/111252
         * config/loongarch/loongarch-protos.h
         (loongarch_pre_reload_split): Declare new function.
         (loongarch_use_bstrins_for_ior_with_mask): Likewise.
         * config/loongarch/loongarch.cc
         (loongarch_pre_reload_split): Implement.
         (loongarch_use_bstrins_for_ior_with_mask): Likewise.
         * config/loongarch/predicates.md (ins_zero_bitmask_operand):
         New predicate.
         * config/loongarch/loongarch.md (bstrins_<mode>_for_mask):
         New define_insn_and_split.
         (bstrins_<mode>_for_ior_mask): Likewise.
         (define_peephole2): Further optimize code sequence produced by
         bstrins_<mode>_for_ior_mask if possible.

gcc/testsuite/ChangeLog:

         * g++.target/loongarch/bstrins-compile.C: New test.
         * g++.target/loongarch/bstrins-run.C: New test.
/* snip */


Reply via email to