[Bug target/123910] ICE: in extract_insn, at recog.cc:2888: unrecognizable insn: if_then_else:RVVMF2QI... UNSPEC_VUNDEF with -mcpu=xt-c920 -mrvv-vector-bits=zvl
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123910 Jeffrey A. Law changed: What|Removed |Added Resolution|--- |FIXED Status|UNCONFIRMED |RESOLVED --- Comment #4 from Jeffrey A. Law --- I went ahead and cherry-picked this back to gcc-15.
[Bug target/123910] ICE: in extract_insn, at recog.cc:2888: unrecognizable insn: if_then_else:RVVMF2QI... UNSPEC_VUNDEF with -mcpu=xt-c920 -mrvv-vector-bits=zvl
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123910 --- Comment #3 from GCC Commits --- The releases/gcc-15 branch has been updated by Jeff Law : https://gcc.gnu.org/g:a74a8b385f986b6c4d46324a401888bcc263d498 commit r15-10831-ga74a8b385f986b6c4d46324a401888bcc263d498 Author: Robin Dapp Date: Mon Feb 2 10:28:08 2026 +0100 RISC-V: Disable small memsets for xtheadvector [PR123910]. This patch disables memsets with size less than a vector for xtheadvector. As xtheadvector does not support fractional LMUL we need to ensure to not emit those vectors that might use it. PR target/123910 gcc/ChangeLog: * config/riscv/riscv-string.cc (riscv_expand_block_move): Remove !xtheadvector guard. (use_vector_stringop_p): Guard small LMULs. (check_vectorise_memory_operation): Ditto. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/autovec/pr123910.c: New test. * gcc.target/riscv/rvv/xtheadvector/pr114194-rv32.c: xfail. Signed-off-by: Robin Dapp (cherry picked from commit c3e3456007a46f5eb790817631a656a963326ddf)
[Bug target/123910] ICE: in extract_insn, at recog.cc:2888: unrecognizable insn: if_then_else:RVVMF2QI... UNSPEC_VUNDEF with -mcpu=xt-c920 -mrvv-vector-bits=zvl
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123910 --- Comment #2 from GCC Commits --- The master branch has been updated by Robin Dapp : https://gcc.gnu.org/g:c3e3456007a46f5eb790817631a656a963326ddf commit r16-7310-gc3e3456007a46f5eb790817631a656a963326ddf Author: Robin Dapp Date: Mon Feb 2 10:28:08 2026 +0100 RISC-V: Disable small memsets for xtheadvector [PR123910]. This patch disables memsets with size less than a vector for xtheadvector. As xtheadvector does not support fractional LMUL we need to ensure to not emit those vectors that might use it. PR target/123910 gcc/ChangeLog: * config/riscv/riscv-string.cc (riscv_expand_block_move): Remove !xtheadvector guard. (use_vector_stringop_p): Guard small LMULs. (check_vectorise_memory_operation): Ditto. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/autovec/pr123910.c: New test. * gcc.target/riscv/rvv/xtheadvector/pr114194-rv32.c: xfail. Signed-off-by: Robin Dapp
[Bug target/123910] ICE: in extract_insn, at recog.cc:2888: unrecognizable insn: if_then_else:RVVMF2QI... UNSPEC_VUNDEF with -mcpu=xt-c920 -mrvv-vector-bits=zvl
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123910 Robin Dapp changed: What|Removed |Added CC||rdapp at gcc dot gnu.org --- Comment #1 from Robin Dapp --- We don't disable theadvector for all paths in riscv-string.cc. This is an easy fix even though it would be better to allow vectorization and disable fractional LMUL. A memmove size of 16 works, 8 doesn't. Right now it's a bit inconsistent, we disable "block move" with XTHEADVECTOR but not memmove.
