在 2025/11/22 下午10:37, Xi Ruoyao 写道:
On Sat, 2025-11-22 at 22:11 +0800, Xi Ruoyao wrote:
On Mon, 2025-11-17 at 14:38 +0800, zhaozhou wrote:
Add new template muldi3_ui12 for mul(reg, ui12), which mode is
DImode
and op2 is const_uns_arith_operand. And the template is matched when
the mul operation can not be optimized, such as slli, alsl et.
gcc/ChangeLog:
* config/loongarch/loongarch-protos.h
(loongarch_scalar_uimult_p): Func declaration.
* config/loongarch/loongarch.cc
(loongarch_scalar_uimult_p):
Check func for new template.
* config/loongarch/loongarch.md (muldi3_ui12): New
template.
gcc/testsuite/ChangeLog:
* gcc.target/loongarch/muld_d_ui12_1.c: New test.
* gcc.target/loongarch/muld_d_ui12_2.c: New test.
IMO this is too hacky. This is basically working around a missing CSE
by deferring the expansion from expand to split, but the correct
solution is just fixing this in CSE, as it's showing up in even x86_64
code generation.
I'll create a bug report about the missing CSE.
https://gcc.gnu.org/PR122808
Please don't push the patch until the issue is well understood and
discussed.
ok, I'll also track this report.