https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121027
Bug ID: 121027 Summary: [14 Regression] ICE with BF16 and SVE at -O2 -msve-vector-bits=256 Product: gcc Version: 14.3.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: acoplan at gcc dot gnu.org Target Milestone: --- The following fails on the head of the 14 branch: $ cat t.c #include <arm_sve.h> typedef svbfloat16_t vls_bfloat16_t __attribute__((arm_sve_vector_bits(32 * 8))); svbfloat16_t foo(vls_bfloat16_t a, vls_bfloat16_t b) { svbfloat16_t zero = svreinterpret_bf16_f32 (svdup_n_f32 (0.0f)); return svzip2_bf16(zero, svuzp1_bf16(a,b)); } $ /work/builds/gcc14/bin/gcc -O2 -march=armv8.2-a+sve+fp16 -msve-vector-bits=256 t.c -c -S -o /dev/null t.c: In function ‘foo’: t.c:7:1: error: unrecognizable insn: 7 | } | ^ (insn 15 14 16 2 (set (reg:VNx8BF 103 [ _3 ]) (unspec:VNx8BF [ (reg:VNx8BF 109) (reg:VNx8BF 110) ] UNSPEC_IORF)) "t.c":6:10 -1 (nil)) during RTL pass: vregs t.c:7:1: internal compiler error: in extract_insn, at recog.cc:2812 0x71bb3f _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) /home/alecop01/toolchain/src/gcc-14/gcc/rtl-error.cc:108 0x71bb73 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*) /home/alecop01/toolchain/src/gcc-14/gcc/rtl-error.cc:116 0xc8e1bb extract_insn(rtx_insn*) /home/alecop01/toolchain/src/gcc-14/gcc/recog.cc:2812 0x9e6917 instantiate_virtual_regs_in_insn /home/alecop01/toolchain/src/gcc-14/gcc/function.cc:1612 0x9e6917 instantiate_virtual_regs /home/alecop01/toolchain/src/gcc-14/gcc/function.cc:1995 0x9e6917 execute /home/alecop01/toolchain/src/gcc-14/gcc/function.cc:2042 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. but it doesn't fail with 13, 15, or trunk. So we need to work out what fixed it (and I suppose what introduced it, too).