INNER CODE UNIT · C
shufdidx2
pq-crystals/dilithium · avx2/poly.c:1070
const __m256i shufdidx2 = _mm256_set_epi32(-1,-1,6,5,4,2,1,0);
const __m256i shufbidx = _mm256_set_epi8(-1,-1,-1,-1,14,13,12,10, 9, 8, 6, 5, 4, 2, 1, 0,
-1,-1,-1,-1,14,13,12,10, 9, 8, 6, 5, 4, 2, 1, 0);
DBENCH_START();
for(i = 0; i < N/32; i++) {
f0 = _mm256_load_si256(&a->vec[4*i+0]);
f1 = _mm256_load_si256(&a->vec[4*i+1]);
f2 = _mm256_load_si256(&a->vec[4*i+2]);
f3 = _mm256_load_si256(&a->vec[4*i+3]);
f0 = _mm256_packus_epi32(f0,f1);
f1 = _mm256_packus_epi32(f2,f3);
f0 = _mm256_packus_epi16(f0,f1);
f0 = _mm256_maddubs_epi16(f0,shift1);
f0 = _mm256_madd_epi16(f0,shift2);
f0 = _mm256_permutevar8x32_epi32(f0,shufdidx1);
f0 = _mm256_shuffle_epi8(f0,shufbidx);
f0 = _mm256_permutevar8x32_epi32(f0,shufdidx2);