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.