Isn’t there an implicit check to exit the loop?
So the jump that forms the loop will be predicted correctly for all executions but the very last (when the loop ends).
I wonder how much more complicated and effective statistical predictors are.
Unless the loop is unrolled, yes, there is a branch to exit the loop. But then that doesn’t matter because the whole goal at the beginning was to avoid branch misprediction (which is not the same thing as avoiding branches entirely).