IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
PackDecl.h
Go to the documentation of this file.
1 // PackDecl.h:
3 // ------------
4 //
14 
15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_DETAIL_PACKDECL_H__
16 #define __IPSDKUTIL_INSTRUCTIONSET_DETAIL_PACKDECL_H__
17 
22 
23 namespace ipsdk {
24 namespace simd {
25 
28 
29 template <eInstructionSet::domain is, typename T, typename Enable=void>
30 struct Pack : public BasePack<simd::IS2PackType<is>::_packType, T>
31 {
32  Pack()
33  {
34  BOOST_STATIC_ASSERT_MSG(sizeof(T)==0, "invalid template arguments combination for Pack");
35  }
36 };
37 
38 template <typename T>
39 struct Pack<eInstructionSet::eIS_Standard, T> : public BasePack<ePackType::ePT_Scalar, T>
40 {
41 };
42 
43 template <typename T>
44 struct Pack<eInstructionSet::eIS_Sse2, T> : public BasePack<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 BasePack<ePackType::ePT_Avx, T>
52 {
53 };
54 
55 template <typename T>
56 struct Pack<eInstructionSet::eIS_Avx2, T> : public BasePack<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 BasePack<ePackType::ePT_Avx, T>
64 {
65 };
66 
67 template <typename T>
68 struct Pack<eInstructionSet::eIS_Avx512, T> : public BasePack<ePackType::ePT_Avx512, T>
69 {
70 };
71 
74 
75 } // end of namespace simd
76 } // end of namespace ipsdk
77 
78 #endif // __IPSDKUTIL_INSTRUCTIONSET_DETAIL_PACKDECL_H__
Definition: PackDecl.h:30
Fused multiply–add.
Definition: InstructionSetTypes.h:46
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
(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
structure containing intrinsic registers used to store vectorized data
Definition: BasePackDecl.h:29