https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119238
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Started with r15-7623-gcef5f23adb6f9f052d03286ad8ccf352eefccf86
GCC is now written in C++14, so this is inappropriate.
If the reason for structured binding was to improve formatting, it didn't help
much, the major problem are the excessive long names due to many iterators.
Perhaps
--- gcc/config/loongarch/simd.md.jj 2025-03-05 06:39:50.198297885 +0100
+++ gcc/config/loongarch/simd.md 2025-03-12 10:42:05.769933119 +0100
@@ -809,18 +809,21 @@ (define_expand "<su>dot_prod<wvec_half><
(any_extend (const_int 0))]
""
{
- auto [op0, op1, op2, op3] = operands;
-
- if (op3 == CONST0_RTX (<WVEC_HALF>mode))
- emit_insn (
- gen_<simd_isa>_<x>vmulwev_<simdfmt_w>_<simdfmt><u> (op0, op1, op2));
+ rtx (*gen4) (rtx, rtx, rtx, rtx);
+ if (operands[3] == CONST0_RTX (<WVEC_HALF>mode))
+ {
+ rtx (*gen3) (rtx, rtx, rtx)
+ = gen_<simd_isa>_<x>vmulwev_<simdfmt_w>_<simdfmt><u>;
+ emit_insn (gen3 (operands[0], operands[1], operands[2]));
+ }
else
- emit_insn (
- gen_<simd_isa>_<x>vmaddwev_<simdfmt_w>_<simdfmt><u> (op0, op3, op1,
- op2));
+ {
+ gen4 = gen_<simd_isa>_<x>vmaddwev_<simdfmt_w>_<simdfmt><u>;
+ emit_insn (gen4 (operands[0], operands[1], operands[2], operands[3]));
+ }
- emit_insn (
- gen_<simd_isa>_<x>vmaddwod_<simdfmt_w>_<simdfmt><u> (op0, op0, op1, op2));
+ gen4 = gen_<simd_isa>_<x>vmaddwod_<simdfmt_w>_<simdfmt><u>;
+ emit_insn (gen4 (operands[0], operands[1], operands[2], operands[3]));
DONE;
})