https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126064

            Bug ID: 126064
           Summary: [17 Regression] ICE in intrinsics lowering
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: tnfchris at gcc dot gnu.org
  Target Milestone: ---
            Target: aarch64*

Likely related to the new intrinsics framework.

#include <stdint.h>
#include <arm_neon.h>

void repro(uint8_t *dst, uint8x8_t a, uint8x8_t b) {
  uint32x2x2_t t;
  uint32x2_t r;
  uint8x8_t c;

  r = vrev64_u32(vreinterpret_u32_u8(b));
  t = vtrn_u32(vreinterpret_u32_u8(a), r);
  c = vreinterpret_u8_u32(t.val[1]);
  t = vtrn_u32(t.val[0], vreinterpret_u32_u8(c));
  t.val[1] = vrev64_u32(t.val[1]);

  vst1_u8(dst, vreinterpret_u8_u32(t.val[1]));
}

ICEs in lowering compiled with -O2


during GIMPLE pass: lower
<source>: In function 'repro':
<source>:4:6: internal compiler error: in fold, at
config/aarch64/aarch64-neon-builtins-base.cc:565
    4 | void repro(uint8_t *dst, uint8x8_t a, uint8x8_t b) {
      |      ^~~~~

Reply via email to