Charles Bloom的博客在这里 http://cbloomrants.blogspot.com/
1. 似乎用si_func 和dword变量比 spu_func和vector变量好一点。因为spu_function是c++函数,性能回比直接用汇编慢。si_function相对好一点。
2. Rotate left 要花费两指令, Rotate right要花费3指令。
3.只分支预测最可能出现的那个分支就好了,也就是__builtin_expect最好都是true。或者把最可能出现的分支放在离if比较近的地方
4.最好是单数cycle数的指令和偶数cycle数的指令间隔使用。实在不行用-mdual-nops=1塞一个空指令
5.对于LSU要小心了,一般编译器会弄好。但是有时候自己也要关心下。指令少不一定就快。 一个LSU可能就是4个clock,相当于8条指令呢
6.对于ppu, 计算地址再跳转比较慢,所以循环的时候不要用 array[index], 而用array++
7. ++i比i++好