IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
MaxRegImpl.h
Go to the documentation of this file.
1 // MaxRegImpl.h:
3 // -------------------
4 //
14 
15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_AVX2_MAXREGIMPL_H__
16 #define __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_AVX2_MAXREGIMPL_H__
17 
22 
23 namespace ipsdk {
24 namespace simd {
25 namespace detail {
26 
29 
32 AvxType<ipUInt8>::Type
34  const AvxType<ipUInt8>::Type& in1,
35  const AvxType<ipUInt8>::Type& in2)
36 {
37  return _mm256_max_epu8(in1, in2);
38 }
39 
40 void
42  const AvxType<ipUInt8>::Type& in1,
43  const AvxType<ipUInt8>::Type& in2,
45 {
46  out = _mm256_max_epu8(in1, in2);
47 }
48 
53  const AvxType<ipInt8>::Type& in1,
54  const AvxType<ipInt8>::Type& in2)
55 {
56  return _mm256_max_epi8(in1, in2);
57 }
58 
59 void
61  const AvxType<ipInt8>::Type& in1,
62  const AvxType<ipInt8>::Type& in2,
64 {
65  out = _mm256_max_epi8(in1, in2);
66 }
67 
72  const AvxType<ipUInt16>::Type& in1,
73  const AvxType<ipUInt16>::Type& in2)
74 {
75  return _mm256_max_epu16(in1, in2);
76 }
77 
78 void
80  const AvxType<ipUInt16>::Type& in1,
81  const AvxType<ipUInt16>::Type& in2,
83 {
84  out = _mm256_max_epu16(in1, in2);
85 }
86 
91  const AvxType<ipInt16>::Type& in1,
92  const AvxType<ipInt16>::Type& in2)
93 {
94  return _mm256_max_epi16(in1, in2);
95 }
96 
97 void
99  const AvxType<ipInt16>::Type& in1,
100  const AvxType<ipInt16>::Type& in2,
102 {
103  out = _mm256_max_epi16(in1, in2);
104 }
105 
110  const AvxType<ipUInt32>::Type& in1,
111  const AvxType<ipUInt32>::Type& in2)
112 {
113  return _mm256_max_epu32(in1, in2);
114 }
115 
116 void
118  const AvxType<ipUInt32>::Type& in1,
119  const AvxType<ipUInt32>::Type& in2,
121 {
122  out = _mm256_max_epu32(in1, in2);
123 }
124 
129  const AvxType<ipInt32>::Type& in1,
130  const AvxType<ipInt32>::Type& in2)
131 {
132  return _mm256_max_epi32(in1, in2);
133 }
134 
135 void
137  const AvxType<ipInt32>::Type& in1,
138  const AvxType<ipInt32>::Type& in2,
140 {
141  out = _mm256_max_epi32(in1, in2);
142 }
143 
148  const AvxType<ipReal32>::Type& in1,
149  const AvxType<ipReal32>::Type& in2)
150 {
152 }
153 
154 void
156  const AvxType<ipReal32>::Type& in1,
157  const AvxType<ipReal32>::Type& in2,
159 {
161 }
162 
167  const AvxType<ipReal64>::Type& in1,
168  const AvxType<ipReal64>::Type& in2)
169 {
171 }
172 
173 void
175  const AvxType<ipReal64>::Type& in1,
176  const AvxType<ipReal64>::Type& in2,
178 {
180 }
181 
184 
185 } // end of namespace detail
186 } // end of namespace simd
187 } // end of namespace ipsdk
188 
189 #endif // __IPSDKUTIL_INSTRUCTIONSET_ARITHMETIC_DETAIL_AVX2_MAXREGIMPL_H__
Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
template structure which is specialized to implement the maximum computation on 2 scalars or 2 regist...
Predefined types for Avx instruction set management.
Definition: MaxRegDecl.h:29
Definition of import/export macro for library.
structure used to retrieve AVX type associated to a base type
Definition: AvxTypes.h:33