#pragma once #if (ENABLE_VECTORIZATION > 0) && !defined(_DEBUG) && !defined(DEBUG) #if defined(__clang__) && (__clang_major__ > 7) #define IS_SANITIZER \ ((__has_feature(address_sanitizer) == 1) || \ (__has_feature(memory_sanitizer) == 1) || \ (__has_feature(thread_sanitizer) == 1) || \ (__has_feature(undefined_sanitizer) == 1)) #if IS_SANITIZER == 0 #define VECTOR_LOOP _Pragma("clang loop vectorize(enable)") #define FAST_MATH _Pragma("clang fp contract(fast)") #define VECTORIZED_KERNEL 1 #endif #elif defined(_OPENMP) && (_OPENMP >= 201511) // Support with OpenMP4.5 and above #define VECTOR_LOOP _Pragma("omp for simd") #define VECTORIZED_KERNEL 1 #define FAST_MATH #endif #endif #ifndef VECTOR_LOOP // Not supported #define VECTOR_LOOP #define FAST_MATH #endif