複数のネストされたテスト__builtin_expected
内で gcc のマクロを使用して何をラップする必要がありますか? if
私はこのコードを持っています:
if((x<RADIUS && (forward?v<0:v>0)) || (x+RADIUS>dimensions[d] && (forward?v>0:v<0)))
私は(ばかげて)私ができるすべてをラップしました:
#define likely(x) __builtin_expect((x),1)
#define unlikely(x) __builtin_expect((x),0)
if(unlikely(unlikely(unlikely(x<RADIUS) && likely(likely(forward)?likely(v<0):likely(v>0))) || unlikely(unlikely(x+RADIUS>dimensions[d]) && likely(likely(forward)?likely(v>0):likely(v<0)))))
ほとんど読めないので、やり過ぎだといいのですが。