1 // Copyright (c) 2018 Intel Corporation
2 //
3 // Permission is hereby granted, free of charge, to any person obtaining a copy
4 // of this software and associated documentation files (the "Software"), to deal
5 // in the Software without restriction, including without limitation the rights
6 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 // copies of the Software, and to permit persons to whom the Software is
8 // furnished to do so, subject to the following conditions:
9 //
10 // The above copyright notice and this permission notice shall be included in all
11 // copies or substantial portions of the Software.
12 //
13 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19 // SOFTWARE.
20 
21 #ifndef __OWNDEFS_H__
22 #define __OWNDEFS_H__
23 
24 #if defined( _VXWORKS )
25   #include <vxWorks.h>
26   #undef NONE
27 #endif
28 
29 #include "ippdefs.h"
30 
31 #if defined(__ICC) || defined(__ECC) || defined( __ICL ) || defined ( __ECL ) || defined(_MSC_VER)
32   #define __INLINE static __inline
33 #elif defined( __GNUC__ )
34   #define __INLINE static __inline__
35 #else
36   #define __INLINE static
37 #endif
38 
39 #if defined(__ICC) || defined(__ECC) || defined( __ICL ) || defined ( __ECL )
40  #define __RESTRICT restrict
41 #elif !defined( __RESTRICT )
42  #define __RESTRICT
43 #endif
44 
45 #if defined( IPP_W32DLL )
46   #if defined( _MSC_VER ) || defined( __ICL ) || defined ( __ECL )
47     #define IPPFUN(type,name,arg) __declspec(dllexport) type __STDCALL name arg
48   #else
49     #define IPPFUN(type,name,arg)                extern type __STDCALL name arg
50   #endif
51 #else
52   #define   IPPFUN(type,name,arg)                extern type __STDCALL name arg
53 #endif
54 
55 #if !defined ( _IA64) && (defined ( _WIN64 ) || defined( linux64 ))
56 #define _IA64
57 #endif
58 
59 //structure represeting 128 bit unsigned integer type
60 
61 typedef struct{
62   Ipp64u low;
63   Ipp64u high;
64 }Ipp128u;
65 
66 #define _IPP_PX 0
67 #define _IPP_M6 1
68 #define _IPP_A6 2
69 #define _IPP_W7 4
70 #define _IPP_T7 8
71 #define _IPP_V8 16
72 #define _IPP_P8 32
73 #define _IPP_G9 64
74 #define _IPP_H9 128
75 
76 #define _IPPXSC_PX 0
77 #define _IPPXSC_S1 1
78 #define _IPPXSC_S2 2
79 #define _IPPXSC_C2 4
80 
81 #define _IPPLRB_PX 0
82 #define _IPPLRB_B1 1
83 #define _IPPLRB_B2 2
84 
85 #define _IPP64_PX  _IPP_PX
86 #define _IPP64_I7 64
87 
88 #define _IPP32E_PX _IPP_PX
89 #define _IPP32E_M7 32
90 #define _IPP32E_U8 64
91 #define _IPP32E_Y8 128
92 #define _IPP32E_E9 256
93 #define _IPP32E_L9 512
94 
95 #define _IPPLP32_PX _IPP_PX
96 #define _IPPLP32_S8 1
97 
98 #define _IPPLP64_PX _IPP_PX
99 #define _IPPLP64_N8 1
100 
101 #if defined(__ICC) || defined(__ECC) || defined( __ICL ) || defined ( __ECL ) || (_MSC_VER >= 1300)
102     #define __ALIGN8  __declspec (align(8))
103     #define __ALIGN16 __declspec (align(16))
104 #if !defined( OSX32 )
105     #define __ALIGN32 __declspec (align(32))
106 #else
107     #define __ALIGN32 __declspec (align(16))
108 #endif
109     #define __ALIGN64 __declspec (align(64))
110 #else
111     #define __ALIGN8
112     #define __ALIGN16
113     #define __ALIGN32
114     #define __ALIGN64
115 #endif
116 
117 #if defined ( _M6 )
118   #define _IPP    _IPP_M6
119   #define _IPP64  _IPP64_PX
120   #define _IPP32E _IPP32E_PX
121   #define _IPPXSC _IPPXSC_PX
122   #define _IPPLRB _IPPLRB_PX
123   #define _IPPLP32 _IPPLP32_PX
124   #define _IPPLP64 _IPPLP64_PX
125 
126 #elif defined( _A6 )
127   #define _IPP    _IPP_A6
128   #define _IPP64  _IPP64_PX
129   #define _IPP32E _IPP32E_PX
130   #define _IPPXSC _IPPXSC_PX
131   #define _IPPLRB _IPPLRB_PX
132   #define _IPPLP32 _IPPLP32_PX
133   #define _IPPLP64 _IPPLP64_PX
134 
135 #elif defined( _W7 )
136   #define _IPP    _IPP_W7
137   #define _IPP64  _IPP64_PX
138   #define _IPP32E _IPP32E_PX
139   #define _IPPXSC _IPPXSC_PX
140   #define _IPPLRB _IPPLRB_PX
141   #define _IPPLP32 _IPPLP32_PX
142   #define _IPPLP64 _IPPLP64_PX
143 
144 #elif defined( _T7 )
145   #define _IPP    _IPP_T7
146   #define _IPP64  _IPP64_PX
147   #define _IPP32E _IPP32E_PX
148   #define _IPPXSC _IPPXSC_PX
149   #define _IPPLRB _IPPLRB_PX
150   #define _IPPLP32 _IPPLP32_PX
151   #define _IPPLP64 _IPPLP64_PX
152 
153 #elif defined( _V8 )
154   #define _IPP    _IPP_V8
155   #define _IPP64  _IPP64_PX
156   #define _IPP32E _IPP32E_PX
157   #define _IPPXSC _IPPXSC_PX
158   #define _IPPLRB _IPPLRB_PX
159   #define _IPPLP32 _IPPLP32_PX
160   #define _IPPLP64 _IPPLP64_PX
161 
162 #elif defined( _P8 )
163   #define _IPP    _IPP_P8
164   #define _IPP64  _IPP64_PX
165   #define _IPP32E _IPP32E_PX
166   #define _IPPXSC _IPPXSC_PX
167   #define _IPPLRB _IPPLRB_PX
168   #define _IPPLP32 _IPPLP32_PX
169   #define _IPPLP64 _IPPLP64_PX
170 
171 #elif defined( _G9 )
172   #define _IPP    _IPP_G9
173   #define _IPP64  _IPP64_PX
174   #define _IPP32E _IPP32E_PX
175   #define _IPPXSC _IPPXSC_PX
176   #define _IPPLRB _IPPLRB_PX
177   #define _IPPLP32 _IPPLP32_PX
178   #define _IPPLP64 _IPPLP64_PX
179 
180 #elif defined( _H9 )
181   #define _IPP    _IPP_H9
182   #define _IPP64  _IPP64_PX
183   #define _IPP32E _IPP32E_PX
184   #define _IPPXSC _IPPXSC_PX
185   #define _IPPLRB _IPPLRB_PX
186   #define _IPPLP32 _IPPLP32_PX
187   #define _IPPLP64 _IPPLP64_PX
188 
189 #elif defined( _M7 )
190   #define _IPP    _IPP_PX
191   #define _IPP64  _IPP64_PX
192   #define _IPP32E _IPP32E_M7
193   #define _IPPXSC _IPPXSC_PX
194   #define _IPPLRB _IPPLRB_PX
195   #define _IPPLP32 _IPPLP32_PX
196   #define _IPPLP64 _IPPLP64_PX
197 
198 #elif defined( _U8 )
199   #define _IPP    _IPP_PX
200   #define _IPP64  _IPP64_PX
201   #define _IPP32E _IPP32E_U8
202   #define _IPPXSC _IPPXSC_PX
203   #define _IPPLRB _IPPLRB_PX
204   #define _IPPLP32 _IPPLP32_PX
205   #define _IPPLP64 _IPPLP64_PX
206 
207 #elif defined( _Y8 )
208   #define _IPP    _IPP_PX
209   #define _IPP64  _IPP64_PX
210   #define _IPP32E _IPP32E_Y8
211   #define _IPPXSC _IPPXSC_PX
212   #define _IPPLRB _IPPLRB_PX
213   #define _IPPLP32 _IPPLP32_PX
214   #define _IPPLP64 _IPPLP64_PX
215 
216 #elif defined( _E9 )
217   #define _IPP    _IPP_PX
218   #define _IPP64  _IPP64_PX
219   #define _IPP32E _IPP32E_E9
220   #define _IPPXSC _IPPXSC_PX
221   #define _IPPLRB _IPPLRB_PX
222   #define _IPPLP32 _IPPLP32_PX
223   #define _IPPLP64 _IPPLP64_PX
224 
225 #elif defined( _L9 )
226   #define _IPP    _IPP_PX
227   #define _IPP64  _IPP64_PX
228   #define _IPP32E _IPP32E_L9
229   #define _IPPXSC _IPPXSC_PX
230   #define _IPPLRB _IPPLRB_PX
231   #define _IPPLP32 _IPPLP32_PX
232   #define _IPPLP64 _IPPLP64_PX
233 
234 #elif defined( _I7 )
235   #define _IPP    _IPP_PX
236   #define _IPP64  _IPP64_I7
237   #define _IPP32E _IPP32E_PX
238   #define _IPPXSC _IPPXSC_PX
239   #define _IPPLRB _IPPLRB_PX
240   #define _IPPLP32 _IPPLP32_PX
241   #define _IPPLP64 _IPPLP64_PX
242 
243 #elif defined( _B1 )
244   #define _IPP    _IPP_PX
245   #define _IPP64  _IPP64_PX
246   #define _IPP32E _IPP32E_PX
247   #define _IPPXSC _IPPXSC_PX
248   #define _IPPLRB _IPPLRB_B1
249   #define _IPPLP32 _IPPLP32_PX
250   #define _IPPLP64 _IPPLP64_PX
251 
252 #elif defined( _B2 )
253   #define _IPP    _IPP_PX
254   #define _IPP64  _IPP64_PX
255   #define _IPP32E _IPP32E_PX
256   #define _IPPXSC _IPPXSC_PX
257   #define _IPPLRB _IPPLRB_B2
258   #define _IPPLP32 _IPPLP32_PX
259   #define _IPPLP64 _IPPLP64_PX
260 
261 #elif defined( _S8 )
262   #define _IPP    _IPP_V8
263   #define _IPP64  _IPP64_PX
264   #define _IPP32E _IPP32E_PX
265   #define _IPPXSC _IPPXSC_PX
266   #define _IPPLRB _IPPLRB_PX
267   #define _IPPLP32 _IPPLP32_S8
268   #define _IPPLP64 _IPPLP64_PX
269 
270 #elif defined( _N8 )
271   #define _IPP    _IPP_PX
272   #define _IPP64  _IPP64_PX
273   #define _IPP32E _IPP32E_U8
274   #define _IPPXSC _IPPXSC_PX
275   #define _IPPLRB _IPPLRB_PX
276   #define _IPPLP32 _IPPLP32_PX
277   #define _IPPLP64 _IPPLP64_N8
278 
279 #elif defined( _StrongARM )
280   #define _IPP    _IPP_PX
281   #define _IPP64  _IPP64_PX
282   #define _IPP32E _IPP32E_PX
283   #define _IPPXSC _IPPXSC_S1
284   #define _PX    /* This string must be removed after migation period */
285   #define _IPPLRB _IPPLRB_PX
286   #define _IPPLP32 _IPPLP32_PX
287   #define _IPPLP64 _IPPLP64_PX
288 
289 #elif defined( _XScale )
290   #define _IPP    _IPP_PX
291   #define _IPP64  _IPP64_PX
292   #define _IPP32E _IPP32E_PX
293   #define _IPPXSC _IPPXSC_S2
294   #define _PX    /* This string must be removed after migation period */
295   #define _IPPLRB _IPPLRB_PX
296   #define _IPPLP32 _IPPLP32_PX
297   #define _IPPLP64 _IPPLP64_PX
298 
299 #elif defined( _XScale_Concan )
300   #define _IPP    _IPP_PX
301   #define _IPP64  _IPP64_PX
302   #define _IPP32E _IPP32E_PX
303   #define _IPPXSC _IPPXSC_C2
304   #define _PX    /* This string must be removed after migation period */
305   #define _IPPLRB _IPPLRB_PX
306   #define _IPPLP32 _IPPLP32_PX
307   #define _IPPLP64 _IPPLP64_PX
308 
309 #else
310   #define _IPP    _IPP_PX
311   #define _IPP64  _IPP64_PX
312   #define _IPP32E _IPP32E_PX
313   #define _IPPXSC _IPPXSC_PX
314   #define _IPPLRB _IPPLRB_PX
315   #define _IPPLP32 _IPPLP32_PX
316   #define _IPPLP64 _IPPLP64_PX
317 
318 #endif
319 
320 
321 #define _IPP_ARCH_IA32    1
322 #define _IPP_ARCH_IA64    2
323 #define _IPP_ARCH_EM64T   4
324 #define _IPP_ARCH_XSC     8
325 #define _IPP_ARCH_LRB     16
326 #define _IPP_ARCH_LP32    32
327 #define _IPP_ARCH_LP64    64
328 #define _IPP_ARCH_LRB2    128
329 
330 #if defined ( _ARCH_IA32 )
331   #define _IPP_ARCH    _IPP_ARCH_IA32
332 
333 #elif defined( _ARCH_IA64 )
334   #define _IPP_ARCH    _IPP_ARCH_IA64
335 
336 #elif defined( _ARCH_EM64T )
337   #define _IPP_ARCH    _IPP_ARCH_EM64T
338 
339 #elif defined( _ARCH_XSC )
340   #define _IPP_ARCH    _IPP_ARCH_XSC
341 
342 #elif defined( _ARCH_LRB )
343   #define _IPP_ARCH    _IPP_ARCH_LRB
344 
345 #elif defined( _ARCH_LRB2 )
346   #define _IPP_ARCH    _IPP_ARCH_LRB2
347 
348 #elif defined( _ARCH_LP32 )
349   #define _IPP_ARCH    _IPP_ARCH_LP32
350 
351 #elif defined( _ARCH_LP64 )
352   #define _IPP_ARCH    _IPP_ARCH_LP64
353 
354 #else
355   #if defined(_M_AMD64) || defined(__x86_64) || defined(__x86_64__)
356     #define _IPP_ARCH    _IPP_ARCH_EM64T
357 
358   #elif defined(_M_IA64) || defined(__ia64) || defined(__ia64__)
359     #define _IPP_ARCH    _IPP_ARCH_IA64
360 
361   #elif defined(_M_ARM) || defined(_ARM_) || defined(ARM) || defined(__arm__)
362     #define _IPP_ARCH    _IPP_ARCH_XSC
363 
364   #else
365     #define _IPP_ARCH    _IPP_ARCH_IA32
366 
367   #endif
368 #endif
369 
370 #if ((_IPP_ARCH == _IPP_ARCH_IA32) || (_IPP_ARCH == _IPP_ARCH_XSC) || (_IPP_ARCH == _IPP_ARCH_LP32))
371 __INLINE
IPP_INT_PTR(const void * ptr)372 Ipp32s IPP_INT_PTR( const void* ptr )  {
373     union {
374         void*   Ptr;
375         Ipp32s  Int;
376     } dd;
377     dd.Ptr = (void*)ptr;
378     return dd.Int;
379 }
380 
381 __INLINE
IPP_UINT_PTR(const void * ptr)382 Ipp32u IPP_UINT_PTR( const void* ptr )  {
383     union {
384         void*   Ptr;
385         Ipp32u  Int;
386     } dd;
387     dd.Ptr = (void*)ptr;
388     return dd.Int;
389 }
390 #elif ((_IPP_ARCH == _IPP_ARCH_IA64) || (_IPP_ARCH == _IPP_ARCH_EM64T) || (_IPP_ARCH == _IPP_ARCH_LRB) || (_IPP_ARCH == _IPP_ARCH_LRB2) || (_IPP_ARCH == _IPP_ARCH_LP64))
391 __INLINE
IPP_INT_PTR(const void * ptr)392 Ipp64s IPP_INT_PTR( const void* ptr )  {
393     union {
394         void*   Ptr;
395         Ipp64s  Int;
396     } dd;
397     dd.Ptr = (void*)ptr;
398     return dd.Int;
399 }
400 
401 __INLINE
IPP_UINT_PTR(const void * ptr)402 Ipp64u IPP_UINT_PTR( const void* ptr )  {
403     union {
404         void*    Ptr;
405         Ipp64u   Int;
406     } dd;
407     dd.Ptr = (void*)ptr;
408     return dd.Int;
409 }
410 #else
411   #define IPP_INT_PTR( ptr )  ( (long)(ptr) )
412   #define IPP_UINT_PTR( ptr ) ( (unsigned long)(ptr) )
413 #endif
414 
415 #define IPP_BYTES_TO_ALIGN(ptr, align) ((-(IPP_INT_PTR(ptr)&((align)-1)))&((align)-1))
416 #define IPP_ALIGNED_PTR(ptr, align) (void*)( (unsigned char*)(ptr) + (IPP_BYTES_TO_ALIGN( ptr, align )) )
417 
418 #define IPP_MALLOC_ALIGNED_BYTES   64
419 
420 #if defined( __cplusplus )
421 extern "C" {
422 #endif
423 
424 /* /////////////////////////////////////////////////////////////////////////////
425            Helpers
426   /////////////////////////////////////////////////////////////////////////// */
427 
428 #define IPP_NOERROR_RET()  return ippStsNoErr
429 #define IPP_ERROR_RET( ErrCode )  return (ErrCode)
430 
431 #ifdef _IPP_DEBUG
432 
433     #define IPP_BADARG_RET( expr, ErrCode )\
434                 {if (expr) { IPP_ERROR_RET( ErrCode ); }}
435 
436 #else
437 
438     #define IPP_BADARG_RET( expr, ErrCode )
439 
440 #endif
441 
442 
443     #define IPP_BAD_SIZE_RET( n )\
444                 IPP_BADARG_RET( (n)<=0, ippStsSizeErr )
445 
446     #define IPP_BAD_STEP_RET( n )\
447                 IPP_BADARG_RET( (n)<=0, ippStsStepErr )
448 
449     #define IPP_BAD_PTR1_RET( ptr )\
450                 IPP_BADARG_RET( NULL==(ptr), ippStsNullPtrErr )
451 
452     #define IPP_BAD_PTR2_RET( ptr1, ptr2 )\
453                 IPP_BADARG_RET(((NULL==(ptr1))||(NULL==(ptr2))), ippStsNullPtrErr)
454 
455     #define IPP_BAD_PTR3_RET( ptr1, ptr2, ptr3 )\
456                 IPP_BADARG_RET(((NULL==(ptr1))||(NULL==(ptr2))||(NULL==(ptr3))),\
457                                                          ippStsNullPtrErr)
458 
459     #define IPP_BAD_PTR4_RET( ptr1, ptr2, ptr3, ptr4 )\
460                 {IPP_BAD_PTR2_RET( ptr1, ptr2 ); IPP_BAD_PTR2_RET( ptr3, ptr4 )}
461 
462     #define IPP_BAD_ISIZE_RET(roi) \
463                IPP_BADARG_RET( ((roi).width<=0 || (roi).height<=0), ippStsSizeErr)
464 
465 
466 /* ////////////////////////////////////////////////////////////////////////// */
467 
468 /* Define NULL pointer value */
469 #ifndef NULL
470 #ifdef  __cplusplus
471 #define NULL    0
472 #else
473 #define NULL    ((void *)0)
474 #endif
475 #endif
476 
477 #define UNREFERENCED_PARAMETER(p) (p)=(p)
478 
479 #if defined( _IPP_MARK_LIBRARY )
480 static char G[] = {73, 80, 80, 71, 101, 110, 117, 105, 110, 101, 243, 193, 210, 207, 215};
481 #endif
482 
483 
484 #define STR2(x)           #x
485 #define STR(x)       STR2(x)
486 #define MESSAGE( desc )\
487      message(__FILE__ "(" STR(__LINE__) "):" #desc)
488 
489 /* ////////////////////////////////////////////////////////////////////////// */
490 
491 /* intrinsics */
492 #if (_IPPXSC >= _IPPXSC_C2)
493     #if defined(__INTEL_COMPILER)
494         #include "mmintrin.h"
495     #endif
496 #elif (_IPP64 >= _IPP64_I7)
497     #if defined(__INTEL_COMPILER)
498 //        #define _SSE2_INTEGER_FOR_ITANIUM
499         #include "ia64intrin.h"
500         #include "emmintrin.h"
501     #endif
502 #elif (_IPP >= _IPP_A6) || (_IPP32E >= _IPP32E_M7)
503     #if defined(__INTEL_COMPILER) || (_MSC_VER >= 1300)
504         #if (_IPP == _IPP_A6)
505             #include "xmmintrin.h"
506         #elif (_IPP == _IPP_W7)
507             #if defined(__INTEL_COMPILER)
508               #include "emmintrin.h"
509             #else
510               #undef _W7
511               #include "emmintrin.h"
512               #define _W7
513             #endif
514             #define _mm_loadu _mm_loadu_si128
515         #elif (_IPP == _IPP_T7) || (_IPP32E == _IPP32E_M7)
516             #if defined(__INTEL_COMPILER)
517                 #include "pmmintrin.h"
518                 #define _mm_loadu _mm_lddqu_si128
519             #elif (_MSC_FULL_VER >= 140050110)
520                 #include "intrin.h"
521                 #define _mm_loadu _mm_lddqu_si128
522             #elif (_MSC_FULL_VER < 140050110)
523                 #include "emmintrin.h"
524                 #define _mm_loadu _mm_loadu_si128
525             #endif
526         #elif (_IPP == _IPP_V8) || (_IPP32E == _IPP32E_U8)
527             #if defined(__INTEL_COMPILER)
528                 #include "tmmintrin.h"
529                 #define _mm_loadu _mm_lddqu_si128
530             #elif (_MSC_FULL_VER >= 140050110)
531                 #include "intrin.h"
532                 #define _mm_loadu _mm_lddqu_si128
533             #elif (_MSC_FULL_VER < 140050110)
534                 #include "emmintrin.h"
535                 #define _mm_loadu _mm_loadu_si128
536             #endif
537         #elif (_IPP == _IPP_P8) || (_IPP32E == _IPP32E_Y8)
538             #if defined(__INTEL_COMPILER)
539                 #include "smmintrin.h"
540                 #define _mm_loadu _mm_lddqu_si128
541             #elif (_MSC_FULL_VER >= 140050110)
542                 #include "intrin.h"
543                 #define _mm_loadu _mm_lddqu_si128
544             #elif (_MSC_FULL_VER < 140050110)
545                 #include "emmintrin.h"
546                 #define _mm_loadu _mm_loadu_si128
547             #endif
548         #elif (_IPP >= _IPP_G9) || (_IPP32E >= _IPP32E_E9)
549             #if defined(__INTEL_COMPILER)
550                 #include "immintrin.h"
551                 #define _mm_loadu _mm_lddqu_si128
552             #elif (_MSC_FULL_VER >= 160021003)
553                 #include "immintrin.h"
554                 #define _mm_loadu _mm_lddqu_si128
555             #endif
556         #endif
557     #endif
558 #elif (_IPPLP32 >= _IPPLP32_S8) || (_IPPLP64 >= _IPPLP64_N8)
559     #if defined(__INTEL_COMPILER)
560         #include "tmmintrin.h"
561         #define _mm_loadu _mm_lddqu_si128
562     #elif (_MSC_FULL_VER >= 140050110)
563         #include "intrin.h"
564         #define _mm_loadu _mm_lddqu_si128
565     #elif (_MSC_FULL_VER < 140050110)
566         #include "emmintrin.h"
567         #define _mm_loadu _mm_loadu_si128
568     #endif
569 #elif (_IPPLRB >= _IPPLRB_B1)
570     #if defined(__INTEL_COMPILER) || defined(_REF_LIB)
571         #include "immintrin.h"
572     #endif
573     #if defined (_REF_LIB)
574         extern void lmmintrin_init(void);
575     #endif
576 #endif
577 
578 // **** intrinsics for bit casting ****
579 //unsigned int      __intel_castf32_u32(float)
580 //float             __intel_castu32_f32(unsigned int)
581 //unsigned __int64  __intel_castf64_u64(double)
582 //double            __intel_castu64_f64(unsigned __int64)
583 #if defined(__ICC) || defined(__ECC) || defined( __ICL ) || defined ( __ECL )
584  #define __CAST_32f32u(val) __intel_castf32_u32((Ipp32f)val)
585  #define __CAST_32u32f(val) __intel_castu32_f32((Ipp32u)val)
586 #else
587  #define __CAST_32f32u(val) ( *((Ipp32u*)&val) )
588  #define __CAST_32u32f(val) ( *((Ipp32f*)&val) )
589 #endif
590 
591 
592 #if defined(__INTEL_COMPILER)
593 #define __IVDEP ivdep
594 #else
595 #define __IVDEP message("message :: 'ivdep' is not defined")
596 #endif
597 //usage: #pragma __IVDEP
598 
599 /* ////////////////////////////////////////////////////////////////////////// */
600 #if (((_IPP > _IPP_PX) || (_IPP32E > _IPP32E_PX) || \
601       (_IPPLP32 > _IPPLP32_PX) || (_IPPLP64 > _IPPLP64_PX) || \
602       (_IPP64 > _IPP64_PX) || (_IPPLRB > _IPPLRB_PX)) && defined(_MERGED_BLD))
603   #define _NOT_PX_MERGED_BLD
604 #endif
605 
606 
607 /* ////////////////////////////////////////////////////////////////////////// */
608 
609 /* header depended on the architecture */
610 
611 #ifndef __DEPENDENCESP_H__
612   #include "dependencesp.h"
613 #endif
614 
615 #ifndef __DEPENDENCEIP_H__
616   #include "dependenceip.h"
617 #endif
618 
619 
620 #if defined( __cplusplus )
621 }
622 #endif
623 
624 #endif /* __OWNDEFS_H__ */
625 /* //////////////////////// End of file "owndefs.h" ///////////////////////// */
626