Maybe this can work, please check. If this works we can deal with rotate right.
.data
align 32
number dq 3,0
low_mask dq 0ffffffffffffffffh,0000000000000000h ;reversed because using qword
high_mask dq 0000000000000000h,0ffffffffffffffffh
.code
mov eax,127 ;count range 0 to 128
movdqu xmm0,oword ptr [number]
movdqu xmm1,xmm0
.if eax >= 64
movhlps xmm0,xmm1 ;switch high and low
movlhps xmm0,xmm1
sub eax,64
.endif
movdqu xmm1,xmm0
movdqu xmm2,xmm0
pand xmm1,oword ptr [high_mask]
pand xmm2,oword ptr [low_mask]
movd xmm3,eax
psllq xmm0,xmm3
sub eax,64
neg eax
movd xmm4,eax
psrlq xmm1,xmm4
psrlq xmm2,xmm4
pxor xmm3,xmm3
movhlps xmm3,xmm1
movlhps xmm3,xmm2
por xmm0,xmm3