IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
IfElse0Reg.h
Go to the documentation of this file.
1 // IfElse0Reg.h:
3 // -----------------
4 //
14 
15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_COMMON_IFELSE0REG_H__
16 #define __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_COMMON_IFELSE0REG_H__
17 
24 
25 namespace ipsdk {
26 namespace simd {
27 namespace detail {
28 
31 
32 template <eInstructionSet::domain IS, typename T>
33 struct IfElse0Reg<
34  IS,
35  T,
36  typename boost::enable_if<
37  typename boost::mpl::not_equal_to<
38  boost::mpl::int_<IS>,
39  boost::mpl::int_<eInstructionSet::eIS_Standard>
40  >::type
41  >::type
42 >
43 {
44 
45 static IPSDK_FORCEINLINE
46 typename RegType<IS, T>::Type
47 act(const typename RegType<IS, T>::Type& mask,
48  const typename RegType<IS, T>::Type& in)
49 {
50  typename RegType<IS, T>::Type out;
51  act(mask, in, out);
52  return out;
53 }
54 
55 static IPSDK_FORCEINLINE
56 void
57 act(const typename RegMaskType<IS, T>::Type& mask,
58  const typename RegType<IS, T>::Type& in,
59  typename RegType<IS, T>::Type& out)
60 {
61  typename RegType<IS, T>::Type regFromMask;
62  CastReg<IS, T, T>::act(mask, regFromMask);
63  BitwiseAndReg<IS, T>::act(regFromMask, in, out);
64 }
65 
66 };
67 
70 
71 } // end of namespace detail
72 } // end of namespace simd
73 } // end of namespace ipsdk
74 
75 #endif // __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_COMMON_IFELSE0REG_H__
Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
Definition: CastReg.h:30
Definition: DataItemNodeHdrMacrosDetails.h:48
RegType class.
Definition: IfElse0Reg.h:33
Definition of import/export macro for library.
Definition: RegMaskType.h:29
Definition: RegType.h:29
Definition: BitwiseAndReg.h:30