1 // -*- C++ -*- 2 /** @file */ 3 #pragma once 4 5 6 namespace arm_cmsis_dsp { 7 8 /** \addtogroup ARCH Architecture detection 9 * \ingroup DSPPP 10 * @{ 11 */ 12 13 /** 14 * Scalar architecture 15 */ 16 class Scalar {}; 17 18 /** 19 * Architecture supporting DSP extensions 20 */ 21 class DSP:public Scalar {}; 22 23 /** 24 * v8.1M Architecture 25 */ 26 class Helium:public DSP {}; 27 28 /** 29 * v8.2M Architecture 30 */ 31 class Helium82:public Helium {}; 32 33 /** 34 * Architecture supporting Neon 35 */ 36 class Neon:public Scalar {}; 37 38 /*! @} */ 39 40 } 41 42 #include "arch_detection.hpp" 43 44 45 #if defined(ARM_MATH_MVEI) || defined(ARM_MATH_MVEF) 46 #define ARCH Helium82 47 #elif defined(ARM_MATH_DSP) 48 #define ARCH DSP 49 #elif defined(ARM_MATH_NEON) 50 #define ARCH Neon 51 #else 52 #define ARCH Scalar 53 #endif 54 55 #define CURRENT_ARCH (ARCH*)nullptr 56 57 #if defined(ARM_MATH_MVEI) || defined(ARM_MATH_MVEF) || defined(ARM_MATH_DSP) || defined(ARM_MATH_NEON) 58 #define HAS_VECTOR 59 #endif 60 61 #if defined(ARM_MATH_MVEI) || defined(ARM_MATH_MVEF) 62 #define HAS_PREDICATED_LOOP 63 #endif 64 65