Hi everyone, As we know, before we add a vector and a scalar, the first thing to do is to duplicate the scalar varable. For example (the vector has a length of 16): for (int i = 0; i < 16; i ++) c[i] = a[i] + b; will goes to: vld v0,a0 vdup v1,a1 vadd v0,v0,v1 vfst v0,a2 And now we can deal with the addtion of a vector and a scalar directly by "vadds", so the assembler above could be optimized like: vld v0,a0 vadds v0,v0,a1 vfst v0,a2 we can achieve this goal by peephole for the loop size 16, but if we enlarge the loop size to 32, the peephole will be missed like: vld v0,a0 vdup v1,a1 vadd v0,v0,v1 addi a3,a0,32 addi a4,a2,32 vfst v0,a2 vld v2,a3 vadd v0,v2,v1 vfst v0,a4 Is there any way to let GCC ignore the vector's duplication no matter the size of loop, for using the "vadds" only?