short input[16] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};

short output[16] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15};

위 처럼 배열을 오른쪽으로 이동하는 코드를 C로 짜면

for(int i = 0; i < 15; i++)
  output[i] = input[i+1];
output[15] = input[15];

이렇게 짜면 끝임

근데 SIMD로 짜면

const __m256i vsfl = _mm256_setr_epi32(0, 0, 0, 0, 0x0f0e0f0e, 0x0f0e0f0e, 0x0f0e0f0e, 0x0f0e0f0e);
__m256i b = _mm256_permute2x128_si256(a, a, 0x01);
b = _mm256_blend_epi32(b, _mm256_shuffle_epi8(a, vsfl), 0xf0);
return _mm256_alignr_epi8(b, a, 2);


존나 머리아픔...
대신 일단 짜면 그냥 C코드보다 10배정도 빠르다 ㅇㅅㅇ