I have written and debugged some AVX code with g++ and now I'm trying to get it to work with MSVC, but I keep getting
error LNK2019: unresolved external symbol __mm256_setr_epi64x referenced in function "private: union __m256i __thiscall avx_matrix::avx_bit_mask(unsigned int)const " (?avx_bit_mask@avx_matrix@@ABE?AT__m256i@@I@Z)
The referenced piece of code is
...
#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);
}
...
- I have enabled
/arch:AVX
, but it doesn't make any difference. - My machine definitely supports AVX - it is the same one I used for the original Linux project.
- Also, http://msdn.microsoft.com/en-us/library/hh977022.aspx lists
_mm256_setr_epi64x
among the available intrinsics.
Any help would be much appreciated.
See Question&Answers more detail:os