Open hstk30-hw opened 1 month ago
https://godbolt.org/z/5cqMeEvK4
void Copy16(long * dest, long * src) { *(dest++) = *(src++); // 3 *dest = *src; // 4 }
llvm O2 output :
Copy16: // @Copy16 ldr x8, [x1] str x8, [x0] ldr x8, [x1, #8] str x8, [x0, #8] ret
没有优化为
ldp x2, x3, [x0] stp x2, x3, [x1]
或者优化为
Copy16: // @Copy16 ldr x8, [x1] str x8, [x0] ldr x9, [x1, #8] str x9, [x0, #8] ret
放在不同的寄存器中,有利于指令并行化
https://godbolt.org/z/5cqMeEvK4
llvm O2 output :
没有优化为
或者优化为
放在不同的寄存器中,有利于指令并行化