IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
InstructionSetTypes.h
Go to the documentation of this file.
1 // InstructionSetTypes.h:
3 // ----------------------
4 //
14 
15 #ifndef __IPSDKUTIL_INSTRUCTIONSETTYPES_H__
16 #define __IPSDKUTIL_INSTRUCTIONSETTYPES_H__
17 
18 #include <IPSDKUtil/BaseTypes.h>
20 #include <set>
21 
22 namespace ipsdk {
23 
26 
30 
33  (eIS_Standard)
34 
37 
39  (eIS_Sse3)
40 
43 
45  (eIS_Sse42)
46 
49 
52 
54  (eIS_Avx2)
55 
58  (eIS_Avx512)
59 )
60 
64 
66  (eISA_None)
67 
70 
72  (eISA_16Bytes)
73 
75  (eISA_32Bytes)
76 
78  (eISA_64Bytes)
79 )
80 
83 
86 
89 
95 template <eInstructionSet::domain instructionSet>
96 struct ISAlignmentType
97 {
98 
99 };
100 
103 #define IPSDK_INSTRUCTIONSET_TO_ALIGNMENT_TYPE(instructionSet, alignmentType) \
104  template<> struct ISAlignmentType<instructionSet> { \
105  static const eISAlignment::domain g_alignmentType = alignmentType; \
106  };
107 
108 
121 
127 template <eISAlignment::domain alignment>
128 struct ISAlignmentSize
129 {
130 
131 };
132 
135 #define IPSDK_ALIGNMENT_TYPE_TO_SIZE(alignmentType, size) \
136  template<> struct ISAlignmentSize<alignmentType> { \
137  static const ipUInt8 g_size = size; \
138  };
139 
140 
149 
152 
153 } // end of namespace ipsdk
154 
155 #endif // __IPSDKUTIL_INSTRUCTIONSETTYPES_H__
Fused multiply–add.
Definition: InstructionSetTypes.h:46
std::set< eInstructionSet > InstructionSetColl
instruction set collection
Definition: InstructionSetTypes.h:77
IPSDK_FORCEINLINE void set(T *buffer, T value, ipUInt64 nbElts)
set function; assigns a given value to the &#39;nbElts&#39; elements of a buffer
Definition: set.h:34
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
8 bytes alignment
Definition: InstructionSetTypes.h:63
32 bytes alignment
Definition: InstructionSetTypes.h:67
Streaming SIMD Extensions 4.1.
Definition: InstructionSetTypes.h:40
64 bytes alignment
Definition: InstructionSetTypes.h:69
(including fundation and byte and word instructions)
Definition: InstructionSetTypes.h:51
Base types for multiplatform compatibility.
eInstructionSet
Enumerate for processor instruction set description.
Definition: InstructionSetTypes.h:31
Advanced Vector Extensions.
Definition: InstructionSetTypes.h:44
No alignment.
Definition: InstructionSetTypes.h:61
IPSDK_ALIGNMENT_TYPE_TO_SIZE(eISAlignment::eISA_None, 1)
Advanced Vector Extensions 2.
Definition: InstructionSetTypes.h:48
IPSDK_INSTRUCTIONSET_TO_ALIGNMENT_TYPE(eInstructionSet::eIS_Standard, eISAlignment::eISA_None)
Streaming SIMD Extensions 4.2.
Definition: InstructionSetTypes.h:42
Streaming SIMD Extensions 3.
Definition: InstructionSetTypes.h:38
eISAlignment
Enumerate describing memory data alignments.
Definition: InstructionSetTypes.h:59
16 bytes alignment
Definition: InstructionSetTypes.h:65
STL namespace.
Streaming SIMD Extensions 2.
Definition: InstructionSetTypes.h:36
Predefined macros for enumerates management.
compiler optimisations only
Definition: InstructionSetTypes.h:34
#define IPSDK_ENUM(enumTypeStr, enumSeq)
macro allowing to declare an enumerate for library
Definition: EnumMacros.h:26