15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_COMMON_POLYNOMREG_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_COMMON_POLYNOMREG_H__ 19 #include <IPSDKUtil/InstructionSet/Arithmetic/detail/PolynomReg.h> 20 #include <IPSDKUtil/InstructionSet/Arithmetic/detail/FmaddReg.h> 26 #include <boost/preprocessor/repetition/enum_params.hpp> 35 #define DEFINE_POLYNOMREG(N) \ 36 template <eInstructionSet::domain IS, eInstructionSet::domain ISFma, typename T> \ 37 struct PolynomReg <IS, ISFma, N, T> \ 39 static IPSDK_FORCEINLINE \ 40 typename RegType<IS, T>::Type \ 41 act(const typename RegType<IS, T>::Type& in, \ 42 BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(N), const T& c)) \ 44 typename RegType<IS, T>::Type out; \ 45 act(in, BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(N), c), out); \ 49 static IPSDK_FORCEINLINE \ 51 act(const typename RegType<IS, T>::Type& x, \ 52 BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(N), const T& c), \ 53 typename RegType<IS, T>::Type& out) \ 55 typedef typename RegType<IS, T>::Type Reg; \ 57 PolynomReg<IS, ISFma, BOOST_PP_DEC(N), T>::act(x, BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_INC(N), c), tmp); \ 59 AssignReg<IS, T>::act(r0, c0); \ 60 FmaddReg<ISFma, T>::act(x, tmp, r0, out); \ 87 static IPSDK_FORCEINLINE
98 static IPSDK_FORCEINLINE
120 #endif // __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_SSE2_FLOORREG_H__ template structure which is specialized to implement the computation of a polynom of degree 8 applied...
Definition: PolynomReg.h:43
Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
Definition: FmaddReg.h:37
eInstructionSet
Enumerate for processor instruction set description.
Definition: InstructionSetTypes.h:31
Definition of import/export macro for library.
Definition: AssignRegDecl.h:31