/* Copyright (C) 2013-2018 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see <http://www.gnu.org/licenses/>. */ #ifndef _IMMINTRIN_H_INCLUDED #error "Never use <avx512erintrin.h> directly; include <immintrin.h> instead." #endif #ifndef _AVX512ERINTRIN_H_INCLUDED #define _AVX512ERINTRIN_H_INCLUDED #ifndef __AVX512ER__ #pragma GCC push_options #pragma GCC target("avx512er") #define __DISABLE_AVX512ER__ #endif /* __AVX512ER__ */ /* Internal data types for implementing the intrinsics. */ typedef double __v8df __attribute__ ((__vector_size__ (64))); typedef float __v16sf __attribute__ ((__vector_size__ (64))); /* The Intel API is flexible enough that we must allow aliasing with other vector types, and their scalar components. */ typedef float __m512 __attribute__ ((__vector_size__ (64), __may_alias__)); typedef double __m512d __attribute__ ((__vector_size__ (64), __may_alias__)); typedef unsigned char __mmask8; typedef unsigned short __mmask16; #ifdef __OPTIMIZE__ extern __inline __m512d __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_exp2a23_round_pd (__m512d __A, int __R) { __m512d __W; return (__m512d) __builtin_ia32_exp2pd_mask ((__v8df) __A, (__v8df) __W, (__mmask8) -1, __R); } extern __inline __m512d __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_mask_exp2a23_round_pd (__m512d __W, __mmask8 __U, __m512d __A, int __R) { return (__m512d) __builtin_ia32_exp2pd_mask ((__v8df) __A, (__v8df) __W, (__mmask8) __U, __R); } extern __inline __m512d __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_maskz_exp2a23_round_pd (__mmask8 __U, __m512d __A, int __R) { return (__m512d) __builtin_ia32_exp2pd_mask ((__v8df) __A, (__v8df) _mm512_setzero_pd (), (__mmask8) __U, __R); } extern __inline __m512 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_exp2a23_round_ps (__m512 __A, int __R) { __m512 __W; return (__m512) __builtin_ia32_exp2ps_mask ((__v16sf) __A, (__v16sf) __W, (__mmask16) -1, __R); } extern __inline __m512 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_mask_exp2a23_round_ps (__m512 __W, __mmask16 __U, __m512 __A, int __R) { return (__m512) __builtin_ia32_exp2ps_mask ((__v16sf) __A, (__v16sf) __W, (__mmask16) __U, __R); } extern __inline __m512 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_maskz_exp2a23_round_ps (__mmask16 __U, __m512 __A, int __R) { return (__m512) __builtin_ia32_exp2ps_mask ((__v16sf) __A, (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R); } extern __inline __m512d __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_rcp28_round_pd (__m512d __A, int __R) { __m512d __W; return (__m512d) __builtin_ia32_rcp28pd_mask ((__v8df) __A, (__v8df) __W, (__mmask8) -1, __R); } extern __inline __m512d __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_mask_rcp28_round_pd (__m512d __W, __mmask8 __U, __m512d __A, int __R) { return (__m512d) __builtin_ia32_rcp28pd_mask ((__v8df) __A, (__v8df) __W, (__mmask8) __U, __R); } extern __inline __m512d __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_maskz_rcp28_round_pd (__mmask8 __U, __m512d __A, int __R) { return (__m512d) __builtin_ia32_rcp28pd_mask ((__v8df) __A, (__v8df) _mm512_setzero_pd (), (__mmask8) __U, __R); } extern __inline __m512 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_rcp28_round_ps (__m512 __A, int __R) { __m512 __W; return (__m512) __builtin_ia32_rcp28ps_mask ((__v16sf) __A, (__v16sf) __W, (__mmask16) -1, __R); } extern __inline __m512 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_mask_rcp28_round_ps (__m512 __W, __mmask16 __U, __m512 __A, int __R) { return (__m512) __builtin_ia32_rcp28ps_mask ((__v16sf) __A, (__v16sf) __W, (__mmask16) __U, __R); } extern __inline __m512 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_maskz_rcp28_round_ps (__mmask16 __U, __m512 __A, int __R) { return (__m512) __builtin_ia32_rcp28ps_mask ((__v16sf) __A, (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R); } extern __inline __m128d __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm_rcp28_round_sd (__m128d __A, __m128d __B, int __R) { return (__m128d) __builtin_ia32_rcp28sd_round ((__v2df) __B, (__v2df) __A, __R); } extern __inline __m128 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm_rcp28_round_ss (__m128 __A, __m128 __B, int __R) { return (__m128) __builtin_ia32_rcp28ss_round ((__v4sf) __B, (__v4sf) __A, __R); } extern __inline __m512d __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_rsqrt28_round_pd (__m512d __A, int __R) { __m512d __W; return (__m512d) __builtin_ia32_rsqrt28pd_mask ((__v8df) __A, (__v8df) __W, (__mmask8) -1, __R); } extern __inline __m512d __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_mask_rsqrt28_round_pd (__m512d __W, __mmask8 __U, __m512d __A, int __R) { return (__m512d) __builtin_ia32_rsqrt28pd_mask ((__v8df) __A, (__v8df) __W, (__mmask8) __U, __R); } extern __inline __m512d __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_maskz_rsqrt28_round_pd (__mmask8 __U, __m512d __A, int __R) { return (__m512d) __builtin_ia32_rsqrt28pd_mask ((__v8df) __A, (__v8df) _mm512_setzero_pd (), (__mmask8) __U, __R); } extern __inline __m512 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_rsqrt28_round_ps (__m512 __A, int __R) { __m512 __W; return (__m512) __builtin_ia32_rsqrt28ps_mask ((__v16sf) __A, (__v16sf) __W, (__mmask16) -1, __R); } extern __inline __m512 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_mask_rsqrt28_round_ps (__m512 __W, __mmask16 __U, __m512 __A, int __R) { return (__m512) __builtin_ia32_rsqrt28ps_mask ((__v16sf) __A, (__v16sf) __W, (__mmask16) __U, __R); } extern __inline __m512 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_maskz_rsqrt28_round_ps (__mmask16 __U, __m512 __A, int __R) { return (__m512) __builtin_ia32_rsqrt28ps_mask ((__v16sf) __A, (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R); } extern __inline __m128d __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm_rsqrt28_round_sd (__m128d __A, __m128d __B, int __R) { return (__m128d) __builtin_ia32_rsqrt28sd_round ((__v2df) __B, (__v2df) __A, __R); } extern __inline __m128 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm_rsqrt28_round_ss (__m128 __A, __m128 __B, int __R) { return (__m128) __builtin_ia32_rsqrt28ss_round ((__v4sf) __B, (__v4sf) __A, __R); } #else #define _mm512_exp2a23_round_pd(A, C) \ __builtin_ia32_exp2pd_mask(A, (__v8df)_mm512_setzero_pd(), -1, C) #define _mm512_mask_exp2a23_round_pd(W, U, A, C) \ __builtin_ia32_exp2pd_mask(A, W, U, C) #define _mm512_maskz_exp2a23_round_pd(U, A, C) \ __builtin_ia32_exp2pd_mask(A, (__v8df)_mm512_setzero_pd(), U, C) #define _mm512_exp2a23_round_ps(A, C) \ __builtin_ia32_exp2ps_mask(A, (__v16sf)_mm512_setzero_ps(), -1, C) #define _mm512_mask_exp2a23_round_ps(W, U, A, C) \ __builtin_ia32_exp2ps_mask(A, W, U, C) #define _mm512_maskz_exp2a23_round_ps(U, A, C) \ __builtin_ia32_exp2ps_mask(A, (__v16sf)_mm512_setzero_ps(), U, C) #define _mm512_rcp28_round_pd(A, C) \ __builtin_ia32_rcp28pd_mask(A, (__v8df)_mm512_setzero_pd(), -1, C) #define _mm512_mask_rcp28_round_pd(W, U, A, C) \ __builtin_ia32_rcp28pd_mask(A, W, U, C) #define _mm512_maskz_rcp28_round_pd(U, A, C) \ __builtin_ia32_rcp28pd_mask(A, (__v8df)_mm512_setzero_pd(), U, C) #define _mm512_rcp28_round_ps(A, C) \ __builtin_ia32_rcp28ps_mask(A, (__v16sf)_mm512_setzero_ps(), -1, C) #define _mm512_mask_rcp28_round_ps(W, U, A, C) \ __builtin_ia32_rcp28ps_mask(A, W, U, C) #define _mm512_maskz_rcp28_round_ps(U, A, C) \ __builtin_ia32_rcp28ps_mask(A, (__v16sf)_mm512_setzero_ps(), U, C) #define _mm512_rsqrt28_round_pd(A, C) \ __builtin_ia32_rsqrt28pd_mask(A, (__v8df)_mm512_setzero_pd(), -1, C) #define _mm512_mask_rsqrt28_round_pd(W, U, A, C) \ __builtin_ia32_rsqrt28pd_mask(A, W, U, C) #define _mm512_maskz_rsqrt28_round_pd(U, A, C) \ __builtin_ia32_rsqrt28pd_mask(A, (__v8df)_mm512_setzero_pd(), U, C) #define _mm512_rsqrt28_round_ps(A, C) \ __builtin_ia32_rsqrt28ps_mask(A, (__v16sf)_mm512_setzero_ps(), -1, C) #define _mm512_mask_rsqrt28_round_ps(W, U, A, C) \ __builtin_ia32_rsqrt28ps_mask(A, W, U, C) #define _mm512_maskz_rsqrt28_round_ps(U, A, C) \ __builtin_ia32_rsqrt28ps_mask(A, (__v16sf)_mm512_setzero_ps(), U, C) #define _mm_rcp28_round_sd(A, B, R) \ __builtin_ia32_rcp28sd_round(A, B, R) #define _mm_rcp28_round_ss(A, B, R) \ __builtin_ia32_rcp28ss_round(A, B, R) #define _mm_rsqrt28_round_sd(A, B, R) \ __builtin_ia32_rsqrt28sd_round(A, B, R) #define _mm_rsqrt28_round_ss(A, B, R) \ __builtin_ia32_rsqrt28ss_round(A, B, R) #endif #define _mm512_exp2a23_pd(A) \ _mm512_exp2a23_round_pd(A, _MM_FROUND_CUR_DIRECTION) #define _mm512_mask_exp2a23_pd(W, U, A) \ _mm512_mask_exp2a23_round_pd(W, U, A, _MM_FROUND_CUR_DIRECTION) #define _mm512_maskz_exp2a23_pd(U, A) \ _mm512_maskz_exp2a23_round_pd(U, A, _MM_FROUND_CUR_DIRECTION) #define _mm512_exp2a23_ps(A) \ _mm512_exp2a23_round_ps(A, _MM_FROUND_CUR_DIRECTION) #define _mm512_mask_exp2a23_ps(W, U, A) \ _mm512_mask_exp2a23_round_ps(W, U, A, _MM_FROUND_CUR_DIRECTION) #define _mm512_maskz_exp2a23_ps(U, A) \ _mm512_maskz_exp2a23_round_ps(U, A, _MM_FROUND_CUR_DIRECTION) #define _mm512_rcp28_pd(A) \ _mm512_rcp28_round_pd(A, _MM_FROUND_CUR_DIRECTION) #define _mm512_mask_rcp28_pd(W, U, A) \ _mm512_mask_rcp28_round_pd(W, U, A, _MM_FROUND_CUR_DIRECTION) #define _mm512_maskz_rcp28_pd(U, A) \ _mm512_maskz_rcp28_round_pd(U, A, _MM_FROUND_CUR_DIRECTION) #define _mm512_rcp28_ps(A) \ _mm512_rcp28_round_ps(A, _MM_FROUND_CUR_DIRECTION) #define _mm512_mask_rcp28_ps(W, U, A) \ _mm512_mask_rcp28_round_ps(W, U, A, _MM_FROUND_CUR_DIRECTION) #define _mm512_maskz_rcp28_ps(U, A) \ _mm512_maskz_rcp28_round_ps(U, A, _MM_FROUND_CUR_DIRECTION) #define _mm512_rsqrt28_pd(A) \ _mm512_rsqrt28_round_pd(A, _MM_FROUND_CUR_DIRECTION) #define _mm512_mask_rsqrt28_pd(W, U, A) \ _mm512_mask_rsqrt28_round_pd(W, U, A, _MM_FROUND_CUR_DIRECTION) #define _mm512_maskz_rsqrt28_pd(U, A) \ _mm512_maskz_rsqrt28_round_pd(U, A, _MM_FROUND_CUR_DIRECTION) #define _mm512_rsqrt28_ps(A) \ _mm512_rsqrt28_round_ps(A, _MM_FROUND_CUR_DIRECTION) #define _mm512_mask_rsqrt28_ps(W, U, A) \ _mm512_mask_rsqrt28_round_ps(W, U, A, _MM_FROUND_CUR_DIRECTION) #define _mm512_maskz_rsqrt28_ps(U, A) \ _mm512_maskz_rsqrt28_round_ps(U, A, _MM_FROUND_CUR_DIRECTION) #define _mm_rcp28_sd(A, B) \ __builtin_ia32_rcp28sd_round(B, A, _MM_FROUND_CUR_DIRECTION) #define _mm_rcp28_ss(A, B) \ __builtin_ia32_rcp28ss_round(B, A, _MM_FROUND_CUR_DIRECTION) #define _mm_rsqrt28_sd(A, B) \ __builtin_ia32_rsqrt28sd_round(B, A, _MM_FROUND_CUR_DIRECTION) #define _mm_rsqrt28_ss(A, B) \ __builtin_ia32_rsqrt28ss_round(B, A, _MM_FROUND_CUR_DIRECTION) #ifdef __DISABLE_AVX512ER__ #undef __DISABLE_AVX512ER__ #pragma GCC pop_options #endif /* __DISABLE_AVX512ER__ */ #endif /* _AVX512ERINTRIN_H_INCLUDED */
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
sanitizer | Folder | 0755 |
|
|
adxintrin.h | File | 2.8 KB | 0644 |
|
ammintrin.h | File | 3.14 KB | 0644 |
|
avx2intrin.h | File | 57.26 KB | 0644 |
|
avx5124fmapsintrin.h | File | 6.38 KB | 0644 |
|
avx5124vnniwintrin.h | File | 4.16 KB | 0644 |
|
avx512bitalgintrin.h | File | 8.64 KB | 0644 |
|
avx512bwintrin.h | File | 99.13 KB | 0644 |
|
avx512cdintrin.h | File | 5.69 KB | 0644 |
|
avx512dqintrin.h | File | 83.37 KB | 0644 |
|
avx512erintrin.h | File | 12.66 KB | 0644 |
|
avx512fintrin.h | File | 475.38 KB | 0644 |
|
avx512ifmaintrin.h | File | 3.35 KB | 0644 |
|
avx512ifmavlintrin.h | File | 5.26 KB | 0644 |
|
avx512pfintrin.h | File | 10.05 KB | 0644 |
|
avx512vbmi2intrin.h | File | 19.35 KB | 0644 |
|
avx512vbmi2vlintrin.h | File | 36.25 KB | 0644 |
|
avx512vbmiintrin.h | File | 4.81 KB | 0644 |
|
avx512vbmivlintrin.h | File | 8.17 KB | 0644 |
|
avx512vlbwintrin.h | File | 140.48 KB | 0644 |
|
avx512vldqintrin.h | File | 59.88 KB | 0644 |
|
avx512vlintrin.h | File | 414.04 KB | 0644 |
|
avx512vnniintrin.h | File | 4.85 KB | 0644 |
|
avx512vnnivlintrin.h | File | 8.05 KB | 0644 |
|
avx512vpopcntdqintrin.h | File | 3.04 KB | 0644 |
|
avx512vpopcntdqvlintrin.h | File | 4.56 KB | 0644 |
|
avxintrin.h | File | 49.43 KB | 0644 |
|
bmi2intrin.h | File | 3.31 KB | 0644 |
|
bmiintrin.h | File | 5.5 KB | 0644 |
|
bmmintrin.h | File | 1.13 KB | 0644 |
|
cet.h | File | 2.6 KB | 0644 |
|
cetintrin.h | File | 3.25 KB | 0644 |
|
clflushoptintrin.h | File | 1.62 KB | 0644 |
|
clwbintrin.h | File | 1.55 KB | 0644 |
|
clzerointrin.h | File | 1.46 KB | 0644 |
|
cpuid.h | File | 8.72 KB | 0644 |
|
cross-stdarg.h | File | 2.5 KB | 0644 |
|
emmintrin.h | File | 49.84 KB | 0644 |
|
f16cintrin.h | File | 3.33 KB | 0644 |
|
float.h | File | 16.52 KB | 0644 |
|
fma4intrin.h | File | 8.92 KB | 0644 |
|
fmaintrin.h | File | 10.29 KB | 0644 |
|
fxsrintrin.h | File | 2.06 KB | 0644 |
|
gcov.h | File | 1.36 KB | 0644 |
|
gfniintrin.h | File | 14.7 KB | 0644 |
|
ia32intrin.h | File | 7.69 KB | 0644 |
|
immintrin.h | File | 5.33 KB | 0644 |
|
iso646.h | File | 1.24 KB | 0644 |
|
limits.h | File | 5.95 KB | 0644 |
|
lwpintrin.h | File | 3.32 KB | 0644 |
|
lzcntintrin.h | File | 2.34 KB | 0644 |
|
mm3dnow.h | File | 6.91 KB | 0644 |
|
mm_malloc.h | File | 1.74 KB | 0644 |
|
mmintrin.h | File | 30.62 KB | 0644 |
|
movdirintrin.h | File | 2.29 KB | 0644 |
|
mwaitxintrin.h | File | 1.71 KB | 0644 |
|
nmmintrin.h | File | 1.26 KB | 0644 |
|
omp.h | File | 5.85 KB | 0644 |
|
openacc.h | File | 4.53 KB | 0644 |
|
pconfigintrin.h | File | 2.29 KB | 0644 |
|
pkuintrin.h | File | 1.7 KB | 0644 |
|
pmmintrin.h | File | 4.27 KB | 0644 |
|
popcntintrin.h | File | 1.71 KB | 0644 |
|
prfchwintrin.h | File | 1.41 KB | 0644 |
|
rdseedintrin.h | File | 1.97 KB | 0644 |
|
rtmintrin.h | File | 2.67 KB | 0644 |
|
sgxintrin.h | File | 6.92 KB | 0644 |
|
shaintrin.h | File | 3.13 KB | 0644 |
|
smmintrin.h | File | 27.74 KB | 0644 |
|
stdalign.h | File | 1.18 KB | 0644 |
|
stdarg.h | File | 3.98 KB | 0644 |
|
stdatomic.h | File | 9.1 KB | 0644 |
|
stdbool.h | File | 1.49 KB | 0644 |
|
stddef.h | File | 13.81 KB | 0644 |
|
stdfix.h | File | 5.86 KB | 0644 |
|
stdint-gcc.h | File | 9.24 KB | 0644 |
|
stdint.h | File | 328 B | 0644 |
|
stdnoreturn.h | File | 1.11 KB | 0644 |
|
syslimits.h | File | 330 B | 0644 |
|
tbmintrin.h | File | 5.12 KB | 0644 |
|
tmmintrin.h | File | 8.15 KB | 0644 |
|
unwind.h | File | 10.65 KB | 0644 |
|
vaesintrin.h | File | 4.55 KB | 0644 |
|
varargs.h | File | 139 B | 0644 |
|
vpclmulqdqintrin.h | File | 3.4 KB | 0644 |
|
wbnoinvdintrin.h | File | 1.58 KB | 0644 |
|
wmmintrin.h | File | 4.55 KB | 0644 |
|
x86intrin.h | File | 2.06 KB | 0644 |
|
xmmintrin.h | File | 41.22 KB | 0644 |
|
xopintrin.h | File | 27.9 KB | 0644 |
|
xsavecintrin.h | File | 1.78 KB | 0644 |
|
xsaveintrin.h | File | 2.46 KB | 0644 |
|
xsaveoptintrin.h | File | 1.86 KB | 0644 |
|
xsavesintrin.h | File | 2.11 KB | 0644 |
|
xtestintrin.h | File | 1.65 KB | 0644 |
|