8 bit shift operation in AVX2 with shifting in zeros

Viewed 3444

Is there any way to rebuild the _mm_slli_si128 instruction in AVX2 to shift an __mm256i register by x bytes?

The _mm256_slli_si256 seems just to execute two _mm_slli_si128 on a[127:0] and a[255:128].

The left shift should work on a __m256i like this:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ..., 32] -> [2, 3, 4, 5, 6, 7, 8, 9, ..., 0]

I saw in thread that it is possible to create a shift with _mm256_permutevar8x32_ps for 32bit. But I need a more generic solution to shift by x bytes. Has anybody already a solution for this problem?

1 Answers
Related