14967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar/*===------------- avx512pfintrin.h - PF intrinsics ------------------=== 24967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar * 34967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar * 44967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar * Permission is hereby granted, free of charge, to any person obtaining a copy 54967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar * of this software and associated documentation files (the "Software"), to deal 64967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar * in the Software without restriction, including without limitation the rights 74967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 84967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar * copies of the Software, and to permit persons to whom the Software is 94967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar * furnished to do so, subject to the following conditions: 104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar * 114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar * The above copyright notice and this permission notice shall be included in 124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar * all copies or substantial portions of the Software. 134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar * 144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar * THE SOFTWARE. 214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar * 224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar *===-----------------------------------------------------------------------=== 234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar */ 244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#ifndef __IMMINTRIN_H 254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#error "Never use <avx512pfintrin.h> directly; include <immintrin.h> instead." 264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#endif 274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#ifndef __AVX512PFINTRIN_H 294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define __AVX512PFINTRIN_H 304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar/* Define the default attributes for the functions in this file. */ 324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512pf"))) 334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define _mm512_mask_prefetch_i32gather_pd(index, mask, addr, scale, hint) __extension__ ({\ 354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __builtin_ia32_gatherpfdpd((__mmask8)(mask), (__v8si)(__m256i)(index), \ 364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (long long const *)(addr), (int)(scale), \ 374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (int)(hint)); }) 384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define _mm512_prefetch_i32gather_pd(index, addr, scale, hint) __extension__ ({\ 404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __builtin_ia32_gatherpfdpd((__mmask8) -1, (__v8si)(__m256i)(index), \ 414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (long long const *)(addr), (int)(scale), \ 424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (int)(hint)); }) 434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define _mm512_mask_prefetch_i32gather_ps(index, mask, addr, scale, hint) ({\ 454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __builtin_ia32_gatherpfdps((__mmask16)(mask), \ 464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (__v16si)(__m512i)(index), (int const *)(addr), \ 474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (int)(scale), (int)(hint)); }) 484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define _mm512_prefetch_i32gather_ps(index, addr, scale, hint) ({\ 504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __builtin_ia32_gatherpfdps((__mmask16) -1, \ 514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (__v16si)(__m512i)(index), (int const *)(addr), \ 524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (int)(scale), (int)(hint)); }) 534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define _mm512_mask_prefetch_i64gather_pd(index, mask, addr, scale, hint) __extension__ ({\ 554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __builtin_ia32_gatherpfqpd((__mmask8)(mask), (__v8di)(__m512i)(index), \ 564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (long long const *)(addr), (int)(scale), \ 574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (int)(hint)); }) 584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define _mm512_prefetch_i64gather_pd(index, addr, scale, hint) __extension__ ({\ 604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __builtin_ia32_gatherpfqpd((__mmask8) -1, (__v8di)(__m512i)(index), \ 614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (long long const *)(addr), (int)(scale), \ 624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (int)(hint)); }) 634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define _mm512_mask_prefetch_i64gather_ps(index, mask, addr, scale, hint) ({\ 654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __builtin_ia32_gatherpfqps((__mmask8)(mask), (__v8di)(__m512i)(index), \ 664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (int const *)(addr), (int)(scale), (int)(hint)); }) 674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define _mm512_prefetch_i64gather_ps(index, addr, scale, hint) ({\ 694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __builtin_ia32_gatherpfqps((__mmask8) -1, (__v8di)(__m512i)(index), \ 704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (int const *)(addr), (int)(scale), (int)(hint)); }) 714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define _mm512_prefetch_i32scatter_pd(addr, index, scale, hint) __extension__ ({\ 734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __builtin_ia32_scatterpfdpd((__mmask8)-1, (__v8si)(__m256i)(index), \ 744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (long long *)(addr), (int)(scale), \ 754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (int)(hint)); }) 764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define _mm512_mask_prefetch_i32scatter_pd(addr, mask, index, scale, hint) __extension__ ({\ 784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __builtin_ia32_scatterpfdpd((__mmask8)(mask), (__v8si)(__m256i)(index), \ 794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (long long *)(addr), (int)(scale), \ 804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (int)(hint)); }) 814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define _mm512_prefetch_i32scatter_ps(addr, index, scale, hint) __extension__ ({\ 834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __builtin_ia32_scatterpfdps((__mmask16)-1, (__v16si)(__m512i)(index), \ 844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (int *)(addr), (int)(scale), (int)(hint)); }) 854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define _mm512_mask_prefetch_i32scatter_ps(addr, mask, index, scale, hint) __extension__ ({\ 874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __builtin_ia32_scatterpfdps((__mmask16)(mask), \ 884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (__v16si)(__m512i)(index), (int *)(addr), \ 894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (int)(scale), (int)(hint)); }) 904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define _mm512_prefetch_i64scatter_pd(addr, index, scale, hint) __extension__ ({\ 924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __builtin_ia32_scatterpfqpd((__mmask8)-1, (__v8di)(__m512i)(index), \ 934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (long long *)(addr), (int)(scale), \ 944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (int)(hint)); }) 954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define _mm512_mask_prefetch_i64scatter_pd(addr, mask, index, scale, hint) __extension__ ({\ 974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __builtin_ia32_scatterpfqpd((__mmask8)(mask), (__v8di)(__m512i)(index), \ 984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (long long *)(addr), (int)(scale), \ 994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (int)(hint)); }) 1004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define _mm512_prefetch_i64scatter_ps(addr, index, scale, hint) __extension__ ({\ 1024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __builtin_ia32_scatterpfqps((__mmask8)-1, (__v8di)(__m512i)(index), \ 1034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (int *)(addr), (int)(scale), (int)(hint)); }) 1044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define _mm512_mask_prefetch_i64scatter_ps(addr, mask, index, scale, hint) __extension__ ({\ 1064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __builtin_ia32_scatterpfqps((__mmask8)(mask), (__v8di)(__m512i)(index), \ 1074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar (int *)(addr), (int)(scale), (int)(hint)); }) 1084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#undef __DEFAULT_FN_ATTRS 1104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#endif 112