But this is slower than with multiplication, as Linus explains:
the simple shift+add version is all totally serialized
and nothing can be done before the previous operation
ends: as a result the three adds and three shifts will
inevitably take 6 cycles (the original P4 had that
double-pumped ALU, but not for shifts). That's already
slower than almost any multiply.
Edit: oops, I forgot your '(without multiplication)' qualifier. Yes, your way is likely the quickest without multiplication.