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