Репликация внутреннего _mm256_shuffle_epi8 с помощью Java Vector API Shuffle?

Я (в основном для развлечения) пытаюсь написать дайджест-функцию SHA-256 с использованием Java Vector API. Я использую следующую реализацию AVX2 из биткойна в качестве ссылки:

https://github.com/bitcoin/bitcoin/blob/7fcf53f7b4524572d1d0c9a5fdc388e87eb02416/src/crypto/sha256_avx2.cpp

Я смог дойти до того момента, когда используется внутренняя функция перетасовки: 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?

0 ответов

Другие вопросы по тегам