For bitshifting large integers. I have seen this answer in StackOverflow:
uint64_t i1, i2, i3, o1, o2, o3; // {o3, o2, o1} = {i3, i2, i1} << 3;
o3 = i3 << 3 | i2 >> (32 - 3);
o2 = i2 << 3 | i1 >> (32 - 3);
o1 = i1 << 3;
But, this only works for maximum 32 left bit-shifts. How can I create a solution with n-bits left shifts? Needs to be constant time.