Der beste Weg, um einen __m128i zu verschieben?
Ich muss eine __m128i-Variable (z. B. v) um m Bits verschieben, sodass sich die Bits durch die gesamte Variable bewegen (die resultierende Variable repräsentiert also v * 2 ^ m). Wie geht das am besten?!
Beachten Sie, dass _mm_slli_epi64 v0 und v1 separat verschiebt:
r0 := v0 << count
r1 := v1 << count
so haben die letzten Bits von v0 gefehlt, aber ich möchte diese Bits nach r1 verschieben.
Bearbeiten: Ich suche nach einem Code, der schneller ist als dieser (m <64):
r0 = v0 << m;
r1 = v0 >> (64-m);
r1 ^= v1 << m;
r2 = v1 >> (64-m);