INNER CODE UNIT · C
shift1
pq-crystals/dilithium · avx2/poly.c:1067
const __m256i shift1 = _mm256_set1_epi16((64 << 8) + 1);
const __m256i shift2 = _mm256_set1_epi32((4096 << 16) + 1);
const __m256i shufdidx1 = _mm256_set_epi32(7,3,6,2,5,1,4,0);
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);