本主题与以下内容有关: Finding min/max. Optimization
我将第一篇文章中的函数min_max重写为标量版本。但仍然太慢。你能给我一些建议吗?
exercise
P.S。我考虑循环展开。由于Agner Fog写道AMD K8每周期可以获取6个宏指令/ 16个字节,因此我不会将 jmp .cond
align 16
.loop:
cmp [esi+ecx*4], eax
cmovg eax, [esi+ecx*4]
cmp [esi+ecx*4], ebx
cmovl ebx, [esi+ecx*4]
.cond:
add ecx, 1
js .loop
移到寄存器中。它比SIMD版本更快。
我是否正确,由于部分寄存器标志依赖性,整个循环是循环携带依赖性?