https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61202
--- Comment #1 from Carrot <carrot at google dot com> --- In arm_neon.h, we have __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) vqdmulhq_n_s16 (int16x8_t a, int16_t b) { int16x8_t result; __asm__ ("sqdmulh %0.8h,%1.8h,%2.h[0]" : "=w"(result) : "w"(a), "w"(b) : /* No clobbers */); return result; } The register constraint for the last operand of sqdmulh is "w", it means FP_REGS, the correct constraint should be "x", means FP_LO_REGS. The trunk has the same problem.