Репликация внутреннего _mm256_shuffle_epi8 с помощью Java Vector API Shuffle?
Я (в основном для развлечения) пытаюсь написать дайджест-функцию SHA-256 с использованием Java Vector API. Я использую следующую реализацию AVX2 из биткойна в качестве ссылки:
Я смог дойти до того момента, когда используется внутренняя функция перетасовки:
return _mm256_shuffle_epi8(ret, _mm256_set_epi32(0x0C0D0E0FUL, 0x08090A0BUL, 0x04050607UL, 0x00010203UL, 0x0C0D0E0FUL, 0x08090A0BUL, 0x04050607UL, 0x00010203UL));
.
Я вижу, что Java Vector API предоставляет
VectorShuffle
класс и
rearrange
методы на
Vector
class, но документы API, похоже, подходят к перемешиванию с точки зрения индексов, а не масок.
Итак, мой вопрос - как воспроизвести (как можно точнее) поведение
_mm256_shuffle_epi8
встроена в векторный API Java?