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