https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121634
--- Comment #5 from Xi Ruoyao <xry111 at gcc dot gnu.org> ---
It turns out to be a stupid pasto:
diff --git a/gcc/config/loongarch/simd.md b/gcc/config/loongarch/simd.md
index dd17cd13fc5..4156b269f9a 100644
--- a/gcc/config/loongarch/simd.md
+++ b/gcc/config/loongarch/simd.md
@@ -773,7 +773,7 @@ (define_insn "simd_maddw_evod_<mode>_<su>"
(vec_select:<VEC_HALF>
(match_operand:IVEC 2 "register_operand" "f")
(match_operand:IVEC 4 "vect_par_cnst_even_or_odd_half")))
- (any_extend:<WVEC>
+ (any_extend:<WVEC_HALF>
(vec_select:<VEC_HALF>
(match_operand:IVEC 3 "register_operand" "f")
(match_dup 4))))
I'll submit this to my test facility and then gcc-patches if tested OK.