- #if defined(USE_AVX2)
- constexpr IndexType kNumChunks = kHalfDimensions / kSimdWidth;
- constexpr int kControl = 0b11011000;
- const __m256i kZero = _mm256_setzero_si256();
+ #if defined(USE_AVX512)
+ constexpr IndexType NumChunks = HalfDimensions / (SimdWidth * 2);
+ static_assert(HalfDimensions % (SimdWidth * 2) == 0);
+ const __m512i Control = _mm512_setr_epi64(0, 2, 4, 6, 1, 3, 5, 7);
+ const __m512i Zero = _mm512_setzero_si512();
+
+ #elif defined(USE_AVX2)
+ constexpr IndexType NumChunks = HalfDimensions / SimdWidth;
+ constexpr int Control = 0b11011000;
+ const __m256i Zero = _mm256_setzero_si256();