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)))