UME::SIMD master (5785acb) does not compile with GCC (AVX2 plugin)

Issue #42 new
Guilherme Amadio created an issue

I encountered the following problem when compiling VecCore with UME::SIMD backend enabled:

/home/amadio/src/umesimd/plugins/avx2/uint/UMESimdVecUint64_4.h: In member function ‘UME::SIMD::SIMDVec_u<long unsigned int, 4u>& UME::SIMD::SIMDVec_u<long unsigned int, 4u>::load(const UME::SIMD::SIMDVecMask<4u>&, const uint64_t*)’:
/home/amadio/src/umesimd/plugins/avx2/uint/UMESimdVecUint64_4.h:186:43: error: ‘__int64’ was not declared in this scope
             mVec = _mm256_maskload_epi64((__int64 const*)p, t0);
                                           ^
/home/amadio/src/umesimd/plugins/avx2/uint/UMESimdVecUint64_4.h:186:51: error: expected ‘)’ before ‘const’
             mVec = _mm256_maskload_epi64((__int64 const*)p, t0);
                                                   ^
/home/amadio/src/umesimd/plugins/avx2/uint/UMESimdVecUint64_4.h: In member function ‘UME::SIMD::SIMDVec_u<long unsigned int, 4u>& UME::SIMD::SIMDVec_u<long unsigned int, 4u>::loada(const UME::SIMD::SIMDVecMask<4u>&, const uint64_t*)’:
/home/amadio/src/umesimd/plugins/avx2/uint/UMESimdVecUint64_4.h:197:43: error: ‘__int64’ was not declared in this scope
             mVec = _mm256_maskload_epi64((__int64 const*)p, t0);
                                           ^
/home/amadio/src/umesimd/plugins/avx2/uint/UMESimdVecUint64_4.h:197:51: error: expected ‘)’ before ‘const’
             mVec = _mm256_maskload_epi64((__int64 const*)p, t0);
                                                   ^
/home/amadio/src/umesimd/plugins/avx2/uint/UMESimdVecUint64_4.h: In member function ‘uint64_t* UME::SIMD::SIMDVec_u<long unsigned int, 4u>::store(const UME::SIMD::SIMDVecMask<4u>&, uint64_t*) const’:
/home/amadio/src/umesimd/plugins/avx2/uint/UMESimdVecUint64_4.h:208:37: error: ‘__int64’ was not declared in this scope
             _mm256_maskstore_epi64((__int64 *)p, t0, mVec);
                                     ^
/home/amadio/src/umesimd/plugins/avx2/uint/UMESimdVecUint64_4.h:208:46: error: expected primary-expression before ‘)’ token
             _mm256_maskstore_epi64((__int64 *)p, t0, mVec);
                                              ^
/home/amadio/src/umesimd/plugins/avx2/uint/UMESimdVecUint64_4.h: In member function ‘uint64_t* UME::SIMD::SIMDVec_u<long unsigned int, 4u>::storea(const UME::SIMD::SIMDVecMask<4u>&, uint64_t*) const’:
/home/amadio/src/umesimd/plugins/avx2/uint/UMESimdVecUint64_4.h:219:37: error: ‘__int64’ was not declared in this scope
             _mm256_maskstore_epi64((__int64 *)p, t0, mVec);
                                     ^
/home/amadio/src/umesimd/plugins/avx2/uint/UMESimdVecUint64_4.h:219:46: error: expected primary-expression before ‘)’ token
             _mm256_maskstore_epi64((__int64 *)p, t0, mVec);
                                              ^
make[2]: *** [test/CMakeFiles/Math.dir/build.make:63: test/CMakeFiles/Math.dir/mathtest.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:94: test/CMakeFiles/Math.dir/all] Error 2
make: *** [Makefile:139: all] Error 2

Comments (2)

  1. edanor repo owner

    Seems like GCC is missing some intrinsics. I've put a local workaround for that. Let me know if it works now.

  2. Log in to comment