15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX512_ASSIGNPACKIMPL_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX512_ASSIGNPACKIMPL_H__ 25 #include <boost/type_traits/is_same.hpp> 26 #include <boost/type_traits/is_signed.hpp> 37 BasePack<ePackType::ePT_Avx512, T>
39 typename boost::enable_if_c<sizeof(T)==1>::type>::act(
const T& value)
41 BasePack<ePackType::ePT_Avx512, T> out;
42 out._val[0] = AssignReg<eInstructionSet::eIS_Avx512, T>::act(value);
50 typename boost::enable_if_c<sizeof(T)==1>::type>::act(
51 BasePack<ePackType::ePT_Avx512, T>& pack,
const T& value)
53 AssignReg<eInstructionSet::eIS_Avx512, T>::act(pack._val[0], value);
58 BasePack<ePackType::ePT_Avx512, T>
60 typename boost::enable_if_c<sizeof(T)==2>::type>::act(
const T& value)
62 const typename Avx512Type<T>::Type value512 = AssignReg<eInstructionSet::eIS_Avx512, T>::act(value);
63 BasePack<ePackType::ePT_Avx512, T> out;
64 out._val[0] = value512;
65 out._val[1] = value512;
73 typename boost::enable_if_c<sizeof(T)==2>::type>::act(
74 BasePack<ePackType::ePT_Avx512, T>& pack,
const T& value)
76 typename Avx512Type<T>::Type value512;
77 AssignReg<eInstructionSet::eIS_Avx512, T>::act(value512, value);
78 pack._val[0] = value512;
79 pack._val[1] = value512;
84 BasePack<ePackType::ePT_Avx512, T>
86 typename boost::enable_if_c<sizeof(T)==4>::type>::act(
const T& value)
88 const typename Avx512Type<T>::Type value512 = AssignReg<eInstructionSet::eIS_Avx512, T>::act(value);
89 BasePack<ePackType::ePT_Avx512, T> out;
90 out._val[0] = value512;
91 out._val[1] = value512;
92 out._val[2] = value512;
93 out._val[3] = value512;
101 typename boost::enable_if_c<sizeof(T)==4>::type>::act(
102 BasePack<ePackType::ePT_Avx512, T>& pack,
const T& value)
104 typename Avx512Type<T>::Type value512;
105 AssignReg<eInstructionSet::eIS_Avx512, T>::act(value512, value);
106 pack._val[0] = value512;
107 pack._val[1] = value512;
108 pack._val[2] = value512;
109 pack._val[3] = value512;
112 template <
typename T>
114 BasePack<ePackType::ePT_Avx512, T>
116 typename boost::enable_if_c<sizeof(T)==8>::type>::act(
const T& value)
118 const typename Avx512Type<T>::Type value512 =
119 AssignReg<eInstructionSet::eIS_Avx512, T>::act(value);
121 BasePack<ePackType::ePT_Avx512, T> out;
122 out._val[0] = value512;
123 out._val[1] = value512;
124 out._val[2] = value512;
125 out._val[3] = value512;
126 out._val[4] = value512;
127 out._val[5] = value512;
128 out._val[6] = value512;
129 out._val[7] = value512;
133 template <
typename T>
137 typename boost::enable_if_c<sizeof(T)==8>::type>::act(
138 BasePack<ePackType::ePT_Avx512, T>& pack,
const T& value)
140 typename Avx512Type<T>::Type value512;
141 AssignReg<eInstructionSet::eIS_Avx512, T>::act(value512, value);
142 pack._val[0] = value512;
143 pack._val[1] = value512;
144 pack._val[2] = value512;
145 pack._val[3] = value512;
146 pack._val[4] = value512;
147 pack._val[5] = value512;
148 pack._val[6] = value512;
149 pack._val[7] = value512;
161 #endif // __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX512_ASSIGNPACKIMPL_H__ Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
(including fundation and byte and word instructions)
Definition: InstructionSetTypes.h:51
Definition of import/export macro for library.