Source: void foo(float *a, float *b) { __asm__ volatile ( "vld1.32 {d8[],d9[]}, [%1,:32] \n\t" "vst1.32 {q4}, [%0,:128] \n\t" :: "r"(a), "r"(b) : "q4" ); } arm-none-linux-gnueabi-gcc-4.4.3 -O3 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp neonasm.c -S foo: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. fstmfdd sp!, {d8} #APP @ 2 "neonasm.c" 1 vld1.32 {d8[],d9[]}, [r1,:32] vst1.32 {q4}, [r0,:128] @ 0 "" 2 fldmfdd sp!, {d8} bx lr Both d8 and d9 should be saved, not just d8.
*** This bug has been marked as a duplicate of 43440 ***