https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64532
kugan at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kugan at gcc dot gnu.org --- Comment #2 from kugan at gcc dot gnu.org --- x is an integer "w" floating point constraint. I think you need a cast here as below. __attribute__((noinline)) float s32_to_f32_imm1(int x) { float y; __asm__ ("vcvt.f32.s32 %0, %1, #1" : "=w"(y) : "0"((float)x)); return y; }