IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
MaskPack.h
Go to the documentation of this file.
1 // MaskPack.h:
3 // ------------
4 //
14 
15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_MASKPACK_H__
16 #define __IPSDKUTIL_INSTRUCTIONSET_MASKPACK_H__
17 
20 
22 
23 namespace ipsdk {
24 namespace simd {
25 
28 
29 template <eInstructionSet::domain is, typename T, typename Enable=void>
30 struct MaskPack : public BaseMaskPack<simd::IS2PackType<is>::_packType, T>
31 {
32  MaskPack()
33  {
34  BOOST_STATIC_ASSERT_MSG(sizeof(T)==0, "invalid template arguments combination for MaskPack");
35  }
36 };
37 
38 template <typename T>
39 struct MaskPack<eInstructionSet::eIS_Standard, T> : public BaseMaskPack<ePackType::ePT_Scalar, T>
40 {
41 };
42 
43 template <typename T>
44 struct MaskPack<eInstructionSet::eIS_Sse2, T> : public BaseMaskPack<ePackType::ePT_Sse, T>
45 {
46 };
47 
48 template <typename T>
50  typename boost::enable_if_c<!boost::is_integral<T>::value>::type>
51 : public BaseMaskPack<ePackType::ePT_Avx, T>
52 {
53 };
54 
55 template <typename T>
56 struct MaskPack<eInstructionSet::eIS_Avx2, T> : public BaseMaskPack<ePackType::ePT_Avx, T>
57 {
58 };
59 
60 template <typename T>
62  typename boost::enable_if_c<!boost::is_integral<T>::value>::type>
63 : public BaseMaskPack<ePackType::ePT_Avx, T>
64 {
65 };
66 
67 template <typename T>
68 struct MaskPack<eInstructionSet::eIS_Avx512, T> : public BaseMaskPack<ePackType::ePT_Avx512, T>
69 {
70 };
71 
74 
75 } // end of namespace simd
76 } // end of namespace ipsdk
77 
78 #endif // __IPSDKUTIL_INSTRUCTIONSET_MASKPACK_H__
Fused multiply–add.
Definition: InstructionSetTypes.h:46
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
structure containing set of masks for vectorized operations
Definition: BaseMaskPackDecl.h:29
BaseMaskPack class; defines a set of masks; the number of masks in this set depends on the type of th...
Definition: MaskPack.h:30
(including fundation and byte and word instructions)
Definition: InstructionSetTypes.h:51
eInstructionSet
Enumerate for processor instruction set description.
Definition: InstructionSetTypes.h:31
Advanced Vector Extensions.
Definition: InstructionSetTypes.h:44
Advanced Vector Extensions 2.
Definition: InstructionSetTypes.h:48
Predefined types associated to instruction set management.
Definition of import/export macro for library.
Streaming SIMD Extensions 2.
Definition: InstructionSetTypes.h:36
compiler optimisations only
Definition: InstructionSetTypes.h:34