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.