Comments (10)
Looks like this intrinsic is not part of GCC 4.7, but it is part of GCC 4.8. It is not part of Clang 3.6, but it is in Clang 3.7. So, to use these kernels we need to be checking for compiler version & not building or using them if the compiler is too old.
from volk.
I'm aware of this and just haven't had time to think about how to handle it. I'll probably be able to get to it tomorrow evening along with the PR queue.
Note to anyone interested: Currently we glob to get all of the headers in kernels/volk/*.h. This might require changing that (lib/CMakeLists.txt:322) so we can include the new polar stuff conditionally based on the compiler version. The alternative is to add a new arch for this intrinsic which is pretty ugly.
from volk.
OK; glad you're aware of it. Taking a look at the CMakeLists.txt where you say, I'll let you take the lead on this. I'm happy to do testing & some tweaks, of course.
from volk.
I thought I might come up with something while this sat in the back of my mind while I recovered from grcon and caught up with other things. I think I'm mostly caught up with the rest of VOLK, but not much has come to mind on this issue. Any more insights on compiler versions?
from volk.
Yes. Testing this week (maybe even today). If it works I'll do a PR & note that here.
from volk.
Per discussion on IRC freenode #volk, looks like we can use _mm_srli_si128 instead of _mm_bsrli_si128. This intrinsic goes all the way back to LLVM 3.3 or earlier; GCC 4.2 or earlier. Very nice!
from volk.
replacing "s/_mm_bsrli_si128/_mm_srli_si128/g" works for me here, no special compiler checking needed!
from volk.
Do you want me to do a PR with this change? Seems simple enough, but it might save you a few steps.
from volk.
Yea, you can do a PR or I'll get around to when I get home tonight.
from volk.
PR issued.
from volk.
Related Issues (20)
- Undefined Behaviour in volk_8u_x4_conv_k7_r2_8u HOT 2
- qa_volk_16ic_x2_dot_prod_16ic is flaky HOT 1
- 64-bit integer testing is broken HOT 2
- lib/CMakeLists.txt: check_type_size("void*[8]" SIZEOF_CPU BUILTIN_TYPES_ONLY) empty HOT 1
- Undefined Behaviour in volk_32f_invsqrt_32f HOT 3
- volk_32f_invsqrt_32f is untested, may be buggy HOT 3
- Poor random numbers in uint tests. HOT 1
- Move to better test infrastructure HOT 3
- volk_8ic_x2_multiply_conjugate_16ic is not documented
- qa_volk_32fc_index_* are flaky HOT 1
- Various kernels with 16i inputs do not handle integer overflow consistently HOT 2
- AppVeyor builds sometimes fail HOT 1
- Add i386 to CI HOT 4
- VOLK_VERSION is too hard to actually use. HOT 9
- volk CMakeLists.txt uses CMAKE_INSTALL_LIBDIR without including the 'GNUInstallDirs' module HOT 6
- v3.1.0 volk_32fc_s32f_atan2_32f.h avx2 and avx2_fma kernels return NaN for an input element 0+0j HOT 1
- Remove LV_HAVE_LIB_SIMDMATH?
- volk_8u_conv_k7_r2puppet is broken
- (RHEL/Rocky Linux) cpu_features/CMakeLists.txt not found HOT 2
- lto-type-mismatch building HEAD
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from volk.