Оптимизированный способ выполнения AVX2 VPXOR и popcount за минимальные такты - PullRequest
0 голосов
/ 27 марта 2019

Мы должны выполнить побитовую операцию XOR для двух массивов, каждый из которых содержит 5 элементов uint64_t (long без знака long), а затем выполнить подсчет (pop pop) единиц.Как оптимизировать использование регистров YMM шириной 256 битов AVX2, VPXOR AVX2 и popcount для достижения этой цели за минимальные тактовые циклы.

Сейчас мы делаем это, используя следующий фрагмент кода

for (j = 0; j < 5; j++){
 xorResult = cylinderArrayVectorA[j] ^ cylinderArrayVectorB[j];
 noOfOnes = _mm_popcnt_u64(xorResult);
 sumOfOnes += noOfOnes;

У нас есть 260 битов в массиве A и массиве B. Что является оптимизированным способом выполнения AVX2 VPXOR и popcount за минимальное время?циклы.

...