Я написал и отладил некоторый код AVX с помощью g ++, и теперь я пытаюсь заставить его работать с MSVC, но продолжаю получать
ошибка LNK2019: неразрешенный внешний символ __mm256_setr_epi64x, указанный в функции «private: union __m256i __thiscall avx_matrix :: avx_bit_mask (unsigned int) const» (? avx_bit_mask @ avx_matrix @@ ABE? AT__m256i @@ I @ Z)
Указанный фрагмент кода
...
#include <immintrin.h>
...
/* All zeros except for pos-th position (0..255) */
__m256i avx_matrix::avx_bit_mask(const std::size_t pos) const
{
int64_t a = (pos >= 0 && pos < 64) ? 1LL << (pos - 0) : 0;
int64_t b = (pos >= 64 && pos < 128) ? 1LL << (pos - 64) : 0;
int64_t c = (pos >= 128 && pos < 192) ? 1LL << (pos - 128) : 0;
int64_t d = (pos >= 192 && pos < 256) ? 1LL << (pos - 256) : 0;
return _mm256_setr_epi64x(a, b, c, d);
}
...
- Я включил
/arch:AVX
, но это не имеет значения. - Моя машина определенно поддерживает AVX - это тот же самый, что я использовал для исходного проекта Linux.
- Кроме того, http://msdn.microsoft.com/en-us/library/hh977022.aspx перечисляет
_mm256_setr_epi64x
среди доступных встроенных функций.
Любая помощь приветствуется.