STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
tmmintrin.h
Go to the documentation of this file.
1 /***
2 *** Copyright (C) 1985-2005 Intel Corporation. All rights reserved.
3 ***
4 *** The information and source code contained herein is the exclusive
5 *** property of Intel Corporation and may not be disclosed, examined
6 *** or reproduced in whole or in part without explicit written authorization
7 *** from the company.
8 ***
9 ****/
10 
11 #pragma once
12 #ifndef __midl
13 #ifndef _INCLUDED_TMM
14 #define _INCLUDED_TMM
15 
16 #if defined (_M_CEE_PURE)
17  #error ERROR: XMM intrinsics not supported in the pure mode!
18 #else /* defined (_M_CEE_PURE) */
19 
20 #include <pmmintrin.h>
21 
22 #ifdef _MM2_FUNCTIONALITY
23 /* support old notation */
24 #ifndef _MM_FUNCTIONALITY
25 #define _MM_FUNCTIONALITY
26 #endif /* _MM_FUNCTIONALITY */
27 #endif /* _MM2_FUNCTIONALITY */
28 
29 #ifdef __cplusplus
30 extern "C" {
31 #endif /* __cplusplus */
32 
33  // Add horizonally packed [saturated] words, double words,
34  // {X,}MM2/m{128,64} (b) to {X,}MM1 (a).
35 
36  extern __m128i _mm_hadd_epi16 (__m128i a, __m128i b);
37  extern __m128i _mm_hadd_epi32 (__m128i a, __m128i b);
38  extern __m128i _mm_hadds_epi16 (__m128i a, __m128i b);
39 
40  extern __m64 _mm_hadd_pi16 (__m64 a, __m64 b);
41  extern __m64 _mm_hadd_pi32 (__m64 a, __m64 b);
42  extern __m64 _mm_hadds_pi16 (__m64 a, __m64 b);
43 
44  // Subtract horizonally packed [saturated] words, double words,
45  // {X,}MM2/m{128,64} (b) from {X,}MM1 (a).
46 
47  extern __m128i _mm_hsub_epi16 (__m128i a, __m128i b);
48  extern __m128i _mm_hsub_epi32 (__m128i a, __m128i b);
49  extern __m128i _mm_hsubs_epi16 (__m128i a, __m128i b);
50 
51  extern __m64 _mm_hsub_pi16 (__m64 a, __m64 b);
52  extern __m64 _mm_hsub_pi32 (__m64 a, __m64 b);
53  extern __m64 _mm_hsubs_pi16 (__m64 a, __m64 b);
54 
55  // Multiply and add packed words,
56  // {X,}MM2/m{128,64} (b) to {X,}MM1 (a).
57 
59 
60  extern __m64 _mm_maddubs_pi16 (__m64 a, __m64 b);
61 
62  // Packed multiply high integers with round and scaling,
63  // {X,}MM2/m{128,64} (b) to {X,}MM1 (a).
64 
66 
67  extern __m64 _mm_mulhrs_pi16 (__m64 a, __m64 b);
68 
69  // Packed shuffle bytes
70  // {X,}MM2/m{128,64} (b) by {X,}MM1 (a).
71 
73 
74  extern __m64 _mm_shuffle_pi8 (__m64 a, __m64 b);
75 
76  // Packed byte, word, double word sign, {X,}MM2/m{128,64} (b) to
77  // {X,}MM1 (a).
78 
79  extern __m128i _mm_sign_epi8 (__m128i a, __m128i b);
80  extern __m128i _mm_sign_epi16 (__m128i a, __m128i b);
81  extern __m128i _mm_sign_epi32 (__m128i a, __m128i b);
82 
83  extern __m64 _mm_sign_pi8 (__m64 a, __m64 b);
84  extern __m64 _mm_sign_pi16 (__m64 a, __m64 b);
85  extern __m64 _mm_sign_pi32 (__m64 a, __m64 b);
86 
87  // Packed align and shift right by n*8 bits,
88  // {X,}MM2/m{128,64} (b) to {X,}MM1 (a).
89 
90  extern __m128i _mm_alignr_epi8 (__m128i a, __m128i b, int n);
91 
92  extern __m64 _mm_alignr_pi8 (__m64 a, __m64 b, int n);
93 
94  // Packed byte, word, double word absolute value,
95  // {X,}MM2/m{128,64} (b) to {X,}MM1 (a).
96 
97  extern __m128i _mm_abs_epi8 (__m128i a);
98  extern __m128i _mm_abs_epi16 (__m128i a);
99  extern __m128i _mm_abs_epi32 (__m128i a);
100 
101  extern __m64 _mm_abs_pi8 (__m64 a);
102  extern __m64 _mm_abs_pi16 (__m64 a);
103  extern __m64 _mm_abs_pi32 (__m64 a);
104 
105 #ifdef __cplusplus
106 };
107 #endif /* __cplusplus */
108 
109 #endif /* defined (_M_CEE_PURE) */
110 
111 #endif /* _INCLUDED_TMM */
112 
113 #endif /* __midl */
__m128i _mm_hsub_epi16(__m128i a, __m128i b)
__m128i _mm_hadd_epi16(__m128i a, __m128i b)
__m128i _mm_sign_epi32(__m128i a, __m128i b)
__m128i _mm_shuffle_epi8(__m128i a, __m128i b)
__m64 _mm_sign_pi8(__m64 a, __m64 b)
__m64 _mm_hsub_pi16(__m64 a, __m64 b)
__m64 _mm_hsub_pi32(__m64 a, __m64 b)
__m128i _mm_hsubs_epi16(__m128i a, __m128i b)
__m64 _mm_hsubs_pi16(__m64 a, __m64 b)
__m64 _mm_hadd_pi16(__m64 a, __m64 b)
__m128i _mm_mulhrs_epi16(__m128i a, __m128i b)
__m64 _mm_maddubs_pi16(__m64 a, __m64 b)
__m64 _mm_hadds_pi16(__m64 a, __m64 b)
__m64 _mm_mulhrs_pi16(__m64 a, __m64 b)
__m64 _mm_abs_pi8(__m64 a)
__m64
Definition: mmintrin.h:42
__m64 _mm_alignr_pi8(__m64 a, __m64 b, int n)
__m128i _mm_sign_epi8(__m128i a, __m128i b)
__m128i
Definition: emmintrin.h:44
__m128i _mm_maddubs_epi16(__m128i a, __m128i b)
__m128i _mm_abs_epi16(__m128i a)
__m128i _mm_hsub_epi32(__m128i a, __m128i b)
__m128i _mm_sign_epi16(__m128i a, __m128i b)
__m64 _mm_sign_pi16(__m64 a, __m64 b)
__m64 _mm_abs_pi32(__m64 a)
__m64 _mm_abs_pi16(__m64 a)
__m64 _mm_hadd_pi32(__m64 a, __m64 b)
__m128i _mm_abs_epi32(__m128i a)
__m128i _mm_hadd_epi32(__m128i a, __m128i b)
__m128i _mm_abs_epi8(__m128i a)
__m128i _mm_alignr_epi8(__m128i a, __m128i b, int n)
__m64 _mm_shuffle_pi8(__m64 a, __m64 b)
__m64 _mm_sign_pi32(__m64 a, __m64 b)
__m128i _mm_hadds_epi16(__m128i a, __m128i b)