master
1/* Copyright (c) 2014-2017 Apple, Inc. All rights reserved.
2 *
3 * The interfaces declared in this header provide conversions between vector
4 * types. The following functions are available:
5 *
6 * simd_char(x) simd_uchar(x)
7 * simd_short(x) simd_ushort(x)
8 * simd_int(x) simd_uint(x)
9 * simd_long(x) simd_ulong(x)
10 * simd_float(x)
11 * simd_double(x)
12 *
13 * Each of these functions converts x to a vector whose elements have the
14 * type named by the function, with the same number of elements as x. Unlike
15 * a vector cast, these functions convert the elements to the new element
16 * type. These conversions behave exactly as C scalar conversions, except
17 * that conversions from integer vector types to signed integer vector types
18 * are guaranteed to wrap modulo 2^N (where N is the number of bits in an
19 * element of the result type).
20 *
21 * In C++ the conversion functions are templated in the simd:: namespace.
22 *
23 * C++ Function Equivalent C Function
24 * -------------------------------------------------------------------
25 * simd::convert<ScalarType>(x) simd_ScalarType(x)
26 * simd::convert_sat<ScalarType>(x) simd_ScalarType_sat(x)
27 *
28 * For integer vector types, saturating conversions are also available:
29 *
30 * simd_char_sat(x) simd_uchar_sat(x)
31 * simd_short_sat(x) simd_ushort_sat(x)
32 * simd_int_sat(x) simd_uint_sat(x)
33 * simd_long_sat(x) simd_ulong_sat(x)
34 *
35 * These conversions clamp x to the representable range of the result type
36 * before converting.
37 *
38 * As well as round to nearest even conversions for same-width data types:
39 *
40 * simd_short_rte(simd_half<N> x) simd_ushort_rte(simd_half<N> x)
41 * simd_int_rte(simd_float<N> x) simd_uint_rte(simd_float<N> x)
42 * simd_long_rte(simd_double<N> x) simd_ulong_rte(simd_double<N> x)
43 *
44 * Unlike most vector operations in <simd/>, there are no abbreviated C++
45 * names for these functions in the simd:: namespace.
46 */
47
48#ifndef __SIMD_CONVERSION_HEADER__
49#define __SIMD_CONVERSION_HEADER__
50
51#include <simd/base.h>
52#if SIMD_COMPILER_HAS_REQUIRED_FEATURES
53#include <simd/vector_types.h>
54#include <simd/common.h>
55#include <simd/logic.h>
56
57#ifdef __cplusplus
58extern "C" {
59#endif
60
61static simd_char2 SIMD_CFUNC simd_char(simd_char2 __x);
62static simd_char3 SIMD_CFUNC simd_char(simd_char3 __x);
63static simd_char4 SIMD_CFUNC simd_char(simd_char4 __x);
64static simd_char8 SIMD_CFUNC simd_char(simd_char8 __x);
65static simd_char16 SIMD_CFUNC simd_char(simd_char16 __x);
66static simd_char32 SIMD_CFUNC simd_char(simd_char32 __x);
67static simd_char2 SIMD_CFUNC simd_char(simd_uchar2 __x);
68static simd_char3 SIMD_CFUNC simd_char(simd_uchar3 __x);
69static simd_char4 SIMD_CFUNC simd_char(simd_uchar4 __x);
70static simd_char8 SIMD_CFUNC simd_char(simd_uchar8 __x);
71static simd_char16 SIMD_CFUNC simd_char(simd_uchar16 __x);
72static simd_char32 SIMD_CFUNC simd_char(simd_uchar32 __x);
73static simd_char2 SIMD_CFUNC simd_char(simd_short2 __x);
74static simd_char3 SIMD_CFUNC simd_char(simd_short3 __x);
75static simd_char4 SIMD_CFUNC simd_char(simd_short4 __x);
76static simd_char8 SIMD_CFUNC simd_char(simd_short8 __x);
77static simd_char16 SIMD_CFUNC simd_char(simd_short16 __x);
78static simd_char32 SIMD_CFUNC simd_char(simd_short32 __x);
79static simd_char2 SIMD_CFUNC simd_char(simd_ushort2 __x);
80static simd_char3 SIMD_CFUNC simd_char(simd_ushort3 __x);
81static simd_char4 SIMD_CFUNC simd_char(simd_ushort4 __x);
82static simd_char8 SIMD_CFUNC simd_char(simd_ushort8 __x);
83static simd_char16 SIMD_CFUNC simd_char(simd_ushort16 __x);
84static simd_char32 SIMD_CFUNC simd_char(simd_ushort32 __x);
85static simd_char2 SIMD_CFUNC simd_char(simd_half2 __x);
86static simd_char3 SIMD_CFUNC simd_char(simd_half3 __x);
87static simd_char4 SIMD_CFUNC simd_char(simd_half4 __x);
88static simd_char8 SIMD_CFUNC simd_char(simd_half8 __x);
89static simd_char16 SIMD_CFUNC simd_char(simd_half16 __x);
90static simd_char32 SIMD_CFUNC simd_char(simd_half32 __x);
91static simd_char2 SIMD_CFUNC simd_char(simd_int2 __x);
92static simd_char3 SIMD_CFUNC simd_char(simd_int3 __x);
93static simd_char4 SIMD_CFUNC simd_char(simd_int4 __x);
94static simd_char8 SIMD_CFUNC simd_char(simd_int8 __x);
95static simd_char16 SIMD_CFUNC simd_char(simd_int16 __x);
96static simd_char2 SIMD_CFUNC simd_char(simd_uint2 __x);
97static simd_char3 SIMD_CFUNC simd_char(simd_uint3 __x);
98static simd_char4 SIMD_CFUNC simd_char(simd_uint4 __x);
99static simd_char8 SIMD_CFUNC simd_char(simd_uint8 __x);
100static simd_char16 SIMD_CFUNC simd_char(simd_uint16 __x);
101static simd_char2 SIMD_CFUNC simd_char(simd_float2 __x);
102static simd_char3 SIMD_CFUNC simd_char(simd_float3 __x);
103static simd_char4 SIMD_CFUNC simd_char(simd_float4 __x);
104static simd_char8 SIMD_CFUNC simd_char(simd_float8 __x);
105static simd_char16 SIMD_CFUNC simd_char(simd_float16 __x);
106static simd_char2 SIMD_CFUNC simd_char(simd_long2 __x);
107static simd_char3 SIMD_CFUNC simd_char(simd_long3 __x);
108static simd_char4 SIMD_CFUNC simd_char(simd_long4 __x);
109static simd_char8 SIMD_CFUNC simd_char(simd_long8 __x);
110static simd_char2 SIMD_CFUNC simd_char(simd_ulong2 __x);
111static simd_char3 SIMD_CFUNC simd_char(simd_ulong3 __x);
112static simd_char4 SIMD_CFUNC simd_char(simd_ulong4 __x);
113static simd_char8 SIMD_CFUNC simd_char(simd_ulong8 __x);
114static simd_char2 SIMD_CFUNC simd_char(simd_double2 __x);
115static simd_char3 SIMD_CFUNC simd_char(simd_double3 __x);
116static simd_char4 SIMD_CFUNC simd_char(simd_double4 __x);
117static simd_char8 SIMD_CFUNC simd_char(simd_double8 __x);
118static simd_char2 SIMD_CFUNC simd_char_sat(simd_char2 __x);
119static simd_char3 SIMD_CFUNC simd_char_sat(simd_char3 __x);
120static simd_char4 SIMD_CFUNC simd_char_sat(simd_char4 __x);
121static simd_char8 SIMD_CFUNC simd_char_sat(simd_char8 __x);
122static simd_char16 SIMD_CFUNC simd_char_sat(simd_char16 __x);
123static simd_char32 SIMD_CFUNC simd_char_sat(simd_char32 __x);
124static simd_char2 SIMD_CFUNC simd_char_sat(simd_short2 __x);
125static simd_char3 SIMD_CFUNC simd_char_sat(simd_short3 __x);
126static simd_char4 SIMD_CFUNC simd_char_sat(simd_short4 __x);
127static simd_char8 SIMD_CFUNC simd_char_sat(simd_short8 __x);
128static simd_char16 SIMD_CFUNC simd_char_sat(simd_short16 __x);
129static simd_char32 SIMD_CFUNC simd_char_sat(simd_short32 __x);
130static simd_char2 SIMD_CFUNC simd_char_sat(simd_half2 __x);
131static simd_char3 SIMD_CFUNC simd_char_sat(simd_half3 __x);
132static simd_char4 SIMD_CFUNC simd_char_sat(simd_half4 __x);
133static simd_char8 SIMD_CFUNC simd_char_sat(simd_half8 __x);
134static simd_char16 SIMD_CFUNC simd_char_sat(simd_half16 __x);
135static simd_char32 SIMD_CFUNC simd_char_sat(simd_half32 __x);
136static simd_char2 SIMD_CFUNC simd_char_sat(simd_int2 __x);
137static simd_char3 SIMD_CFUNC simd_char_sat(simd_int3 __x);
138static simd_char4 SIMD_CFUNC simd_char_sat(simd_int4 __x);
139static simd_char8 SIMD_CFUNC simd_char_sat(simd_int8 __x);
140static simd_char16 SIMD_CFUNC simd_char_sat(simd_int16 __x);
141static simd_char2 SIMD_CFUNC simd_char_sat(simd_float2 __x);
142static simd_char3 SIMD_CFUNC simd_char_sat(simd_float3 __x);
143static simd_char4 SIMD_CFUNC simd_char_sat(simd_float4 __x);
144static simd_char8 SIMD_CFUNC simd_char_sat(simd_float8 __x);
145static simd_char16 SIMD_CFUNC simd_char_sat(simd_float16 __x);
146static simd_char2 SIMD_CFUNC simd_char_sat(simd_long2 __x);
147static simd_char3 SIMD_CFUNC simd_char_sat(simd_long3 __x);
148static simd_char4 SIMD_CFUNC simd_char_sat(simd_long4 __x);
149static simd_char8 SIMD_CFUNC simd_char_sat(simd_long8 __x);
150static simd_char2 SIMD_CFUNC simd_char_sat(simd_double2 __x);
151static simd_char3 SIMD_CFUNC simd_char_sat(simd_double3 __x);
152static simd_char4 SIMD_CFUNC simd_char_sat(simd_double4 __x);
153static simd_char8 SIMD_CFUNC simd_char_sat(simd_double8 __x);
154static simd_char2 SIMD_CFUNC simd_char_sat(simd_uchar2 __x);
155static simd_char3 SIMD_CFUNC simd_char_sat(simd_uchar3 __x);
156static simd_char4 SIMD_CFUNC simd_char_sat(simd_uchar4 __x);
157static simd_char8 SIMD_CFUNC simd_char_sat(simd_uchar8 __x);
158static simd_char16 SIMD_CFUNC simd_char_sat(simd_uchar16 __x);
159static simd_char32 SIMD_CFUNC simd_char_sat(simd_uchar32 __x);
160static simd_char2 SIMD_CFUNC simd_char_sat(simd_ushort2 __x);
161static simd_char3 SIMD_CFUNC simd_char_sat(simd_ushort3 __x);
162static simd_char4 SIMD_CFUNC simd_char_sat(simd_ushort4 __x);
163static simd_char8 SIMD_CFUNC simd_char_sat(simd_ushort8 __x);
164static simd_char16 SIMD_CFUNC simd_char_sat(simd_ushort16 __x);
165static simd_char32 SIMD_CFUNC simd_char_sat(simd_ushort32 __x);
166static simd_char2 SIMD_CFUNC simd_char_sat(simd_uint2 __x);
167static simd_char3 SIMD_CFUNC simd_char_sat(simd_uint3 __x);
168static simd_char4 SIMD_CFUNC simd_char_sat(simd_uint4 __x);
169static simd_char8 SIMD_CFUNC simd_char_sat(simd_uint8 __x);
170static simd_char16 SIMD_CFUNC simd_char_sat(simd_uint16 __x);
171static simd_char2 SIMD_CFUNC simd_char_sat(simd_ulong2 __x);
172static simd_char3 SIMD_CFUNC simd_char_sat(simd_ulong3 __x);
173static simd_char4 SIMD_CFUNC simd_char_sat(simd_ulong4 __x);
174static simd_char8 SIMD_CFUNC simd_char_sat(simd_ulong8 __x);
175#define vector_char simd_char
176#define vector_char_sat simd_char_sat
177
178static simd_uchar2 SIMD_CFUNC simd_uchar(simd_char2 __x);
179static simd_uchar3 SIMD_CFUNC simd_uchar(simd_char3 __x);
180static simd_uchar4 SIMD_CFUNC simd_uchar(simd_char4 __x);
181static simd_uchar8 SIMD_CFUNC simd_uchar(simd_char8 __x);
182static simd_uchar16 SIMD_CFUNC simd_uchar(simd_char16 __x);
183static simd_uchar32 SIMD_CFUNC simd_uchar(simd_char32 __x);
184static simd_uchar2 SIMD_CFUNC simd_uchar(simd_uchar2 __x);
185static simd_uchar3 SIMD_CFUNC simd_uchar(simd_uchar3 __x);
186static simd_uchar4 SIMD_CFUNC simd_uchar(simd_uchar4 __x);
187static simd_uchar8 SIMD_CFUNC simd_uchar(simd_uchar8 __x);
188static simd_uchar16 SIMD_CFUNC simd_uchar(simd_uchar16 __x);
189static simd_uchar32 SIMD_CFUNC simd_uchar(simd_uchar32 __x);
190static simd_uchar2 SIMD_CFUNC simd_uchar(simd_short2 __x);
191static simd_uchar3 SIMD_CFUNC simd_uchar(simd_short3 __x);
192static simd_uchar4 SIMD_CFUNC simd_uchar(simd_short4 __x);
193static simd_uchar8 SIMD_CFUNC simd_uchar(simd_short8 __x);
194static simd_uchar16 SIMD_CFUNC simd_uchar(simd_short16 __x);
195static simd_uchar32 SIMD_CFUNC simd_uchar(simd_short32 __x);
196static simd_uchar2 SIMD_CFUNC simd_uchar(simd_ushort2 __x);
197static simd_uchar3 SIMD_CFUNC simd_uchar(simd_ushort3 __x);
198static simd_uchar4 SIMD_CFUNC simd_uchar(simd_ushort4 __x);
199static simd_uchar8 SIMD_CFUNC simd_uchar(simd_ushort8 __x);
200static simd_uchar16 SIMD_CFUNC simd_uchar(simd_ushort16 __x);
201static simd_uchar32 SIMD_CFUNC simd_uchar(simd_ushort32 __x);
202static simd_uchar2 SIMD_CFUNC simd_uchar(simd_half2 __x);
203static simd_uchar3 SIMD_CFUNC simd_uchar(simd_half3 __x);
204static simd_uchar4 SIMD_CFUNC simd_uchar(simd_half4 __x);
205static simd_uchar8 SIMD_CFUNC simd_uchar(simd_half8 __x);
206static simd_uchar16 SIMD_CFUNC simd_uchar(simd_half16 __x);
207static simd_uchar32 SIMD_CFUNC simd_uchar(simd_half32 __x);
208static simd_uchar2 SIMD_CFUNC simd_uchar(simd_int2 __x);
209static simd_uchar3 SIMD_CFUNC simd_uchar(simd_int3 __x);
210static simd_uchar4 SIMD_CFUNC simd_uchar(simd_int4 __x);
211static simd_uchar8 SIMD_CFUNC simd_uchar(simd_int8 __x);
212static simd_uchar16 SIMD_CFUNC simd_uchar(simd_int16 __x);
213static simd_uchar2 SIMD_CFUNC simd_uchar(simd_uint2 __x);
214static simd_uchar3 SIMD_CFUNC simd_uchar(simd_uint3 __x);
215static simd_uchar4 SIMD_CFUNC simd_uchar(simd_uint4 __x);
216static simd_uchar8 SIMD_CFUNC simd_uchar(simd_uint8 __x);
217static simd_uchar16 SIMD_CFUNC simd_uchar(simd_uint16 __x);
218static simd_uchar2 SIMD_CFUNC simd_uchar(simd_float2 __x);
219static simd_uchar3 SIMD_CFUNC simd_uchar(simd_float3 __x);
220static simd_uchar4 SIMD_CFUNC simd_uchar(simd_float4 __x);
221static simd_uchar8 SIMD_CFUNC simd_uchar(simd_float8 __x);
222static simd_uchar16 SIMD_CFUNC simd_uchar(simd_float16 __x);
223static simd_uchar2 SIMD_CFUNC simd_uchar(simd_long2 __x);
224static simd_uchar3 SIMD_CFUNC simd_uchar(simd_long3 __x);
225static simd_uchar4 SIMD_CFUNC simd_uchar(simd_long4 __x);
226static simd_uchar8 SIMD_CFUNC simd_uchar(simd_long8 __x);
227static simd_uchar2 SIMD_CFUNC simd_uchar(simd_ulong2 __x);
228static simd_uchar3 SIMD_CFUNC simd_uchar(simd_ulong3 __x);
229static simd_uchar4 SIMD_CFUNC simd_uchar(simd_ulong4 __x);
230static simd_uchar8 SIMD_CFUNC simd_uchar(simd_ulong8 __x);
231static simd_uchar2 SIMD_CFUNC simd_uchar(simd_double2 __x);
232static simd_uchar3 SIMD_CFUNC simd_uchar(simd_double3 __x);
233static simd_uchar4 SIMD_CFUNC simd_uchar(simd_double4 __x);
234static simd_uchar8 SIMD_CFUNC simd_uchar(simd_double8 __x);
235static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_char2 __x);
236static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_char3 __x);
237static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_char4 __x);
238static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_char8 __x);
239static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_char16 __x);
240static simd_uchar32 SIMD_CFUNC simd_uchar_sat(simd_char32 __x);
241static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_short2 __x);
242static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_short3 __x);
243static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_short4 __x);
244static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_short8 __x);
245static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_short16 __x);
246static simd_uchar32 SIMD_CFUNC simd_uchar_sat(simd_short32 __x);
247static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_half2 __x);
248static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_half3 __x);
249static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_half4 __x);
250static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_half8 __x);
251static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_half16 __x);
252static simd_uchar32 SIMD_CFUNC simd_uchar_sat(simd_half32 __x);
253static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_int2 __x);
254static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_int3 __x);
255static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_int4 __x);
256static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_int8 __x);
257static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_int16 __x);
258static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_float2 __x);
259static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_float3 __x);
260static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_float4 __x);
261static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_float8 __x);
262static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_float16 __x);
263static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_long2 __x);
264static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_long3 __x);
265static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_long4 __x);
266static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_long8 __x);
267static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_double2 __x);
268static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_double3 __x);
269static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_double4 __x);
270static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_double8 __x);
271static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_uchar2 __x);
272static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_uchar3 __x);
273static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_uchar4 __x);
274static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_uchar8 __x);
275static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_uchar16 __x);
276static simd_uchar32 SIMD_CFUNC simd_uchar_sat(simd_uchar32 __x);
277static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_ushort2 __x);
278static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_ushort3 __x);
279static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_ushort4 __x);
280static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_ushort8 __x);
281static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_ushort16 __x);
282static simd_uchar32 SIMD_CFUNC simd_uchar_sat(simd_ushort32 __x);
283static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_uint2 __x);
284static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_uint3 __x);
285static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_uint4 __x);
286static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_uint8 __x);
287static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_uint16 __x);
288static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_ulong2 __x);
289static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_ulong3 __x);
290static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_ulong4 __x);
291static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_ulong8 __x);
292#define vector_uchar simd_uchar
293#define vector_uchar_sat simd_uchar_sat
294
295static simd_short2 SIMD_CFUNC simd_short(simd_char2 __x);
296static simd_short3 SIMD_CFUNC simd_short(simd_char3 __x);
297static simd_short4 SIMD_CFUNC simd_short(simd_char4 __x);
298static simd_short8 SIMD_CFUNC simd_short(simd_char8 __x);
299static simd_short16 SIMD_CFUNC simd_short(simd_char16 __x);
300static simd_short32 SIMD_CFUNC simd_short(simd_char32 __x);
301static simd_short2 SIMD_CFUNC simd_short(simd_uchar2 __x);
302static simd_short3 SIMD_CFUNC simd_short(simd_uchar3 __x);
303static simd_short4 SIMD_CFUNC simd_short(simd_uchar4 __x);
304static simd_short8 SIMD_CFUNC simd_short(simd_uchar8 __x);
305static simd_short16 SIMD_CFUNC simd_short(simd_uchar16 __x);
306static simd_short32 SIMD_CFUNC simd_short(simd_uchar32 __x);
307static simd_short2 SIMD_CFUNC simd_short(simd_short2 __x);
308static simd_short3 SIMD_CFUNC simd_short(simd_short3 __x);
309static simd_short4 SIMD_CFUNC simd_short(simd_short4 __x);
310static simd_short8 SIMD_CFUNC simd_short(simd_short8 __x);
311static simd_short16 SIMD_CFUNC simd_short(simd_short16 __x);
312static simd_short32 SIMD_CFUNC simd_short(simd_short32 __x);
313static simd_short2 SIMD_CFUNC simd_short(simd_ushort2 __x);
314static simd_short3 SIMD_CFUNC simd_short(simd_ushort3 __x);
315static simd_short4 SIMD_CFUNC simd_short(simd_ushort4 __x);
316static simd_short8 SIMD_CFUNC simd_short(simd_ushort8 __x);
317static simd_short16 SIMD_CFUNC simd_short(simd_ushort16 __x);
318static simd_short32 SIMD_CFUNC simd_short(simd_ushort32 __x);
319static simd_short2 SIMD_CFUNC simd_short(simd_half2 __x);
320static simd_short3 SIMD_CFUNC simd_short(simd_half3 __x);
321static simd_short4 SIMD_CFUNC simd_short(simd_half4 __x);
322static simd_short8 SIMD_CFUNC simd_short(simd_half8 __x);
323static simd_short16 SIMD_CFUNC simd_short(simd_half16 __x);
324static simd_short32 SIMD_CFUNC simd_short(simd_half32 __x);
325static simd_short2 SIMD_CFUNC simd_short(simd_int2 __x);
326static simd_short3 SIMD_CFUNC simd_short(simd_int3 __x);
327static simd_short4 SIMD_CFUNC simd_short(simd_int4 __x);
328static simd_short8 SIMD_CFUNC simd_short(simd_int8 __x);
329static simd_short16 SIMD_CFUNC simd_short(simd_int16 __x);
330static simd_short2 SIMD_CFUNC simd_short(simd_uint2 __x);
331static simd_short3 SIMD_CFUNC simd_short(simd_uint3 __x);
332static simd_short4 SIMD_CFUNC simd_short(simd_uint4 __x);
333static simd_short8 SIMD_CFUNC simd_short(simd_uint8 __x);
334static simd_short16 SIMD_CFUNC simd_short(simd_uint16 __x);
335static simd_short2 SIMD_CFUNC simd_short(simd_float2 __x);
336static simd_short3 SIMD_CFUNC simd_short(simd_float3 __x);
337static simd_short4 SIMD_CFUNC simd_short(simd_float4 __x);
338static simd_short8 SIMD_CFUNC simd_short(simd_float8 __x);
339static simd_short16 SIMD_CFUNC simd_short(simd_float16 __x);
340static simd_short2 SIMD_CFUNC simd_short(simd_long2 __x);
341static simd_short3 SIMD_CFUNC simd_short(simd_long3 __x);
342static simd_short4 SIMD_CFUNC simd_short(simd_long4 __x);
343static simd_short8 SIMD_CFUNC simd_short(simd_long8 __x);
344static simd_short2 SIMD_CFUNC simd_short(simd_ulong2 __x);
345static simd_short3 SIMD_CFUNC simd_short(simd_ulong3 __x);
346static simd_short4 SIMD_CFUNC simd_short(simd_ulong4 __x);
347static simd_short8 SIMD_CFUNC simd_short(simd_ulong8 __x);
348static simd_short2 SIMD_CFUNC simd_short(simd_double2 __x);
349static simd_short3 SIMD_CFUNC simd_short(simd_double3 __x);
350static simd_short4 SIMD_CFUNC simd_short(simd_double4 __x);
351static simd_short8 SIMD_CFUNC simd_short(simd_double8 __x);
352static simd_short2 SIMD_CFUNC simd_short_sat(simd_char2 __x);
353static simd_short3 SIMD_CFUNC simd_short_sat(simd_char3 __x);
354static simd_short4 SIMD_CFUNC simd_short_sat(simd_char4 __x);
355static simd_short8 SIMD_CFUNC simd_short_sat(simd_char8 __x);
356static simd_short16 SIMD_CFUNC simd_short_sat(simd_char16 __x);
357static simd_short32 SIMD_CFUNC simd_short_sat(simd_char32 __x);
358static simd_short2 SIMD_CFUNC simd_short_sat(simd_short2 __x);
359static simd_short3 SIMD_CFUNC simd_short_sat(simd_short3 __x);
360static simd_short4 SIMD_CFUNC simd_short_sat(simd_short4 __x);
361static simd_short8 SIMD_CFUNC simd_short_sat(simd_short8 __x);
362static simd_short16 SIMD_CFUNC simd_short_sat(simd_short16 __x);
363static simd_short32 SIMD_CFUNC simd_short_sat(simd_short32 __x);
364static simd_short2 SIMD_CFUNC simd_short_sat(simd_half2 __x);
365static simd_short3 SIMD_CFUNC simd_short_sat(simd_half3 __x);
366static simd_short4 SIMD_CFUNC simd_short_sat(simd_half4 __x);
367static simd_short8 SIMD_CFUNC simd_short_sat(simd_half8 __x);
368static simd_short16 SIMD_CFUNC simd_short_sat(simd_half16 __x);
369static simd_short32 SIMD_CFUNC simd_short_sat(simd_half32 __x);
370static simd_short2 SIMD_CFUNC simd_short_sat(simd_int2 __x);
371static simd_short3 SIMD_CFUNC simd_short_sat(simd_int3 __x);
372static simd_short4 SIMD_CFUNC simd_short_sat(simd_int4 __x);
373static simd_short8 SIMD_CFUNC simd_short_sat(simd_int8 __x);
374static simd_short16 SIMD_CFUNC simd_short_sat(simd_int16 __x);
375static simd_short2 SIMD_CFUNC simd_short_sat(simd_float2 __x);
376static simd_short3 SIMD_CFUNC simd_short_sat(simd_float3 __x);
377static simd_short4 SIMD_CFUNC simd_short_sat(simd_float4 __x);
378static simd_short8 SIMD_CFUNC simd_short_sat(simd_float8 __x);
379static simd_short16 SIMD_CFUNC simd_short_sat(simd_float16 __x);
380static simd_short2 SIMD_CFUNC simd_short_sat(simd_long2 __x);
381static simd_short3 SIMD_CFUNC simd_short_sat(simd_long3 __x);
382static simd_short4 SIMD_CFUNC simd_short_sat(simd_long4 __x);
383static simd_short8 SIMD_CFUNC simd_short_sat(simd_long8 __x);
384static simd_short2 SIMD_CFUNC simd_short_sat(simd_double2 __x);
385static simd_short3 SIMD_CFUNC simd_short_sat(simd_double3 __x);
386static simd_short4 SIMD_CFUNC simd_short_sat(simd_double4 __x);
387static simd_short8 SIMD_CFUNC simd_short_sat(simd_double8 __x);
388static simd_short2 SIMD_CFUNC simd_short_sat(simd_uchar2 __x);
389static simd_short3 SIMD_CFUNC simd_short_sat(simd_uchar3 __x);
390static simd_short4 SIMD_CFUNC simd_short_sat(simd_uchar4 __x);
391static simd_short8 SIMD_CFUNC simd_short_sat(simd_uchar8 __x);
392static simd_short16 SIMD_CFUNC simd_short_sat(simd_uchar16 __x);
393static simd_short32 SIMD_CFUNC simd_short_sat(simd_uchar32 __x);
394static simd_short2 SIMD_CFUNC simd_short_sat(simd_ushort2 __x);
395static simd_short3 SIMD_CFUNC simd_short_sat(simd_ushort3 __x);
396static simd_short4 SIMD_CFUNC simd_short_sat(simd_ushort4 __x);
397static simd_short8 SIMD_CFUNC simd_short_sat(simd_ushort8 __x);
398static simd_short16 SIMD_CFUNC simd_short_sat(simd_ushort16 __x);
399static simd_short32 SIMD_CFUNC simd_short_sat(simd_ushort32 __x);
400static simd_short2 SIMD_CFUNC simd_short_sat(simd_uint2 __x);
401static simd_short3 SIMD_CFUNC simd_short_sat(simd_uint3 __x);
402static simd_short4 SIMD_CFUNC simd_short_sat(simd_uint4 __x);
403static simd_short8 SIMD_CFUNC simd_short_sat(simd_uint8 __x);
404static simd_short16 SIMD_CFUNC simd_short_sat(simd_uint16 __x);
405static simd_short2 SIMD_CFUNC simd_short_sat(simd_ulong2 __x);
406static simd_short3 SIMD_CFUNC simd_short_sat(simd_ulong3 __x);
407static simd_short4 SIMD_CFUNC simd_short_sat(simd_ulong4 __x);
408static simd_short8 SIMD_CFUNC simd_short_sat(simd_ulong8 __x);
409static simd_short2 SIMD_CFUNC simd_short_rte(simd_half2 __x);
410static simd_short3 SIMD_CFUNC simd_short_rte(simd_half3 __x);
411static simd_short4 SIMD_CFUNC simd_short_rte(simd_half4 __x);
412static simd_short8 SIMD_CFUNC simd_short_rte(simd_half8 __x);
413static simd_short16 SIMD_CFUNC simd_short_rte(simd_half16 __x);
414static simd_short32 SIMD_CFUNC simd_short_rte(simd_half32 __x);
415#define vector_short simd_short
416#define vector_short_sat simd_short_sat
417
418static simd_ushort2 SIMD_CFUNC simd_ushort(simd_char2 __x);
419static simd_ushort3 SIMD_CFUNC simd_ushort(simd_char3 __x);
420static simd_ushort4 SIMD_CFUNC simd_ushort(simd_char4 __x);
421static simd_ushort8 SIMD_CFUNC simd_ushort(simd_char8 __x);
422static simd_ushort16 SIMD_CFUNC simd_ushort(simd_char16 __x);
423static simd_ushort32 SIMD_CFUNC simd_ushort(simd_char32 __x);
424static simd_ushort2 SIMD_CFUNC simd_ushort(simd_uchar2 __x);
425static simd_ushort3 SIMD_CFUNC simd_ushort(simd_uchar3 __x);
426static simd_ushort4 SIMD_CFUNC simd_ushort(simd_uchar4 __x);
427static simd_ushort8 SIMD_CFUNC simd_ushort(simd_uchar8 __x);
428static simd_ushort16 SIMD_CFUNC simd_ushort(simd_uchar16 __x);
429static simd_ushort32 SIMD_CFUNC simd_ushort(simd_uchar32 __x);
430static simd_ushort2 SIMD_CFUNC simd_ushort(simd_short2 __x);
431static simd_ushort3 SIMD_CFUNC simd_ushort(simd_short3 __x);
432static simd_ushort4 SIMD_CFUNC simd_ushort(simd_short4 __x);
433static simd_ushort8 SIMD_CFUNC simd_ushort(simd_short8 __x);
434static simd_ushort16 SIMD_CFUNC simd_ushort(simd_short16 __x);
435static simd_ushort32 SIMD_CFUNC simd_ushort(simd_short32 __x);
436static simd_ushort2 SIMD_CFUNC simd_ushort(simd_ushort2 __x);
437static simd_ushort3 SIMD_CFUNC simd_ushort(simd_ushort3 __x);
438static simd_ushort4 SIMD_CFUNC simd_ushort(simd_ushort4 __x);
439static simd_ushort8 SIMD_CFUNC simd_ushort(simd_ushort8 __x);
440static simd_ushort16 SIMD_CFUNC simd_ushort(simd_ushort16 __x);
441static simd_ushort32 SIMD_CFUNC simd_ushort(simd_ushort32 __x);
442static simd_ushort2 SIMD_CFUNC simd_ushort(simd_half2 __x);
443static simd_ushort3 SIMD_CFUNC simd_ushort(simd_half3 __x);
444static simd_ushort4 SIMD_CFUNC simd_ushort(simd_half4 __x);
445static simd_ushort8 SIMD_CFUNC simd_ushort(simd_half8 __x);
446static simd_ushort16 SIMD_CFUNC simd_ushort(simd_half16 __x);
447static simd_ushort32 SIMD_CFUNC simd_ushort(simd_half32 __x);
448static simd_ushort2 SIMD_CFUNC simd_ushort(simd_int2 __x);
449static simd_ushort3 SIMD_CFUNC simd_ushort(simd_int3 __x);
450static simd_ushort4 SIMD_CFUNC simd_ushort(simd_int4 __x);
451static simd_ushort8 SIMD_CFUNC simd_ushort(simd_int8 __x);
452static simd_ushort16 SIMD_CFUNC simd_ushort(simd_int16 __x);
453static simd_ushort2 SIMD_CFUNC simd_ushort(simd_uint2 __x);
454static simd_ushort3 SIMD_CFUNC simd_ushort(simd_uint3 __x);
455static simd_ushort4 SIMD_CFUNC simd_ushort(simd_uint4 __x);
456static simd_ushort8 SIMD_CFUNC simd_ushort(simd_uint8 __x);
457static simd_ushort16 SIMD_CFUNC simd_ushort(simd_uint16 __x);
458static simd_ushort2 SIMD_CFUNC simd_ushort(simd_float2 __x);
459static simd_ushort3 SIMD_CFUNC simd_ushort(simd_float3 __x);
460static simd_ushort4 SIMD_CFUNC simd_ushort(simd_float4 __x);
461static simd_ushort8 SIMD_CFUNC simd_ushort(simd_float8 __x);
462static simd_ushort16 SIMD_CFUNC simd_ushort(simd_float16 __x);
463static simd_ushort2 SIMD_CFUNC simd_ushort(simd_long2 __x);
464static simd_ushort3 SIMD_CFUNC simd_ushort(simd_long3 __x);
465static simd_ushort4 SIMD_CFUNC simd_ushort(simd_long4 __x);
466static simd_ushort8 SIMD_CFUNC simd_ushort(simd_long8 __x);
467static simd_ushort2 SIMD_CFUNC simd_ushort(simd_ulong2 __x);
468static simd_ushort3 SIMD_CFUNC simd_ushort(simd_ulong3 __x);
469static simd_ushort4 SIMD_CFUNC simd_ushort(simd_ulong4 __x);
470static simd_ushort8 SIMD_CFUNC simd_ushort(simd_ulong8 __x);
471static simd_ushort2 SIMD_CFUNC simd_ushort(simd_double2 __x);
472static simd_ushort3 SIMD_CFUNC simd_ushort(simd_double3 __x);
473static simd_ushort4 SIMD_CFUNC simd_ushort(simd_double4 __x);
474static simd_ushort8 SIMD_CFUNC simd_ushort(simd_double8 __x);
475static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_char2 __x);
476static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_char3 __x);
477static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_char4 __x);
478static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_char8 __x);
479static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_char16 __x);
480static simd_ushort32 SIMD_CFUNC simd_ushort_sat(simd_char32 __x);
481static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_short2 __x);
482static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_short3 __x);
483static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_short4 __x);
484static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_short8 __x);
485static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_short16 __x);
486static simd_ushort32 SIMD_CFUNC simd_ushort_sat(simd_short32 __x);
487static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_half2 __x);
488static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_half3 __x);
489static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_half4 __x);
490static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_half8 __x);
491static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_half16 __x);
492static simd_ushort32 SIMD_CFUNC simd_ushort_sat(simd_half32 __x);
493static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_int2 __x);
494static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_int3 __x);
495static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_int4 __x);
496static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_int8 __x);
497static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_int16 __x);
498static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_float2 __x);
499static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_float3 __x);
500static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_float4 __x);
501static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_float8 __x);
502static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_float16 __x);
503static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_long2 __x);
504static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_long3 __x);
505static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_long4 __x);
506static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_long8 __x);
507static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_double2 __x);
508static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_double3 __x);
509static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_double4 __x);
510static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_double8 __x);
511static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_uchar2 __x);
512static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_uchar3 __x);
513static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_uchar4 __x);
514static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_uchar8 __x);
515static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_uchar16 __x);
516static simd_ushort32 SIMD_CFUNC simd_ushort_sat(simd_uchar32 __x);
517static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_ushort2 __x);
518static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_ushort3 __x);
519static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_ushort4 __x);
520static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_ushort8 __x);
521static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_ushort16 __x);
522static simd_ushort32 SIMD_CFUNC simd_ushort_sat(simd_ushort32 __x);
523static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_uint2 __x);
524static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_uint3 __x);
525static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_uint4 __x);
526static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_uint8 __x);
527static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_uint16 __x);
528static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_ulong2 __x);
529static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_ulong3 __x);
530static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_ulong4 __x);
531static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_ulong8 __x);
532static simd_ushort2 SIMD_CFUNC simd_ushort_rte(simd_half2 __x);
533static simd_ushort3 SIMD_CFUNC simd_ushort_rte(simd_half3 __x);
534static simd_ushort4 SIMD_CFUNC simd_ushort_rte(simd_half4 __x);
535static simd_ushort8 SIMD_CFUNC simd_ushort_rte(simd_half8 __x);
536static simd_ushort16 SIMD_CFUNC simd_ushort_rte(simd_half16 __x);
537static simd_ushort32 SIMD_CFUNC simd_ushort_rte(simd_half32 __x);
538#define vector_ushort simd_ushort
539#define vector_ushort_sat simd_ushort_sat
540
541static simd_half2 SIMD_CFUNC simd_half(simd_char2 __x);
542static simd_half3 SIMD_CFUNC simd_half(simd_char3 __x);
543static simd_half4 SIMD_CFUNC simd_half(simd_char4 __x);
544static simd_half8 SIMD_CFUNC simd_half(simd_char8 __x);
545static simd_half16 SIMD_CFUNC simd_half(simd_char16 __x);
546static simd_half2 SIMD_CFUNC simd_half(simd_uchar2 __x);
547static simd_half3 SIMD_CFUNC simd_half(simd_uchar3 __x);
548static simd_half4 SIMD_CFUNC simd_half(simd_uchar4 __x);
549static simd_half8 SIMD_CFUNC simd_half(simd_uchar8 __x);
550static simd_half16 SIMD_CFUNC simd_half(simd_uchar16 __x);
551static simd_half2 SIMD_CFUNC simd_half(simd_short2 __x);
552static simd_half3 SIMD_CFUNC simd_half(simd_short3 __x);
553static simd_half4 SIMD_CFUNC simd_half(simd_short4 __x);
554static simd_half8 SIMD_CFUNC simd_half(simd_short8 __x);
555static simd_half16 SIMD_CFUNC simd_half(simd_short16 __x);
556static simd_half2 SIMD_CFUNC simd_half(simd_ushort2 __x);
557static simd_half3 SIMD_CFUNC simd_half(simd_ushort3 __x);
558static simd_half4 SIMD_CFUNC simd_half(simd_ushort4 __x);
559static simd_half8 SIMD_CFUNC simd_half(simd_ushort8 __x);
560static simd_half16 SIMD_CFUNC simd_half(simd_ushort16 __x);
561static simd_half2 SIMD_CFUNC simd_half(simd_half2 __x);
562static simd_half3 SIMD_CFUNC simd_half(simd_half3 __x);
563static simd_half4 SIMD_CFUNC simd_half(simd_half4 __x);
564static simd_half8 SIMD_CFUNC simd_half(simd_half8 __x);
565static simd_half16 SIMD_CFUNC simd_half(simd_half16 __x);
566static simd_half2 SIMD_CFUNC simd_half(simd_int2 __x);
567static simd_half3 SIMD_CFUNC simd_half(simd_int3 __x);
568static simd_half4 SIMD_CFUNC simd_half(simd_int4 __x);
569static simd_half8 SIMD_CFUNC simd_half(simd_int8 __x);
570static simd_half16 SIMD_CFUNC simd_half(simd_int16 __x);
571static simd_half2 SIMD_CFUNC simd_half(simd_uint2 __x);
572static simd_half3 SIMD_CFUNC simd_half(simd_uint3 __x);
573static simd_half4 SIMD_CFUNC simd_half(simd_uint4 __x);
574static simd_half8 SIMD_CFUNC simd_half(simd_uint8 __x);
575static simd_half16 SIMD_CFUNC simd_half(simd_uint16 __x);
576static simd_half2 SIMD_CFUNC simd_half(simd_float2 __x);
577static simd_half3 SIMD_CFUNC simd_half(simd_float3 __x);
578static simd_half4 SIMD_CFUNC simd_half(simd_float4 __x);
579static simd_half8 SIMD_CFUNC simd_half(simd_float8 __x);
580static simd_half16 SIMD_CFUNC simd_half(simd_float16 __x);
581static simd_half2 SIMD_CFUNC simd_half(simd_long2 __x);
582static simd_half3 SIMD_CFUNC simd_half(simd_long3 __x);
583static simd_half4 SIMD_CFUNC simd_half(simd_long4 __x);
584static simd_half8 SIMD_CFUNC simd_half(simd_long8 __x);
585static simd_half2 SIMD_CFUNC simd_half(simd_ulong2 __x);
586static simd_half3 SIMD_CFUNC simd_half(simd_ulong3 __x);
587static simd_half4 SIMD_CFUNC simd_half(simd_ulong4 __x);
588static simd_half8 SIMD_CFUNC simd_half(simd_ulong8 __x);
589static simd_half2 SIMD_CFUNC simd_half(simd_double2 __x);
590static simd_half3 SIMD_CFUNC simd_half(simd_double3 __x);
591static simd_half4 SIMD_CFUNC simd_half(simd_double4 __x);
592static simd_half8 SIMD_CFUNC simd_half(simd_double8 __x);
593
594static simd_int2 SIMD_CFUNC simd_int(simd_char2 __x);
595static simd_int3 SIMD_CFUNC simd_int(simd_char3 __x);
596static simd_int4 SIMD_CFUNC simd_int(simd_char4 __x);
597static simd_int8 SIMD_CFUNC simd_int(simd_char8 __x);
598static simd_int16 SIMD_CFUNC simd_int(simd_char16 __x);
599static simd_int2 SIMD_CFUNC simd_int(simd_uchar2 __x);
600static simd_int3 SIMD_CFUNC simd_int(simd_uchar3 __x);
601static simd_int4 SIMD_CFUNC simd_int(simd_uchar4 __x);
602static simd_int8 SIMD_CFUNC simd_int(simd_uchar8 __x);
603static simd_int16 SIMD_CFUNC simd_int(simd_uchar16 __x);
604static simd_int2 SIMD_CFUNC simd_int(simd_short2 __x);
605static simd_int3 SIMD_CFUNC simd_int(simd_short3 __x);
606static simd_int4 SIMD_CFUNC simd_int(simd_short4 __x);
607static simd_int8 SIMD_CFUNC simd_int(simd_short8 __x);
608static simd_int16 SIMD_CFUNC simd_int(simd_short16 __x);
609static simd_int2 SIMD_CFUNC simd_int(simd_ushort2 __x);
610static simd_int3 SIMD_CFUNC simd_int(simd_ushort3 __x);
611static simd_int4 SIMD_CFUNC simd_int(simd_ushort4 __x);
612static simd_int8 SIMD_CFUNC simd_int(simd_ushort8 __x);
613static simd_int16 SIMD_CFUNC simd_int(simd_ushort16 __x);
614static simd_int2 SIMD_CFUNC simd_int(simd_half2 __x);
615static simd_int3 SIMD_CFUNC simd_int(simd_half3 __x);
616static simd_int4 SIMD_CFUNC simd_int(simd_half4 __x);
617static simd_int8 SIMD_CFUNC simd_int(simd_half8 __x);
618static simd_int16 SIMD_CFUNC simd_int(simd_half16 __x);
619static simd_int2 SIMD_CFUNC simd_int(simd_int2 __x);
620static simd_int3 SIMD_CFUNC simd_int(simd_int3 __x);
621static simd_int4 SIMD_CFUNC simd_int(simd_int4 __x);
622static simd_int8 SIMD_CFUNC simd_int(simd_int8 __x);
623static simd_int16 SIMD_CFUNC simd_int(simd_int16 __x);
624static simd_int2 SIMD_CFUNC simd_int(simd_uint2 __x);
625static simd_int3 SIMD_CFUNC simd_int(simd_uint3 __x);
626static simd_int4 SIMD_CFUNC simd_int(simd_uint4 __x);
627static simd_int8 SIMD_CFUNC simd_int(simd_uint8 __x);
628static simd_int16 SIMD_CFUNC simd_int(simd_uint16 __x);
629static simd_int2 SIMD_CFUNC simd_int(simd_float2 __x);
630static simd_int3 SIMD_CFUNC simd_int(simd_float3 __x);
631static simd_int4 SIMD_CFUNC simd_int(simd_float4 __x);
632static simd_int8 SIMD_CFUNC simd_int(simd_float8 __x);
633static simd_int16 SIMD_CFUNC simd_int(simd_float16 __x);
634static simd_int2 SIMD_CFUNC simd_int(simd_long2 __x);
635static simd_int3 SIMD_CFUNC simd_int(simd_long3 __x);
636static simd_int4 SIMD_CFUNC simd_int(simd_long4 __x);
637static simd_int8 SIMD_CFUNC simd_int(simd_long8 __x);
638static simd_int2 SIMD_CFUNC simd_int(simd_ulong2 __x);
639static simd_int3 SIMD_CFUNC simd_int(simd_ulong3 __x);
640static simd_int4 SIMD_CFUNC simd_int(simd_ulong4 __x);
641static simd_int8 SIMD_CFUNC simd_int(simd_ulong8 __x);
642static simd_int2 SIMD_CFUNC simd_int(simd_double2 __x);
643static simd_int3 SIMD_CFUNC simd_int(simd_double3 __x);
644static simd_int4 SIMD_CFUNC simd_int(simd_double4 __x);
645static simd_int8 SIMD_CFUNC simd_int(simd_double8 __x);
646static simd_int2 SIMD_CFUNC simd_int_sat(simd_char2 __x);
647static simd_int3 SIMD_CFUNC simd_int_sat(simd_char3 __x);
648static simd_int4 SIMD_CFUNC simd_int_sat(simd_char4 __x);
649static simd_int8 SIMD_CFUNC simd_int_sat(simd_char8 __x);
650static simd_int16 SIMD_CFUNC simd_int_sat(simd_char16 __x);
651static simd_int2 SIMD_CFUNC simd_int_sat(simd_short2 __x);
652static simd_int3 SIMD_CFUNC simd_int_sat(simd_short3 __x);
653static simd_int4 SIMD_CFUNC simd_int_sat(simd_short4 __x);
654static simd_int8 SIMD_CFUNC simd_int_sat(simd_short8 __x);
655static simd_int16 SIMD_CFUNC simd_int_sat(simd_short16 __x);
656static simd_int2 SIMD_CFUNC simd_int_sat(simd_half2 __x);
657static simd_int3 SIMD_CFUNC simd_int_sat(simd_half3 __x);
658static simd_int4 SIMD_CFUNC simd_int_sat(simd_half4 __x);
659static simd_int8 SIMD_CFUNC simd_int_sat(simd_half8 __x);
660static simd_int16 SIMD_CFUNC simd_int_sat(simd_half16 __x);
661static simd_int2 SIMD_CFUNC simd_int_sat(simd_int2 __x);
662static simd_int3 SIMD_CFUNC simd_int_sat(simd_int3 __x);
663static simd_int4 SIMD_CFUNC simd_int_sat(simd_int4 __x);
664static simd_int8 SIMD_CFUNC simd_int_sat(simd_int8 __x);
665static simd_int16 SIMD_CFUNC simd_int_sat(simd_int16 __x);
666static simd_int2 SIMD_CFUNC simd_int_sat(simd_float2 __x);
667static simd_int3 SIMD_CFUNC simd_int_sat(simd_float3 __x);
668static simd_int4 SIMD_CFUNC simd_int_sat(simd_float4 __x);
669static simd_int8 SIMD_CFUNC simd_int_sat(simd_float8 __x);
670static simd_int16 SIMD_CFUNC simd_int_sat(simd_float16 __x);
671static simd_int2 SIMD_CFUNC simd_int_sat(simd_long2 __x);
672static simd_int3 SIMD_CFUNC simd_int_sat(simd_long3 __x);
673static simd_int4 SIMD_CFUNC simd_int_sat(simd_long4 __x);
674static simd_int8 SIMD_CFUNC simd_int_sat(simd_long8 __x);
675static simd_int2 SIMD_CFUNC simd_int_sat(simd_double2 __x);
676static simd_int3 SIMD_CFUNC simd_int_sat(simd_double3 __x);
677static simd_int4 SIMD_CFUNC simd_int_sat(simd_double4 __x);
678static simd_int8 SIMD_CFUNC simd_int_sat(simd_double8 __x);
679static simd_int2 SIMD_CFUNC simd_int_sat(simd_uchar2 __x);
680static simd_int3 SIMD_CFUNC simd_int_sat(simd_uchar3 __x);
681static simd_int4 SIMD_CFUNC simd_int_sat(simd_uchar4 __x);
682static simd_int8 SIMD_CFUNC simd_int_sat(simd_uchar8 __x);
683static simd_int16 SIMD_CFUNC simd_int_sat(simd_uchar16 __x);
684static simd_int2 SIMD_CFUNC simd_int_sat(simd_ushort2 __x);
685static simd_int3 SIMD_CFUNC simd_int_sat(simd_ushort3 __x);
686static simd_int4 SIMD_CFUNC simd_int_sat(simd_ushort4 __x);
687static simd_int8 SIMD_CFUNC simd_int_sat(simd_ushort8 __x);
688static simd_int16 SIMD_CFUNC simd_int_sat(simd_ushort16 __x);
689static simd_int2 SIMD_CFUNC simd_int_sat(simd_uint2 __x);
690static simd_int3 SIMD_CFUNC simd_int_sat(simd_uint3 __x);
691static simd_int4 SIMD_CFUNC simd_int_sat(simd_uint4 __x);
692static simd_int8 SIMD_CFUNC simd_int_sat(simd_uint8 __x);
693static simd_int16 SIMD_CFUNC simd_int_sat(simd_uint16 __x);
694static simd_int2 SIMD_CFUNC simd_int_sat(simd_ulong2 __x);
695static simd_int3 SIMD_CFUNC simd_int_sat(simd_ulong3 __x);
696static simd_int4 SIMD_CFUNC simd_int_sat(simd_ulong4 __x);
697static simd_int8 SIMD_CFUNC simd_int_sat(simd_ulong8 __x);
698static simd_int2 SIMD_CFUNC simd_int_rte(simd_float2 __x);
699static simd_int3 SIMD_CFUNC simd_int_rte(simd_float3 __x);
700static simd_int4 SIMD_CFUNC simd_int_rte(simd_float4 __x);
701static simd_int8 SIMD_CFUNC simd_int_rte(simd_float8 __x);
702static simd_int16 SIMD_CFUNC simd_int_rte(simd_float16 __x);
703#define vector_int simd_int
704#define vector_int_sat simd_int_sat
705
706static simd_uint2 SIMD_CFUNC simd_uint(simd_char2 __x);
707static simd_uint3 SIMD_CFUNC simd_uint(simd_char3 __x);
708static simd_uint4 SIMD_CFUNC simd_uint(simd_char4 __x);
709static simd_uint8 SIMD_CFUNC simd_uint(simd_char8 __x);
710static simd_uint16 SIMD_CFUNC simd_uint(simd_char16 __x);
711static simd_uint2 SIMD_CFUNC simd_uint(simd_uchar2 __x);
712static simd_uint3 SIMD_CFUNC simd_uint(simd_uchar3 __x);
713static simd_uint4 SIMD_CFUNC simd_uint(simd_uchar4 __x);
714static simd_uint8 SIMD_CFUNC simd_uint(simd_uchar8 __x);
715static simd_uint16 SIMD_CFUNC simd_uint(simd_uchar16 __x);
716static simd_uint2 SIMD_CFUNC simd_uint(simd_short2 __x);
717static simd_uint3 SIMD_CFUNC simd_uint(simd_short3 __x);
718static simd_uint4 SIMD_CFUNC simd_uint(simd_short4 __x);
719static simd_uint8 SIMD_CFUNC simd_uint(simd_short8 __x);
720static simd_uint16 SIMD_CFUNC simd_uint(simd_short16 __x);
721static simd_uint2 SIMD_CFUNC simd_uint(simd_ushort2 __x);
722static simd_uint3 SIMD_CFUNC simd_uint(simd_ushort3 __x);
723static simd_uint4 SIMD_CFUNC simd_uint(simd_ushort4 __x);
724static simd_uint8 SIMD_CFUNC simd_uint(simd_ushort8 __x);
725static simd_uint16 SIMD_CFUNC simd_uint(simd_ushort16 __x);
726static simd_uint2 SIMD_CFUNC simd_uint(simd_half2 __x);
727static simd_uint3 SIMD_CFUNC simd_uint(simd_half3 __x);
728static simd_uint4 SIMD_CFUNC simd_uint(simd_half4 __x);
729static simd_uint8 SIMD_CFUNC simd_uint(simd_half8 __x);
730static simd_uint16 SIMD_CFUNC simd_uint(simd_half16 __x);
731static simd_uint2 SIMD_CFUNC simd_uint(simd_int2 __x);
732static simd_uint3 SIMD_CFUNC simd_uint(simd_int3 __x);
733static simd_uint4 SIMD_CFUNC simd_uint(simd_int4 __x);
734static simd_uint8 SIMD_CFUNC simd_uint(simd_int8 __x);
735static simd_uint16 SIMD_CFUNC simd_uint(simd_int16 __x);
736static simd_uint2 SIMD_CFUNC simd_uint(simd_uint2 __x);
737static simd_uint3 SIMD_CFUNC simd_uint(simd_uint3 __x);
738static simd_uint4 SIMD_CFUNC simd_uint(simd_uint4 __x);
739static simd_uint8 SIMD_CFUNC simd_uint(simd_uint8 __x);
740static simd_uint16 SIMD_CFUNC simd_uint(simd_uint16 __x);
741static simd_uint2 SIMD_CFUNC simd_uint(simd_float2 __x);
742static simd_uint3 SIMD_CFUNC simd_uint(simd_float3 __x);
743static simd_uint4 SIMD_CFUNC simd_uint(simd_float4 __x);
744static simd_uint8 SIMD_CFUNC simd_uint(simd_float8 __x);
745static simd_uint16 SIMD_CFUNC simd_uint(simd_float16 __x);
746static simd_uint2 SIMD_CFUNC simd_uint(simd_long2 __x);
747static simd_uint3 SIMD_CFUNC simd_uint(simd_long3 __x);
748static simd_uint4 SIMD_CFUNC simd_uint(simd_long4 __x);
749static simd_uint8 SIMD_CFUNC simd_uint(simd_long8 __x);
750static simd_uint2 SIMD_CFUNC simd_uint(simd_ulong2 __x);
751static simd_uint3 SIMD_CFUNC simd_uint(simd_ulong3 __x);
752static simd_uint4 SIMD_CFUNC simd_uint(simd_ulong4 __x);
753static simd_uint8 SIMD_CFUNC simd_uint(simd_ulong8 __x);
754static simd_uint2 SIMD_CFUNC simd_uint(simd_double2 __x);
755static simd_uint3 SIMD_CFUNC simd_uint(simd_double3 __x);
756static simd_uint4 SIMD_CFUNC simd_uint(simd_double4 __x);
757static simd_uint8 SIMD_CFUNC simd_uint(simd_double8 __x);
758static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_char2 __x);
759static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_char3 __x);
760static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_char4 __x);
761static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_char8 __x);
762static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_char16 __x);
763static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_short2 __x);
764static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_short3 __x);
765static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_short4 __x);
766static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_short8 __x);
767static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_short16 __x);
768static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_half2 __x);
769static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_half3 __x);
770static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_half4 __x);
771static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_half8 __x);
772static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_half16 __x);
773static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_int2 __x);
774static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_int3 __x);
775static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_int4 __x);
776static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_int8 __x);
777static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_int16 __x);
778static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_float2 __x);
779static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_float3 __x);
780static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_float4 __x);
781static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_float8 __x);
782static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_float16 __x);
783static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_long2 __x);
784static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_long3 __x);
785static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_long4 __x);
786static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_long8 __x);
787static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_double2 __x);
788static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_double3 __x);
789static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_double4 __x);
790static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_double8 __x);
791static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_uchar2 __x);
792static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_uchar3 __x);
793static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_uchar4 __x);
794static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_uchar8 __x);
795static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_uchar16 __x);
796static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_ushort2 __x);
797static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_ushort3 __x);
798static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_ushort4 __x);
799static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_ushort8 __x);
800static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_ushort16 __x);
801static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_uint2 __x);
802static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_uint3 __x);
803static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_uint4 __x);
804static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_uint8 __x);
805static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_uint16 __x);
806static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_ulong2 __x);
807static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_ulong3 __x);
808static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_ulong4 __x);
809static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_ulong8 __x);
810static simd_uint2 SIMD_CFUNC simd_uint_rte(simd_float2 __x);
811static simd_uint3 SIMD_CFUNC simd_uint_rte(simd_float3 __x);
812static simd_uint4 SIMD_CFUNC simd_uint_rte(simd_float4 __x);
813static simd_uint8 SIMD_CFUNC simd_uint_rte(simd_float8 __x);
814static simd_uint16 SIMD_CFUNC simd_uint_rte(simd_float16 __x);
815#define vector_uint simd_uint
816#define vector_uint_sat simd_uint_sat
817
818static simd_float2 SIMD_CFUNC simd_float(simd_char2 __x);
819static simd_float3 SIMD_CFUNC simd_float(simd_char3 __x);
820static simd_float4 SIMD_CFUNC simd_float(simd_char4 __x);
821static simd_float8 SIMD_CFUNC simd_float(simd_char8 __x);
822static simd_float16 SIMD_CFUNC simd_float(simd_char16 __x);
823static simd_float2 SIMD_CFUNC simd_float(simd_uchar2 __x);
824static simd_float3 SIMD_CFUNC simd_float(simd_uchar3 __x);
825static simd_float4 SIMD_CFUNC simd_float(simd_uchar4 __x);
826static simd_float8 SIMD_CFUNC simd_float(simd_uchar8 __x);
827static simd_float16 SIMD_CFUNC simd_float(simd_uchar16 __x);
828static simd_float2 SIMD_CFUNC simd_float(simd_short2 __x);
829static simd_float3 SIMD_CFUNC simd_float(simd_short3 __x);
830static simd_float4 SIMD_CFUNC simd_float(simd_short4 __x);
831static simd_float8 SIMD_CFUNC simd_float(simd_short8 __x);
832static simd_float16 SIMD_CFUNC simd_float(simd_short16 __x);
833static simd_float2 SIMD_CFUNC simd_float(simd_ushort2 __x);
834static simd_float3 SIMD_CFUNC simd_float(simd_ushort3 __x);
835static simd_float4 SIMD_CFUNC simd_float(simd_ushort4 __x);
836static simd_float8 SIMD_CFUNC simd_float(simd_ushort8 __x);
837static simd_float16 SIMD_CFUNC simd_float(simd_ushort16 __x);
838static simd_float2 SIMD_CFUNC simd_float(simd_half2 __x);
839static simd_float3 SIMD_CFUNC simd_float(simd_half3 __x);
840static simd_float4 SIMD_CFUNC simd_float(simd_half4 __x);
841static simd_float8 SIMD_CFUNC simd_float(simd_half8 __x);
842static simd_float16 SIMD_CFUNC simd_float(simd_half16 __x);
843static simd_float2 SIMD_CFUNC simd_float(simd_int2 __x);
844static simd_float3 SIMD_CFUNC simd_float(simd_int3 __x);
845static simd_float4 SIMD_CFUNC simd_float(simd_int4 __x);
846static simd_float8 SIMD_CFUNC simd_float(simd_int8 __x);
847static simd_float16 SIMD_CFUNC simd_float(simd_int16 __x);
848static simd_float2 SIMD_CFUNC simd_float(simd_uint2 __x);
849static simd_float3 SIMD_CFUNC simd_float(simd_uint3 __x);
850static simd_float4 SIMD_CFUNC simd_float(simd_uint4 __x);
851static simd_float8 SIMD_CFUNC simd_float(simd_uint8 __x);
852static simd_float16 SIMD_CFUNC simd_float(simd_uint16 __x);
853static simd_float2 SIMD_CFUNC simd_float(simd_float2 __x);
854static simd_float3 SIMD_CFUNC simd_float(simd_float3 __x);
855static simd_float4 SIMD_CFUNC simd_float(simd_float4 __x);
856static simd_float8 SIMD_CFUNC simd_float(simd_float8 __x);
857static simd_float16 SIMD_CFUNC simd_float(simd_float16 __x);
858static simd_float2 SIMD_CFUNC simd_float(simd_long2 __x);
859static simd_float3 SIMD_CFUNC simd_float(simd_long3 __x);
860static simd_float4 SIMD_CFUNC simd_float(simd_long4 __x);
861static simd_float8 SIMD_CFUNC simd_float(simd_long8 __x);
862static simd_float2 SIMD_CFUNC simd_float(simd_ulong2 __x);
863static simd_float3 SIMD_CFUNC simd_float(simd_ulong3 __x);
864static simd_float4 SIMD_CFUNC simd_float(simd_ulong4 __x);
865static simd_float8 SIMD_CFUNC simd_float(simd_ulong8 __x);
866static simd_float2 SIMD_CFUNC simd_float(simd_double2 __x);
867static simd_float3 SIMD_CFUNC simd_float(simd_double3 __x);
868static simd_float4 SIMD_CFUNC simd_float(simd_double4 __x);
869static simd_float8 SIMD_CFUNC simd_float(simd_double8 __x);
870#define vector_float simd_float
871
872static simd_long2 SIMD_CFUNC simd_long(simd_char2 __x);
873static simd_long3 SIMD_CFUNC simd_long(simd_char3 __x);
874static simd_long4 SIMD_CFUNC simd_long(simd_char4 __x);
875static simd_long8 SIMD_CFUNC simd_long(simd_char8 __x);
876static simd_long2 SIMD_CFUNC simd_long(simd_uchar2 __x);
877static simd_long3 SIMD_CFUNC simd_long(simd_uchar3 __x);
878static simd_long4 SIMD_CFUNC simd_long(simd_uchar4 __x);
879static simd_long8 SIMD_CFUNC simd_long(simd_uchar8 __x);
880static simd_long2 SIMD_CFUNC simd_long(simd_short2 __x);
881static simd_long3 SIMD_CFUNC simd_long(simd_short3 __x);
882static simd_long4 SIMD_CFUNC simd_long(simd_short4 __x);
883static simd_long8 SIMD_CFUNC simd_long(simd_short8 __x);
884static simd_long2 SIMD_CFUNC simd_long(simd_ushort2 __x);
885static simd_long3 SIMD_CFUNC simd_long(simd_ushort3 __x);
886static simd_long4 SIMD_CFUNC simd_long(simd_ushort4 __x);
887static simd_long8 SIMD_CFUNC simd_long(simd_ushort8 __x);
888static simd_long2 SIMD_CFUNC simd_long(simd_half2 __x);
889static simd_long3 SIMD_CFUNC simd_long(simd_half3 __x);
890static simd_long4 SIMD_CFUNC simd_long(simd_half4 __x);
891static simd_long8 SIMD_CFUNC simd_long(simd_half8 __x);
892static simd_long2 SIMD_CFUNC simd_long(simd_int2 __x);
893static simd_long3 SIMD_CFUNC simd_long(simd_int3 __x);
894static simd_long4 SIMD_CFUNC simd_long(simd_int4 __x);
895static simd_long8 SIMD_CFUNC simd_long(simd_int8 __x);
896static simd_long2 SIMD_CFUNC simd_long(simd_uint2 __x);
897static simd_long3 SIMD_CFUNC simd_long(simd_uint3 __x);
898static simd_long4 SIMD_CFUNC simd_long(simd_uint4 __x);
899static simd_long8 SIMD_CFUNC simd_long(simd_uint8 __x);
900static simd_long2 SIMD_CFUNC simd_long(simd_float2 __x);
901static simd_long3 SIMD_CFUNC simd_long(simd_float3 __x);
902static simd_long4 SIMD_CFUNC simd_long(simd_float4 __x);
903static simd_long8 SIMD_CFUNC simd_long(simd_float8 __x);
904static simd_long2 SIMD_CFUNC simd_long(simd_long2 __x);
905static simd_long3 SIMD_CFUNC simd_long(simd_long3 __x);
906static simd_long4 SIMD_CFUNC simd_long(simd_long4 __x);
907static simd_long8 SIMD_CFUNC simd_long(simd_long8 __x);
908static simd_long2 SIMD_CFUNC simd_long(simd_ulong2 __x);
909static simd_long3 SIMD_CFUNC simd_long(simd_ulong3 __x);
910static simd_long4 SIMD_CFUNC simd_long(simd_ulong4 __x);
911static simd_long8 SIMD_CFUNC simd_long(simd_ulong8 __x);
912static simd_long2 SIMD_CFUNC simd_long(simd_double2 __x);
913static simd_long3 SIMD_CFUNC simd_long(simd_double3 __x);
914static simd_long4 SIMD_CFUNC simd_long(simd_double4 __x);
915static simd_long8 SIMD_CFUNC simd_long(simd_double8 __x);
916static simd_long2 SIMD_CFUNC simd_long_sat(simd_char2 __x);
917static simd_long3 SIMD_CFUNC simd_long_sat(simd_char3 __x);
918static simd_long4 SIMD_CFUNC simd_long_sat(simd_char4 __x);
919static simd_long8 SIMD_CFUNC simd_long_sat(simd_char8 __x);
920static simd_long2 SIMD_CFUNC simd_long_sat(simd_short2 __x);
921static simd_long3 SIMD_CFUNC simd_long_sat(simd_short3 __x);
922static simd_long4 SIMD_CFUNC simd_long_sat(simd_short4 __x);
923static simd_long8 SIMD_CFUNC simd_long_sat(simd_short8 __x);
924static simd_long2 SIMD_CFUNC simd_long_sat(simd_half2 __x);
925static simd_long3 SIMD_CFUNC simd_long_sat(simd_half3 __x);
926static simd_long4 SIMD_CFUNC simd_long_sat(simd_half4 __x);
927static simd_long8 SIMD_CFUNC simd_long_sat(simd_half8 __x);
928static simd_long2 SIMD_CFUNC simd_long_sat(simd_int2 __x);
929static simd_long3 SIMD_CFUNC simd_long_sat(simd_int3 __x);
930static simd_long4 SIMD_CFUNC simd_long_sat(simd_int4 __x);
931static simd_long8 SIMD_CFUNC simd_long_sat(simd_int8 __x);
932static simd_long2 SIMD_CFUNC simd_long_sat(simd_float2 __x);
933static simd_long3 SIMD_CFUNC simd_long_sat(simd_float3 __x);
934static simd_long4 SIMD_CFUNC simd_long_sat(simd_float4 __x);
935static simd_long8 SIMD_CFUNC simd_long_sat(simd_float8 __x);
936static simd_long2 SIMD_CFUNC simd_long_sat(simd_long2 __x);
937static simd_long3 SIMD_CFUNC simd_long_sat(simd_long3 __x);
938static simd_long4 SIMD_CFUNC simd_long_sat(simd_long4 __x);
939static simd_long8 SIMD_CFUNC simd_long_sat(simd_long8 __x);
940static simd_long2 SIMD_CFUNC simd_long_sat(simd_double2 __x);
941static simd_long3 SIMD_CFUNC simd_long_sat(simd_double3 __x);
942static simd_long4 SIMD_CFUNC simd_long_sat(simd_double4 __x);
943static simd_long8 SIMD_CFUNC simd_long_sat(simd_double8 __x);
944static simd_long2 SIMD_CFUNC simd_long_sat(simd_uchar2 __x);
945static simd_long3 SIMD_CFUNC simd_long_sat(simd_uchar3 __x);
946static simd_long4 SIMD_CFUNC simd_long_sat(simd_uchar4 __x);
947static simd_long8 SIMD_CFUNC simd_long_sat(simd_uchar8 __x);
948static simd_long2 SIMD_CFUNC simd_long_sat(simd_ushort2 __x);
949static simd_long3 SIMD_CFUNC simd_long_sat(simd_ushort3 __x);
950static simd_long4 SIMD_CFUNC simd_long_sat(simd_ushort4 __x);
951static simd_long8 SIMD_CFUNC simd_long_sat(simd_ushort8 __x);
952static simd_long2 SIMD_CFUNC simd_long_sat(simd_uint2 __x);
953static simd_long3 SIMD_CFUNC simd_long_sat(simd_uint3 __x);
954static simd_long4 SIMD_CFUNC simd_long_sat(simd_uint4 __x);
955static simd_long8 SIMD_CFUNC simd_long_sat(simd_uint8 __x);
956static simd_long2 SIMD_CFUNC simd_long_sat(simd_ulong2 __x);
957static simd_long3 SIMD_CFUNC simd_long_sat(simd_ulong3 __x);
958static simd_long4 SIMD_CFUNC simd_long_sat(simd_ulong4 __x);
959static simd_long8 SIMD_CFUNC simd_long_sat(simd_ulong8 __x);
960static simd_long2 SIMD_CFUNC simd_long_rte(simd_double2 __x);
961static simd_long3 SIMD_CFUNC simd_long_rte(simd_double3 __x);
962static simd_long4 SIMD_CFUNC simd_long_rte(simd_double4 __x);
963static simd_long8 SIMD_CFUNC simd_long_rte(simd_double8 __x);
964#define vector_long simd_long
965#define vector_long_sat simd_long_sat
966
967static simd_ulong2 SIMD_CFUNC simd_ulong(simd_char2 __x);
968static simd_ulong3 SIMD_CFUNC simd_ulong(simd_char3 __x);
969static simd_ulong4 SIMD_CFUNC simd_ulong(simd_char4 __x);
970static simd_ulong8 SIMD_CFUNC simd_ulong(simd_char8 __x);
971static simd_ulong2 SIMD_CFUNC simd_ulong(simd_uchar2 __x);
972static simd_ulong3 SIMD_CFUNC simd_ulong(simd_uchar3 __x);
973static simd_ulong4 SIMD_CFUNC simd_ulong(simd_uchar4 __x);
974static simd_ulong8 SIMD_CFUNC simd_ulong(simd_uchar8 __x);
975static simd_ulong2 SIMD_CFUNC simd_ulong(simd_short2 __x);
976static simd_ulong3 SIMD_CFUNC simd_ulong(simd_short3 __x);
977static simd_ulong4 SIMD_CFUNC simd_ulong(simd_short4 __x);
978static simd_ulong8 SIMD_CFUNC simd_ulong(simd_short8 __x);
979static simd_ulong2 SIMD_CFUNC simd_ulong(simd_ushort2 __x);
980static simd_ulong3 SIMD_CFUNC simd_ulong(simd_ushort3 __x);
981static simd_ulong4 SIMD_CFUNC simd_ulong(simd_ushort4 __x);
982static simd_ulong8 SIMD_CFUNC simd_ulong(simd_ushort8 __x);
983static simd_ulong2 SIMD_CFUNC simd_ulong(simd_half2 __x);
984static simd_ulong3 SIMD_CFUNC simd_ulong(simd_half3 __x);
985static simd_ulong4 SIMD_CFUNC simd_ulong(simd_half4 __x);
986static simd_ulong8 SIMD_CFUNC simd_ulong(simd_half8 __x);
987static simd_ulong2 SIMD_CFUNC simd_ulong(simd_int2 __x);
988static simd_ulong3 SIMD_CFUNC simd_ulong(simd_int3 __x);
989static simd_ulong4 SIMD_CFUNC simd_ulong(simd_int4 __x);
990static simd_ulong8 SIMD_CFUNC simd_ulong(simd_int8 __x);
991static simd_ulong2 SIMD_CFUNC simd_ulong(simd_uint2 __x);
992static simd_ulong3 SIMD_CFUNC simd_ulong(simd_uint3 __x);
993static simd_ulong4 SIMD_CFUNC simd_ulong(simd_uint4 __x);
994static simd_ulong8 SIMD_CFUNC simd_ulong(simd_uint8 __x);
995static simd_ulong2 SIMD_CFUNC simd_ulong(simd_float2 __x);
996static simd_ulong3 SIMD_CFUNC simd_ulong(simd_float3 __x);
997static simd_ulong4 SIMD_CFUNC simd_ulong(simd_float4 __x);
998static simd_ulong8 SIMD_CFUNC simd_ulong(simd_float8 __x);
999static simd_ulong2 SIMD_CFUNC simd_ulong(simd_long2 __x);
1000static simd_ulong3 SIMD_CFUNC simd_ulong(simd_long3 __x);
1001static simd_ulong4 SIMD_CFUNC simd_ulong(simd_long4 __x);
1002static simd_ulong8 SIMD_CFUNC simd_ulong(simd_long8 __x);
1003static simd_ulong2 SIMD_CFUNC simd_ulong(simd_ulong2 __x);
1004static simd_ulong3 SIMD_CFUNC simd_ulong(simd_ulong3 __x);
1005static simd_ulong4 SIMD_CFUNC simd_ulong(simd_ulong4 __x);
1006static simd_ulong8 SIMD_CFUNC simd_ulong(simd_ulong8 __x);
1007static simd_ulong2 SIMD_CFUNC simd_ulong(simd_double2 __x);
1008static simd_ulong3 SIMD_CFUNC simd_ulong(simd_double3 __x);
1009static simd_ulong4 SIMD_CFUNC simd_ulong(simd_double4 __x);
1010static simd_ulong8 SIMD_CFUNC simd_ulong(simd_double8 __x);
1011static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_char2 __x);
1012static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_char3 __x);
1013static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_char4 __x);
1014static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_char8 __x);
1015static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_short2 __x);
1016static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_short3 __x);
1017static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_short4 __x);
1018static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_short8 __x);
1019static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_half2 __x);
1020static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_half3 __x);
1021static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_half4 __x);
1022static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_half8 __x);
1023static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_int2 __x);
1024static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_int3 __x);
1025static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_int4 __x);
1026static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_int8 __x);
1027static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_float2 __x);
1028static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_float3 __x);
1029static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_float4 __x);
1030static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_float8 __x);
1031static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_long2 __x);
1032static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_long3 __x);
1033static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_long4 __x);
1034static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_long8 __x);
1035static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_double2 __x);
1036static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_double3 __x);
1037static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_double4 __x);
1038static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_double8 __x);
1039static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_uchar2 __x);
1040static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_uchar3 __x);
1041static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_uchar4 __x);
1042static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_uchar8 __x);
1043static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_ushort2 __x);
1044static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_ushort3 __x);
1045static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_ushort4 __x);
1046static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_ushort8 __x);
1047static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_uint2 __x);
1048static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_uint3 __x);
1049static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_uint4 __x);
1050static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_uint8 __x);
1051static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_ulong2 __x);
1052static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_ulong3 __x);
1053static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_ulong4 __x);
1054static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_ulong8 __x);
1055static simd_ulong2 SIMD_CFUNC simd_ulong_rte(simd_double2 __x);
1056static simd_ulong3 SIMD_CFUNC simd_ulong_rte(simd_double3 __x);
1057static simd_ulong4 SIMD_CFUNC simd_ulong_rte(simd_double4 __x);
1058static simd_ulong8 SIMD_CFUNC simd_ulong_rte(simd_double8 __x);
1059#define vector_ulong simd_ulong
1060#define vector_ulong_sat simd_ulong_sat
1061
1062static simd_double2 SIMD_CFUNC simd_double(simd_char2 __x);
1063static simd_double3 SIMD_CFUNC simd_double(simd_char3 __x);
1064static simd_double4 SIMD_CFUNC simd_double(simd_char4 __x);
1065static simd_double8 SIMD_CFUNC simd_double(simd_char8 __x);
1066static simd_double2 SIMD_CFUNC simd_double(simd_uchar2 __x);
1067static simd_double3 SIMD_CFUNC simd_double(simd_uchar3 __x);
1068static simd_double4 SIMD_CFUNC simd_double(simd_uchar4 __x);
1069static simd_double8 SIMD_CFUNC simd_double(simd_uchar8 __x);
1070static simd_double2 SIMD_CFUNC simd_double(simd_short2 __x);
1071static simd_double3 SIMD_CFUNC simd_double(simd_short3 __x);
1072static simd_double4 SIMD_CFUNC simd_double(simd_short4 __x);
1073static simd_double8 SIMD_CFUNC simd_double(simd_short8 __x);
1074static simd_double2 SIMD_CFUNC simd_double(simd_ushort2 __x);
1075static simd_double3 SIMD_CFUNC simd_double(simd_ushort3 __x);
1076static simd_double4 SIMD_CFUNC simd_double(simd_ushort4 __x);
1077static simd_double8 SIMD_CFUNC simd_double(simd_ushort8 __x);
1078static simd_double2 SIMD_CFUNC simd_double(simd_half2 __x);
1079static simd_double3 SIMD_CFUNC simd_double(simd_half3 __x);
1080static simd_double4 SIMD_CFUNC simd_double(simd_half4 __x);
1081static simd_double8 SIMD_CFUNC simd_double(simd_half8 __x);
1082static simd_double2 SIMD_CFUNC simd_double(simd_int2 __x);
1083static simd_double3 SIMD_CFUNC simd_double(simd_int3 __x);
1084static simd_double4 SIMD_CFUNC simd_double(simd_int4 __x);
1085static simd_double8 SIMD_CFUNC simd_double(simd_int8 __x);
1086static simd_double2 SIMD_CFUNC simd_double(simd_uint2 __x);
1087static simd_double3 SIMD_CFUNC simd_double(simd_uint3 __x);
1088static simd_double4 SIMD_CFUNC simd_double(simd_uint4 __x);
1089static simd_double8 SIMD_CFUNC simd_double(simd_uint8 __x);
1090static simd_double2 SIMD_CFUNC simd_double(simd_float2 __x);
1091static simd_double3 SIMD_CFUNC simd_double(simd_float3 __x);
1092static simd_double4 SIMD_CFUNC simd_double(simd_float4 __x);
1093static simd_double8 SIMD_CFUNC simd_double(simd_float8 __x);
1094static simd_double2 SIMD_CFUNC simd_double(simd_long2 __x);
1095static simd_double3 SIMD_CFUNC simd_double(simd_long3 __x);
1096static simd_double4 SIMD_CFUNC simd_double(simd_long4 __x);
1097static simd_double8 SIMD_CFUNC simd_double(simd_long8 __x);
1098static simd_double2 SIMD_CFUNC simd_double(simd_ulong2 __x);
1099static simd_double3 SIMD_CFUNC simd_double(simd_ulong3 __x);
1100static simd_double4 SIMD_CFUNC simd_double(simd_ulong4 __x);
1101static simd_double8 SIMD_CFUNC simd_double(simd_ulong8 __x);
1102static simd_double2 SIMD_CFUNC simd_double(simd_double2 __x);
1103static simd_double3 SIMD_CFUNC simd_double(simd_double3 __x);
1104static simd_double4 SIMD_CFUNC simd_double(simd_double4 __x);
1105static simd_double8 SIMD_CFUNC simd_double(simd_double8 __x);
1106#define vector_double simd_double
1107
1108static simd_char2 SIMD_CFUNC vector2(char __x, char __y) { return ( simd_char2){__x, __y}; }
1109static simd_uchar2 SIMD_CFUNC vector2(unsigned char __x, unsigned char __y) { return ( simd_uchar2){__x, __y}; }
1110static simd_short2 SIMD_CFUNC vector2(short __x, short __y) { return ( simd_short2){__x, __y}; }
1111static simd_ushort2 SIMD_CFUNC vector2(unsigned short __x, unsigned short __y) { return (simd_ushort2){__x, __y}; }
1112static simd_half2 SIMD_CFUNC vector2(_Float16 __x, _Float16 __y) { return ( simd_half2){__x, __y}; }
1113static simd_int2 SIMD_CFUNC vector2(int __x, int __y) { return ( simd_int2){__x, __y}; }
1114static simd_uint2 SIMD_CFUNC vector2(unsigned int __x, unsigned int __y) { return ( simd_uint2){__x, __y}; }
1115static simd_float2 SIMD_CFUNC vector2(float __x, float __y) { return ( simd_float2){__x, __y}; }
1116static simd_long2 SIMD_CFUNC vector2(simd_long1 __x, simd_long1 __y) { return ( simd_long2){__x, __y}; }
1117static simd_ulong2 SIMD_CFUNC vector2(simd_ulong1 __x, simd_ulong1 __y) { return ( simd_ulong2){__x, __y}; }
1118static simd_double2 SIMD_CFUNC vector2(double __x, double __y) { return (simd_double2){__x, __y}; }
1119
1120static simd_char3 SIMD_CFUNC vector3(char __x, char __y, char __z) { return ( simd_char3){__x, __y, __z}; }
1121static simd_uchar3 SIMD_CFUNC vector3(unsigned char __x, unsigned char __y, unsigned char __z) { return ( simd_uchar3){__x, __y, __z}; }
1122static simd_short3 SIMD_CFUNC vector3(short __x, short __y, short __z) { return ( simd_short3){__x, __y, __z}; }
1123static simd_ushort3 SIMD_CFUNC vector3(unsigned short __x, unsigned short __y, unsigned short __z) { return (simd_ushort3){__x, __y, __z}; }
1124static simd_half3 SIMD_CFUNC vector3(_Float16 __x, _Float16 __y, _Float16 __z) { return ( simd_half3){__x, __y, __z}; }
1125static simd_int3 SIMD_CFUNC vector3(int __x, int __y, int __z) { return ( simd_int3){__x, __y, __z}; }
1126static simd_uint3 SIMD_CFUNC vector3(unsigned int __x, unsigned int __y, unsigned int __z) { return ( simd_uint3){__x, __y, __z}; }
1127static simd_float3 SIMD_CFUNC vector3(float __x, float __y, float __z) { return ( simd_float3){__x, __y, __z}; }
1128static simd_long3 SIMD_CFUNC vector3(simd_long1 __x, simd_long1 __y, simd_long1 __z) { return ( simd_long3){__x, __y, __z}; }
1129static simd_ulong3 SIMD_CFUNC vector3(simd_ulong1 __x, simd_ulong1 __y, simd_ulong1 __z) { return ( simd_ulong3){__x, __y, __z}; }
1130static simd_double3 SIMD_CFUNC vector3(double __x, double __y, double __z) { return (simd_double3){__x, __y, __z}; }
1131
1132static simd_char3 SIMD_CFUNC vector3(simd_char2 __xy, char __z) { simd_char3 __r; __r.xy = __xy; __r.z = __z; return __r; }
1133static simd_uchar3 SIMD_CFUNC vector3(simd_uchar2 __xy, unsigned char __z) { simd_uchar3 __r; __r.xy = __xy; __r.z = __z; return __r; }
1134static simd_short3 SIMD_CFUNC vector3(simd_short2 __xy, short __z) { simd_short3 __r; __r.xy = __xy; __r.z = __z; return __r; }
1135static simd_ushort3 SIMD_CFUNC vector3(simd_ushort2 __xy, unsigned short __z) { simd_ushort3 __r; __r.xy = __xy; __r.z = __z; return __r; }
1136static simd_half3 SIMD_CFUNC vector3(simd_half2 __xy, _Float16 __z) { simd_half3 __r; __r.xy = __xy; __r.z = __z; return __r; }
1137static simd_int3 SIMD_CFUNC vector3(simd_int2 __xy, int __z) { simd_int3 __r; __r.xy = __xy; __r.z = __z; return __r; }
1138static simd_uint3 SIMD_CFUNC vector3(simd_uint2 __xy, unsigned int __z) { simd_uint3 __r; __r.xy = __xy; __r.z = __z; return __r; }
1139static simd_float3 SIMD_CFUNC vector3(simd_float2 __xy, float __z) { simd_float3 __r; __r.xy = __xy; __r.z = __z; return __r; }
1140static simd_long3 SIMD_CFUNC vector3(simd_long2 __xy, simd_long1 __z) { simd_long3 __r; __r.xy = __xy; __r.z = __z; return __r; }
1141static simd_ulong3 SIMD_CFUNC vector3(simd_ulong2 __xy, simd_ulong1 __z) { simd_ulong3 __r; __r.xy = __xy; __r.z = __z; return __r; }
1142static simd_double3 SIMD_CFUNC vector3(simd_double2 __xy, double __z) { simd_double3 __r; __r.xy = __xy; __r.z = __z; return __r; }
1143
1144static simd_char4 SIMD_CFUNC vector4(char __x, char __y, char __z, char __w) { return ( simd_char4){__x, __y, __z, __w}; }
1145static simd_uchar4 SIMD_CFUNC vector4(unsigned char __x, unsigned char __y, unsigned char __z, unsigned char __w) { return ( simd_uchar4){__x, __y, __z, __w}; }
1146static simd_short4 SIMD_CFUNC vector4(short __x, short __y, short __z, short __w) { return ( simd_short4){__x, __y, __z, __w}; }
1147static simd_ushort4 SIMD_CFUNC vector4(unsigned short __x, unsigned short __y, unsigned short __z, unsigned short __w) { return (simd_ushort4){__x, __y, __z, __w}; }
1148static simd_half4 SIMD_CFUNC vector4(_Float16 __x, _Float16 __y, _Float16 __z, _Float16 __w) { return ( simd_half4){__x, __y, __z, __w}; }
1149static simd_int4 SIMD_CFUNC vector4(int __x, int __y, int __z, int __w) { return ( simd_int4){__x, __y, __z, __w}; }
1150static simd_uint4 SIMD_CFUNC vector4(unsigned int __x, unsigned int __y, unsigned int __z, unsigned int __w) { return ( simd_uint4){__x, __y, __z, __w}; }
1151static simd_float4 SIMD_CFUNC vector4(float __x, float __y, float __z, float __w) { return ( simd_float4){__x, __y, __z, __w}; }
1152static simd_long4 SIMD_CFUNC vector4(simd_long1 __x, simd_long1 __y, simd_long1 __z, simd_long1 __w) { return ( simd_long4){__x, __y, __z, __w}; }
1153static simd_ulong4 SIMD_CFUNC vector4(simd_ulong1 __x, simd_ulong1 __y, simd_ulong1 __z, simd_ulong1 __w) { return ( simd_ulong4){__x, __y, __z, __w}; }
1154static simd_double4 SIMD_CFUNC vector4(double __x, double __y, double __z, double __w) { return (simd_double4){__x, __y, __z, __w}; }
1155
1156static simd_char4 SIMD_CFUNC vector4(simd_char2 __xy, simd_char2 __zw) { simd_char4 __r; __r.xy = __xy; __r.zw = __zw; return __r; }
1157static simd_uchar4 SIMD_CFUNC vector4(simd_uchar2 __xy, simd_uchar2 __zw) { simd_uchar4 __r; __r.xy = __xy; __r.zw = __zw; return __r; }
1158static simd_short4 SIMD_CFUNC vector4(simd_short2 __xy, simd_short2 __zw) { simd_short4 __r; __r.xy = __xy; __r.zw = __zw; return __r; }
1159static simd_ushort4 SIMD_CFUNC vector4(simd_ushort2 __xy, simd_ushort2 __zw) { simd_ushort4 __r; __r.xy = __xy; __r.zw = __zw; return __r; }
1160static simd_half4 SIMD_CFUNC vector4(simd_half2 __xy, simd_half2 __zw) { simd_half4 __r; __r.xy = __xy; __r.zw = __zw; return __r; }
1161static simd_int4 SIMD_CFUNC vector4(simd_int2 __xy, simd_int2 __zw) { simd_int4 __r; __r.xy = __xy; __r.zw = __zw; return __r; }
1162static simd_uint4 SIMD_CFUNC vector4(simd_uint2 __xy, simd_uint2 __zw) { simd_uint4 __r; __r.xy = __xy; __r.zw = __zw; return __r; }
1163static simd_float4 SIMD_CFUNC vector4(simd_float2 __xy, simd_float2 __zw) { simd_float4 __r; __r.xy = __xy; __r.zw = __zw; return __r; }
1164static simd_long4 SIMD_CFUNC vector4(simd_long2 __xy, simd_long2 __zw) { simd_long4 __r; __r.xy = __xy; __r.zw = __zw; return __r; }
1165static simd_ulong4 SIMD_CFUNC vector4(simd_ulong2 __xy, simd_ulong2 __zw) { simd_ulong4 __r; __r.xy = __xy; __r.zw = __zw; return __r; }
1166static simd_double4 SIMD_CFUNC vector4(simd_double2 __xy, simd_double2 __zw) { simd_double4 __r; __r.xy = __xy; __r.zw = __zw; return __r; }
1167
1168static simd_char4 SIMD_CFUNC vector4(simd_char3 __xyz, char __w) { simd_char4 __r; __r.xyz = __xyz; __r.w = __w; return __r; }
1169static simd_uchar4 SIMD_CFUNC vector4(simd_uchar3 __xyz, unsigned char __w) { simd_uchar4 __r; __r.xyz = __xyz; __r.w = __w; return __r; }
1170static simd_short4 SIMD_CFUNC vector4(simd_short3 __xyz, short __w) { simd_short4 __r; __r.xyz = __xyz; __r.w = __w; return __r; }
1171static simd_ushort4 SIMD_CFUNC vector4(simd_ushort3 __xyz, unsigned short __w) { simd_ushort4 __r; __r.xyz = __xyz; __r.w = __w; return __r; }
1172static simd_half4 SIMD_CFUNC vector4(simd_half3 __xyz, _Float16 __w) { simd_half4 __r; __r.xyz = __xyz; __r.w = __w; return __r; }
1173static simd_int4 SIMD_CFUNC vector4(simd_int3 __xyz, int __w) { simd_int4 __r; __r.xyz = __xyz; __r.w = __w; return __r; }
1174static simd_uint4 SIMD_CFUNC vector4(simd_uint3 __xyz, unsigned int __w) { simd_uint4 __r; __r.xyz = __xyz; __r.w = __w; return __r; }
1175static simd_float4 SIMD_CFUNC vector4(simd_float3 __xyz, float __w) { simd_float4 __r; __r.xyz = __xyz; __r.w = __w; return __r; }
1176static simd_long4 SIMD_CFUNC vector4(simd_long3 __xyz, simd_long1 __w) { simd_long4 __r; __r.xyz = __xyz; __r.w = __w; return __r; }
1177static simd_ulong4 SIMD_CFUNC vector4(simd_ulong3 __xyz, simd_ulong1 __w) { simd_ulong4 __r; __r.xyz = __xyz; __r.w = __w; return __r; }
1178static simd_double4 SIMD_CFUNC vector4(simd_double3 __xyz, double __w) { simd_double4 __r; __r.xyz = __xyz; __r.w = __w; return __r; }
1179
1180static simd_char8 SIMD_CFUNC vector8(simd_char4 __lo, simd_char4 __hi) { simd_char8 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1181static simd_uchar8 SIMD_CFUNC vector8(simd_uchar4 __lo, simd_uchar4 __hi) { simd_uchar8 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1182static simd_short8 SIMD_CFUNC vector8(simd_short4 __lo, simd_short4 __hi) { simd_short8 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1183static simd_ushort8 SIMD_CFUNC vector8(simd_ushort4 __lo, simd_ushort4 __hi) { simd_ushort8 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1184static simd_half8 SIMD_CFUNC vector8(simd_half4 __lo, simd_half4 __hi) { simd_half8 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1185static simd_int8 SIMD_CFUNC vector8(simd_int4 __lo, simd_int4 __hi) { simd_int8 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1186static simd_uint8 SIMD_CFUNC vector8(simd_uint4 __lo, simd_uint4 __hi) { simd_uint8 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1187static simd_float8 SIMD_CFUNC vector8(simd_float4 __lo, simd_float4 __hi) { simd_float8 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1188static simd_long8 SIMD_CFUNC vector8(simd_long4 __lo, simd_long4 __hi) { simd_long8 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1189static simd_ulong8 SIMD_CFUNC vector8(simd_ulong4 __lo, simd_ulong4 __hi) { simd_ulong8 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1190static simd_double8 SIMD_CFUNC vector8(simd_double4 __lo, simd_double4 __hi) { simd_double8 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1191
1192static simd_char16 SIMD_CFUNC vector16(simd_char8 __lo, simd_char8 __hi) { simd_char16 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1193static simd_uchar16 SIMD_CFUNC vector16(simd_uchar8 __lo, simd_uchar8 __hi) { simd_uchar16 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1194static simd_short16 SIMD_CFUNC vector16(simd_short8 __lo, simd_short8 __hi) { simd_short16 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1195static simd_ushort16 SIMD_CFUNC vector16(simd_ushort8 __lo, simd_ushort8 __hi) { simd_ushort16 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1196static simd_half16 SIMD_CFUNC vector16(simd_half8 __lo, simd_half8 __hi) { simd_half16 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1197static simd_int16 SIMD_CFUNC vector16(simd_int8 __lo, simd_int8 __hi) { simd_int16 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1198static simd_uint16 SIMD_CFUNC vector16(simd_uint8 __lo, simd_uint8 __hi) { simd_uint16 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1199static simd_float16 SIMD_CFUNC vector16(simd_float8 __lo, simd_float8 __hi) { simd_float16 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1200
1201static simd_char32 SIMD_CFUNC vector32(simd_char16 __lo, simd_char16 __hi) { simd_char32 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1202static simd_uchar32 SIMD_CFUNC vector32(simd_uchar16 __lo, simd_uchar16 __hi) { simd_uchar32 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1203static simd_short32 SIMD_CFUNC vector32(simd_short16 __lo, simd_short16 __hi) { simd_short32 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1204static simd_ushort32 SIMD_CFUNC vector32(simd_ushort16 __lo, simd_ushort16 __hi) { simd_ushort32 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1205static simd_half32 SIMD_CFUNC vector32(simd_half16 __lo, simd_half16 __hi) { simd_half32 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
1206
1207#pragma mark - Implementation
1208
1209static simd_char2 SIMD_CFUNC simd_char(simd_char2 __x) { return __x; }
1210static simd_char3 SIMD_CFUNC simd_char(simd_char3 __x) { return __x; }
1211static simd_char4 SIMD_CFUNC simd_char(simd_char4 __x) { return __x; }
1212static simd_char8 SIMD_CFUNC simd_char(simd_char8 __x) { return __x; }
1213static simd_char16 SIMD_CFUNC simd_char(simd_char16 __x) { return __x; }
1214static simd_char32 SIMD_CFUNC simd_char(simd_char32 __x) { return __x; }
1215static simd_char2 SIMD_CFUNC simd_char(simd_uchar2 __x) { return (simd_char2)__x; }
1216static simd_char3 SIMD_CFUNC simd_char(simd_uchar3 __x) { return (simd_char3)__x; }
1217static simd_char4 SIMD_CFUNC simd_char(simd_uchar4 __x) { return (simd_char4)__x; }
1218static simd_char8 SIMD_CFUNC simd_char(simd_uchar8 __x) { return (simd_char8)__x; }
1219static simd_char16 SIMD_CFUNC simd_char(simd_uchar16 __x) { return (simd_char16)__x; }
1220static simd_char32 SIMD_CFUNC simd_char(simd_uchar32 __x) { return (simd_char32)__x; }
1221static simd_char2 SIMD_CFUNC simd_char(simd_short2 __x) { return __builtin_convertvector(__x & 0xff, simd_char2); }
1222static simd_char3 SIMD_CFUNC simd_char(simd_short3 __x) { return __builtin_convertvector(__x & 0xff, simd_char3); }
1223static simd_char4 SIMD_CFUNC simd_char(simd_short4 __x) { return __builtin_convertvector(__x & 0xff, simd_char4); }
1224static simd_char8 SIMD_CFUNC simd_char(simd_short8 __x) { return __builtin_convertvector(__x & 0xff, simd_char8); }
1225static simd_char16 SIMD_CFUNC simd_char(simd_short16 __x) { return __builtin_convertvector(__x & 0xff, simd_char16); }
1226static simd_char32 SIMD_CFUNC simd_char(simd_short32 __x) { return __builtin_convertvector(__x & 0xff, simd_char32); }
1227static simd_char2 SIMD_CFUNC simd_char(simd_ushort2 __x) { return simd_char(simd_short(__x)); }
1228static simd_char3 SIMD_CFUNC simd_char(simd_ushort3 __x) { return simd_char(simd_short(__x)); }
1229static simd_char4 SIMD_CFUNC simd_char(simd_ushort4 __x) { return simd_char(simd_short(__x)); }
1230static simd_char8 SIMD_CFUNC simd_char(simd_ushort8 __x) { return simd_char(simd_short(__x)); }
1231static simd_char16 SIMD_CFUNC simd_char(simd_ushort16 __x) { return simd_char(simd_short(__x)); }
1232static simd_char32 SIMD_CFUNC simd_char(simd_ushort32 __x) { return simd_char(simd_short(__x)); }
1233static simd_char2 SIMD_CFUNC simd_char(simd_half2 __x) { return simd_char(simd_short(__x)); }
1234static simd_char3 SIMD_CFUNC simd_char(simd_half3 __x) { return simd_char(simd_short(__x)); }
1235static simd_char4 SIMD_CFUNC simd_char(simd_half4 __x) { return simd_char(simd_short(__x)); }
1236static simd_char8 SIMD_CFUNC simd_char(simd_half8 __x) { return simd_char(simd_short(__x)); }
1237static simd_char16 SIMD_CFUNC simd_char(simd_half16 __x) { return simd_char(simd_short(__x)); }
1238static simd_char32 SIMD_CFUNC simd_char(simd_half32 __x) { return simd_char(simd_short(__x)); }
1239static simd_char2 SIMD_CFUNC simd_char(simd_int2 __x) { return simd_char(simd_short(__x)); }
1240static simd_char3 SIMD_CFUNC simd_char(simd_int3 __x) { return simd_char(simd_short(__x)); }
1241static simd_char4 SIMD_CFUNC simd_char(simd_int4 __x) { return simd_char(simd_short(__x)); }
1242static simd_char8 SIMD_CFUNC simd_char(simd_int8 __x) { return simd_char(simd_short(__x)); }
1243static simd_char16 SIMD_CFUNC simd_char(simd_int16 __x) { return simd_char(simd_short(__x)); }
1244static simd_char2 SIMD_CFUNC simd_char(simd_uint2 __x) { return simd_char(simd_short(__x)); }
1245static simd_char3 SIMD_CFUNC simd_char(simd_uint3 __x) { return simd_char(simd_short(__x)); }
1246static simd_char4 SIMD_CFUNC simd_char(simd_uint4 __x) { return simd_char(simd_short(__x)); }
1247static simd_char8 SIMD_CFUNC simd_char(simd_uint8 __x) { return simd_char(simd_short(__x)); }
1248static simd_char16 SIMD_CFUNC simd_char(simd_uint16 __x) { return simd_char(simd_short(__x)); }
1249static simd_char2 SIMD_CFUNC simd_char(simd_float2 __x) { return simd_char(simd_short(__x)); }
1250static simd_char3 SIMD_CFUNC simd_char(simd_float3 __x) { return simd_char(simd_short(__x)); }
1251static simd_char4 SIMD_CFUNC simd_char(simd_float4 __x) { return simd_char(simd_short(__x)); }
1252static simd_char8 SIMD_CFUNC simd_char(simd_float8 __x) { return simd_char(simd_short(__x)); }
1253static simd_char16 SIMD_CFUNC simd_char(simd_float16 __x) { return simd_char(simd_short(__x)); }
1254static simd_char2 SIMD_CFUNC simd_char(simd_long2 __x) { return simd_char(simd_short(__x)); }
1255static simd_char3 SIMD_CFUNC simd_char(simd_long3 __x) { return simd_char(simd_short(__x)); }
1256static simd_char4 SIMD_CFUNC simd_char(simd_long4 __x) { return simd_char(simd_short(__x)); }
1257static simd_char8 SIMD_CFUNC simd_char(simd_long8 __x) { return simd_char(simd_short(__x)); }
1258static simd_char2 SIMD_CFUNC simd_char(simd_ulong2 __x) { return simd_char(simd_short(__x)); }
1259static simd_char3 SIMD_CFUNC simd_char(simd_ulong3 __x) { return simd_char(simd_short(__x)); }
1260static simd_char4 SIMD_CFUNC simd_char(simd_ulong4 __x) { return simd_char(simd_short(__x)); }
1261static simd_char8 SIMD_CFUNC simd_char(simd_ulong8 __x) { return simd_char(simd_short(__x)); }
1262static simd_char2 SIMD_CFUNC simd_char(simd_double2 __x) { return simd_char(simd_short(__x)); }
1263static simd_char3 SIMD_CFUNC simd_char(simd_double3 __x) { return simd_char(simd_short(__x)); }
1264static simd_char4 SIMD_CFUNC simd_char(simd_double4 __x) { return simd_char(simd_short(__x)); }
1265static simd_char8 SIMD_CFUNC simd_char(simd_double8 __x) { return simd_char(simd_short(__x)); }
1266
1267static simd_char2 SIMD_CFUNC simd_char_sat(simd_char2 __x) { return __x; }
1268static simd_char3 SIMD_CFUNC simd_char_sat(simd_char3 __x) { return __x; }
1269static simd_char4 SIMD_CFUNC simd_char_sat(simd_char4 __x) { return __x; }
1270static simd_char8 SIMD_CFUNC simd_char_sat(simd_char8 __x) { return __x; }
1271static simd_char16 SIMD_CFUNC simd_char_sat(simd_char16 __x) { return __x; }
1272static simd_char32 SIMD_CFUNC simd_char_sat(simd_char32 __x) { return __x; }
1273static simd_char2 SIMD_CFUNC simd_char_sat(simd_short2 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1274static simd_char3 SIMD_CFUNC simd_char_sat(simd_short3 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1275static simd_char4 SIMD_CFUNC simd_char_sat(simd_short4 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1276static simd_char8 SIMD_CFUNC simd_char_sat(simd_short8 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1277static simd_char16 SIMD_CFUNC simd_char_sat(simd_short16 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1278static simd_char32 SIMD_CFUNC simd_char_sat(simd_short32 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1279static simd_char2 SIMD_CFUNC simd_char_sat(simd_half2 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1280static simd_char3 SIMD_CFUNC simd_char_sat(simd_half3 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1281static simd_char4 SIMD_CFUNC simd_char_sat(simd_half4 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1282static simd_char8 SIMD_CFUNC simd_char_sat(simd_half8 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1283static simd_char16 SIMD_CFUNC simd_char_sat(simd_half16 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1284static simd_char32 SIMD_CFUNC simd_char_sat(simd_half32 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1285static simd_char2 SIMD_CFUNC simd_char_sat(simd_int2 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1286static simd_char3 SIMD_CFUNC simd_char_sat(simd_int3 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1287static simd_char4 SIMD_CFUNC simd_char_sat(simd_int4 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1288static simd_char8 SIMD_CFUNC simd_char_sat(simd_int8 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1289static simd_char16 SIMD_CFUNC simd_char_sat(simd_int16 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1290static simd_char2 SIMD_CFUNC simd_char_sat(simd_float2 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1291static simd_char3 SIMD_CFUNC simd_char_sat(simd_float3 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1292static simd_char4 SIMD_CFUNC simd_char_sat(simd_float4 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1293static simd_char8 SIMD_CFUNC simd_char_sat(simd_float8 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1294static simd_char16 SIMD_CFUNC simd_char_sat(simd_float16 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1295static simd_char2 SIMD_CFUNC simd_char_sat(simd_long2 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1296static simd_char3 SIMD_CFUNC simd_char_sat(simd_long3 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1297static simd_char4 SIMD_CFUNC simd_char_sat(simd_long4 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1298static simd_char8 SIMD_CFUNC simd_char_sat(simd_long8 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1299static simd_char2 SIMD_CFUNC simd_char_sat(simd_double2 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1300static simd_char3 SIMD_CFUNC simd_char_sat(simd_double3 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1301static simd_char4 SIMD_CFUNC simd_char_sat(simd_double4 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1302static simd_char8 SIMD_CFUNC simd_char_sat(simd_double8 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
1303static simd_char2 SIMD_CFUNC simd_char_sat(simd_uchar2 __x) { return simd_char(simd_min(__x,0x7f)); }
1304static simd_char3 SIMD_CFUNC simd_char_sat(simd_uchar3 __x) { return simd_char(simd_min(__x,0x7f)); }
1305static simd_char4 SIMD_CFUNC simd_char_sat(simd_uchar4 __x) { return simd_char(simd_min(__x,0x7f)); }
1306static simd_char8 SIMD_CFUNC simd_char_sat(simd_uchar8 __x) { return simd_char(simd_min(__x,0x7f)); }
1307static simd_char16 SIMD_CFUNC simd_char_sat(simd_uchar16 __x) { return simd_char(simd_min(__x,0x7f)); }
1308static simd_char32 SIMD_CFUNC simd_char_sat(simd_uchar32 __x) { return simd_char(simd_min(__x,0x7f)); }
1309static simd_char2 SIMD_CFUNC simd_char_sat(simd_ushort2 __x) { return simd_char(simd_min(__x,0x7f)); }
1310static simd_char3 SIMD_CFUNC simd_char_sat(simd_ushort3 __x) { return simd_char(simd_min(__x,0x7f)); }
1311static simd_char4 SIMD_CFUNC simd_char_sat(simd_ushort4 __x) { return simd_char(simd_min(__x,0x7f)); }
1312static simd_char8 SIMD_CFUNC simd_char_sat(simd_ushort8 __x) { return simd_char(simd_min(__x,0x7f)); }
1313static simd_char16 SIMD_CFUNC simd_char_sat(simd_ushort16 __x) { return simd_char(simd_min(__x,0x7f)); }
1314static simd_char32 SIMD_CFUNC simd_char_sat(simd_ushort32 __x) { return simd_char(simd_min(__x,0x7f)); }
1315static simd_char2 SIMD_CFUNC simd_char_sat(simd_uint2 __x) { return simd_char(simd_min(__x,0x7f)); }
1316static simd_char3 SIMD_CFUNC simd_char_sat(simd_uint3 __x) { return simd_char(simd_min(__x,0x7f)); }
1317static simd_char4 SIMD_CFUNC simd_char_sat(simd_uint4 __x) { return simd_char(simd_min(__x,0x7f)); }
1318static simd_char8 SIMD_CFUNC simd_char_sat(simd_uint8 __x) { return simd_char(simd_min(__x,0x7f)); }
1319static simd_char16 SIMD_CFUNC simd_char_sat(simd_uint16 __x) { return simd_char(simd_min(__x,0x7f)); }
1320static simd_char2 SIMD_CFUNC simd_char_sat(simd_ulong2 __x) { return simd_char(simd_min(__x,0x7f)); }
1321static simd_char3 SIMD_CFUNC simd_char_sat(simd_ulong3 __x) { return simd_char(simd_min(__x,0x7f)); }
1322static simd_char4 SIMD_CFUNC simd_char_sat(simd_ulong4 __x) { return simd_char(simd_min(__x,0x7f)); }
1323static simd_char8 SIMD_CFUNC simd_char_sat(simd_ulong8 __x) { return simd_char(simd_min(__x,0x7f)); }
1324
1325
1326static simd_uchar2 SIMD_CFUNC simd_uchar(simd_char2 __x) { return (simd_uchar2)__x; }
1327static simd_uchar3 SIMD_CFUNC simd_uchar(simd_char3 __x) { return (simd_uchar3)__x; }
1328static simd_uchar4 SIMD_CFUNC simd_uchar(simd_char4 __x) { return (simd_uchar4)__x; }
1329static simd_uchar8 SIMD_CFUNC simd_uchar(simd_char8 __x) { return (simd_uchar8)__x; }
1330static simd_uchar16 SIMD_CFUNC simd_uchar(simd_char16 __x) { return (simd_uchar16)__x; }
1331static simd_uchar32 SIMD_CFUNC simd_uchar(simd_char32 __x) { return (simd_uchar32)__x; }
1332static simd_uchar2 SIMD_CFUNC simd_uchar(simd_uchar2 __x) { return __x; }
1333static simd_uchar3 SIMD_CFUNC simd_uchar(simd_uchar3 __x) { return __x; }
1334static simd_uchar4 SIMD_CFUNC simd_uchar(simd_uchar4 __x) { return __x; }
1335static simd_uchar8 SIMD_CFUNC simd_uchar(simd_uchar8 __x) { return __x; }
1336static simd_uchar16 SIMD_CFUNC simd_uchar(simd_uchar16 __x) { return __x; }
1337static simd_uchar32 SIMD_CFUNC simd_uchar(simd_uchar32 __x) { return __x; }
1338static simd_uchar2 SIMD_CFUNC simd_uchar(simd_short2 __x) { return simd_uchar(simd_char(__x)); }
1339static simd_uchar3 SIMD_CFUNC simd_uchar(simd_short3 __x) { return simd_uchar(simd_char(__x)); }
1340static simd_uchar4 SIMD_CFUNC simd_uchar(simd_short4 __x) { return simd_uchar(simd_char(__x)); }
1341static simd_uchar8 SIMD_CFUNC simd_uchar(simd_short8 __x) { return simd_uchar(simd_char(__x)); }
1342static simd_uchar16 SIMD_CFUNC simd_uchar(simd_short16 __x) { return simd_uchar(simd_char(__x)); }
1343static simd_uchar32 SIMD_CFUNC simd_uchar(simd_short32 __x) { return simd_uchar(simd_char(__x)); }
1344static simd_uchar2 SIMD_CFUNC simd_uchar(simd_ushort2 __x) { return simd_uchar(simd_char(__x)); }
1345static simd_uchar3 SIMD_CFUNC simd_uchar(simd_ushort3 __x) { return simd_uchar(simd_char(__x)); }
1346static simd_uchar4 SIMD_CFUNC simd_uchar(simd_ushort4 __x) { return simd_uchar(simd_char(__x)); }
1347static simd_uchar8 SIMD_CFUNC simd_uchar(simd_ushort8 __x) { return simd_uchar(simd_char(__x)); }
1348static simd_uchar16 SIMD_CFUNC simd_uchar(simd_ushort16 __x) { return simd_uchar(simd_char(__x)); }
1349static simd_uchar32 SIMD_CFUNC simd_uchar(simd_ushort32 __x) { return simd_uchar(simd_char(__x)); }
1350static simd_uchar2 SIMD_CFUNC simd_uchar(simd_half2 __x) { return simd_uchar(simd_char(__x)); }
1351static simd_uchar3 SIMD_CFUNC simd_uchar(simd_half3 __x) { return simd_uchar(simd_char(__x)); }
1352static simd_uchar4 SIMD_CFUNC simd_uchar(simd_half4 __x) { return simd_uchar(simd_char(__x)); }
1353static simd_uchar8 SIMD_CFUNC simd_uchar(simd_half8 __x) { return simd_uchar(simd_char(__x)); }
1354static simd_uchar16 SIMD_CFUNC simd_uchar(simd_half16 __x) { return simd_uchar(simd_char(__x)); }
1355static simd_uchar32 SIMD_CFUNC simd_uchar(simd_half32 __x) { return simd_uchar(simd_char(__x)); }
1356static simd_uchar2 SIMD_CFUNC simd_uchar(simd_int2 __x) { return simd_uchar(simd_char(__x)); }
1357static simd_uchar3 SIMD_CFUNC simd_uchar(simd_int3 __x) { return simd_uchar(simd_char(__x)); }
1358static simd_uchar4 SIMD_CFUNC simd_uchar(simd_int4 __x) { return simd_uchar(simd_char(__x)); }
1359static simd_uchar8 SIMD_CFUNC simd_uchar(simd_int8 __x) { return simd_uchar(simd_char(__x)); }
1360static simd_uchar16 SIMD_CFUNC simd_uchar(simd_int16 __x) { return simd_uchar(simd_char(__x)); }
1361static simd_uchar2 SIMD_CFUNC simd_uchar(simd_uint2 __x) { return simd_uchar(simd_char(__x)); }
1362static simd_uchar3 SIMD_CFUNC simd_uchar(simd_uint3 __x) { return simd_uchar(simd_char(__x)); }
1363static simd_uchar4 SIMD_CFUNC simd_uchar(simd_uint4 __x) { return simd_uchar(simd_char(__x)); }
1364static simd_uchar8 SIMD_CFUNC simd_uchar(simd_uint8 __x) { return simd_uchar(simd_char(__x)); }
1365static simd_uchar16 SIMD_CFUNC simd_uchar(simd_uint16 __x) { return simd_uchar(simd_char(__x)); }
1366static simd_uchar2 SIMD_CFUNC simd_uchar(simd_float2 __x) { return simd_uchar(simd_char(__x)); }
1367static simd_uchar3 SIMD_CFUNC simd_uchar(simd_float3 __x) { return simd_uchar(simd_char(__x)); }
1368static simd_uchar4 SIMD_CFUNC simd_uchar(simd_float4 __x) { return simd_uchar(simd_char(__x)); }
1369static simd_uchar8 SIMD_CFUNC simd_uchar(simd_float8 __x) { return simd_uchar(simd_char(__x)); }
1370static simd_uchar16 SIMD_CFUNC simd_uchar(simd_float16 __x) { return simd_uchar(simd_char(__x)); }
1371static simd_uchar2 SIMD_CFUNC simd_uchar(simd_long2 __x) { return simd_uchar(simd_char(__x)); }
1372static simd_uchar3 SIMD_CFUNC simd_uchar(simd_long3 __x) { return simd_uchar(simd_char(__x)); }
1373static simd_uchar4 SIMD_CFUNC simd_uchar(simd_long4 __x) { return simd_uchar(simd_char(__x)); }
1374static simd_uchar8 SIMD_CFUNC simd_uchar(simd_long8 __x) { return simd_uchar(simd_char(__x)); }
1375static simd_uchar2 SIMD_CFUNC simd_uchar(simd_ulong2 __x) { return simd_uchar(simd_char(__x)); }
1376static simd_uchar3 SIMD_CFUNC simd_uchar(simd_ulong3 __x) { return simd_uchar(simd_char(__x)); }
1377static simd_uchar4 SIMD_CFUNC simd_uchar(simd_ulong4 __x) { return simd_uchar(simd_char(__x)); }
1378static simd_uchar8 SIMD_CFUNC simd_uchar(simd_ulong8 __x) { return simd_uchar(simd_char(__x)); }
1379static simd_uchar2 SIMD_CFUNC simd_uchar(simd_double2 __x) { return simd_uchar(simd_char(__x)); }
1380static simd_uchar3 SIMD_CFUNC simd_uchar(simd_double3 __x) { return simd_uchar(simd_char(__x)); }
1381static simd_uchar4 SIMD_CFUNC simd_uchar(simd_double4 __x) { return simd_uchar(simd_char(__x)); }
1382static simd_uchar8 SIMD_CFUNC simd_uchar(simd_double8 __x) { return simd_uchar(simd_char(__x)); }
1383
1384static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_char2 __x) { return simd_uchar(simd_max(0,__x)); }
1385static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_char3 __x) { return simd_uchar(simd_max(0,__x)); }
1386static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_char4 __x) { return simd_uchar(simd_max(0,__x)); }
1387static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_char8 __x) { return simd_uchar(simd_max(0,__x)); }
1388static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_char16 __x) { return simd_uchar(simd_max(0,__x)); }
1389static simd_uchar32 SIMD_CFUNC simd_uchar_sat(simd_char32 __x) { return simd_uchar(simd_max(0,__x)); }
1390static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_short2 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1391static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_short3 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1392static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_short4 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1393static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_short8 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1394static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_short16 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1395static simd_uchar32 SIMD_CFUNC simd_uchar_sat(simd_short32 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1396static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_half2 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1397static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_half3 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1398static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_half4 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1399static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_half8 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1400static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_half16 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1401static simd_uchar32 SIMD_CFUNC simd_uchar_sat(simd_half32 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1402static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_int2 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1403static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_int3 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1404static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_int4 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1405static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_int8 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1406static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_int16 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1407static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_float2 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1408static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_float3 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1409static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_float4 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1410static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_float8 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1411static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_float16 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1412static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_long2 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1413static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_long3 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1414static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_long4 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1415static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_long8 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1416static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_double2 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1417static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_double3 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1418static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_double4 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1419static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_double8 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
1420static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_uchar2 __x) { return __x; }
1421static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_uchar3 __x) { return __x; }
1422static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_uchar4 __x) { return __x; }
1423static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_uchar8 __x) { return __x; }
1424static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_uchar16 __x) { return __x; }
1425static simd_uchar32 SIMD_CFUNC simd_uchar_sat(simd_uchar32 __x) { return __x; }
1426static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_ushort2 __x) { return simd_uchar(simd_min(__x,0xff)); }
1427static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_ushort3 __x) { return simd_uchar(simd_min(__x,0xff)); }
1428static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_ushort4 __x) { return simd_uchar(simd_min(__x,0xff)); }
1429static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_ushort8 __x) { return simd_uchar(simd_min(__x,0xff)); }
1430static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_ushort16 __x) { return simd_uchar(simd_min(__x,0xff)); }
1431static simd_uchar32 SIMD_CFUNC simd_uchar_sat(simd_ushort32 __x) { return simd_uchar(simd_min(__x,0xff)); }
1432static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_uint2 __x) { return simd_uchar(simd_min(__x,0xff)); }
1433static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_uint3 __x) { return simd_uchar(simd_min(__x,0xff)); }
1434static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_uint4 __x) { return simd_uchar(simd_min(__x,0xff)); }
1435static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_uint8 __x) { return simd_uchar(simd_min(__x,0xff)); }
1436static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_uint16 __x) { return simd_uchar(simd_min(__x,0xff)); }
1437static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_ulong2 __x) { return simd_uchar(simd_min(__x,0xff)); }
1438static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_ulong3 __x) { return simd_uchar(simd_min(__x,0xff)); }
1439static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_ulong4 __x) { return simd_uchar(simd_min(__x,0xff)); }
1440static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_ulong8 __x) { return simd_uchar(simd_min(__x,0xff)); }
1441
1442
1443static simd_short2 SIMD_CFUNC simd_short(simd_char2 __x) { return __builtin_convertvector(__x, simd_short2); }
1444static simd_short3 SIMD_CFUNC simd_short(simd_char3 __x) { return __builtin_convertvector(__x, simd_short3); }
1445static simd_short4 SIMD_CFUNC simd_short(simd_char4 __x) { return __builtin_convertvector(__x, simd_short4); }
1446static simd_short8 SIMD_CFUNC simd_short(simd_char8 __x) { return __builtin_convertvector(__x, simd_short8); }
1447static simd_short16 SIMD_CFUNC simd_short(simd_char16 __x) { return __builtin_convertvector(__x, simd_short16); }
1448static simd_short32 SIMD_CFUNC simd_short(simd_char32 __x) { return __builtin_convertvector(__x, simd_short32); }
1449static simd_short2 SIMD_CFUNC simd_short(simd_uchar2 __x) { return __builtin_convertvector(__x, simd_short2); }
1450static simd_short3 SIMD_CFUNC simd_short(simd_uchar3 __x) { return __builtin_convertvector(__x, simd_short3); }
1451static simd_short4 SIMD_CFUNC simd_short(simd_uchar4 __x) { return __builtin_convertvector(__x, simd_short4); }
1452static simd_short8 SIMD_CFUNC simd_short(simd_uchar8 __x) { return __builtin_convertvector(__x, simd_short8); }
1453static simd_short16 SIMD_CFUNC simd_short(simd_uchar16 __x) { return __builtin_convertvector(__x, simd_short16); }
1454static simd_short32 SIMD_CFUNC simd_short(simd_uchar32 __x) { return __builtin_convertvector(__x, simd_short32); }
1455static simd_short2 SIMD_CFUNC simd_short(simd_short2 __x) { return __x; }
1456static simd_short3 SIMD_CFUNC simd_short(simd_short3 __x) { return __x; }
1457static simd_short4 SIMD_CFUNC simd_short(simd_short4 __x) { return __x; }
1458static simd_short8 SIMD_CFUNC simd_short(simd_short8 __x) { return __x; }
1459static simd_short16 SIMD_CFUNC simd_short(simd_short16 __x) { return __x; }
1460static simd_short32 SIMD_CFUNC simd_short(simd_short32 __x) { return __x; }
1461static simd_short2 SIMD_CFUNC simd_short(simd_ushort2 __x) { return (simd_short2)__x; }
1462static simd_short3 SIMD_CFUNC simd_short(simd_ushort3 __x) { return (simd_short3)__x; }
1463static simd_short4 SIMD_CFUNC simd_short(simd_ushort4 __x) { return (simd_short4)__x; }
1464static simd_short8 SIMD_CFUNC simd_short(simd_ushort8 __x) { return (simd_short8)__x; }
1465static simd_short16 SIMD_CFUNC simd_short(simd_ushort16 __x) { return (simd_short16)__x; }
1466static simd_short32 SIMD_CFUNC simd_short(simd_ushort32 __x) { return (simd_short32)__x; }
1467static simd_short2 SIMD_CFUNC simd_short(simd_half2 __x) { return __builtin_convertvector(__x, simd_short2); }
1468static simd_short3 SIMD_CFUNC simd_short(simd_half3 __x) { return __builtin_convertvector(__x, simd_short3); }
1469static simd_short4 SIMD_CFUNC simd_short(simd_half4 __x) { return __builtin_convertvector(__x, simd_short4); }
1470static simd_short8 SIMD_CFUNC simd_short(simd_half8 __x) { return __builtin_convertvector(__x, simd_short8); }
1471static simd_short16 SIMD_CFUNC simd_short(simd_half16 __x) { return __builtin_convertvector(__x, simd_short16); }
1472static simd_short32 SIMD_CFUNC simd_short(simd_half32 __x) { return __builtin_convertvector(__x, simd_short32); }
1473static simd_short2 SIMD_CFUNC simd_short(simd_int2 __x) { return __builtin_convertvector(__x & 0xffff, simd_short2); }
1474static simd_short3 SIMD_CFUNC simd_short(simd_int3 __x) { return __builtin_convertvector(__x & 0xffff, simd_short3); }
1475static simd_short4 SIMD_CFUNC simd_short(simd_int4 __x) { return __builtin_convertvector(__x & 0xffff, simd_short4); }
1476static simd_short8 SIMD_CFUNC simd_short(simd_int8 __x) { return __builtin_convertvector(__x & 0xffff, simd_short8); }
1477static simd_short16 SIMD_CFUNC simd_short(simd_int16 __x) { return __builtin_convertvector(__x & 0xffff, simd_short16); }
1478static simd_short2 SIMD_CFUNC simd_short(simd_uint2 __x) { return simd_short(simd_int(__x)); }
1479static simd_short3 SIMD_CFUNC simd_short(simd_uint3 __x) { return simd_short(simd_int(__x)); }
1480static simd_short4 SIMD_CFUNC simd_short(simd_uint4 __x) { return simd_short(simd_int(__x)); }
1481static simd_short8 SIMD_CFUNC simd_short(simd_uint8 __x) { return simd_short(simd_int(__x)); }
1482static simd_short16 SIMD_CFUNC simd_short(simd_uint16 __x) { return simd_short(simd_int(__x)); }
1483static simd_short2 SIMD_CFUNC simd_short(simd_float2 __x) { return simd_short(simd_int(__x)); }
1484static simd_short3 SIMD_CFUNC simd_short(simd_float3 __x) { return simd_short(simd_int(__x)); }
1485static simd_short4 SIMD_CFUNC simd_short(simd_float4 __x) { return simd_short(simd_int(__x)); }
1486static simd_short8 SIMD_CFUNC simd_short(simd_float8 __x) { return simd_short(simd_int(__x)); }
1487static simd_short16 SIMD_CFUNC simd_short(simd_float16 __x) { return simd_short(simd_int(__x)); }
1488static simd_short2 SIMD_CFUNC simd_short(simd_long2 __x) { return simd_short(simd_int(__x)); }
1489static simd_short3 SIMD_CFUNC simd_short(simd_long3 __x) { return simd_short(simd_int(__x)); }
1490static simd_short4 SIMD_CFUNC simd_short(simd_long4 __x) { return simd_short(simd_int(__x)); }
1491static simd_short8 SIMD_CFUNC simd_short(simd_long8 __x) { return simd_short(simd_int(__x)); }
1492static simd_short2 SIMD_CFUNC simd_short(simd_ulong2 __x) { return simd_short(simd_int(__x)); }
1493static simd_short3 SIMD_CFUNC simd_short(simd_ulong3 __x) { return simd_short(simd_int(__x)); }
1494static simd_short4 SIMD_CFUNC simd_short(simd_ulong4 __x) { return simd_short(simd_int(__x)); }
1495static simd_short8 SIMD_CFUNC simd_short(simd_ulong8 __x) { return simd_short(simd_int(__x)); }
1496static simd_short2 SIMD_CFUNC simd_short(simd_double2 __x) { return simd_short(simd_int(__x)); }
1497static simd_short3 SIMD_CFUNC simd_short(simd_double3 __x) { return simd_short(simd_int(__x)); }
1498static simd_short4 SIMD_CFUNC simd_short(simd_double4 __x) { return simd_short(simd_int(__x)); }
1499static simd_short8 SIMD_CFUNC simd_short(simd_double8 __x) { return simd_short(simd_int(__x)); }
1500
1501static simd_short2 SIMD_CFUNC simd_short_sat(simd_char2 __x) { return simd_short(__x); }
1502static simd_short3 SIMD_CFUNC simd_short_sat(simd_char3 __x) { return simd_short(__x); }
1503static simd_short4 SIMD_CFUNC simd_short_sat(simd_char4 __x) { return simd_short(__x); }
1504static simd_short8 SIMD_CFUNC simd_short_sat(simd_char8 __x) { return simd_short(__x); }
1505static simd_short16 SIMD_CFUNC simd_short_sat(simd_char16 __x) { return simd_short(__x); }
1506static simd_short32 SIMD_CFUNC simd_short_sat(simd_char32 __x) { return simd_short(__x); }
1507static simd_short2 SIMD_CFUNC simd_short_sat(simd_short2 __x) { return __x; }
1508static simd_short3 SIMD_CFUNC simd_short_sat(simd_short3 __x) { return __x; }
1509static simd_short4 SIMD_CFUNC simd_short_sat(simd_short4 __x) { return __x; }
1510static simd_short8 SIMD_CFUNC simd_short_sat(simd_short8 __x) { return __x; }
1511static simd_short16 SIMD_CFUNC simd_short_sat(simd_short16 __x) { return __x; }
1512static simd_short32 SIMD_CFUNC simd_short_sat(simd_short32 __x) { return __x; }
1513static simd_short2 SIMD_CFUNC simd_short_sat(simd_half2 __x) { return simd_bitselect(simd_short(simd_max(__x,-0x1.0p15f16)), 0x7fff, __x >= 0x1.0p15f16); }
1514static simd_short3 SIMD_CFUNC simd_short_sat(simd_half3 __x) { return simd_bitselect(simd_short(simd_max(__x,-0x1.0p15f16)), 0x7fff, __x >= 0x1.0p15f16); }
1515static simd_short4 SIMD_CFUNC simd_short_sat(simd_half4 __x) { return simd_bitselect(simd_short(simd_max(__x,-0x1.0p15f16)), 0x7fff, __x >= 0x1.0p15f16); }
1516static simd_short8 SIMD_CFUNC simd_short_sat(simd_half8 __x) { return simd_bitselect(simd_short(simd_max(__x,-0x1.0p15f16)), 0x7fff, __x >= 0x1.0p15f16); }
1517static simd_short16 SIMD_CFUNC simd_short_sat(simd_half16 __x) { return simd_bitselect(simd_short(simd_max(__x,-0x1.0p15f16)), 0x7fff, __x >= 0x1.0p15f16); }
1518static simd_short32 SIMD_CFUNC simd_short_sat(simd_half32 __x) { return simd_bitselect(simd_short(simd_max(__x,-0x1.0p15f16)), 0x7fff, __x >= 0x1.0p15f16); }
1519static simd_short2 SIMD_CFUNC simd_short_sat(simd_int2 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
1520static simd_short3 SIMD_CFUNC simd_short_sat(simd_int3 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
1521static simd_short4 SIMD_CFUNC simd_short_sat(simd_int4 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
1522static simd_short8 SIMD_CFUNC simd_short_sat(simd_int8 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
1523static simd_short16 SIMD_CFUNC simd_short_sat(simd_int16 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
1524static simd_short2 SIMD_CFUNC simd_short_sat(simd_float2 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
1525static simd_short3 SIMD_CFUNC simd_short_sat(simd_float3 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
1526static simd_short4 SIMD_CFUNC simd_short_sat(simd_float4 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
1527static simd_short8 SIMD_CFUNC simd_short_sat(simd_float8 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
1528static simd_short16 SIMD_CFUNC simd_short_sat(simd_float16 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
1529static simd_short2 SIMD_CFUNC simd_short_sat(simd_long2 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
1530static simd_short3 SIMD_CFUNC simd_short_sat(simd_long3 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
1531static simd_short4 SIMD_CFUNC simd_short_sat(simd_long4 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
1532static simd_short8 SIMD_CFUNC simd_short_sat(simd_long8 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
1533static simd_short2 SIMD_CFUNC simd_short_sat(simd_double2 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
1534static simd_short3 SIMD_CFUNC simd_short_sat(simd_double3 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
1535static simd_short4 SIMD_CFUNC simd_short_sat(simd_double4 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
1536static simd_short8 SIMD_CFUNC simd_short_sat(simd_double8 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
1537static simd_short2 SIMD_CFUNC simd_short_sat(simd_uchar2 __x) { return simd_short(__x); }
1538static simd_short3 SIMD_CFUNC simd_short_sat(simd_uchar3 __x) { return simd_short(__x); }
1539static simd_short4 SIMD_CFUNC simd_short_sat(simd_uchar4 __x) { return simd_short(__x); }
1540static simd_short8 SIMD_CFUNC simd_short_sat(simd_uchar8 __x) { return simd_short(__x); }
1541static simd_short16 SIMD_CFUNC simd_short_sat(simd_uchar16 __x) { return simd_short(__x); }
1542static simd_short32 SIMD_CFUNC simd_short_sat(simd_uchar32 __x) { return simd_short(__x); }
1543static simd_short2 SIMD_CFUNC simd_short_sat(simd_ushort2 __x) { return simd_short(simd_min(__x,0x7fff)); }
1544static simd_short3 SIMD_CFUNC simd_short_sat(simd_ushort3 __x) { return simd_short(simd_min(__x,0x7fff)); }
1545static simd_short4 SIMD_CFUNC simd_short_sat(simd_ushort4 __x) { return simd_short(simd_min(__x,0x7fff)); }
1546static simd_short8 SIMD_CFUNC simd_short_sat(simd_ushort8 __x) { return simd_short(simd_min(__x,0x7fff)); }
1547static simd_short16 SIMD_CFUNC simd_short_sat(simd_ushort16 __x) { return simd_short(simd_min(__x,0x7fff)); }
1548static simd_short32 SIMD_CFUNC simd_short_sat(simd_ushort32 __x) { return simd_short(simd_min(__x,0x7fff)); }
1549static simd_short2 SIMD_CFUNC simd_short_sat(simd_uint2 __x) { return simd_short(simd_min(__x,0x7fff)); }
1550static simd_short3 SIMD_CFUNC simd_short_sat(simd_uint3 __x) { return simd_short(simd_min(__x,0x7fff)); }
1551static simd_short4 SIMD_CFUNC simd_short_sat(simd_uint4 __x) { return simd_short(simd_min(__x,0x7fff)); }
1552static simd_short8 SIMD_CFUNC simd_short_sat(simd_uint8 __x) { return simd_short(simd_min(__x,0x7fff)); }
1553static simd_short16 SIMD_CFUNC simd_short_sat(simd_uint16 __x) { return simd_short(simd_min(__x,0x7fff)); }
1554static simd_short2 SIMD_CFUNC simd_short_sat(simd_ulong2 __x) { return simd_short(simd_min(__x,0x7fff)); }
1555static simd_short3 SIMD_CFUNC simd_short_sat(simd_ulong3 __x) { return simd_short(simd_min(__x,0x7fff)); }
1556static simd_short4 SIMD_CFUNC simd_short_sat(simd_ulong4 __x) { return simd_short(simd_min(__x,0x7fff)); }
1557static simd_short8 SIMD_CFUNC simd_short_sat(simd_ulong8 __x) { return simd_short(simd_min(__x,0x7fff)); }
1558static simd_short2 SIMD_CFUNC simd_short_rte(simd_half2 __x) { return simd_make_short2(simd_short_rte(simd_make_half4_undef(__x))); }
1559static simd_short3 SIMD_CFUNC simd_short_rte(simd_half3 __x) { return simd_make_short3(simd_short_rte(simd_make_half4_undef(__x))); }
1560static simd_short4 SIMD_CFUNC simd_short_rte(simd_half4 __x) {
1561#if defined __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
1562 return vcvtn_s16_f16(__x);
1563#else
1564 return simd_make_short4(simd_short_rte(simd_make_half8_undef(__x)));
1565#endif
1566}
1567static simd_short8 SIMD_CFUNC simd_short_rte(simd_half8 __x) {
1568#if defined __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
1569 return vcvtnq_s16_f16(__x);
1570#else
1571 simd_half8 magic = __tg_copysign(0x1.0p10f16, __x);
1572 simd_short8 x_is_small = __tg_fabs(__x) < 0x1.0p10f16;
1573 return __builtin_convertvector(simd_bitselect(__x, (__x + magic) - magic, x_is_small & 0x7fff), simd_short8);
1574#endif
1575}
1576static simd_short16 SIMD_CFUNC simd_short_rte(simd_half16 __x) { return simd_make_short16(simd_short_rte(__x.lo), simd_short_rte(__x.hi)); }
1577static simd_short32 SIMD_CFUNC simd_short_rte(simd_half32 __x) { return simd_make_short32(simd_short_rte(__x.lo), simd_short_rte(__x.hi)); }
1578
1579static simd_ushort2 SIMD_CFUNC simd_ushort(simd_char2 __x) { return simd_ushort(simd_short(__x)); }
1580static simd_ushort3 SIMD_CFUNC simd_ushort(simd_char3 __x) { return simd_ushort(simd_short(__x)); }
1581static simd_ushort4 SIMD_CFUNC simd_ushort(simd_char4 __x) { return simd_ushort(simd_short(__x)); }
1582static simd_ushort8 SIMD_CFUNC simd_ushort(simd_char8 __x) { return simd_ushort(simd_short(__x)); }
1583static simd_ushort16 SIMD_CFUNC simd_ushort(simd_char16 __x) { return simd_ushort(simd_short(__x)); }
1584static simd_ushort32 SIMD_CFUNC simd_ushort(simd_char32 __x) { return simd_ushort(simd_short(__x)); }
1585static simd_ushort2 SIMD_CFUNC simd_ushort(simd_uchar2 __x) { return simd_ushort(simd_short(__x)); }
1586static simd_ushort3 SIMD_CFUNC simd_ushort(simd_uchar3 __x) { return simd_ushort(simd_short(__x)); }
1587static simd_ushort4 SIMD_CFUNC simd_ushort(simd_uchar4 __x) { return simd_ushort(simd_short(__x)); }
1588static simd_ushort8 SIMD_CFUNC simd_ushort(simd_uchar8 __x) { return simd_ushort(simd_short(__x)); }
1589static simd_ushort16 SIMD_CFUNC simd_ushort(simd_uchar16 __x) { return simd_ushort(simd_short(__x)); }
1590static simd_ushort32 SIMD_CFUNC simd_ushort(simd_uchar32 __x) { return simd_ushort(simd_short(__x)); }
1591static simd_ushort2 SIMD_CFUNC simd_ushort(simd_short2 __x) { return (simd_ushort2)__x; }
1592static simd_ushort3 SIMD_CFUNC simd_ushort(simd_short3 __x) { return (simd_ushort3)__x; }
1593static simd_ushort4 SIMD_CFUNC simd_ushort(simd_short4 __x) { return (simd_ushort4)__x; }
1594static simd_ushort8 SIMD_CFUNC simd_ushort(simd_short8 __x) { return (simd_ushort8)__x; }
1595static simd_ushort16 SIMD_CFUNC simd_ushort(simd_short16 __x) { return (simd_ushort16)__x; }
1596static simd_ushort32 SIMD_CFUNC simd_ushort(simd_short32 __x) { return (simd_ushort32)__x; }
1597static simd_ushort2 SIMD_CFUNC simd_ushort(simd_ushort2 __x) { return __x; }
1598static simd_ushort3 SIMD_CFUNC simd_ushort(simd_ushort3 __x) { return __x; }
1599static simd_ushort4 SIMD_CFUNC simd_ushort(simd_ushort4 __x) { return __x; }
1600static simd_ushort8 SIMD_CFUNC simd_ushort(simd_ushort8 __x) { return __x; }
1601static simd_ushort16 SIMD_CFUNC simd_ushort(simd_ushort16 __x) { return __x; }
1602static simd_ushort32 SIMD_CFUNC simd_ushort(simd_ushort32 __x) { return __x; }
1603static simd_ushort2 SIMD_CFUNC simd_ushort(simd_half2 __x) { return __builtin_convertvector(__x, simd_ushort2); }
1604static simd_ushort3 SIMD_CFUNC simd_ushort(simd_half3 __x) { return __builtin_convertvector(__x, simd_ushort3); }
1605static simd_ushort4 SIMD_CFUNC simd_ushort(simd_half4 __x) { return __builtin_convertvector(__x, simd_ushort4); }
1606static simd_ushort8 SIMD_CFUNC simd_ushort(simd_half8 __x) { return __builtin_convertvector(__x, simd_ushort8); }
1607static simd_ushort16 SIMD_CFUNC simd_ushort(simd_half16 __x) { return __builtin_convertvector(__x, simd_ushort16); }
1608static simd_ushort32 SIMD_CFUNC simd_ushort(simd_half32 __x) { return __builtin_convertvector(__x, simd_ushort32); }
1609static simd_ushort2 SIMD_CFUNC simd_ushort(simd_int2 __x) { return simd_ushort(simd_short(__x)); }
1610static simd_ushort3 SIMD_CFUNC simd_ushort(simd_int3 __x) { return simd_ushort(simd_short(__x)); }
1611static simd_ushort4 SIMD_CFUNC simd_ushort(simd_int4 __x) { return simd_ushort(simd_short(__x)); }
1612static simd_ushort8 SIMD_CFUNC simd_ushort(simd_int8 __x) { return simd_ushort(simd_short(__x)); }
1613static simd_ushort16 SIMD_CFUNC simd_ushort(simd_int16 __x) { return simd_ushort(simd_short(__x)); }
1614static simd_ushort2 SIMD_CFUNC simd_ushort(simd_uint2 __x) { return simd_ushort(simd_short(__x)); }
1615static simd_ushort3 SIMD_CFUNC simd_ushort(simd_uint3 __x) { return simd_ushort(simd_short(__x)); }
1616static simd_ushort4 SIMD_CFUNC simd_ushort(simd_uint4 __x) { return simd_ushort(simd_short(__x)); }
1617static simd_ushort8 SIMD_CFUNC simd_ushort(simd_uint8 __x) { return simd_ushort(simd_short(__x)); }
1618static simd_ushort16 SIMD_CFUNC simd_ushort(simd_uint16 __x) { return simd_ushort(simd_short(__x)); }
1619static simd_ushort2 SIMD_CFUNC simd_ushort(simd_float2 __x) { return simd_ushort(simd_short(__x)); }
1620static simd_ushort3 SIMD_CFUNC simd_ushort(simd_float3 __x) { return simd_ushort(simd_short(__x)); }
1621static simd_ushort4 SIMD_CFUNC simd_ushort(simd_float4 __x) { return simd_ushort(simd_short(__x)); }
1622static simd_ushort8 SIMD_CFUNC simd_ushort(simd_float8 __x) { return simd_ushort(simd_short(__x)); }
1623static simd_ushort16 SIMD_CFUNC simd_ushort(simd_float16 __x) { return simd_ushort(simd_short(__x)); }
1624static simd_ushort2 SIMD_CFUNC simd_ushort(simd_long2 __x) { return simd_ushort(simd_short(__x)); }
1625static simd_ushort3 SIMD_CFUNC simd_ushort(simd_long3 __x) { return simd_ushort(simd_short(__x)); }
1626static simd_ushort4 SIMD_CFUNC simd_ushort(simd_long4 __x) { return simd_ushort(simd_short(__x)); }
1627static simd_ushort8 SIMD_CFUNC simd_ushort(simd_long8 __x) { return simd_ushort(simd_short(__x)); }
1628static simd_ushort2 SIMD_CFUNC simd_ushort(simd_ulong2 __x) { return simd_ushort(simd_short(__x)); }
1629static simd_ushort3 SIMD_CFUNC simd_ushort(simd_ulong3 __x) { return simd_ushort(simd_short(__x)); }
1630static simd_ushort4 SIMD_CFUNC simd_ushort(simd_ulong4 __x) { return simd_ushort(simd_short(__x)); }
1631static simd_ushort8 SIMD_CFUNC simd_ushort(simd_ulong8 __x) { return simd_ushort(simd_short(__x)); }
1632static simd_ushort2 SIMD_CFUNC simd_ushort(simd_double2 __x) { return simd_ushort(simd_short(__x)); }
1633static simd_ushort3 SIMD_CFUNC simd_ushort(simd_double3 __x) { return simd_ushort(simd_short(__x)); }
1634static simd_ushort4 SIMD_CFUNC simd_ushort(simd_double4 __x) { return simd_ushort(simd_short(__x)); }
1635static simd_ushort8 SIMD_CFUNC simd_ushort(simd_double8 __x) { return simd_ushort(simd_short(__x)); }
1636
1637static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_char2 __x) { return simd_ushort(simd_max(__x, 0)); }
1638static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_char3 __x) { return simd_ushort(simd_max(__x, 0)); }
1639static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_char4 __x) { return simd_ushort(simd_max(__x, 0)); }
1640static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_char8 __x) { return simd_ushort(simd_max(__x, 0)); }
1641static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_char16 __x) { return simd_ushort(simd_max(__x, 0)); }
1642static simd_ushort32 SIMD_CFUNC simd_ushort_sat(simd_char32 __x) { return simd_ushort(simd_max(__x, 0)); }
1643static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_short2 __x) { return simd_ushort(simd_max(__x, 0)); }
1644static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_short3 __x) { return simd_ushort(simd_max(__x, 0)); }
1645static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_short4 __x) { return simd_ushort(simd_max(__x, 0)); }
1646static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_short8 __x) { return simd_ushort(simd_max(__x, 0)); }
1647static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_short16 __x) { return simd_ushort(simd_max(__x, 0)); }
1648static simd_ushort32 SIMD_CFUNC simd_ushort_sat(simd_short32 __x) { return simd_ushort(simd_max(__x, 0)); }
1649static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_half2 __x) { return simd_bitselect(simd_ushort(simd_max(__x,0)), 0xffff, __x > 0x1.ffcp15f16); }
1650static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_half3 __x) { return simd_bitselect(simd_ushort(simd_max(__x,0)), 0xffff, __x > 0x1.ffcp15f16); }
1651static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_half4 __x) { return simd_bitselect(simd_ushort(simd_max(__x,0)), 0xffff, __x > 0x1.ffcp15f16); }
1652static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_half8 __x) { return simd_bitselect(simd_ushort(simd_max(__x,0)), 0xffff, __x > 0x1.ffcp15f16); }
1653static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_half16 __x) { return simd_bitselect(simd_ushort(simd_max(__x,0)), 0xffff, __x > 0x1.ffcp15f16); }
1654static simd_ushort32 SIMD_CFUNC simd_ushort_sat(simd_half32 __x) { return simd_bitselect(simd_ushort(simd_max(__x,0)), 0xffff, __x > 0x1.ffcp15f16); }
1655static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_int2 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
1656static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_int3 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
1657static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_int4 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
1658static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_int8 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
1659static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_int16 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
1660static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_float2 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
1661static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_float3 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
1662static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_float4 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
1663static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_float8 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
1664static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_float16 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
1665static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_long2 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
1666static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_long3 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
1667static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_long4 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
1668static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_long8 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
1669static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_double2 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
1670static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_double3 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
1671static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_double4 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
1672static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_double8 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
1673static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_uchar2 __x) { return simd_ushort(__x); }
1674static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_uchar3 __x) { return simd_ushort(__x); }
1675static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_uchar4 __x) { return simd_ushort(__x); }
1676static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_uchar8 __x) { return simd_ushort(__x); }
1677static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_uchar16 __x) { return simd_ushort(__x); }
1678static simd_ushort32 SIMD_CFUNC simd_ushort_sat(simd_uchar32 __x) { return simd_ushort(__x); }
1679static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_ushort2 __x) { return __x; }
1680static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_ushort3 __x) { return __x; }
1681static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_ushort4 __x) { return __x; }
1682static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_ushort8 __x) { return __x; }
1683static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_ushort16 __x) { return __x; }
1684static simd_ushort32 SIMD_CFUNC simd_ushort_sat(simd_ushort32 __x) { return __x; }
1685static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_uint2 __x) { return simd_ushort(simd_min(__x, 0xffff)); }
1686static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_uint3 __x) { return simd_ushort(simd_min(__x, 0xffff)); }
1687static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_uint4 __x) { return simd_ushort(simd_min(__x, 0xffff)); }
1688static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_uint8 __x) { return simd_ushort(simd_min(__x, 0xffff)); }
1689static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_uint16 __x) { return simd_ushort(simd_min(__x, 0xffff)); }
1690static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_ulong2 __x) { return simd_ushort(simd_min(__x, 0xffff)); }
1691static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_ulong3 __x) { return simd_ushort(simd_min(__x, 0xffff)); }
1692static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_ulong4 __x) { return simd_ushort(simd_min(__x, 0xffff)); }
1693static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_ulong8 __x) { return simd_ushort(simd_min(__x, 0xffff)); }
1694static simd_ushort2 SIMD_CFUNC simd_ushort_rte(simd_half2 __x) { return simd_make_ushort2(simd_ushort_rte(simd_make_half4_undef(__x))); }
1695static simd_ushort3 SIMD_CFUNC simd_ushort_rte(simd_half3 __x) { return simd_make_ushort3(simd_ushort_rte(simd_make_half4_undef(__x))); }
1696static simd_ushort4 SIMD_CFUNC simd_ushort_rte(simd_half4 __x) {
1697#if defined __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
1698 return vcvtn_u16_f16(__x);
1699#else
1700 return simd_make_ushort4(simd_ushort_rte(simd_make_half8_undef(__x)));
1701#endif
1702}
1703static simd_ushort8 SIMD_CFUNC simd_ushort_rte(simd_half8 __x) {
1704#if defined __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
1705 return vcvtnq_u16_f16(__x);
1706#else
1707 simd_short8 __big = __x >= 0x1.0p15f16;
1708 return simd_ushort(simd_short(__x - simd_bitselect((simd_half8) 0,0x1.0p15f16,__big))) + simd_bitselect((simd_ushort8) 0,0x8000,__big);
1709#endif
1710}
1711static simd_ushort16 SIMD_CFUNC simd_ushort_rte(simd_half16 __x) { return simd_make_ushort16(simd_ushort_rte(__x.lo), simd_ushort_rte(__x.hi)); }
1712static simd_ushort32 SIMD_CFUNC simd_ushort_rte(simd_half32 __x) { return simd_make_ushort32(simd_ushort_rte(__x.lo), simd_ushort_rte(__x.hi)); }
1713
1714static simd_half2 SIMD_CFUNC simd_half(simd_char2 __x) { return (simd_half2)(simd_short(__x) + 0x6600) - 0x1.8p10f16; }
1715static simd_half3 SIMD_CFUNC simd_half(simd_char3 __x) { return (simd_half3)(simd_short(__x) + 0x6600) - 0x1.8p10f16; }
1716static simd_half4 SIMD_CFUNC simd_half(simd_char4 __x) { return (simd_half4)(simd_short(__x) + 0x6600) - 0x1.8p10f16; }
1717static simd_half8 SIMD_CFUNC simd_half(simd_char8 __x) { return (simd_half8)(simd_short(__x) + 0x6600) - 0x1.8p10f16; }
1718static simd_half16 SIMD_CFUNC simd_half(simd_char16 __x) { return (simd_half16)(simd_short(__x) + 0x6600) - 0x1.8p10f16; }
1719static simd_half2 SIMD_CFUNC simd_half(simd_uchar2 __x) { return (simd_half2)(simd_short(__x) + 0x6600) - 0x1.8p10f16; }
1720static simd_half3 SIMD_CFUNC simd_half(simd_uchar3 __x) { return (simd_half3)(simd_short(__x) + 0x6600) - 0x1.8p10f16; }
1721static simd_half4 SIMD_CFUNC simd_half(simd_uchar4 __x) { return (simd_half4)(simd_short(__x) + 0x6600) - 0x1.8p10f16; }
1722static simd_half8 SIMD_CFUNC simd_half(simd_uchar8 __x) { return (simd_half8)(simd_short(__x) + 0x6600) - 0x1.8p10f16; }
1723static simd_half16 SIMD_CFUNC simd_half(simd_uchar16 __x) { return (simd_half16)(simd_short(__x) + 0x6600) - 0x1.8p10f16; }
1724static simd_half2 SIMD_CFUNC simd_half(simd_short2 __x) { return __builtin_convertvector(__x,simd_half2); }
1725static simd_half3 SIMD_CFUNC simd_half(simd_short3 __x) { return __builtin_convertvector(__x,simd_half3); }
1726static simd_half4 SIMD_CFUNC simd_half(simd_short4 __x) { return __builtin_convertvector(__x,simd_half4); }
1727static simd_half8 SIMD_CFUNC simd_half(simd_short8 __x) { return __builtin_convertvector(__x,simd_half8); }
1728static simd_half16 SIMD_CFUNC simd_half(simd_short16 __x) { return __builtin_convertvector(__x,simd_half16); }
1729static simd_half2 SIMD_CFUNC simd_half(simd_ushort2 __x) { return __builtin_convertvector(__x,simd_half2); }
1730static simd_half3 SIMD_CFUNC simd_half(simd_ushort3 __x) { return __builtin_convertvector(__x,simd_half3); }
1731static simd_half4 SIMD_CFUNC simd_half(simd_ushort4 __x) { return __builtin_convertvector(__x,simd_half4); }
1732static simd_half8 SIMD_CFUNC simd_half(simd_ushort8 __x) { return __builtin_convertvector(__x,simd_half8); }
1733static simd_half16 SIMD_CFUNC simd_half(simd_ushort16 __x) { return __builtin_convertvector(__x,simd_half16); }
1734static simd_half2 SIMD_CFUNC simd_half(simd_half2 __x) { return __x; }
1735static simd_half3 SIMD_CFUNC simd_half(simd_half3 __x) { return __x; }
1736static simd_half4 SIMD_CFUNC simd_half(simd_half4 __x) { return __x; }
1737static simd_half8 SIMD_CFUNC simd_half(simd_half8 __x) { return __x; }
1738static simd_half16 SIMD_CFUNC simd_half(simd_half16 __x) { return __x; }
1739static simd_half2 SIMD_CFUNC simd_half(simd_int2 __x) { return __builtin_convertvector(__x,simd_half2); }
1740static simd_half3 SIMD_CFUNC simd_half(simd_int3 __x) { return __builtin_convertvector(__x,simd_half3); }
1741static simd_half4 SIMD_CFUNC simd_half(simd_int4 __x) { return __builtin_convertvector(__x,simd_half4); }
1742static simd_half8 SIMD_CFUNC simd_half(simd_int8 __x) { return __builtin_convertvector(__x,simd_half8); }
1743static simd_half16 SIMD_CFUNC simd_half(simd_int16 __x) { return __builtin_convertvector(__x,simd_half16); }
1744static simd_half2 SIMD_CFUNC simd_half(simd_uint2 __x) { return __builtin_convertvector(__x,simd_half2); }
1745static simd_half3 SIMD_CFUNC simd_half(simd_uint3 __x) { return __builtin_convertvector(__x,simd_half3); }
1746static simd_half4 SIMD_CFUNC simd_half(simd_uint4 __x) { return __builtin_convertvector(__x,simd_half4); }
1747static simd_half8 SIMD_CFUNC simd_half(simd_uint8 __x) { return __builtin_convertvector(__x,simd_half8); }
1748static simd_half16 SIMD_CFUNC simd_half(simd_uint16 __x) { return __builtin_convertvector(__x,simd_half16); }
1749static simd_half2 SIMD_CFUNC simd_half(simd_float2 __x) { return __builtin_convertvector(__x,simd_half2); }
1750static simd_half3 SIMD_CFUNC simd_half(simd_float3 __x) { return __builtin_convertvector(__x,simd_half3); }
1751static simd_half4 SIMD_CFUNC simd_half(simd_float4 __x) { return __builtin_convertvector(__x,simd_half4); }
1752static simd_half8 SIMD_CFUNC simd_half(simd_float8 __x) { return __builtin_convertvector(__x,simd_half8); }
1753static simd_half16 SIMD_CFUNC simd_half(simd_float16 __x) { return __builtin_convertvector(__x,simd_half16); }
1754static simd_half2 SIMD_CFUNC simd_half(simd_long2 __x) { return __builtin_convertvector(__x,simd_half2); }
1755static simd_half3 SIMD_CFUNC simd_half(simd_long3 __x) { return __builtin_convertvector(__x,simd_half3); }
1756static simd_half4 SIMD_CFUNC simd_half(simd_long4 __x) { return __builtin_convertvector(__x,simd_half4); }
1757static simd_half8 SIMD_CFUNC simd_half(simd_long8 __x) { return __builtin_convertvector(__x,simd_half8); }
1758static simd_half2 SIMD_CFUNC simd_half(simd_ulong2 __x) { return __builtin_convertvector(__x,simd_half2); }
1759static simd_half3 SIMD_CFUNC simd_half(simd_ulong3 __x) { return __builtin_convertvector(__x,simd_half3); }
1760static simd_half4 SIMD_CFUNC simd_half(simd_ulong4 __x) { return __builtin_convertvector(__x,simd_half4); }
1761static simd_half8 SIMD_CFUNC simd_half(simd_ulong8 __x) { return __builtin_convertvector(__x,simd_half8); }
1762static simd_half2 SIMD_CFUNC simd_half(simd_double2 __x) { return __builtin_convertvector(__x,simd_half2); }
1763static simd_half3 SIMD_CFUNC simd_half(simd_double3 __x) { return __builtin_convertvector(__x,simd_half3); }
1764static simd_half4 SIMD_CFUNC simd_half(simd_double4 __x) { return __builtin_convertvector(__x,simd_half4); }
1765static simd_half8 SIMD_CFUNC simd_half(simd_double8 __x) { return __builtin_convertvector(__x,simd_half8); }
1766
1767static simd_int2 SIMD_CFUNC simd_int(simd_char2 __x) { return __builtin_convertvector(__x, simd_int2); }
1768static simd_int3 SIMD_CFUNC simd_int(simd_char3 __x) { return __builtin_convertvector(__x, simd_int3); }
1769static simd_int4 SIMD_CFUNC simd_int(simd_char4 __x) { return __builtin_convertvector(__x, simd_int4); }
1770static simd_int8 SIMD_CFUNC simd_int(simd_char8 __x) { return __builtin_convertvector(__x, simd_int8); }
1771static simd_int16 SIMD_CFUNC simd_int(simd_char16 __x) { return __builtin_convertvector(__x, simd_int16); }
1772static simd_int2 SIMD_CFUNC simd_int(simd_uchar2 __x) { return __builtin_convertvector(__x, simd_int2); }
1773static simd_int3 SIMD_CFUNC simd_int(simd_uchar3 __x) { return __builtin_convertvector(__x, simd_int3); }
1774static simd_int4 SIMD_CFUNC simd_int(simd_uchar4 __x) { return __builtin_convertvector(__x, simd_int4); }
1775static simd_int8 SIMD_CFUNC simd_int(simd_uchar8 __x) { return __builtin_convertvector(__x, simd_int8); }
1776static simd_int16 SIMD_CFUNC simd_int(simd_uchar16 __x) { return __builtin_convertvector(__x, simd_int16); }
1777static simd_int2 SIMD_CFUNC simd_int(simd_short2 __x) { return __builtin_convertvector(__x, simd_int2); }
1778static simd_int3 SIMD_CFUNC simd_int(simd_short3 __x) { return __builtin_convertvector(__x, simd_int3); }
1779static simd_int4 SIMD_CFUNC simd_int(simd_short4 __x) { return __builtin_convertvector(__x, simd_int4); }
1780static simd_int8 SIMD_CFUNC simd_int(simd_short8 __x) { return __builtin_convertvector(__x, simd_int8); }
1781static simd_int16 SIMD_CFUNC simd_int(simd_short16 __x) { return __builtin_convertvector(__x, simd_int16); }
1782static simd_int2 SIMD_CFUNC simd_int(simd_ushort2 __x) { return __builtin_convertvector(__x, simd_int2); }
1783static simd_int3 SIMD_CFUNC simd_int(simd_ushort3 __x) { return __builtin_convertvector(__x, simd_int3); }
1784static simd_int4 SIMD_CFUNC simd_int(simd_ushort4 __x) { return __builtin_convertvector(__x, simd_int4); }
1785static simd_int8 SIMD_CFUNC simd_int(simd_ushort8 __x) { return __builtin_convertvector(__x, simd_int8); }
1786static simd_int16 SIMD_CFUNC simd_int(simd_ushort16 __x) { return __builtin_convertvector(__x, simd_int16); }
1787static simd_int2 SIMD_CFUNC simd_int(simd_half2 __x) { return __builtin_convertvector(__x, simd_int2); }
1788static simd_int3 SIMD_CFUNC simd_int(simd_half3 __x) { return __builtin_convertvector(__x, simd_int3); }
1789static simd_int4 SIMD_CFUNC simd_int(simd_half4 __x) { return __builtin_convertvector(__x, simd_int4); }
1790static simd_int8 SIMD_CFUNC simd_int(simd_half8 __x) { return __builtin_convertvector(__x, simd_int8); }
1791static simd_int16 SIMD_CFUNC simd_int(simd_half16 __x) { return __builtin_convertvector(__x, simd_int16); }
1792static simd_int2 SIMD_CFUNC simd_int(simd_int2 __x) { return __x; }
1793static simd_int3 SIMD_CFUNC simd_int(simd_int3 __x) { return __x; }
1794static simd_int4 SIMD_CFUNC simd_int(simd_int4 __x) { return __x; }
1795static simd_int8 SIMD_CFUNC simd_int(simd_int8 __x) { return __x; }
1796static simd_int16 SIMD_CFUNC simd_int(simd_int16 __x) { return __x; }
1797static simd_int2 SIMD_CFUNC simd_int(simd_uint2 __x) { return (simd_int2)__x; }
1798static simd_int3 SIMD_CFUNC simd_int(simd_uint3 __x) { return (simd_int3)__x; }
1799static simd_int4 SIMD_CFUNC simd_int(simd_uint4 __x) { return (simd_int4)__x; }
1800static simd_int8 SIMD_CFUNC simd_int(simd_uint8 __x) { return (simd_int8)__x; }
1801static simd_int16 SIMD_CFUNC simd_int(simd_uint16 __x) { return (simd_int16)__x; }
1802static simd_int2 SIMD_CFUNC simd_int(simd_float2 __x) { return __builtin_convertvector(__x, simd_int2); }
1803static simd_int3 SIMD_CFUNC simd_int(simd_float3 __x) { return __builtin_convertvector(__x, simd_int3); }
1804static simd_int4 SIMD_CFUNC simd_int(simd_float4 __x) { return __builtin_convertvector(__x, simd_int4); }
1805static simd_int8 SIMD_CFUNC simd_int(simd_float8 __x) { return __builtin_convertvector(__x, simd_int8); }
1806static simd_int16 SIMD_CFUNC simd_int(simd_float16 __x) { return __builtin_convertvector(__x, simd_int16); }
1807static simd_int2 SIMD_CFUNC simd_int(simd_long2 __x) { return __builtin_convertvector(__x & 0xffffffff, simd_int2); }
1808static simd_int3 SIMD_CFUNC simd_int(simd_long3 __x) { return __builtin_convertvector(__x & 0xffffffff, simd_int3); }
1809static simd_int4 SIMD_CFUNC simd_int(simd_long4 __x) { return __builtin_convertvector(__x & 0xffffffff, simd_int4); }
1810static simd_int8 SIMD_CFUNC simd_int(simd_long8 __x) { return __builtin_convertvector(__x & 0xffffffff, simd_int8); }
1811static simd_int2 SIMD_CFUNC simd_int(simd_ulong2 __x) { return simd_int(simd_long(__x)); }
1812static simd_int3 SIMD_CFUNC simd_int(simd_ulong3 __x) { return simd_int(simd_long(__x)); }
1813static simd_int4 SIMD_CFUNC simd_int(simd_ulong4 __x) { return simd_int(simd_long(__x)); }
1814static simd_int8 SIMD_CFUNC simd_int(simd_ulong8 __x) { return simd_int(simd_long(__x)); }
1815static simd_int2 SIMD_CFUNC simd_int(simd_double2 __x) { return __builtin_convertvector(__x, simd_int2); }
1816static simd_int3 SIMD_CFUNC simd_int(simd_double3 __x) { return __builtin_convertvector(__x, simd_int3); }
1817static simd_int4 SIMD_CFUNC simd_int(simd_double4 __x) { return __builtin_convertvector(__x, simd_int4); }
1818static simd_int8 SIMD_CFUNC simd_int(simd_double8 __x) { return __builtin_convertvector(__x, simd_int8); }
1819
1820static simd_int2 SIMD_CFUNC simd_int_sat(simd_char2 __x) { return simd_int(__x); }
1821static simd_int3 SIMD_CFUNC simd_int_sat(simd_char3 __x) { return simd_int(__x); }
1822static simd_int4 SIMD_CFUNC simd_int_sat(simd_char4 __x) { return simd_int(__x); }
1823static simd_int8 SIMD_CFUNC simd_int_sat(simd_char8 __x) { return simd_int(__x); }
1824static simd_int16 SIMD_CFUNC simd_int_sat(simd_char16 __x) { return simd_int(__x); }
1825static simd_int2 SIMD_CFUNC simd_int_sat(simd_short2 __x) { return simd_int(__x); }
1826static simd_int3 SIMD_CFUNC simd_int_sat(simd_short3 __x) { return simd_int(__x); }
1827static simd_int4 SIMD_CFUNC simd_int_sat(simd_short4 __x) { return simd_int(__x); }
1828static simd_int8 SIMD_CFUNC simd_int_sat(simd_short8 __x) { return simd_int(__x); }
1829static simd_int16 SIMD_CFUNC simd_int_sat(simd_short16 __x) { return simd_int(__x); }
1830static simd_int2 SIMD_CFUNC simd_int_sat(simd_half2 __x) { return simd_int(__x); }
1831static simd_int3 SIMD_CFUNC simd_int_sat(simd_half3 __x) { return simd_int(__x); }
1832static simd_int4 SIMD_CFUNC simd_int_sat(simd_half4 __x) { return simd_int(__x); }
1833static simd_int8 SIMD_CFUNC simd_int_sat(simd_half8 __x) { return simd_int(__x); }
1834static simd_int16 SIMD_CFUNC simd_int_sat(simd_half16 __x) { return simd_int(__x); }
1835static simd_int2 SIMD_CFUNC simd_int_sat(simd_int2 __x) { return __x; }
1836static simd_int3 SIMD_CFUNC simd_int_sat(simd_int3 __x) { return __x; }
1837static simd_int4 SIMD_CFUNC simd_int_sat(simd_int4 __x) { return __x; }
1838static simd_int8 SIMD_CFUNC simd_int_sat(simd_int8 __x) { return __x; }
1839static simd_int16 SIMD_CFUNC simd_int_sat(simd_int16 __x) { return __x; }
1840static simd_int2 SIMD_CFUNC simd_int_sat(simd_float2 __x) { return simd_bitselect(simd_int(simd_max(__x,-0x1.0p31f)), 0x7fffffff, __x >= 0x1.0p31f); }
1841static simd_int3 SIMD_CFUNC simd_int_sat(simd_float3 __x) { return simd_bitselect(simd_int(simd_max(__x,-0x1.0p31f)), 0x7fffffff, __x >= 0x1.0p31f); }
1842static simd_int4 SIMD_CFUNC simd_int_sat(simd_float4 __x) { return simd_bitselect(simd_int(simd_max(__x,-0x1.0p31f)), 0x7fffffff, __x >= 0x1.0p31f); }
1843static simd_int8 SIMD_CFUNC simd_int_sat(simd_float8 __x) { return simd_bitselect(simd_int(simd_max(__x,-0x1.0p31f)), 0x7fffffff, __x >= 0x1.0p31f); }
1844static simd_int16 SIMD_CFUNC simd_int_sat(simd_float16 __x) { return simd_bitselect(simd_int(simd_max(__x,-0x1.0p31f)), 0x7fffffff, __x >= 0x1.0p31f); }
1845static simd_int2 SIMD_CFUNC simd_int_sat(simd_long2 __x) { return simd_int(simd_clamp(__x,-0x80000000LL,0x7fffffffLL)); }
1846static simd_int3 SIMD_CFUNC simd_int_sat(simd_long3 __x) { return simd_int(simd_clamp(__x,-0x80000000LL,0x7fffffffLL)); }
1847static simd_int4 SIMD_CFUNC simd_int_sat(simd_long4 __x) { return simd_int(simd_clamp(__x,-0x80000000LL,0x7fffffffLL)); }
1848static simd_int8 SIMD_CFUNC simd_int_sat(simd_long8 __x) { return simd_int(simd_clamp(__x,-0x80000000LL,0x7fffffffLL)); }
1849static simd_int2 SIMD_CFUNC simd_int_sat(simd_double2 __x) { return simd_int(simd_clamp(__x,-0x1.0p31,0x1.fffffffcp30)); }
1850static simd_int3 SIMD_CFUNC simd_int_sat(simd_double3 __x) { return simd_int(simd_clamp(__x,-0x1.0p31,0x1.fffffffcp30)); }
1851static simd_int4 SIMD_CFUNC simd_int_sat(simd_double4 __x) { return simd_int(simd_clamp(__x,-0x1.0p31,0x1.fffffffcp30)); }
1852static simd_int8 SIMD_CFUNC simd_int_sat(simd_double8 __x) { return simd_int(simd_clamp(__x,-0x1.0p31,0x1.fffffffcp30)); }
1853static simd_int2 SIMD_CFUNC simd_int_sat(simd_uchar2 __x) { return simd_int(__x); }
1854static simd_int3 SIMD_CFUNC simd_int_sat(simd_uchar3 __x) { return simd_int(__x); }
1855static simd_int4 SIMD_CFUNC simd_int_sat(simd_uchar4 __x) { return simd_int(__x); }
1856static simd_int8 SIMD_CFUNC simd_int_sat(simd_uchar8 __x) { return simd_int(__x); }
1857static simd_int16 SIMD_CFUNC simd_int_sat(simd_uchar16 __x) { return simd_int(__x); }
1858static simd_int2 SIMD_CFUNC simd_int_sat(simd_ushort2 __x) { return simd_int(__x); }
1859static simd_int3 SIMD_CFUNC simd_int_sat(simd_ushort3 __x) { return simd_int(__x); }
1860static simd_int4 SIMD_CFUNC simd_int_sat(simd_ushort4 __x) { return simd_int(__x); }
1861static simd_int8 SIMD_CFUNC simd_int_sat(simd_ushort8 __x) { return simd_int(__x); }
1862static simd_int16 SIMD_CFUNC simd_int_sat(simd_ushort16 __x) { return simd_int(__x); }
1863static simd_int2 SIMD_CFUNC simd_int_sat(simd_uint2 __x) { return simd_int(simd_min(__x,0x7fffffff)); }
1864static simd_int3 SIMD_CFUNC simd_int_sat(simd_uint3 __x) { return simd_int(simd_min(__x,0x7fffffff)); }
1865static simd_int4 SIMD_CFUNC simd_int_sat(simd_uint4 __x) { return simd_int(simd_min(__x,0x7fffffff)); }
1866static simd_int8 SIMD_CFUNC simd_int_sat(simd_uint8 __x) { return simd_int(simd_min(__x,0x7fffffff)); }
1867static simd_int16 SIMD_CFUNC simd_int_sat(simd_uint16 __x) { return simd_int(simd_min(__x,0x7fffffff)); }
1868static simd_int2 SIMD_CFUNC simd_int_sat(simd_ulong2 __x) { return simd_int(simd_min(__x,0x7fffffff)); }
1869static simd_int3 SIMD_CFUNC simd_int_sat(simd_ulong3 __x) { return simd_int(simd_min(__x,0x7fffffff)); }
1870static simd_int4 SIMD_CFUNC simd_int_sat(simd_ulong4 __x) { return simd_int(simd_min(__x,0x7fffffff)); }
1871static simd_int8 SIMD_CFUNC simd_int_sat(simd_ulong8 __x) { return simd_int(simd_min(__x,0x7fffffff)); }
1872
1873static simd_int2 SIMD_CFUNC simd_int_rte(simd_float2 __x) {
1874#if defined __arm64__ || defined __aarch64__
1875 return vcvtn_s32_f32(__x);
1876#else
1877 return simd_make_int2(simd_int_rte(simd_make_float4_undef(__x)));
1878#endif
1879}
1880
1881static simd_int3 SIMD_CFUNC simd_int_rte(simd_float3 __x) {
1882 return simd_make_int3(simd_int_rte(simd_make_float4_undef(__x)));
1883}
1884
1885static simd_int4 SIMD_CFUNC simd_int_rte(simd_float4 __x) {
1886#if defined __SSE2__
1887 return _mm_cvtps_epi32(__x);
1888#elif defined __arm64__ || defined __aarch64__
1889 return vcvtnq_s32_f32(__x);
1890#else
1891 simd_float4 magic = __tg_copysign(0x1.0p23, __x);
1892 simd_int4 x_is_small = __tg_fabs(__x) < 0x1.0p23;
1893 return __builtin_convertvector(simd_bitselect(__x, (__x + magic) - magic, x_is_small & 0x7fffffff), simd_int4);
1894#endif
1895}
1896
1897static simd_int8 SIMD_CFUNC simd_int_rte(simd_float8 __x) {
1898#if defined __AVX__
1899 return _mm256_cvtps_epi32(__x);
1900#else
1901 return simd_make_int8(simd_int_rte(__x.lo), simd_int_rte(__x.hi));
1902#endif
1903}
1904
1905static simd_int16 SIMD_CFUNC simd_int_rte(simd_float16 __x) {
1906#if defined __AVX512F__
1907 return _mm512_cvtps_epi32(__x);
1908#else
1909 return simd_make_int16(simd_int_rte(__x.lo), simd_int_rte(__x.hi));
1910#endif
1911}
1912
1913static simd_uint2 SIMD_CFUNC simd_uint(simd_char2 __x) { return simd_uint(simd_int(__x)); }
1914static simd_uint3 SIMD_CFUNC simd_uint(simd_char3 __x) { return simd_uint(simd_int(__x)); }
1915static simd_uint4 SIMD_CFUNC simd_uint(simd_char4 __x) { return simd_uint(simd_int(__x)); }
1916static simd_uint8 SIMD_CFUNC simd_uint(simd_char8 __x) { return simd_uint(simd_int(__x)); }
1917static simd_uint16 SIMD_CFUNC simd_uint(simd_char16 __x) { return simd_uint(simd_int(__x)); }
1918static simd_uint2 SIMD_CFUNC simd_uint(simd_uchar2 __x) { return simd_uint(simd_int(__x)); }
1919static simd_uint3 SIMD_CFUNC simd_uint(simd_uchar3 __x) { return simd_uint(simd_int(__x)); }
1920static simd_uint4 SIMD_CFUNC simd_uint(simd_uchar4 __x) { return simd_uint(simd_int(__x)); }
1921static simd_uint8 SIMD_CFUNC simd_uint(simd_uchar8 __x) { return simd_uint(simd_int(__x)); }
1922static simd_uint16 SIMD_CFUNC simd_uint(simd_uchar16 __x) { return simd_uint(simd_int(__x)); }
1923static simd_uint2 SIMD_CFUNC simd_uint(simd_short2 __x) { return simd_uint(simd_int(__x)); }
1924static simd_uint3 SIMD_CFUNC simd_uint(simd_short3 __x) { return simd_uint(simd_int(__x)); }
1925static simd_uint4 SIMD_CFUNC simd_uint(simd_short4 __x) { return simd_uint(simd_int(__x)); }
1926static simd_uint8 SIMD_CFUNC simd_uint(simd_short8 __x) { return simd_uint(simd_int(__x)); }
1927static simd_uint16 SIMD_CFUNC simd_uint(simd_short16 __x) { return simd_uint(simd_int(__x)); }
1928static simd_uint2 SIMD_CFUNC simd_uint(simd_ushort2 __x) { return simd_uint(simd_int(__x)); }
1929static simd_uint3 SIMD_CFUNC simd_uint(simd_ushort3 __x) { return simd_uint(simd_int(__x)); }
1930static simd_uint4 SIMD_CFUNC simd_uint(simd_ushort4 __x) { return simd_uint(simd_int(__x)); }
1931static simd_uint8 SIMD_CFUNC simd_uint(simd_ushort8 __x) { return simd_uint(simd_int(__x)); }
1932static simd_uint16 SIMD_CFUNC simd_uint(simd_ushort16 __x) { return simd_uint(simd_int(__x)); }
1933static simd_uint2 SIMD_CFUNC simd_uint(simd_half2 __x) { return simd_uint(simd_int(__x)); }
1934static simd_uint3 SIMD_CFUNC simd_uint(simd_half3 __x) { return simd_uint(simd_int(__x)); }
1935static simd_uint4 SIMD_CFUNC simd_uint(simd_half4 __x) { return simd_uint(simd_int(__x)); }
1936static simd_uint8 SIMD_CFUNC simd_uint(simd_half8 __x) { return simd_uint(simd_int(__x)); }
1937static simd_uint16 SIMD_CFUNC simd_uint(simd_half16 __x) { return simd_uint(simd_int(__x)); }
1938static simd_uint2 SIMD_CFUNC simd_uint(simd_int2 __x) { return (simd_uint2)__x; }
1939static simd_uint3 SIMD_CFUNC simd_uint(simd_int3 __x) { return (simd_uint3)__x; }
1940static simd_uint4 SIMD_CFUNC simd_uint(simd_int4 __x) { return (simd_uint4)__x; }
1941static simd_uint8 SIMD_CFUNC simd_uint(simd_int8 __x) { return (simd_uint8)__x; }
1942static simd_uint16 SIMD_CFUNC simd_uint(simd_int16 __x) { return (simd_uint16)__x; }
1943static simd_uint2 SIMD_CFUNC simd_uint(simd_uint2 __x) { return __x; }
1944static simd_uint3 SIMD_CFUNC simd_uint(simd_uint3 __x) { return __x; }
1945static simd_uint4 SIMD_CFUNC simd_uint(simd_uint4 __x) { return __x; }
1946static simd_uint8 SIMD_CFUNC simd_uint(simd_uint8 __x) { return __x; }
1947static simd_uint16 SIMD_CFUNC simd_uint(simd_uint16 __x) { return __x; }
1948static simd_uint2 SIMD_CFUNC simd_uint(simd_float2 __x) { simd_int2 __big = __x > 0x1.0p31f; return simd_uint(simd_int(__x - simd_bitselect((simd_float2)0,0x1.0p31f,__big))) + simd_bitselect((simd_uint2)0,0x80000000,__big); }
1949static simd_uint3 SIMD_CFUNC simd_uint(simd_float3 __x) { simd_int3 __big = __x > 0x1.0p31f; return simd_uint(simd_int(__x - simd_bitselect((simd_float3)0,0x1.0p31f,__big))) + simd_bitselect((simd_uint3)0,0x80000000,__big); }
1950static simd_uint4 SIMD_CFUNC simd_uint(simd_float4 __x) { simd_int4 __big = __x > 0x1.0p31f; return simd_uint(simd_int(__x - simd_bitselect((simd_float4)0,0x1.0p31f,__big))) + simd_bitselect((simd_uint4)0,0x80000000,__big); }
1951static simd_uint8 SIMD_CFUNC simd_uint(simd_float8 __x) { simd_int8 __big = __x > 0x1.0p31f; return simd_uint(simd_int(__x - simd_bitselect((simd_float8)0,0x1.0p31f,__big))) + simd_bitselect((simd_uint8)0,0x80000000,__big); }
1952static simd_uint16 SIMD_CFUNC simd_uint(simd_float16 __x) { simd_int16 __big = __x > 0x1.0p31f; return simd_uint(simd_int(__x - simd_bitselect((simd_float16)0,0x1.0p31f,__big))) + simd_bitselect((simd_uint16)0,0x80000000,__big); }
1953static simd_uint2 SIMD_CFUNC simd_uint(simd_long2 __x) { return simd_uint(simd_int(__x)); }
1954static simd_uint3 SIMD_CFUNC simd_uint(simd_long3 __x) { return simd_uint(simd_int(__x)); }
1955static simd_uint4 SIMD_CFUNC simd_uint(simd_long4 __x) { return simd_uint(simd_int(__x)); }
1956static simd_uint8 SIMD_CFUNC simd_uint(simd_long8 __x) { return simd_uint(simd_int(__x)); }
1957static simd_uint2 SIMD_CFUNC simd_uint(simd_ulong2 __x) { return simd_uint(simd_int(__x)); }
1958static simd_uint3 SIMD_CFUNC simd_uint(simd_ulong3 __x) { return simd_uint(simd_int(__x)); }
1959static simd_uint4 SIMD_CFUNC simd_uint(simd_ulong4 __x) { return simd_uint(simd_int(__x)); }
1960static simd_uint8 SIMD_CFUNC simd_uint(simd_ulong8 __x) { return simd_uint(simd_int(__x)); }
1961static simd_uint2 SIMD_CFUNC simd_uint(simd_double2 __x) { simd_long2 __big = __x > 0x1.fffffffcp30; return simd_uint(simd_int(__x - simd_bitselect((simd_double2)0,0x1.0p31,__big))) + simd_bitselect((simd_uint2)0,0x80000000,simd_int(__big)); }
1962static simd_uint3 SIMD_CFUNC simd_uint(simd_double3 __x) { simd_long3 __big = __x > 0x1.fffffffcp30; return simd_uint(simd_int(__x - simd_bitselect((simd_double3)0,0x1.0p31,__big))) + simd_bitselect((simd_uint3)0,0x80000000,simd_int(__big)); }
1963static simd_uint4 SIMD_CFUNC simd_uint(simd_double4 __x) { simd_long4 __big = __x > 0x1.fffffffcp30; return simd_uint(simd_int(__x - simd_bitselect((simd_double4)0,0x1.0p31,__big))) + simd_bitselect((simd_uint4)0,0x80000000,simd_int(__big)); }
1964static simd_uint8 SIMD_CFUNC simd_uint(simd_double8 __x) { simd_long8 __big = __x > 0x1.fffffffcp30; return simd_uint(simd_int(__x - simd_bitselect((simd_double8)0,0x1.0p31,__big))) + simd_bitselect((simd_uint8)0,0x80000000,simd_int(__big)); }
1965
1966static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_char2 __x) { return simd_uint(simd_max(__x,0)); }
1967static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_char3 __x) { return simd_uint(simd_max(__x,0)); }
1968static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_char4 __x) { return simd_uint(simd_max(__x,0)); }
1969static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_char8 __x) { return simd_uint(simd_max(__x,0)); }
1970static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_char16 __x) { return simd_uint(simd_max(__x,0)); }
1971static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_short2 __x) { return simd_uint(simd_max(__x,0)); }
1972static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_short3 __x) { return simd_uint(simd_max(__x,0)); }
1973static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_short4 __x) { return simd_uint(simd_max(__x,0)); }
1974static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_short8 __x) { return simd_uint(simd_max(__x,0)); }
1975static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_short16 __x) { return simd_uint(simd_max(__x,0)); }
1976static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_half2 __x) { return simd_uint(simd_max(__x,0)); }
1977static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_half3 __x) { return simd_uint(simd_max(__x,0)); }
1978static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_half4 __x) { return simd_uint(simd_max(__x,0)); }
1979static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_half8 __x) { return simd_uint(simd_max(__x,0)); }
1980static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_half16 __x) { return simd_uint(simd_max(__x,0)); }
1981static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_int2 __x) { return simd_uint(simd_max(__x,0)); }
1982static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_int3 __x) { return simd_uint(simd_max(__x,0)); }
1983static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_int4 __x) { return simd_uint(simd_max(__x,0)); }
1984static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_int8 __x) { return simd_uint(simd_max(__x,0)); }
1985static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_int16 __x) { return simd_uint(simd_max(__x,0)); }
1986static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_float2 __x) { return simd_bitselect(simd_uint(simd_max(__x,0)), 0xffffffff, __x >= 0x1.0p32f); }
1987static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_float3 __x) { return simd_bitselect(simd_uint(simd_max(__x,0)), 0xffffffff, __x >= 0x1.0p32f); }
1988static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_float4 __x) { return simd_bitselect(simd_uint(simd_max(__x,0)), 0xffffffff, __x >= 0x1.0p32f); }
1989static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_float8 __x) { return simd_bitselect(simd_uint(simd_max(__x,0)), 0xffffffff, __x >= 0x1.0p32f); }
1990static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_float16 __x) { return simd_bitselect(simd_uint(simd_max(__x,0)), 0xffffffff, __x >= 0x1.0p32f); }
1991static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_long2 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
1992static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_long3 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
1993static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_long4 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
1994static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_long8 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
1995static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_double2 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
1996static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_double3 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
1997static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_double4 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
1998static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_double8 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
1999static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_uchar2 __x) { return simd_uint(__x); }
2000static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_uchar3 __x) { return simd_uint(__x); }
2001static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_uchar4 __x) { return simd_uint(__x); }
2002static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_uchar8 __x) { return simd_uint(__x); }
2003static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_uchar16 __x) { return simd_uint(__x); }
2004static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_ushort2 __x) { return simd_uint(__x); }
2005static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_ushort3 __x) { return simd_uint(__x); }
2006static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_ushort4 __x) { return simd_uint(__x); }
2007static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_ushort8 __x) { return simd_uint(__x); }
2008static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_ushort16 __x) { return simd_uint(__x); }
2009static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_uint2 __x) { return __x; }
2010static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_uint3 __x) { return __x; }
2011static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_uint4 __x) { return __x; }
2012static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_uint8 __x) { return __x; }
2013static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_uint16 __x) { return __x; }
2014static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_ulong2 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
2015static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_ulong3 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
2016static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_ulong4 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
2017static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_ulong8 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
2018
2019static simd_uint2 SIMD_CFUNC simd_uint_rte(simd_float2 __x) {
2020#if defined __arm64__
2021 return vcvtn_u32_f32(__x);
2022#else
2023 return simd_make_uint2(simd_uint_rte(simd_make_float4_undef(__x)));
2024#endif
2025}
2026
2027static simd_uint3 SIMD_CFUNC simd_uint_rte(simd_float3 __x) {
2028 return simd_make_uint3(simd_uint_rte(simd_make_float4_undef(__x)));
2029}
2030
2031static simd_uint4 SIMD_CFUNC simd_uint_rte(simd_float4 __x) {
2032#if defined __AVX512F__
2033 return _mm_cvtps_epu32(__x);
2034#elif defined __arm64__
2035 return vcvtnq_u32_f32(__x);
2036#else
2037 simd_float4 magic = __tg_copysign(0x1.0p23, __x);
2038 simd_int4 x_is_small = __tg_fabs(__x) < 0x1.0p23;
2039 return __builtin_convertvector(simd_bitselect(__x, (__x + magic) - magic, x_is_small & 0x7fffffff), simd_uint4);
2040#endif
2041}
2042
2043static simd_uint8 SIMD_CFUNC simd_uint_rte(simd_float8 __x) {
2044#if defined __AVX512F__
2045 return _mm256_cvtps_epu32(__x);
2046#else
2047 return simd_make_uint8(simd_uint_rte(__x.lo), simd_uint_rte(__x.hi));
2048#endif
2049}
2050
2051static simd_uint16 SIMD_CFUNC simd_uint_rte(simd_float16 __x) {
2052#if defined __AVX512F__
2053 return _mm512_cvtps_epu32(__x);
2054#else
2055 return simd_make_uint16(simd_uint_rte(__x.lo), simd_uint_rte(__x.hi));
2056#endif
2057}
2058
2059static simd_float2 SIMD_CFUNC simd_float(simd_char2 __x) { return (simd_float2)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
2060static simd_float3 SIMD_CFUNC simd_float(simd_char3 __x) { return (simd_float3)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
2061static simd_float4 SIMD_CFUNC simd_float(simd_char4 __x) { return (simd_float4)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
2062static simd_float8 SIMD_CFUNC simd_float(simd_char8 __x) { return (simd_float8)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
2063static simd_float16 SIMD_CFUNC simd_float(simd_char16 __x) { return (simd_float16)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
2064static simd_float2 SIMD_CFUNC simd_float(simd_uchar2 __x) { return (simd_float2)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
2065static simd_float3 SIMD_CFUNC simd_float(simd_uchar3 __x) { return (simd_float3)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
2066static simd_float4 SIMD_CFUNC simd_float(simd_uchar4 __x) { return (simd_float4)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
2067static simd_float8 SIMD_CFUNC simd_float(simd_uchar8 __x) { return (simd_float8)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
2068static simd_float16 SIMD_CFUNC simd_float(simd_uchar16 __x) { return (simd_float16)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
2069static simd_float2 SIMD_CFUNC simd_float(simd_short2 __x) { return (simd_float2)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
2070static simd_float3 SIMD_CFUNC simd_float(simd_short3 __x) { return (simd_float3)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
2071static simd_float4 SIMD_CFUNC simd_float(simd_short4 __x) { return (simd_float4)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
2072static simd_float8 SIMD_CFUNC simd_float(simd_short8 __x) { return (simd_float8)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
2073static simd_float16 SIMD_CFUNC simd_float(simd_short16 __x) { return (simd_float16)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
2074static simd_float2 SIMD_CFUNC simd_float(simd_ushort2 __x) { return (simd_float2)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
2075static simd_float3 SIMD_CFUNC simd_float(simd_ushort3 __x) { return (simd_float3)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
2076static simd_float4 SIMD_CFUNC simd_float(simd_ushort4 __x) { return (simd_float4)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
2077static simd_float8 SIMD_CFUNC simd_float(simd_ushort8 __x) { return (simd_float8)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
2078static simd_float16 SIMD_CFUNC simd_float(simd_ushort16 __x) { return (simd_float16)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
2079static simd_float2 SIMD_CFUNC simd_float(simd_half2 __x) { return __builtin_convertvector(__x,simd_float2); }
2080static simd_float3 SIMD_CFUNC simd_float(simd_half3 __x) { return __builtin_convertvector(__x,simd_float3); }
2081static simd_float4 SIMD_CFUNC simd_float(simd_half4 __x) { return __builtin_convertvector(__x,simd_float4); }
2082static simd_float8 SIMD_CFUNC simd_float(simd_half8 __x) { return __builtin_convertvector(__x,simd_float8); }
2083static simd_float16 SIMD_CFUNC simd_float(simd_half16 __x) { return __builtin_convertvector(__x,simd_float16); }
2084static simd_float2 SIMD_CFUNC simd_float(simd_int2 __x) { return __builtin_convertvector(__x,simd_float2); }
2085static simd_float3 SIMD_CFUNC simd_float(simd_int3 __x) { return __builtin_convertvector(__x,simd_float3); }
2086static simd_float4 SIMD_CFUNC simd_float(simd_int4 __x) { return __builtin_convertvector(__x,simd_float4); }
2087static simd_float8 SIMD_CFUNC simd_float(simd_int8 __x) { return __builtin_convertvector(__x,simd_float8); }
2088static simd_float16 SIMD_CFUNC simd_float(simd_int16 __x) { return __builtin_convertvector(__x,simd_float16); }
2089static simd_float2 SIMD_CFUNC simd_float(simd_uint2 __x) { return __builtin_convertvector(__x,simd_float2); }
2090static simd_float3 SIMD_CFUNC simd_float(simd_uint3 __x) { return __builtin_convertvector(__x,simd_float3); }
2091static simd_float4 SIMD_CFUNC simd_float(simd_uint4 __x) { return __builtin_convertvector(__x,simd_float4); }
2092static simd_float8 SIMD_CFUNC simd_float(simd_uint8 __x) { return __builtin_convertvector(__x,simd_float8); }
2093static simd_float16 SIMD_CFUNC simd_float(simd_uint16 __x) { return __builtin_convertvector(__x,simd_float16); }
2094static simd_float2 SIMD_CFUNC simd_float(simd_float2 __x) { return __x; }
2095static simd_float3 SIMD_CFUNC simd_float(simd_float3 __x) { return __x; }
2096static simd_float4 SIMD_CFUNC simd_float(simd_float4 __x) { return __x; }
2097static simd_float8 SIMD_CFUNC simd_float(simd_float8 __x) { return __x; }
2098static simd_float16 SIMD_CFUNC simd_float(simd_float16 __x) { return __x; }
2099static simd_float2 SIMD_CFUNC simd_float(simd_long2 __x) { return __builtin_convertvector(__x,simd_float2); }
2100static simd_float3 SIMD_CFUNC simd_float(simd_long3 __x) { return __builtin_convertvector(__x,simd_float3); }
2101static simd_float4 SIMD_CFUNC simd_float(simd_long4 __x) { return __builtin_convertvector(__x,simd_float4); }
2102static simd_float8 SIMD_CFUNC simd_float(simd_long8 __x) { return __builtin_convertvector(__x,simd_float8); }
2103static simd_float2 SIMD_CFUNC simd_float(simd_ulong2 __x) { return __builtin_convertvector(__x,simd_float2); }
2104static simd_float3 SIMD_CFUNC simd_float(simd_ulong3 __x) { return __builtin_convertvector(__x,simd_float3); }
2105static simd_float4 SIMD_CFUNC simd_float(simd_ulong4 __x) { return __builtin_convertvector(__x,simd_float4); }
2106static simd_float8 SIMD_CFUNC simd_float(simd_ulong8 __x) { return __builtin_convertvector(__x,simd_float8); }
2107static simd_float2 SIMD_CFUNC simd_float(simd_double2 __x) { return __builtin_convertvector(__x,simd_float2); }
2108static simd_float3 SIMD_CFUNC simd_float(simd_double3 __x) { return __builtin_convertvector(__x,simd_float3); }
2109static simd_float4 SIMD_CFUNC simd_float(simd_double4 __x) { return __builtin_convertvector(__x,simd_float4); }
2110static simd_float8 SIMD_CFUNC simd_float(simd_double8 __x) { return __builtin_convertvector(__x,simd_float8); }
2111
2112
2113static simd_long2 SIMD_CFUNC simd_long(simd_char2 __x) { return __builtin_convertvector(__x,simd_long2); }
2114static simd_long3 SIMD_CFUNC simd_long(simd_char3 __x) { return __builtin_convertvector(__x,simd_long3); }
2115static simd_long4 SIMD_CFUNC simd_long(simd_char4 __x) { return __builtin_convertvector(__x,simd_long4); }
2116static simd_long8 SIMD_CFUNC simd_long(simd_char8 __x) { return __builtin_convertvector(__x,simd_long8); }
2117static simd_long2 SIMD_CFUNC simd_long(simd_uchar2 __x) { return __builtin_convertvector(__x,simd_long2); }
2118static simd_long3 SIMD_CFUNC simd_long(simd_uchar3 __x) { return __builtin_convertvector(__x,simd_long3); }
2119static simd_long4 SIMD_CFUNC simd_long(simd_uchar4 __x) { return __builtin_convertvector(__x,simd_long4); }
2120static simd_long8 SIMD_CFUNC simd_long(simd_uchar8 __x) { return __builtin_convertvector(__x,simd_long8); }
2121static simd_long2 SIMD_CFUNC simd_long(simd_short2 __x) { return __builtin_convertvector(__x,simd_long2); }
2122static simd_long3 SIMD_CFUNC simd_long(simd_short3 __x) { return __builtin_convertvector(__x,simd_long3); }
2123static simd_long4 SIMD_CFUNC simd_long(simd_short4 __x) { return __builtin_convertvector(__x,simd_long4); }
2124static simd_long8 SIMD_CFUNC simd_long(simd_short8 __x) { return __builtin_convertvector(__x,simd_long8); }
2125static simd_long2 SIMD_CFUNC simd_long(simd_ushort2 __x) { return __builtin_convertvector(__x,simd_long2); }
2126static simd_long3 SIMD_CFUNC simd_long(simd_ushort3 __x) { return __builtin_convertvector(__x,simd_long3); }
2127static simd_long4 SIMD_CFUNC simd_long(simd_ushort4 __x) { return __builtin_convertvector(__x,simd_long4); }
2128static simd_long8 SIMD_CFUNC simd_long(simd_ushort8 __x) { return __builtin_convertvector(__x,simd_long8); }
2129static simd_long2 SIMD_CFUNC simd_long(simd_half2 __x) { return __builtin_convertvector(__x,simd_long2); }
2130static simd_long3 SIMD_CFUNC simd_long(simd_half3 __x) { return __builtin_convertvector(__x,simd_long3); }
2131static simd_long4 SIMD_CFUNC simd_long(simd_half4 __x) { return __builtin_convertvector(__x,simd_long4); }
2132static simd_long8 SIMD_CFUNC simd_long(simd_half8 __x) { return __builtin_convertvector(__x,simd_long8); }
2133static simd_long2 SIMD_CFUNC simd_long(simd_int2 __x) { return __builtin_convertvector(__x,simd_long2); }
2134static simd_long3 SIMD_CFUNC simd_long(simd_int3 __x) { return __builtin_convertvector(__x,simd_long3); }
2135static simd_long4 SIMD_CFUNC simd_long(simd_int4 __x) { return __builtin_convertvector(__x,simd_long4); }
2136static simd_long8 SIMD_CFUNC simd_long(simd_int8 __x) { return __builtin_convertvector(__x,simd_long8); }
2137static simd_long2 SIMD_CFUNC simd_long(simd_uint2 __x) { return __builtin_convertvector(__x,simd_long2); }
2138static simd_long3 SIMD_CFUNC simd_long(simd_uint3 __x) { return __builtin_convertvector(__x,simd_long3); }
2139static simd_long4 SIMD_CFUNC simd_long(simd_uint4 __x) { return __builtin_convertvector(__x,simd_long4); }
2140static simd_long8 SIMD_CFUNC simd_long(simd_uint8 __x) { return __builtin_convertvector(__x,simd_long8); }
2141static simd_long2 SIMD_CFUNC simd_long(simd_float2 __x) { return __builtin_convertvector(__x,simd_long2); }
2142static simd_long3 SIMD_CFUNC simd_long(simd_float3 __x) { return __builtin_convertvector(__x,simd_long3); }
2143static simd_long4 SIMD_CFUNC simd_long(simd_float4 __x) { return __builtin_convertvector(__x,simd_long4); }
2144static simd_long8 SIMD_CFUNC simd_long(simd_float8 __x) { return __builtin_convertvector(__x,simd_long8); }
2145static simd_long2 SIMD_CFUNC simd_long(simd_long2 __x) { return __x; }
2146static simd_long3 SIMD_CFUNC simd_long(simd_long3 __x) { return __x; }
2147static simd_long4 SIMD_CFUNC simd_long(simd_long4 __x) { return __x; }
2148static simd_long8 SIMD_CFUNC simd_long(simd_long8 __x) { return __x; }
2149static simd_long2 SIMD_CFUNC simd_long(simd_ulong2 __x) { return (simd_long2)__x; }
2150static simd_long3 SIMD_CFUNC simd_long(simd_ulong3 __x) { return (simd_long3)__x; }
2151static simd_long4 SIMD_CFUNC simd_long(simd_ulong4 __x) { return (simd_long4)__x; }
2152static simd_long8 SIMD_CFUNC simd_long(simd_ulong8 __x) { return (simd_long8)__x; }
2153static simd_long2 SIMD_CFUNC simd_long(simd_double2 __x) { return __builtin_convertvector(__x,simd_long2); }
2154static simd_long3 SIMD_CFUNC simd_long(simd_double3 __x) { return __builtin_convertvector(__x,simd_long3); }
2155static simd_long4 SIMD_CFUNC simd_long(simd_double4 __x) { return __builtin_convertvector(__x,simd_long4); }
2156static simd_long8 SIMD_CFUNC simd_long(simd_double8 __x) { return __builtin_convertvector(__x,simd_long8); }
2157
2158static simd_long2 SIMD_CFUNC simd_long_sat(simd_char2 __x) { return simd_long(__x); }
2159static simd_long3 SIMD_CFUNC simd_long_sat(simd_char3 __x) { return simd_long(__x); }
2160static simd_long4 SIMD_CFUNC simd_long_sat(simd_char4 __x) { return simd_long(__x); }
2161static simd_long8 SIMD_CFUNC simd_long_sat(simd_char8 __x) { return simd_long(__x); }
2162static simd_long2 SIMD_CFUNC simd_long_sat(simd_short2 __x) { return simd_long(__x); }
2163static simd_long3 SIMD_CFUNC simd_long_sat(simd_short3 __x) { return simd_long(__x); }
2164static simd_long4 SIMD_CFUNC simd_long_sat(simd_short4 __x) { return simd_long(__x); }
2165static simd_long8 SIMD_CFUNC simd_long_sat(simd_short8 __x) { return simd_long(__x); }
2166static simd_long2 SIMD_CFUNC simd_long_sat(simd_half2 __x) { return simd_long(__x); }
2167static simd_long3 SIMD_CFUNC simd_long_sat(simd_half3 __x) { return simd_long(__x); }
2168static simd_long4 SIMD_CFUNC simd_long_sat(simd_half4 __x) { return simd_long(__x); }
2169static simd_long8 SIMD_CFUNC simd_long_sat(simd_half8 __x) { return simd_long(__x); }
2170static simd_long2 SIMD_CFUNC simd_long_sat(simd_int2 __x) { return simd_long(__x); }
2171static simd_long3 SIMD_CFUNC simd_long_sat(simd_int3 __x) { return simd_long(__x); }
2172static simd_long4 SIMD_CFUNC simd_long_sat(simd_int4 __x) { return simd_long(__x); }
2173static simd_long8 SIMD_CFUNC simd_long_sat(simd_int8 __x) { return simd_long(__x); }
2174static simd_long2 SIMD_CFUNC simd_long_sat(simd_float2 __x) { return simd_bitselect(simd_long(simd_max(__x,-0x1.0p63f)), 0x7fffffffffffffff, simd_long(__x >= 0x1.0p63f)); }
2175static simd_long3 SIMD_CFUNC simd_long_sat(simd_float3 __x) { return simd_bitselect(simd_long(simd_max(__x,-0x1.0p63f)), 0x7fffffffffffffff, simd_long(__x >= 0x1.0p63f)); }
2176static simd_long4 SIMD_CFUNC simd_long_sat(simd_float4 __x) { return simd_bitselect(simd_long(simd_max(__x,-0x1.0p63f)), 0x7fffffffffffffff, simd_long(__x >= 0x1.0p63f)); }
2177static simd_long8 SIMD_CFUNC simd_long_sat(simd_float8 __x) { return simd_bitselect(simd_long(simd_max(__x,-0x1.0p63f)), 0x7fffffffffffffff, simd_long(__x >= 0x1.0p63f)); }
2178static simd_long2 SIMD_CFUNC simd_long_sat(simd_long2 __x) { return __x; }
2179static simd_long3 SIMD_CFUNC simd_long_sat(simd_long3 __x) { return __x; }
2180static simd_long4 SIMD_CFUNC simd_long_sat(simd_long4 __x) { return __x; }
2181static simd_long8 SIMD_CFUNC simd_long_sat(simd_long8 __x) { return __x; }
2182static simd_long2 SIMD_CFUNC simd_long_sat(simd_double2 __x) { return simd_bitselect(simd_long(simd_max(__x,-0x1.0p63)), 0x7fffffffffffffff, __x >= 0x1.0p63); }
2183static simd_long3 SIMD_CFUNC simd_long_sat(simd_double3 __x) { return simd_bitselect(simd_long(simd_max(__x,-0x1.0p63)), 0x7fffffffffffffff, __x >= 0x1.0p63); }
2184static simd_long4 SIMD_CFUNC simd_long_sat(simd_double4 __x) { return simd_bitselect(simd_long(simd_max(__x,-0x1.0p63)), 0x7fffffffffffffff, __x >= 0x1.0p63); }
2185static simd_long8 SIMD_CFUNC simd_long_sat(simd_double8 __x) { return simd_bitselect(simd_long(simd_max(__x,-0x1.0p63)), 0x7fffffffffffffff, __x >= 0x1.0p63); }
2186static simd_long2 SIMD_CFUNC simd_long_sat(simd_uchar2 __x) { return simd_long(__x); }
2187static simd_long3 SIMD_CFUNC simd_long_sat(simd_uchar3 __x) { return simd_long(__x); }
2188static simd_long4 SIMD_CFUNC simd_long_sat(simd_uchar4 __x) { return simd_long(__x); }
2189static simd_long8 SIMD_CFUNC simd_long_sat(simd_uchar8 __x) { return simd_long(__x); }
2190static simd_long2 SIMD_CFUNC simd_long_sat(simd_ushort2 __x) { return simd_long(__x); }
2191static simd_long3 SIMD_CFUNC simd_long_sat(simd_ushort3 __x) { return simd_long(__x); }
2192static simd_long4 SIMD_CFUNC simd_long_sat(simd_ushort4 __x) { return simd_long(__x); }
2193static simd_long8 SIMD_CFUNC simd_long_sat(simd_ushort8 __x) { return simd_long(__x); }
2194static simd_long2 SIMD_CFUNC simd_long_sat(simd_uint2 __x) { return simd_long(__x); }
2195static simd_long3 SIMD_CFUNC simd_long_sat(simd_uint3 __x) { return simd_long(__x); }
2196static simd_long4 SIMD_CFUNC simd_long_sat(simd_uint4 __x) { return simd_long(__x); }
2197static simd_long8 SIMD_CFUNC simd_long_sat(simd_uint8 __x) { return simd_long(__x); }
2198static simd_long2 SIMD_CFUNC simd_long_sat(simd_ulong2 __x) { return simd_long(simd_min(__x,0x7fffffffffffffff)); }
2199static simd_long3 SIMD_CFUNC simd_long_sat(simd_ulong3 __x) { return simd_long(simd_min(__x,0x7fffffffffffffff)); }
2200static simd_long4 SIMD_CFUNC simd_long_sat(simd_ulong4 __x) { return simd_long(simd_min(__x,0x7fffffffffffffff)); }
2201static simd_long8 SIMD_CFUNC simd_long_sat(simd_ulong8 __x) { return simd_long(simd_min(__x,0x7fffffffffffffff)); }
2202
2203static simd_long2 SIMD_CFUNC simd_long_rte(simd_double2 __x) {
2204#if defined __AVX512F__
2205 return _mm_cvtpd_epi64(__x);
2206#elif defined __arm64__ || defined __aarch64__
2207 return vcvtnq_s64_f64(__x);
2208#else
2209 simd_double2 magic = __tg_copysign(0x1.0p52, __x);
2210 simd_long2 x_is_small = __tg_fabs(__x) < 0x1.0p52;
2211 return __builtin_convertvector(simd_bitselect(__x, (__x + magic) - magic, x_is_small & 0x7fffffffffffffff), simd_long2);
2212#endif
2213}
2214
2215static simd_long3 SIMD_CFUNC simd_long_rte(simd_double3 __x) {
2216 return simd_make_long3(simd_long_rte(simd_make_double4_undef(__x)));
2217}
2218
2219static simd_long4 SIMD_CFUNC simd_long_rte(simd_double4 __x) {
2220#if defined __AVX512F__
2221 return _mm256_cvtpd_epi64(__x);
2222#else
2223 return simd_make_long4(simd_long_rte(__x.lo), simd_long_rte(__x.hi));
2224#endif
2225}
2226
2227static simd_long8 SIMD_CFUNC simd_long_rte(simd_double8 __x) {
2228#if defined __AVX512F__
2229 return _mm512_cvtpd_epi64(__x);
2230#else
2231 return simd_make_long8(simd_long_rte(__x.lo), simd_long_rte(__x.hi));
2232#endif
2233}
2234
2235
2236static simd_ulong2 SIMD_CFUNC simd_ulong(simd_char2 __x) { return simd_ulong(simd_long(__x)); }
2237static simd_ulong3 SIMD_CFUNC simd_ulong(simd_char3 __x) { return simd_ulong(simd_long(__x)); }
2238static simd_ulong4 SIMD_CFUNC simd_ulong(simd_char4 __x) { return simd_ulong(simd_long(__x)); }
2239static simd_ulong8 SIMD_CFUNC simd_ulong(simd_char8 __x) { return simd_ulong(simd_long(__x)); }
2240static simd_ulong2 SIMD_CFUNC simd_ulong(simd_uchar2 __x) { return simd_ulong(simd_long(__x)); }
2241static simd_ulong3 SIMD_CFUNC simd_ulong(simd_uchar3 __x) { return simd_ulong(simd_long(__x)); }
2242static simd_ulong4 SIMD_CFUNC simd_ulong(simd_uchar4 __x) { return simd_ulong(simd_long(__x)); }
2243static simd_ulong8 SIMD_CFUNC simd_ulong(simd_uchar8 __x) { return simd_ulong(simd_long(__x)); }
2244static simd_ulong2 SIMD_CFUNC simd_ulong(simd_short2 __x) { return simd_ulong(simd_long(__x)); }
2245static simd_ulong3 SIMD_CFUNC simd_ulong(simd_short3 __x) { return simd_ulong(simd_long(__x)); }
2246static simd_ulong4 SIMD_CFUNC simd_ulong(simd_short4 __x) { return simd_ulong(simd_long(__x)); }
2247static simd_ulong8 SIMD_CFUNC simd_ulong(simd_short8 __x) { return simd_ulong(simd_long(__x)); }
2248static simd_ulong2 SIMD_CFUNC simd_ulong(simd_ushort2 __x) { return simd_ulong(simd_long(__x)); }
2249static simd_ulong3 SIMD_CFUNC simd_ulong(simd_ushort3 __x) { return simd_ulong(simd_long(__x)); }
2250static simd_ulong4 SIMD_CFUNC simd_ulong(simd_ushort4 __x) { return simd_ulong(simd_long(__x)); }
2251static simd_ulong8 SIMD_CFUNC simd_ulong(simd_ushort8 __x) { return simd_ulong(simd_long(__x)); }
2252static simd_ulong2 SIMD_CFUNC simd_ulong(simd_half2 __x) { return simd_ulong(simd_long(__x)); }
2253static simd_ulong3 SIMD_CFUNC simd_ulong(simd_half3 __x) { return simd_ulong(simd_long(__x)); }
2254static simd_ulong4 SIMD_CFUNC simd_ulong(simd_half4 __x) { return simd_ulong(simd_long(__x)); }
2255static simd_ulong8 SIMD_CFUNC simd_ulong(simd_half8 __x) { return simd_ulong(simd_long(__x)); }
2256static simd_ulong2 SIMD_CFUNC simd_ulong(simd_int2 __x) { return simd_ulong(simd_long(__x)); }
2257static simd_ulong3 SIMD_CFUNC simd_ulong(simd_int3 __x) { return simd_ulong(simd_long(__x)); }
2258static simd_ulong4 SIMD_CFUNC simd_ulong(simd_int4 __x) { return simd_ulong(simd_long(__x)); }
2259static simd_ulong8 SIMD_CFUNC simd_ulong(simd_int8 __x) { return simd_ulong(simd_long(__x)); }
2260static simd_ulong2 SIMD_CFUNC simd_ulong(simd_uint2 __x) { return simd_ulong(simd_long(__x)); }
2261static simd_ulong3 SIMD_CFUNC simd_ulong(simd_uint3 __x) { return simd_ulong(simd_long(__x)); }
2262static simd_ulong4 SIMD_CFUNC simd_ulong(simd_uint4 __x) { return simd_ulong(simd_long(__x)); }
2263static simd_ulong8 SIMD_CFUNC simd_ulong(simd_uint8 __x) { return simd_ulong(simd_long(__x)); }
2264static simd_ulong2 SIMD_CFUNC simd_ulong(simd_float2 __x) { simd_int2 __big = __x >= 0x1.0p63f; return simd_ulong(simd_long(__x - simd_bitselect((simd_float2)0,0x1.0p63f,__big))) + simd_bitselect((simd_ulong2)0,0x8000000000000000,simd_long(__big)); }
2265static simd_ulong3 SIMD_CFUNC simd_ulong(simd_float3 __x) { simd_int3 __big = __x >= 0x1.0p63f; return simd_ulong(simd_long(__x - simd_bitselect((simd_float3)0,0x1.0p63f,__big))) + simd_bitselect((simd_ulong3)0,0x8000000000000000,simd_long(__big)); }
2266static simd_ulong4 SIMD_CFUNC simd_ulong(simd_float4 __x) { simd_int4 __big = __x >= 0x1.0p63f; return simd_ulong(simd_long(__x - simd_bitselect((simd_float4)0,0x1.0p63f,__big))) + simd_bitselect((simd_ulong4)0,0x8000000000000000,simd_long(__big)); }
2267static simd_ulong8 SIMD_CFUNC simd_ulong(simd_float8 __x) { simd_int8 __big = __x >= 0x1.0p63f; return simd_ulong(simd_long(__x - simd_bitselect((simd_float8)0,0x1.0p63f,__big))) + simd_bitselect((simd_ulong8)0,0x8000000000000000,simd_long(__big)); }
2268static simd_ulong2 SIMD_CFUNC simd_ulong(simd_long2 __x) { return (simd_ulong2)__x; }
2269static simd_ulong3 SIMD_CFUNC simd_ulong(simd_long3 __x) { return (simd_ulong3)__x; }
2270static simd_ulong4 SIMD_CFUNC simd_ulong(simd_long4 __x) { return (simd_ulong4)__x; }
2271static simd_ulong8 SIMD_CFUNC simd_ulong(simd_long8 __x) { return (simd_ulong8)__x; }
2272static simd_ulong2 SIMD_CFUNC simd_ulong(simd_ulong2 __x) { return __x; }
2273static simd_ulong3 SIMD_CFUNC simd_ulong(simd_ulong3 __x) { return __x; }
2274static simd_ulong4 SIMD_CFUNC simd_ulong(simd_ulong4 __x) { return __x; }
2275static simd_ulong8 SIMD_CFUNC simd_ulong(simd_ulong8 __x) { return __x; }
2276static simd_ulong2 SIMD_CFUNC simd_ulong(simd_double2 __x) { simd_long2 __big = __x >= 0x1.0p63; return simd_ulong(simd_long(__x - simd_bitselect((simd_double2)0,0x1.0p63,__big))) + simd_bitselect((simd_ulong2)0,0x8000000000000000,__big); }
2277static simd_ulong3 SIMD_CFUNC simd_ulong(simd_double3 __x) { simd_long3 __big = __x >= 0x1.0p63; return simd_ulong(simd_long(__x - simd_bitselect((simd_double3)0,0x1.0p63,__big))) + simd_bitselect((simd_ulong3)0,0x8000000000000000,__big); }
2278static simd_ulong4 SIMD_CFUNC simd_ulong(simd_double4 __x) { simd_long4 __big = __x >= 0x1.0p63; return simd_ulong(simd_long(__x - simd_bitselect((simd_double4)0,0x1.0p63,__big))) + simd_bitselect((simd_ulong4)0,0x8000000000000000,__big); }
2279static simd_ulong8 SIMD_CFUNC simd_ulong(simd_double8 __x) { simd_long8 __big = __x >= 0x1.0p63; return simd_ulong(simd_long(__x - simd_bitselect((simd_double8)0,0x1.0p63,__big))) + simd_bitselect((simd_ulong8)0,0x8000000000000000,__big); }
2280
2281static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_char2 __x) { return simd_ulong(simd_max(__x,0)); }
2282static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_char3 __x) { return simd_ulong(simd_max(__x,0)); }
2283static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_char4 __x) { return simd_ulong(simd_max(__x,0)); }
2284static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_char8 __x) { return simd_ulong(simd_max(__x,0)); }
2285static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_short2 __x) { return simd_ulong(simd_max(__x,0)); }
2286static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_short3 __x) { return simd_ulong(simd_max(__x,0)); }
2287static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_short4 __x) { return simd_ulong(simd_max(__x,0)); }
2288static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_short8 __x) { return simd_ulong(simd_max(__x,0)); }
2289static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_half2 __x) { return simd_ulong(simd_max(__x,0)); }
2290static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_half3 __x) { return simd_ulong(simd_max(__x,0)); }
2291static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_half4 __x) { return simd_ulong(simd_max(__x,0)); }
2292static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_half8 __x) { return simd_ulong(simd_max(__x,0)); }
2293static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_int2 __x) { return simd_ulong(simd_max(__x,0)); }
2294static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_int3 __x) { return simd_ulong(simd_max(__x,0)); }
2295static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_int4 __x) { return simd_ulong(simd_max(__x,0)); }
2296static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_int8 __x) { return simd_ulong(simd_max(__x,0)); }
2297static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_float2 __x) { return simd_bitselect(simd_ulong(simd_max(__x,0.f)), 0xffffffffffffffff, simd_long(__x >= 0x1.0p64f)); }
2298static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_float3 __x) { return simd_bitselect(simd_ulong(simd_max(__x,0.f)), 0xffffffffffffffff, simd_long(__x >= 0x1.0p64f)); }
2299static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_float4 __x) { return simd_bitselect(simd_ulong(simd_max(__x,0.f)), 0xffffffffffffffff, simd_long(__x >= 0x1.0p64f)); }
2300static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_float8 __x) { return simd_bitselect(simd_ulong(simd_max(__x,0.f)), 0xffffffffffffffff, simd_long(__x >= 0x1.0p64f)); }
2301static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_long2 __x) { return simd_ulong(simd_max(__x,0)); }
2302static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_long3 __x) { return simd_ulong(simd_max(__x,0)); }
2303static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_long4 __x) { return simd_ulong(simd_max(__x,0)); }
2304static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_long8 __x) { return simd_ulong(simd_max(__x,0)); }
2305static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_double2 __x) { return simd_bitselect(simd_ulong(simd_max(__x,0.0)), 0xffffffffffffffff, __x >= 0x1.0p64); }
2306static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_double3 __x) { return simd_bitselect(simd_ulong(simd_max(__x,0.0)), 0xffffffffffffffff, __x >= 0x1.0p64); }
2307static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_double4 __x) { return simd_bitselect(simd_ulong(simd_max(__x,0.0)), 0xffffffffffffffff, __x >= 0x1.0p64); }
2308static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_double8 __x) { return simd_bitselect(simd_ulong(simd_max(__x,0.0)), 0xffffffffffffffff, __x >= 0x1.0p64); }
2309static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_uchar2 __x) { return simd_ulong(__x); }
2310static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_uchar3 __x) { return simd_ulong(__x); }
2311static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_uchar4 __x) { return simd_ulong(__x); }
2312static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_uchar8 __x) { return simd_ulong(__x); }
2313static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_ushort2 __x) { return simd_ulong(__x); }
2314static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_ushort3 __x) { return simd_ulong(__x); }
2315static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_ushort4 __x) { return simd_ulong(__x); }
2316static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_ushort8 __x) { return simd_ulong(__x); }
2317static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_uint2 __x) { return simd_ulong(__x); }
2318static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_uint3 __x) { return simd_ulong(__x); }
2319static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_uint4 __x) { return simd_ulong(__x); }
2320static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_uint8 __x) { return simd_ulong(__x); }
2321static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_ulong2 __x) { return __x; }
2322static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_ulong3 __x) { return __x; }
2323static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_ulong4 __x) { return __x; }
2324static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_ulong8 __x) { return __x; }
2325
2326static simd_ulong2 SIMD_CFUNC simd_ulong_rte(simd_double2 __x) {
2327#if defined __AVX512F__
2328 return _mm_cvtpd_epu64(__x);
2329#elif defined __arm64__
2330 return vcvtnq_u64_f64(__x);
2331#else
2332 simd_double2 magic = __tg_copysign(0x1.0p52, __x);
2333 simd_long2 x_is_small = __tg_fabs(__x) < 0x1.0p52;
2334 return __builtin_convertvector(simd_bitselect(__x, (__x + magic) - magic, x_is_small & 0x7fffffffffffffff), simd_ulong2);
2335#endif
2336}
2337
2338static simd_ulong3 SIMD_CFUNC simd_ulong_rte(simd_double3 __x) {
2339 return simd_make_ulong3(simd_ulong_rte(simd_make_double4_undef(__x)));
2340}
2341
2342static simd_ulong4 SIMD_CFUNC simd_ulong_rte(simd_double4 __x) {
2343#if defined __AVX512F__
2344 return _mm256_cvtpd_epu64(__x);
2345#else
2346 return simd_make_ulong4(simd_ulong_rte(__x.lo), simd_ulong_rte(__x.hi));
2347#endif
2348}
2349
2350static simd_ulong8 SIMD_CFUNC simd_ulong_rte(simd_double8 __x) {
2351#if defined __AVX512F__
2352 return _mm512_cvtpd_epu64(__x);
2353#else
2354 return simd_make_ulong8(simd_ulong_rte(__x.lo), simd_ulong_rte(__x.hi));
2355#endif
2356}
2357
2358static simd_double2 SIMD_CFUNC simd_double(simd_char2 __x) { return simd_double(simd_int(__x)); }
2359static simd_double3 SIMD_CFUNC simd_double(simd_char3 __x) { return simd_double(simd_int(__x)); }
2360static simd_double4 SIMD_CFUNC simd_double(simd_char4 __x) { return simd_double(simd_int(__x)); }
2361static simd_double8 SIMD_CFUNC simd_double(simd_char8 __x) { return simd_double(simd_int(__x)); }
2362static simd_double2 SIMD_CFUNC simd_double(simd_uchar2 __x) { return simd_double(simd_int(__x)); }
2363static simd_double3 SIMD_CFUNC simd_double(simd_uchar3 __x) { return simd_double(simd_int(__x)); }
2364static simd_double4 SIMD_CFUNC simd_double(simd_uchar4 __x) { return simd_double(simd_int(__x)); }
2365static simd_double8 SIMD_CFUNC simd_double(simd_uchar8 __x) { return simd_double(simd_int(__x)); }
2366static simd_double2 SIMD_CFUNC simd_double(simd_short2 __x) { return simd_double(simd_int(__x)); }
2367static simd_double3 SIMD_CFUNC simd_double(simd_short3 __x) { return simd_double(simd_int(__x)); }
2368static simd_double4 SIMD_CFUNC simd_double(simd_short4 __x) { return simd_double(simd_int(__x)); }
2369static simd_double8 SIMD_CFUNC simd_double(simd_short8 __x) { return simd_double(simd_int(__x)); }
2370static simd_double2 SIMD_CFUNC simd_double(simd_ushort2 __x) { return simd_double(simd_int(__x)); }
2371static simd_double3 SIMD_CFUNC simd_double(simd_ushort3 __x) { return simd_double(simd_int(__x)); }
2372static simd_double4 SIMD_CFUNC simd_double(simd_ushort4 __x) { return simd_double(simd_int(__x)); }
2373static simd_double8 SIMD_CFUNC simd_double(simd_ushort8 __x) { return simd_double(simd_int(__x)); }
2374static simd_double2 SIMD_CFUNC simd_double(simd_half2 __x) { return __builtin_convertvector(__x, simd_double2); }
2375static simd_double3 SIMD_CFUNC simd_double(simd_half3 __x) { return __builtin_convertvector(__x, simd_double3); }
2376static simd_double4 SIMD_CFUNC simd_double(simd_half4 __x) { return __builtin_convertvector(__x, simd_double4); }
2377static simd_double8 SIMD_CFUNC simd_double(simd_half8 __x) { return __builtin_convertvector(__x, simd_double8); }
2378static simd_double2 SIMD_CFUNC simd_double(simd_int2 __x) { return __builtin_convertvector(__x, simd_double2); }
2379static simd_double3 SIMD_CFUNC simd_double(simd_int3 __x) { return __builtin_convertvector(__x, simd_double3); }
2380static simd_double4 SIMD_CFUNC simd_double(simd_int4 __x) { return __builtin_convertvector(__x, simd_double4); }
2381static simd_double8 SIMD_CFUNC simd_double(simd_int8 __x) { return __builtin_convertvector(__x, simd_double8); }
2382static simd_double2 SIMD_CFUNC simd_double(simd_uint2 __x) { return __builtin_convertvector(__x, simd_double2); }
2383static simd_double3 SIMD_CFUNC simd_double(simd_uint3 __x) { return __builtin_convertvector(__x, simd_double3); }
2384static simd_double4 SIMD_CFUNC simd_double(simd_uint4 __x) { return __builtin_convertvector(__x, simd_double4); }
2385static simd_double8 SIMD_CFUNC simd_double(simd_uint8 __x) { return __builtin_convertvector(__x, simd_double8); }
2386static simd_double2 SIMD_CFUNC simd_double(simd_float2 __x) { return __builtin_convertvector(__x, simd_double2); }
2387static simd_double3 SIMD_CFUNC simd_double(simd_float3 __x) { return __builtin_convertvector(__x, simd_double3); }
2388static simd_double4 SIMD_CFUNC simd_double(simd_float4 __x) { return __builtin_convertvector(__x, simd_double4); }
2389static simd_double8 SIMD_CFUNC simd_double(simd_float8 __x) { return __builtin_convertvector(__x, simd_double8); }
2390static simd_double2 SIMD_CFUNC simd_double(simd_long2 __x) { return __builtin_convertvector(__x, simd_double2); }
2391static simd_double3 SIMD_CFUNC simd_double(simd_long3 __x) { return __builtin_convertvector(__x, simd_double3); }
2392static simd_double4 SIMD_CFUNC simd_double(simd_long4 __x) { return __builtin_convertvector(__x, simd_double4); }
2393static simd_double8 SIMD_CFUNC simd_double(simd_long8 __x) { return __builtin_convertvector(__x, simd_double8); }
2394static simd_double2 SIMD_CFUNC simd_double(simd_ulong2 __x) { return __builtin_convertvector(__x, simd_double2); }
2395static simd_double3 SIMD_CFUNC simd_double(simd_ulong3 __x) { return __builtin_convertvector(__x, simd_double3); }
2396static simd_double4 SIMD_CFUNC simd_double(simd_ulong4 __x) { return __builtin_convertvector(__x, simd_double4); }
2397static simd_double8 SIMD_CFUNC simd_double(simd_ulong8 __x) { return __builtin_convertvector(__x, simd_double8); }
2398static simd_double2 SIMD_CFUNC simd_double(simd_double2 __x) { return __builtin_convertvector(__x, simd_double2); }
2399static simd_double3 SIMD_CFUNC simd_double(simd_double3 __x) { return __builtin_convertvector(__x, simd_double3); }
2400static simd_double4 SIMD_CFUNC simd_double(simd_double4 __x) { return __builtin_convertvector(__x, simd_double4); }
2401static simd_double8 SIMD_CFUNC simd_double(simd_double8 __x) { return __builtin_convertvector(__x, simd_double8); }
2402
2403
2404#ifdef __cplusplus
2405} // extern "C"
2406
2407namespace simd {
2408
2409#if __has_feature(cxx_constexpr)
2410/*! @abstract Convert a vector to another vector of the ScalarType and the same number of elements. */
2411template<typename ScalarType, typename typeN>
2412static constexpr Vector_t<ScalarType, traits<typeN>::count> convert(typeN vector)
2413{
2414 if constexpr (traits<typeN>::count == 1)
2415 return static_cast<Vector_t<ScalarType, traits<typeN>::count>>(vector);
2416 else if constexpr (std::is_same<ScalarType, char1>::value)
2417 return simd_char(vector);
2418 else if constexpr (std::is_same<ScalarType, uchar1>::value)
2419 return simd_uchar(vector);
2420 else if constexpr (std::is_same<ScalarType, short1>::value)
2421 return simd_short(vector);
2422 else if constexpr (std::is_same<ScalarType, ushort1>::value)
2423 return simd_ushort(vector);
2424 else if constexpr (std::is_same<ScalarType, int1>::value)
2425 return simd_int(vector);
2426 else if constexpr (std::is_same<ScalarType, uint1>::value)
2427 return simd_uint(vector);
2428 else if constexpr (std::is_same<ScalarType, long1>::value)
2429 return simd_long(vector);
2430 else if constexpr (std::is_same<ScalarType, ulong1>::value)
2431 return simd_ulong(vector);
2432 else if constexpr (std::is_same<ScalarType, half1>::value)
2433 return simd_half(vector);
2434 else if constexpr (std::is_same<ScalarType, float1>::value)
2435 return simd_float(vector);
2436 else if constexpr (std::is_same<ScalarType, double1>::value)
2437 return simd_double(vector);
2438}
2439
2440/*! @abstract Convert a vector to another vector of the ScalarType and the same number of elements with saturation.
2441 * @discussion When the input value is too large to be represented in the return type, the input value
2442 * will be saturated to the maximum value of the return type. */
2443template<typename ScalarType, typename typeN>
2444static constexpr Vector_t<ScalarType, traits<typeN>::count> convert_sat(typeN vector)
2445{
2446 static_assert(traits<typeN>::count != 1);
2447 if constexpr (std::is_same<ScalarType, char1>::value)
2448 return simd_char_sat(vector);
2449 else if constexpr (std::is_same<ScalarType, uchar1>::value)
2450 return simd_uchar_sat(vector);
2451 else if constexpr (std::is_same<ScalarType, short1>::value)
2452 return simd_short_sat(vector);
2453 else if constexpr (std::is_same<ScalarType, ushort1>::value)
2454 return simd_ushort_sat(vector);
2455 else if constexpr (std::is_same<ScalarType, int1>::value)
2456 return simd_int_sat(vector);
2457 else if constexpr (std::is_same<ScalarType, uint1>::value)
2458 return simd_uint_sat(vector);
2459 else if constexpr (std::is_same<ScalarType, long1>::value)
2460 return simd_long_sat(vector);
2461 else if constexpr (std::is_same<ScalarType, ulong1>::value)
2462 return simd_ulong_sat(vector);
2463 else
2464 return convert<ScalarType, typeN>(vector);
2465}
2466#endif /* __has_feature(cxx_constexpr) */
2467
2468} /* namespace simd */
2469#endif // __cplusplus
2470#endif // SIMD_COMPILER_HAS_REQUIRED_FEATURES
2471#endif // __SIMD_CONVERSION_HEADER__
2472