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.
  • [Bug target/121300] New: ICE... sabson at gcc dot gnu.org via Gcc-bugs

Reply via email to