Всем здравия! В Сях не бум бум вообще, прошу у вас помощи :)
Есть большая переменная на 128 байт для примера (по факту 128MB, но не суть). Нужно каждые её 8 байт XORить со следующими. И желательно с помощью AVX.
uint8_t A[128];
uint64_t X[128/8];
for (int i = 0; i < 128/8; i++)
{
X[i] = X[i] ^ (uint64_t*)&A[i];
}
Если надо не uint64_t, а другое типа uint256_t (на тип есть библиотека), то будет так?
uint8_t A[128];
uint256_t X[128/32];
for (int i = 0; i < 128/32; i++)
{
X[i] = X[i] ^ (uint256_t*)&A[i];
}
Как я понимаю этот код будет правильно работать? Можно это сделать через инструкции AVX? Будет быстрее, чем простой xor ^? Указатели, звездочки и амперсанды для меня тёмный лес:) не ругайте строго, просто надо с этим кодом разобраться.