¿La mejor manera de cambiar un __m128i?

Necesito cambiar una variable __m128i, (digamos v), por m bits, de tal manera que los bits se muevan a través de toda la variable (Entonces, la variable resultante representa v * 2 ^ m). ¡¿Cuál es la mejor manera de hacer esto?!

Tenga en cuenta que _mm_slli_epi64 cambia v0 y v1 por separado:

r0 := v0 << count
r1 := v1 << count

así que faltaron los últimos bits de v0, pero quiero mover esos bits a r1.

Editar: busco un código, más rápido que esto (m <64):

r0 = v0 << m;
r1 = v0 >> (64-m);
r1 ^= v1 << m;
r2 = v1 >> (64-m);

Respuestas a la pregunta(2)

Su respuesta a la pregunta