Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/i386/avx512dqintrin.h @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children | 1830386684a0 |
comparison
equal
deleted
inserted
replaced
111:04ced10e8804 | 131:84e7813d76e9 |
---|---|
1 /* Copyright (C) 2014-2017 Free Software Foundation, Inc. | 1 /* Copyright (C) 2014-2018 Free Software Foundation, Inc. |
2 | 2 |
3 This file is part of GCC. | 3 This file is part of GCC. |
4 | 4 |
5 GCC is free software; you can redistribute it and/or modify | 5 GCC is free software; you can redistribute it and/or modify |
6 it under the terms of the GNU General Public License as published by | 6 it under the terms of the GNU General Public License as published by |
1221 | 1221 |
1222 extern __inline __m128d | 1222 extern __inline __m128d |
1223 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) | 1223 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
1224 _mm_range_sd (__m128d __A, __m128d __B, int __C) | 1224 _mm_range_sd (__m128d __A, __m128d __B, int __C) |
1225 { | 1225 { |
1226 return (__m128d) __builtin_ia32_rangesd128_round ((__v2df) __A, | 1226 return (__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df) __A, |
1227 (__v2df) __B, __C, | 1227 (__v2df) __B, __C, |
1228 (__v2df) | |
1229 _mm_setzero_pd (), | |
1230 (__mmask8) -1, | |
1228 _MM_FROUND_CUR_DIRECTION); | 1231 _MM_FROUND_CUR_DIRECTION); |
1229 } | 1232 } |
1230 | 1233 |
1234 extern __inline __m128d | |
1235 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) | |
1236 _mm_mask_range_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B, int __C) | |
1237 { | |
1238 return (__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df) __A, | |
1239 (__v2df) __B, __C, | |
1240 (__v2df) __W, | |
1241 (__mmask8) __U, | |
1242 _MM_FROUND_CUR_DIRECTION); | |
1243 } | |
1244 | |
1245 extern __inline __m128d | |
1246 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) | |
1247 _mm_maskz_range_sd (__mmask8 __U, __m128d __A, __m128d __B, int __C) | |
1248 { | |
1249 return (__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df) __A, | |
1250 (__v2df) __B, __C, | |
1251 (__v2df) | |
1252 _mm_setzero_pd (), | |
1253 (__mmask8) __U, | |
1254 _MM_FROUND_CUR_DIRECTION); | |
1255 } | |
1231 | 1256 |
1232 extern __inline __m128 | 1257 extern __inline __m128 |
1233 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) | 1258 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
1234 _mm_range_ss (__m128 __A, __m128 __B, int __C) | 1259 _mm_range_ss (__m128 __A, __m128 __B, int __C) |
1235 { | 1260 { |
1236 return (__m128) __builtin_ia32_rangess128_round ((__v4sf) __A, | 1261 return (__m128) __builtin_ia32_rangess128_mask_round ((__v4sf) __A, |
1237 (__v4sf) __B, __C, | 1262 (__v4sf) __B, __C, |
1263 (__v4sf) | |
1264 _mm_setzero_ps (), | |
1265 (__mmask8) -1, | |
1238 _MM_FROUND_CUR_DIRECTION); | 1266 _MM_FROUND_CUR_DIRECTION); |
1239 } | 1267 } |
1240 | 1268 |
1269 extern __inline __m128 | |
1270 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) | |
1271 _mm_mask_range_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B, int __C) | |
1272 { | |
1273 return (__m128) __builtin_ia32_rangess128_mask_round ((__v4sf) __A, | |
1274 (__v4sf) __B, __C, | |
1275 (__v4sf) __W, | |
1276 (__mmask8) __U, | |
1277 _MM_FROUND_CUR_DIRECTION); | |
1278 } | |
1279 | |
1280 | |
1281 extern __inline __m128 | |
1282 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) | |
1283 _mm_maskz_range_ss (__mmask8 __U, __m128 __A, __m128 __B, int __C) | |
1284 { | |
1285 return (__m128) __builtin_ia32_rangess128_mask_round ((__v4sf) __A, | |
1286 (__v4sf) __B, __C, | |
1287 (__v4sf) | |
1288 _mm_setzero_ps (), | |
1289 (__mmask8) __U, | |
1290 _MM_FROUND_CUR_DIRECTION); | |
1291 } | |
1292 | |
1241 extern __inline __m128d | 1293 extern __inline __m128d |
1242 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) | 1294 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
1243 _mm_range_round_sd (__m128d __A, __m128d __B, int __C, const int __R) | 1295 _mm_range_round_sd (__m128d __A, __m128d __B, int __C, const int __R) |
1244 { | 1296 { |
1245 return (__m128d) __builtin_ia32_rangesd128_round ((__v2df) __A, | 1297 return (__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df) __A, |
1246 (__v2df) __B, __C, | 1298 (__v2df) __B, __C, |
1247 __R); | 1299 (__v2df) |
1300 _mm_setzero_pd (), | |
1301 (__mmask8) -1, __R); | |
1302 } | |
1303 | |
1304 extern __inline __m128d | |
1305 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) | |
1306 _mm_mask_range_round_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B, | |
1307 int __C, const int __R) | |
1308 { | |
1309 return (__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df) __A, | |
1310 (__v2df) __B, __C, | |
1311 (__v2df) __W, | |
1312 (__mmask8) __U, __R); | |
1313 } | |
1314 | |
1315 extern __inline __m128d | |
1316 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) | |
1317 _mm_maskz_range_round_sd (__mmask8 __U, __m128d __A, __m128d __B, int __C, | |
1318 const int __R) | |
1319 { | |
1320 return (__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df) __A, | |
1321 (__v2df) __B, __C, | |
1322 (__v2df) | |
1323 _mm_setzero_pd (), | |
1324 (__mmask8) __U, __R); | |
1248 } | 1325 } |
1249 | 1326 |
1250 extern __inline __m128 | 1327 extern __inline __m128 |
1251 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) | 1328 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
1252 _mm_range_round_ss (__m128 __A, __m128 __B, int __C, const int __R) | 1329 _mm_range_round_ss (__m128 __A, __m128 __B, int __C, const int __R) |
1253 { | 1330 { |
1254 return (__m128) __builtin_ia32_rangess128_round ((__v4sf) __A, | 1331 return (__m128) __builtin_ia32_rangess128_mask_round ((__v4sf) __A, |
1255 (__v4sf) __B, __C, | 1332 (__v4sf) __B, __C, |
1256 __R); | 1333 (__v4sf) |
1334 _mm_setzero_ps (), | |
1335 (__mmask8) -1, __R); | |
1336 } | |
1337 | |
1338 extern __inline __m128 | |
1339 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) | |
1340 _mm_mask_range_round_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B, | |
1341 int __C, const int __R) | |
1342 { | |
1343 return (__m128) __builtin_ia32_rangess128_mask_round ((__v4sf) __A, | |
1344 (__v4sf) __B, __C, | |
1345 (__v4sf) __W, | |
1346 (__mmask8) __U, __R); | |
1347 } | |
1348 | |
1349 extern __inline __m128 | |
1350 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) | |
1351 _mm_maskz_range_round_ss (__mmask8 __U, __m128 __A, __m128 __B, int __C, | |
1352 const int __R) | |
1353 { | |
1354 return (__m128) __builtin_ia32_rangess128_mask_round ((__v4sf) __A, | |
1355 (__v4sf) __B, __C, | |
1356 (__v4sf) | |
1357 _mm_setzero_ps (), | |
1358 (__mmask8) __U, __R); | |
1257 } | 1359 } |
1258 | 1360 |
1259 extern __inline __mmask8 | 1361 extern __inline __mmask8 |
1260 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) | 1362 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
1261 _mm_fpclass_ss_mask (__m128 __A, const int __imm) | 1363 _mm_fpclass_ss_mask (__m128 __A, const int __imm) |
2146 ((__mmask8) __builtin_ia32_kshiftliqi ((__mmask8)(X), (__mmask8)(Y))) | 2248 ((__mmask8) __builtin_ia32_kshiftliqi ((__mmask8)(X), (__mmask8)(Y))) |
2147 | 2249 |
2148 #define _kshiftri_mask8(X, Y) \ | 2250 #define _kshiftri_mask8(X, Y) \ |
2149 ((__mmask8) __builtin_ia32_kshiftriqi ((__mmask8)(X), (__mmask8)(Y))) | 2251 ((__mmask8) __builtin_ia32_kshiftriqi ((__mmask8)(X), (__mmask8)(Y))) |
2150 | 2252 |
2151 #define _mm_range_sd(A, B, C) \ | 2253 #define _mm_range_sd(A, B, C) \ |
2152 ((__m128d) __builtin_ia32_rangesd128_round ((__v2df)(__m128d)(A), \ | 2254 ((__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df)(__m128d)(A), \ |
2153 (__v2df)(__m128d)(B), (int)(C), \ | 2255 (__v2df)(__m128d)(B), (int)(C), (__v2df) _mm_setzero_pd (), \ |
2154 _MM_FROUND_CUR_DIRECTION)) | 2256 (__mmask8) -1, _MM_FROUND_CUR_DIRECTION)) |
2257 | |
2258 #define _mm_mask_range_sd(W, U, A, B, C) \ | |
2259 ((__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df)(__m128d)(A), \ | |
2260 (__v2df)(__m128d)(B), (int)(C), (__v2df)(__m128d)(W), \ | |
2261 (__mmask8)(U), _MM_FROUND_CUR_DIRECTION)) | |
2262 | |
2263 #define _mm_maskz_range_sd(U, A, B, C) \ | |
2264 ((__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df)(__m128d)(A), \ | |
2265 (__v2df)(__m128d)(B), (int)(C), (__v2df) _mm_setzero_pd (), \ | |
2266 (__mmask8)(U), _MM_FROUND_CUR_DIRECTION)) | |
2155 | 2267 |
2156 #define _mm_range_ss(A, B, C) \ | 2268 #define _mm_range_ss(A, B, C) \ |
2157 ((__m128) __builtin_ia32_rangess128_round ((__v4sf)(__m128)(A), \ | 2269 ((__m128) __builtin_ia32_rangess128_mask_round ((__v4sf)(__m128)(A), \ |
2158 (__v4sf)(__m128)(B), (int)(C), \ | 2270 (__v4sf)(__m128)(B), (int)(C), (__v4sf) _mm_setzero_ps (), \ |
2159 _MM_FROUND_CUR_DIRECTION)) | 2271 (__mmask8) -1, _MM_FROUND_CUR_DIRECTION)) |
2160 | 2272 |
2161 #define _mm_range_round_sd(A, B, C, R) \ | 2273 #define _mm_mask_range_ss(W, U, A, B, C) \ |
2162 ((__m128d) __builtin_ia32_rangesd128_round ((__v2df)(__m128d)(A), \ | 2274 ((__m128) __builtin_ia32_rangess128_mask_round ((__v4sf)(__m128)(A), \ |
2163 (__v2df)(__m128d)(B), (int)(C), (R))) | 2275 (__v4sf)(__m128)(B), (int)(C), (__v4sf)(__m128)(W), \ |
2276 (__mmask8)(U), _MM_FROUND_CUR_DIRECTION)) | |
2277 | |
2278 #define _mm_maskz_range_ss(U, A, B, C) \ | |
2279 ((__m128) __builtin_ia32_rangess128_mask_round ((__v4sf)(__m128)(A), \ | |
2280 (__v4sf)(__m128)(B), (int)(C), (__v4sf) _mm_setzero_ps (), \ | |
2281 (__mmask8)(U), _MM_FROUND_CUR_DIRECTION)) | |
2282 | |
2283 #define _mm_range_round_sd(A, B, C, R) \ | |
2284 ((__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df)(__m128d)(A), \ | |
2285 (__v2df)(__m128d)(B), (int)(C), (__v2df) _mm_setzero_pd (), \ | |
2286 (__mmask8) -1, (R))) | |
2287 | |
2288 #define _mm_mask_range_round_sd(W, U, A, B, C, R) \ | |
2289 ((__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df)(__m128d)(A), \ | |
2290 (__v2df)(__m128d)(B), (int)(C), (__v2df)(__m128d)(W), \ | |
2291 (__mmask8)(U), (R))) | |
2292 | |
2293 #define _mm_maskz_range_round_sd(U, A, B, C, R) \ | |
2294 ((__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df)(__m128d)(A), \ | |
2295 (__v2df)(__m128d)(B), (int)(C), (__v2df) _mm_setzero_pd (), \ | |
2296 (__mmask8)(U), (R))) | |
2164 | 2297 |
2165 #define _mm_range_round_ss(A, B, C, R) \ | 2298 #define _mm_range_round_ss(A, B, C, R) \ |
2166 ((__m128) __builtin_ia32_rangess128_round ((__v4sf)(__m128)(A), \ | 2299 ((__m128) __builtin_ia32_rangess128_mask_round ((__v4sf)(__m128)(A), \ |
2167 (__v4sf)(__m128)(B), (int)(C), (R))) | 2300 (__v4sf)(__m128)(B), (int)(C), (__v4sf) _mm_setzero_ps (), \ |
2301 (__mmask8) -1, (R))) | |
2302 | |
2303 #define _mm_mask_range_round_ss(W, U, A, B, C, R) \ | |
2304 ((__m128) __builtin_ia32_rangess128_mask_round ((__v4sf)(__m128)(A), \ | |
2305 (__v4sf)(__m128)(B), (int)(C), (__v4sf)(__m128)(W), \ | |
2306 (__mmask8)(U), (R))) | |
2307 | |
2308 #define _mm_maskz_range_round_ss(U, A, B, C, R) \ | |
2309 ((__m128) __builtin_ia32_rangess128_mask_round ((__v4sf)(__m128)(A), \ | |
2310 (__v4sf)(__m128)(B), (int)(C), (__v4sf) _mm_setzero_ps (), \ | |
2311 (__mmask8)(U), (R))) | |
2168 | 2312 |
2169 #define _mm512_cvtt_roundpd_epi64(A, B) \ | 2313 #define _mm512_cvtt_roundpd_epi64(A, B) \ |
2170 ((__m512i)__builtin_ia32_cvttpd2qq512_mask ((A), (__v8di) \ | 2314 ((__m512i)__builtin_ia32_cvttpd2qq512_mask ((A), (__v8di) \ |
2171 _mm512_setzero_si512 (), \ | 2315 _mm512_setzero_si512 (), \ |
2172 -1, (B))) | 2316 -1, (B))) |