Так что в моем коде в данный момент происходит что-то странное, речь идет о следующем регистре __m256i local
, присвоенном при вычислении где-то, а также __m256i mask
, который не имеет отношения к локальному.
Где выполняется следующее:
std::cout << _mm256_extract_epi32 (local, 0) << ", " << _mm256_extract_epi32(local,1) << ", " << _mm256_extract_epi32(local,2) << ", " << _mm256_extract_epi32(local,3) << ", " << _mm256_extract_epi32(local,4) << ", " << _mm256_extract_epi32(local,5) << ", " << _mm256_extract_epi32(local,6) << ", " << _mm256_extract_epi32(local,7) << std::endl;
for (int l = 0; l < 8; ++l)
{
if (mask[l]) mask[l] = 0; else mask[l] = 1;
}
std::cout << _mm256_extract_epi32 (local, 0) << ", " << _mm256_extract_epi32(local,1) << ", " << _mm256_extract_epi32(local,2) << ", " << _mm256_extract_epi32(local,3) << ", " << _mm256_extract_epi32(local,4) << ", " << _mm256_extract_epi32(local,5) << ", " << _mm256_extract_epi32(local,6) << ", " << _mm256_extract_epi32(local,7) << std::endl;`
Я получаю 519, 519, 519, 519, 519, 519, 519, 519
для первого вывода и 0, 0, 0, 0, 0, 0, 0, 0
для второго, хотя они взяты из одного и того же регистра. Любая идея, как что-то подобное могло произойти?
local
иmask
, в том числе то, как эти переменные получают свои значения. - person 1201ProgramAlarm   schedule 25.01.2018