https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64997
Bug ID: 64997
Summary: [AArch64] Illegal EON on SIMD registers
Product: gcc
Version: 5.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: alalaw01 at gcc dot gnu.org
Testcase:
#include <arm_neon.h>
#define force_simd(V1) asm volatile ("mov %d0, %1.d[0]" \
: "=w"(V1) \
: "w"(V1) \
: /* No clobbers */)
int foo(int64x1_t val4, int64x1_t val6, int64x1_t val7)
{
int64x1_t val5 = vbic_s64 (val4,
veor_s64 (val6,
vsri_n_s64 (val6, val7, 13)));
force_simd (val5);
return vget_lane_s64 (val5, 0) == 0 ? 1 : 0;
}
generates an illegal assembly instruction (eon v1, v3, v1 -- EON works only on
General-Purpose Registers) at -O1 and higher.