https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121300
Bug ID: 121300 Summary: ICE in extract_insn for SME2 FAMINMAX instrinsics Product: gcc Version: unknown Status: UNCONFIRMED Keywords: aarch64-sme Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: sabson at gcc dot gnu.org Target Milestone: --- Target: aarch64*-*-* It looks like the front-end isn't protecting us from using SME2's svamin/svamax intrinsics without the proper target features. The following, compiled with -march=armv9-a+sme: #include <arm_sme.h> svfloat16x2_t test (svfloat16x2_t zd, svfloat16x2_t zm) __arm_streaming { return svamin_f16_x2 (zd, zm); } gives: <source>: In function 'svfloat16x2_t test(svfloat16x2_t, svfloat16x2_t)': <source>:6:1: error: unrecognizable insn: 6 | } | ^ (insn 9 8 12 2 (set (reg:VNx16HF 101 [ D.22244 ]) (unspec:VNx16HF [ (reg:VNx16HF 103) (reg:VNx16HF 104) ] UNSPEC_FAMIN)) "<source>":5:26 -1 (nil)) during RTL pass: vregs <source>:6:1: internal compiler error: in extract_insn, at recog.cc:2884 [https://godbolt.org/z/41EKj4fEx] This only affects trunk, since these intrinsics are younger than GCC 15.