README.md
1 The files in this directory are compiled multiple times for different CPU vector instruction
2 sets (e.g. AVX, AVX2). The purpose of putting code in this directory is to make
3 sure we can generate the optimal code for a given processor's vector
4 capabilities. Much of this is done via preprocessor guards in vec256_qint.h.
5
6 The considerations for code written in this directory include:
7 - Keep code in this directory to a minimum, since we're compiling it several
8 times.
9 - All code in this file should go through the DECLARE_DISPATCH,
10 DEFINE_DISPATCH, and REGISTER_DISPATCH mechanism to ensure the correct
11 runtime dispatch occurs.
12 - THE CODE MUST RESIDE IN THE ANONYMOUS NAMESPACE. FAILURE TO ENSURE THIS
13 IS THE CASE CAN LEAD TO HARD-TO-DEBUG ODR VIOLATIONS.
14 - **Make sure different variants of the code (AVX, AVX2) are tested!**
15 There are build variants that do things like have NO AVX and NO AVX2 in
16 CI. Make sure they work!
17