hstk30 / hstk30.github.io

hstk30's Blog
Apache License 2.0
0 stars 0 forks source link

一些可能的优化记录 #25

Open hstk30-hw opened 1 month ago

hstk30-hw commented 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

放在不同的寄存器中,有利于指令并行化