10#ifndef EIGEN_PACKET_MATH_AVX512_H
11#define EIGEN_PACKET_MATH_AVX512_H
17#ifndef EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD
18#define EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD 8
21#ifndef EIGEN_ARCH_DEFAULT_NUMBER_OF_REGISTERS
22#define EIGEN_ARCH_DEFAULT_NUMBER_OF_REGISTERS 32
25#ifdef EIGEN_VECTORIZE_FMA
26#ifndef EIGEN_HAS_SINGLE_INSTRUCTION_MADD
27#define EIGEN_HAS_SINGLE_INSTRUCTION_MADD
95template<>
struct packet_traits<float> : default_packet_traits
112#if EIGEN_GNUC_AT_LEAST(5, 3) || (!EIGEN_COMP_GNUC_STRICT)
132template<>
struct packet_traits<double> : default_packet_traits
141#if EIGEN_GNUC_AT_LEAST(5, 3) || (!EIGEN_COMP_GNUC_STRICT)
225 0, -1, 0, -1, 0, -1, 0, -1));
229 0, -1, 0, -1, 0, -1, 0, -1);
233 0, 0, -1, -1, 0, 0, -1, -1));
249 _mm512_set_ps(15.0f, 14.0f, 13.0f, 12.0f, 11.0f, 10.0f, 9.0f, 8.0f, 7.0f, 6.0f, 5.0f,
250 4.0f, 3.0f, 2.0f, 1.0f, 0.0f));
339#ifdef EIGEN_VECTORIZE_FMA
343 return _mm512_fmadd_ps(
a,
b,
c);
348 return _mm512_fmadd_pd(
a,
b,
c);
431#ifdef EIGEN_VECTORIZE_AVX512DQ
559#ifdef EIGEN_VECTORIZE_AVX512DQ
568#ifdef EIGEN_VECTORIZE_AVX512DQ
589#ifdef EIGEN_VECTORIZE_AVX512DQ
599#ifdef EIGEN_VECTORIZE_AVX512DQ
613#ifdef EIGEN_VECTORIZE_AVX512DQ
622#ifdef EIGEN_VECTORIZE_AVX512DQ
636#ifdef EIGEN_VECTORIZE_AVX512DQ
644#ifdef EIGEN_VECTORIZE_AVX512DQ
724#ifdef EIGEN_VECTORIZE_AVX512DQ
730 __m512d
x = _mm512_setzero_pd();
731 x = _mm512_insertf64x2(
x, _mm_loaddup_pd(&from[0]), 0);
732 x = _mm512_insertf64x2(
x, _mm_loaddup_pd(&from[1]), 1);
733 x = _mm512_insertf64x2(
x, _mm_loaddup_pd(&from[2]), 2);
734 x = _mm512_insertf64x2(
x, _mm_loaddup_pd(&from[3]), 3);
754 const Packet16i scatter_mask =
_mm512_set_epi32(3,3,3,3, 2,2,2,2, 1,1,1,1, 0,0,0,0);
807 _mm512_set_epi32(15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0);
828 _mm512_set_epi32(15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0);
877 return _mm512_permutexvar_ps(
_mm512_set_epi32(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15),
a);
882 return _mm512_permutexvar_pd(
_mm512_set_epi32(0, 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7),
a);
907 #ifdef EIGEN_VECTORIZE_AVX512DQ
950#ifdef EIGEN_VECTORIZE_AVX512DQ
952#define EIGEN_EXTRACT_8f_FROM_16f(INPUT, OUTPUT) \
953 __m256 OUTPUT##_0 = _mm512_extractf32x8_ps(INPUT, 0); \
954 __m256 OUTPUT##_1 = _mm512_extractf32x8_ps(INPUT, 1)
956#define EIGEN_EXTRACT_8f_FROM_16f(INPUT, OUTPUT) \
957 __m256 OUTPUT##_0 = _mm256_insertf128_ps( \
958 _mm256_castps128_ps256(_mm512_extractf32x4_ps(INPUT, 0)), \
959 _mm512_extractf32x4_ps(INPUT, 1), 1); \
960 __m256 OUTPUT##_1 = _mm256_insertf128_ps( \
961 _mm256_castps128_ps256(_mm512_extractf32x4_ps(INPUT, 2)), \
962 _mm512_extractf32x4_ps(INPUT, 3), 1);
965#ifdef EIGEN_VECTORIZE_AVX512DQ
966#define EIGEN_INSERT_8f_INTO_16f(OUTPUT, INPUTA, INPUTB) \
967 OUTPUT = _mm512_insertf32x8(_mm512_castps256_ps512(INPUTA), INPUTB, 1);
969#define EIGEN_INSERT_8f_INTO_16f(OUTPUT, INPUTA, INPUTB) \
970 OUTPUT = _mm512_undefined_ps(); \
971 OUTPUT = _mm512_insertf32x4(OUTPUT, _mm256_extractf128_ps(INPUTA, 0), 0); \
972 OUTPUT = _mm512_insertf32x4(OUTPUT, _mm256_extractf128_ps(INPUTA, 1), 1); \
973 OUTPUT = _mm512_insertf32x4(OUTPUT, _mm256_extractf128_ps(INPUTB, 0), 2); \
974 OUTPUT = _mm512_insertf32x4(OUTPUT, _mm256_extractf128_ps(INPUTB, 1), 3);
979#ifdef EIGEN_VECTORIZE_AVX512DQ
1006#ifdef EIGEN_VECTORIZE_AVX512DQ
1104#define PACK_OUTPUT(OUTPUT, INPUT, INDEX, STRIDE) \
1105 EIGEN_INSERT_8f_INTO_16f(OUTPUT[INDEX], INPUT[INDEX], INPUT[INDEX + STRIDE]);
1218#define PACK_OUTPUT_2(OUTPUT, INPUT, INDEX, STRIDE) \
1219 EIGEN_INSERT_8f_INTO_16f(OUTPUT[INDEX], INPUT[2 * INDEX], \
1220 INPUT[2 * INDEX + STRIDE]);
1256#define PACK_OUTPUT_SQ_D(OUTPUT, INPUT, INDEX, STRIDE) \
1257 OUTPUT[INDEX] = _mm512_insertf64x4(OUTPUT[INDEX], INPUT[INDEX], 0); \
1258 OUTPUT[INDEX] = _mm512_insertf64x4(OUTPUT[INDEX], INPUT[INDEX + STRIDE], 1);
1260#define PACK_OUTPUT_D(OUTPUT, INPUT, INDEX, STRIDE) \
1261 OUTPUT[INDEX] = _mm512_insertf64x4(OUTPUT[INDEX], INPUT[(2 * INDEX)], 0); \
1263 _mm512_insertf64x4(OUTPUT[INDEX], INPUT[(2 * INDEX) + STRIDE], 1);
1359 assert(
false &&
"To be implemented");
1408 unsigned short a =
from[0].x;
1409 unsigned short b =
from[1].x;
1410 unsigned short c =
from[2].x;
1411 unsigned short d =
from[3].x;
1412 unsigned short e =
from[4].x;
1413 unsigned short f =
from[5].x;
1414 unsigned short g =
from[6].x;
1415 unsigned short h =
from[7].x;
1416 return _mm256_set_epi16(h, h,
g,
g, f, f,
e,
e, d, d,
c,
c,
b,
b,
a,
a);
1421 unsigned short a =
from[0].x;
1422 unsigned short b =
from[1].x;
1423 unsigned short c =
from[2].x;
1424 unsigned short d =
from[3].x;
1425 return _mm256_set_epi16(d, d, d, d,
c,
c,
c,
c,
b,
b,
b,
b,
a,
a,
a,
a);
1429#ifdef EIGEN_HAS_FP16_C
1452 ff,
fe,
fd,
fc,
fb,
fa,
f9,
f8,
f7,
f6,
f5,
f4,
f3,
f2,
f1,
f0);
1457#ifdef EIGEN_HAS_FP16_C
1631 __m128i m =
_mm_setr_epi8(14,15,12,13,10,11,8,9,6,7,4,5,2,3,0,1);
1650 to[stride*0] =
aux[0];
1651 to[stride*1] =
aux[1];
1652 to[stride*2] =
aux[2];
1653 to[stride*3] =
aux[3];
1654 to[stride*4] =
aux[4];
1655 to[stride*5] =
aux[5];
1656 to[stride*6] =
aux[6];
1657 to[stride*7] =
aux[7];
1658 to[stride*8] =
aux[8];
1659 to[stride*9] =
aux[9];
1660 to[stride*10] =
aux[10];
1661 to[stride*11] =
aux[11];
1662 to[stride*12] =
aux[12];
1663 to[stride*13] =
aux[13];
1664 to[stride*14] =
aux[14];
1665 to[stride*15] =
aux[15];
1680 __m256i k = kernel.packet[10];
1681 __m256i l = kernel.packet[11];
1758 kernel.packet[0] =
a_p_0;
1759 kernel.packet[1] =
a_p_1;
1760 kernel.packet[2] =
a_p_2;
1761 kernel.packet[3] =
a_p_3;
1762 kernel.packet[4] =
a_p_4;
1763 kernel.packet[5] =
a_p_5;
1764 kernel.packet[6] =
a_p_6;
1765 kernel.packet[7] =
a_p_7;
1766 kernel.packet[8] =
a_p_8;
1767 kernel.packet[9] =
a_p_9;
1768 kernel.packet[10] =
a_p_a;
1769 kernel.packet[11] =
a_p_b;
1770 kernel.packet[12] =
a_p_c;
1771 kernel.packet[13] =
a_p_d;
1772 kernel.packet[14] =
a_p_e;
1773 kernel.packet[15] =
a_p_f;
1790 for (
int i = 0;
i < 8; ++
i) {
1791 for (
int j = 0;
j < 8; ++
j) {
1794 for (
int j = 0;
j < 8; ++
j) {
1819 for (
int i = 0;
i < 4; ++
i) {
1820 for (
int j = 0;
j < 4; ++
j) {
1823 for (
int j = 0;
j < 4; ++
j) {
1826 for (
int j = 0;
j < 4; ++
j) {
1829 for (
int j = 0;
j < 4; ++
j) {
1855#if EIGEN_GNUC_AT_LEAST(5, 3) || (!EIGEN_COMP_GNUC_STRICT)
1856#ifdef EIGEN_VECTORIZE_AVX512DQ
1919 unsigned short a =
from[0].value;
1920 unsigned short b =
from[1].value;
1921 unsigned short c =
from[2].value;
1922 unsigned short d =
from[3].value;
1923 unsigned short e =
from[4].value;
1924 unsigned short f =
from[5].value;
1925 unsigned short g =
from[6].value;
1926 unsigned short h =
from[7].value;
1927 return _mm256_set_epi16(h, h,
g,
g, f, f,
e,
e, d, d,
c,
c,
b,
b,
a,
a);
1933 unsigned short a =
from[0].value;
1934 unsigned short b =
from[1].value;
1935 unsigned short c =
from[2].value;
1936 unsigned short d =
from[3].value;
1937 return _mm256_set_epi16(d, d, d, d,
c,
c,
c,
c,
b,
b,
b,
b,
a,
a,
a,
a);
1948#if defined(EIGEN_VECTORIZE_AVX512BF16) && EIGEN_GNUC_AT_LEAST(10, 1)
2142 __m256i m =
_mm256_setr_epi8(14,15,12,13,10,11,8,9,6,7,4,5,2,3,0,1,
2143 14,15,12,13,10,11,8,9,6,7,4,5,2,3,0,1);
2156 from[15*stride].value,
from[14*stride].value,
from[13*stride].value,
from[12*stride].value,
2157 from[11*stride].value,
from[10*stride].value,
from[9*stride].value,
from[8*stride].value,
2158 from[7*stride].value,
from[6*stride].value,
from[5*stride].value,
from[4*stride].value,
2159 from[3*stride].value,
from[2*stride].value,
from[1*stride].value,
from[0*stride].value);
2168 to[stride*0] =
aux[0];
2169 to[stride*1] =
aux[1];
2170 to[stride*2] =
aux[2];
2171 to[stride*3] =
aux[3];
2172 to[stride*4] =
aux[4];
2173 to[stride*5] =
aux[5];
2174 to[stride*6] =
aux[6];
2175 to[stride*7] =
aux[7];
2176 to[stride*8] =
aux[8];
2177 to[stride*9] =
aux[9];
2178 to[stride*10] =
aux[10];
2179 to[stride*11] =
aux[11];
2180 to[stride*12] =
aux[12];
2181 to[stride*13] =
aux[13];
2182 to[stride*14] =
aux[14];
2183 to[stride*15] =
aux[15];
2197 __m256i k = kernel.packet[10];
2198 __m256i l = kernel.packet[11];
#define PACK_OUTPUT_2(OUTPUT, INPUT, INDEX, STRIDE)
Definition PacketMath.h:1218
#define PACK_OUTPUT_D(OUTPUT, INPUT, INDEX, STRIDE)
Definition PacketMath.h:1260
#define PACK_OUTPUT_SQ_D(OUTPUT, INPUT, INDEX, STRIDE)
Definition PacketMath.h:1256
#define EIGEN_EXTRACT_8f_FROM_16f(INPUT, OUTPUT)
Definition PacketMath.h:956
#define PACK_OUTPUT(OUTPUT, INPUT, INDEX, STRIDE)
Definition PacketMath.h:1104
Matrix3f m
Definition AngleAxis_mimic_euler.cpp:1
ArrayXXi a
Definition Array_initializer_list_23_cxx11.cpp:1
int n
Definition BiCGSTAB_simple.cpp:1
int i
Definition BiCGSTAB_step_by_step.cpp:9
Array< double, 1, 3 > e(1./3., 0.5, 2.)
#define EIGEN_DEBUG_ALIGNED_STORE
Definition GenericPacketMath.h:35
#define EIGEN_DEBUG_ALIGNED_LOAD
Definition GenericPacketMath.h:27
#define EIGEN_DEBUG_UNALIGNED_STORE
Definition GenericPacketMath.h:39
#define EIGEN_DEBUG_UNALIGNED_LOAD
Definition GenericPacketMath.h:31
HessenbergDecomposition< MatrixXcf > hd(4)
#define EIGEN_DEVICE_FUNC
Definition Macros.h:976
#define EIGEN_FAST_MATH
Definition Macros.h:49
#define EIGEN_STRONG_INLINE
Definition Macros.h:917
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
Definition PartialRedux_count.cpp:3
Vector3d hc
Definition Tridiagonalization_householderCoefficients.cpp:5
float * p
Definition Tutorial_Map_using.cpp:9
Scalar Scalar * c
Definition benchVecAdd.cpp:17
Scalar * b
Definition benchVecAdd.cpp:17
@ N
Definition constructor.cpp:23
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy x
Definition gnuplot_common_settings.hh:12
@ Aligned64
Definition Constants.h:237
@ Aligned32
Definition Constants.h:236
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR __half_raw raw_uint16_to_half(numext::uint16_t x)
Definition Half.h:495
EIGEN_STRONG_INLINE Packet8d pandnot< Packet8d >(const Packet8d &a, const Packet8d &b)
Definition PacketMath.h:643
EIGEN_STRONG_INLINE Packet16i ptrue< Packet16i >(const Packet16i &)
Definition PacketMath.h:536
v2f64 Packet2d
Definition PacketMath.h:820
EIGEN_STRONG_INLINE void pstoreu< double >(double *to, const Packet4d &from)
Definition PacketMath.h:627
EIGEN_STRONG_INLINE Packet pminmax_propagate_numbers(const Packet &a, const Packet &b, Op op)
Definition PacketMath.h:546
EIGEN_STRONG_INLINE Packet16bf ploaddup< Packet16bf >(const bfloat16 *from)
Definition PacketMath.h:1917
EIGEN_STRONG_INLINE Packet2cf pconj(const Packet2cf &a)
Definition Complex.h:167
EIGEN_STRONG_INLINE Packet8d pload< Packet8d >(const double *from)
Definition PacketMath.h:683
EIGEN_STRONG_INLINE Packet8d ploadquad< Packet8d >(const double *from)
Definition PacketMath.h:761
EIGEN_STRONG_INLINE Packet8d psub< Packet8d >(const Packet8d &a, const Packet8d &b)
Definition PacketMath.h:280
EIGEN_STRONG_INLINE Packet8d ploadu< Packet8d >(const double *from)
Definition PacketMath.h:697
EIGEN_STRONG_INLINE Packet8d pset1frombits< Packet8d >(const numext::uint64_t from)
Definition PacketMath.h:215
EIGEN_STRONG_INLINE Packet16f pceil< Packet16f >(const Packet16f &a)
Definition PacketMath.h:529
EIGEN_STRONG_INLINE Packet8d plset< Packet8d >(const double &a)
Definition PacketMath.h:253
EIGEN_DEVICE_FUNC Packet padd(const Packet &a, const Packet &b)
Definition GenericPacketMath.h:215
EIGEN_STRONG_INLINE bfloat16 predux_max< Packet16bf >(const Packet16bf &from)
Definition PacketMath.h:2136
EIGEN_DEVICE_FUNC unpacket_traits< Packet >::type predux(const Packet &a)
Definition GenericPacketMath.h:875
EIGEN_STRONG_INLINE Packet8h float2half(const Packet8f &a)
Definition PacketMath.h:1007
EIGEN_STRONG_INLINE Packet8f Bf16ToF32(const Packet8bf &a)
Definition PacketMath.h:1260
EIGEN_STRONG_INLINE Packet8f pzero(const Packet8f &)
Definition PacketMath.h:247
EIGEN_STRONG_INLINE Packet8d pmul< Packet8d >(const Packet8d &a, const Packet8d &b)
Definition PacketMath.h:318
EIGEN_STRONG_INLINE Packet8f predux_half_dowto4< Packet16f >(const Packet16f &a)
Definition PacketMath.h:1005
EIGEN_STRONG_INLINE Packet8d pmin< PropagateNaN, Packet8d >(const Packet8d &a, const Packet8d &b)
Definition PacketMath.h:418
EIGEN_STRONG_INLINE Packet16bf pmax< Packet16bf >(const Packet16bf &a, const Packet16bf &b)
Definition PacketMath.h:2103
EIGEN_STRONG_INLINE Packet16f pfrexp< Packet16f >(const Packet16f &a, Packet16f &exponent)
Definition PacketMath.h:898
EIGEN_STRONG_INLINE Packet16f padd< Packet16f >(const Packet16f &a, const Packet16f &b)
Definition PacketMath.h:259
EIGEN_STRONG_INLINE Packet16f cat256(Packet8f a, Packet8f b)
Definition PacketMath.h:446
EIGEN_STRONG_INLINE Packet16bf pmul< Packet16bf >(const Packet16bf &a, const Packet16bf &b)
Definition PacketMath.h:2085
EIGEN_STRONG_INLINE Packet2d extract128(Packet8d x)
Definition PacketMath.h:442
EIGEN_STRONG_INLINE Packet16bf pset1< Packet16bf >(const bfloat16 &from)
Definition PacketMath.h:1883
EIGEN_STRONG_INLINE Packet8i pset1< Packet8i >(const int &from)
Definition PacketMath.h:242
EIGEN_STRONG_INLINE Packet16i por< Packet16i >(const Packet16i &a, const Packet16i &b)
Definition PacketMath.h:583
EIGEN_STRONG_INLINE Packet16h ploadquad(const Eigen::half *from)
Definition PacketMath.h:1420
EIGEN_STRONG_INLINE Packet16f ploaddup< Packet16f >(const float *from)
Definition PacketMath.h:715
EIGEN_STRONG_INLINE Packet16f pxor< Packet16f >(const Packet16f &a, const Packet16f &b)
Definition PacketMath.h:612
EIGEN_STRONG_INLINE Packet16f por< Packet16f >(const Packet16f &a, const Packet16f &b)
Definition PacketMath.h:588
EIGEN_STRONG_INLINE float predux_max< Packet16f >(const Packet16f &a)
Definition PacketMath.h:1076
EIGEN_STRONG_INLINE Packet16h pround< Packet16h >(const Packet16h &a)
Definition PacketMath.h:1531
EIGEN_STRONG_INLINE Eigen::half pfirst< Packet16h >(const Packet16h &from)
Definition PacketMath.h:1382
EIGEN_STRONG_INLINE Packet4d predux_half_dowto4< Packet8d >(const Packet8d &a)
Definition PacketMath.h:1021
EIGEN_STRONG_INLINE Packet8d print< Packet8d >(const Packet8d &a)
Definition PacketMath.h:527
EIGEN_STRONG_INLINE Packet16i pset1< Packet16i >(const int &from)
Definition PacketMath.h:205
EIGEN_STRONG_INLINE Packet16h pfloor< Packet16h >(const Packet16h &a)
Definition PacketMath.h:1543
EIGEN_STRONG_INLINE void ptranspose(PacketBlock< Packet2cf, 2 > &kernel)
Definition Complex.h:224
EIGEN_STRONG_INLINE Packet16f print< Packet16f >(const Packet16f &a)
Definition PacketMath.h:526
EIGEN_STRONG_INLINE Packet16h ploadu< Packet16h >(const Eigen::half *from)
Definition PacketMath.h:1390
__m512d Packet8d
Definition PacketMath.h:33
EIGEN_STRONG_INLINE bool predux_any(const Packet4f &x)
Definition PacketMath.h:1765
EIGEN_STRONG_INLINE Packet8i por< Packet8i >(const Packet8i &a, const Packet8i &b)
Definition PacketMath.h:501
EIGEN_STRONG_INLINE Packet16f ploadu< Packet16f >(const float *from)
Definition PacketMath.h:693
EIGEN_STRONG_INLINE Packet16bf pceil< Packet16bf >(const Packet16bf &a)
Definition PacketMath.h:2023
EIGEN_DEVICE_FUNC void pscatter< float, Packet16f >(float *to, const Packet16f &from, Index stride)
Definition PacketMath.h:823
EIGEN_DEVICE_FUNC Packet pdiv(const Packet &a, const Packet &b)
Definition GenericPacketMath.h:244
EIGEN_STRONG_INLINE void pstore< bfloat16 >(bfloat16 *to, const Packet8bf &from)
Definition PacketMath.h:511
EIGEN_STRONG_INLINE Packet16f psub< Packet16f >(const Packet16f &a, const Packet16f &b)
Definition PacketMath.h:275
EIGEN_STRONG_INLINE int pfirst< Packet16i >(const Packet16i &a)
Definition PacketMath.h:871
EIGEN_STRONG_INLINE Packet16h pceil< Packet16h >(const Packet16h &a)
Definition PacketMath.h:1539
EIGEN_STRONG_INLINE Packet16h pload< Packet16h >(const Eigen::half *from)
Definition PacketMath.h:1386
EIGEN_STRONG_INLINE Packet16i pandnot< Packet16i >(const Packet16i &a, const Packet16i &b)
Definition PacketMath.h:630
EIGEN_STRONG_INLINE Packet4i plogical_shift_left(const Packet4i &a)
Definition PacketMath.h:1191
EIGEN_STRONG_INLINE Eigen::half predux_min< Packet16h >(const Packet16h &a)
Definition PacketMath.h:1618
EIGEN_STRONG_INLINE Packet8f extract256(Packet16f x)
Definition PacketMath.h:437
EIGEN_STRONG_INLINE Packet16i pmul< Packet16i >(const Packet16i &a, const Packet16i &b)
Definition PacketMath.h:323
EIGEN_STRONG_INLINE Packet16bf pgather< bfloat16, Packet16bf >(const bfloat16 *from, Index stride)
Definition PacketMath.h:2153
EIGEN_STRONG_INLINE Packet16f plset< Packet16f >(const float &a)
Definition PacketMath.h:246
EIGEN_STRONG_INLINE Packet16i pxor< Packet16i >(const Packet16i &a, const Packet16i &b)
Definition PacketMath.h:607
EIGEN_STRONG_INLINE Packet16f pmax< PropagateNumbers, Packet16f >(const Packet16f &a, const Packet16f &b)
Definition PacketMath.h:406
EIGEN_DEVICE_FUNC Packet pmax(const Packet &a, const Packet &b)
Definition GenericPacketMath.h:524
EIGEN_STRONG_INLINE Packet16i psub< Packet16i >(const Packet16i &a, const Packet16i &b)
Definition PacketMath.h:285
EIGEN_STRONG_INLINE Packet4i pblend(const Selector< 4 > &ifPacket, const Packet4i &thenPacket, const Packet4i &elsePacket)
Definition PacketMath.h:2107
EIGEN_STRONG_INLINE Packet8bf padd< Packet8bf >(const Packet8bf &a, const Packet8bf &b)
Definition PacketMath.h:1324
EIGEN_STRONG_INLINE Packet4f pcmp_le(const Packet4f &a, const Packet4f &b)
Definition PacketMath.h:867
EIGEN_STRONG_INLINE Packet4i plogical_shift_right(const Packet4i &a)
Definition PacketMath.h:1189
EIGEN_STRONG_INLINE Packet16f pset1frombits< Packet16f >(unsigned int from)
Definition PacketMath.h:210
EIGEN_STRONG_INLINE Packet8d ptrue< Packet8d >(const Packet8d &a)
Definition PacketMath.h:546
EIGEN_STRONG_INLINE Packet pminmax_propagate_nan(const Packet &a, const Packet &b, Op op)
Definition PacketMath.h:555
EIGEN_STRONG_INLINE half predux_mul< Packet16h >(const Packet16h &from)
Definition PacketMath.h:1624
EIGEN_STRONG_INLINE Packet16bf plset< Packet16bf >(const bfloat16 &a)
Definition PacketMath.h:2109
eigen_packet_wrapper< __m256i, 2 > Packet16bf
Definition PacketMath.h:35
EIGEN_STRONG_INLINE void pstore1< Packet16f >(float *to, const float &a)
Definition PacketMath.h:843
EIGEN_STRONG_INLINE void pstore< int >(int *to, const Packet4i &from)
Definition PacketMath.h:496
EIGEN_STRONG_INLINE Packet8h por(const Packet8h &a, const Packet8h &b)
Definition PacketMath.h:1042
EIGEN_STRONG_INLINE Packet8d pfloor< Packet8d >(const Packet8d &a)
Definition PacketMath.h:533
EIGEN_STRONG_INLINE float predux_mul< Packet16f >(const Packet16f &a)
Definition PacketMath.h:1028
EIGEN_STRONG_INLINE Packet16i pand< Packet16i >(const Packet16i &a, const Packet16i &b)
Definition PacketMath.h:551
EIGEN_STRONG_INLINE double predux< Packet8d >(const Packet8d &a)
Definition PacketMath.h:996
EIGEN_STRONG_INLINE Packet8d pload1< Packet8d >(const double *from)
Definition PacketMath.h:241
EIGEN_STRONG_INLINE Packet16i padd< Packet16i >(const Packet16i &a, const Packet16i &b)
Definition PacketMath.h:269
EIGEN_STRONG_INLINE float predux< Packet8f >(const Packet8f &a)
Definition PacketMath.h:798
EIGEN_STRONG_INLINE Packet16i ploadu< Packet16i >(const int *from)
Definition PacketMath.h:701
EIGEN_STRONG_INLINE Packet2cf preverse(const Packet2cf &a)
Definition Complex.h:184
EIGEN_STRONG_INLINE Packet16f pround< Packet16f >(const Packet16f &a)
Definition PacketMath.h:651
EIGEN_STRONG_INLINE Packet8d por< Packet8d >(const Packet8d &a, const Packet8d &b)
Definition PacketMath.h:597
EIGEN_STRONG_INLINE Packet8f half2float(const Packet8h &a)
Definition PacketMath.h:988
EIGEN_STRONG_INLINE void pstore< double >(double *to, const Packet4d &from)
Definition PacketMath.h:623
EIGEN_DEVICE_FUNC unpacket_traits< Packet >::type predux_mul(const Packet &a)
Definition GenericPacketMath.h:882
EIGEN_STRONG_INLINE float predux< Packet16f >(const Packet16f &a)
Definition PacketMath.h:978
EIGEN_STRONG_INLINE Packet4f pmadd(const Packet4f &a, const Packet4f &b, const Packet4f &c)
Definition PacketMath.h:827
EIGEN_STRONG_INLINE Packet16f pset1< Packet16f >(const float &from)
Definition PacketMath.h:197
EIGEN_STRONG_INLINE Packet8d ploaddup< Packet8d >(const double *from)
Definition PacketMath.h:739
EIGEN_STRONG_INLINE Packet16f pmax< Packet16f >(const Packet16f &a, const Packet16f &b)
Definition PacketMath.h:384
EIGEN_DEVICE_FUNC Packet pmul(const Packet &a, const Packet &b)
Definition GenericPacketMath.h:237
EIGEN_STRONG_INLINE Packet8h ptrue(const Packet8h &a)
Definition PacketMath.h:978
EIGEN_DEVICE_FUNC Packet pmin(const Packet &a, const Packet &b)
Definition GenericPacketMath.h:512
EIGEN_STRONG_INLINE Packet8h pandnot(const Packet8h &a, const Packet8h &b)
Definition PacketMath.h:1053
EIGEN_STRONG_INLINE Packet2cf pnegate(const Packet2cf &a)
Definition Complex.h:166
EIGEN_STRONG_INLINE Packet8h predux_half_dowto4< Packet16h >(const Packet16h &a)
Definition PacketMath.h:1606
EIGEN_STRONG_INLINE Packet4f pcmp_lt(const Packet4f &a, const Packet4f &b)
Definition PacketMath.h:868
EIGEN_STRONG_INLINE Packet4f pselect(const Packet4f &mask, const Packet4f &a, const Packet4f &b)
Definition PacketMath.h:917
EIGEN_STRONG_INLINE void prefetch< float >(const float *addr)
Definition PacketMath.h:1117
EIGEN_STRONG_INLINE void pstoreu< bfloat16 >(bfloat16 *to, const Packet8bf &from)
Definition PacketMath.h:1104
EIGEN_STRONG_INLINE Packet4i parithmetic_shift_right(const Packet4i &a)
Definition PacketMath.h:1187
EIGEN_STRONG_INLINE Packet8d pmax< Packet8d >(const Packet8d &a, const Packet8d &b)
Definition PacketMath.h:390
EIGEN_STRONG_INLINE Packet16f pmul< Packet16f >(const Packet16f &a, const Packet16f &b)
Definition PacketMath.h:313
EIGEN_STRONG_INLINE Packet4d pfrexp_generic_get_biased_exponent(const Packet4d &a)
Definition PacketMath.h:743
EIGEN_STRONG_INLINE void pscatter< half, Packet16h >(half *to, const Packet16h &from, Index stride)
Definition PacketMath.h:1646
EIGEN_STRONG_INLINE void pstoreu< half >(Eigen::half *to, const Packet16h &from)
Definition PacketMath.h:1400
EIGEN_STRONG_INLINE Packet16bf ploadu< Packet16bf >(const bfloat16 *from)
Definition PacketMath.h:1900
EIGEN_STRONG_INLINE Packet8i pxor< Packet8i >(const Packet8i &a, const Packet8i &b)
Definition PacketMath.h:511
EIGEN_STRONG_INLINE double predux_max< Packet8d >(const Packet8d &a)
Definition PacketMath.h:1087
EIGEN_STRONG_INLINE Packet16f ptrue< Packet16f >(const Packet16f &a)
Definition PacketMath.h:541
EIGEN_STRONG_INLINE Packet8d pmax< PropagateNumbers, Packet8d >(const Packet8d &a, const Packet8d &b)
Definition PacketMath.h:410
EIGEN_STRONG_INLINE double predux_min< Packet8d >(const Packet8d &a)
Definition PacketMath.h:1067
EIGEN_STRONG_INLINE bfloat16 predux_min< Packet16bf >(const Packet16bf &from)
Definition PacketMath.h:2131
EIGEN_STRONG_INLINE Packet16f pmin< PropagateNumbers, Packet16f >(const Packet16f &a, const Packet16f &b)
Definition PacketMath.h:398
EIGEN_STRONG_INLINE Packet16f pload1< Packet16f >(const float *from)
Definition PacketMath.h:237
EIGEN_STRONG_INLINE Packet16bf psub< Packet16bf >(const Packet16bf &a, const Packet16bf &b)
Definition PacketMath.h:2079
EIGEN_STRONG_INLINE Packet16f pandnot< Packet16f >(const Packet16f &a, const Packet16f &b)
Definition PacketMath.h:635
EIGEN_STRONG_INLINE Packet8d pdiv< Packet8d >(const Packet8d &a, const Packet8d &b)
Definition PacketMath.h:334
EIGEN_STRONG_INLINE Packet16f pdiv< Packet16f >(const Packet16f &a, const Packet16f &b)
Definition PacketMath.h:329
EIGEN_STRONG_INLINE Packet16f pload< Packet16f >(const float *from)
Definition PacketMath.h:679
EIGEN_STRONG_INLINE Packet16f pldexp< Packet16f >(const Packet16f &a, const Packet16f &exponent)
Definition PacketMath.h:919
EIGEN_STRONG_INLINE Packet8d pldexp< Packet8d >(const Packet8d &a, const Packet8d &exponent)
Definition PacketMath.h:923
EIGEN_STRONG_INLINE Packet16bf pfloor< Packet16bf >(const Packet16bf &a)
Definition PacketMath.h:2027
EIGEN_STRONG_INLINE void pstore< float >(float *to, const Packet4f &from)
Definition PacketMath.h:491
__m512i Packet16i
Definition PacketMath.h:32
EIGEN_STRONG_INLINE Packet4f pabs(const Packet4f &a)
Definition PacketMath.h:1176
EIGEN_STRONG_INLINE void pstore1< Packet8d >(double *to, const double &a)
Definition PacketMath.h:848
EIGEN_STRONG_INLINE Packet8bf predux_half_dowto4< Packet16bf >(const Packet16bf &a)
Definition PacketMath.h:2114
EIGEN_STRONG_INLINE Packet16h padd< Packet16h >(const Packet16h &a, const Packet16h &b)
Definition PacketMath.h:1572
EIGEN_STRONG_INLINE Packet8f peven_mask(const Packet8f &)
Definition PacketMath.h:252
EIGEN_STRONG_INLINE Packet8i pandnot< Packet8i >(const Packet8i &a, const Packet8i &b)
Definition PacketMath.h:521
EIGEN_STRONG_INLINE bfloat16 pfirst(const Packet8bf &a)
Definition PacketMath.h:1429
EIGEN_STRONG_INLINE Packet16f pand< Packet16f >(const Packet16f &a, const Packet16f &b)
Definition PacketMath.h:557
EIGEN_STRONG_INLINE Packet16h pgather< Eigen::half, Packet16h >(const Eigen::half *from, Index stride)
Definition PacketMath.h:1637
__m256i Packet8i
Definition PacketMath.h:32
EIGEN_STRONG_INLINE __m256i Pack32To16(Packet16f rf)
Definition PacketMath.h:454
EIGEN_DEVICE_FUNC void pstore(Scalar *to, const Packet &from)
Definition GenericPacketMath.h:696
EIGEN_STRONG_INLINE Packet16h plset< Packet16h >(const half &a)
Definition PacketMath.h:1508
EIGEN_STRONG_INLINE Packet16h pset1< Packet16h >(const Eigen::half &from)
Definition PacketMath.h:1378
EIGEN_STRONG_INLINE double predux_mul< Packet8d >(const Packet8d &a)
Definition PacketMath.h:1048
EIGEN_DEVICE_FUNC void pscatter< double, Packet8d >(double *to, const Packet8d &from, Index stride)
Definition PacketMath.h:833
EIGEN_STRONG_INLINE Packet16bf print< Packet16bf >(const Packet16bf &a)
Definition PacketMath.h:2019
EIGEN_DEVICE_FUNC Packet8d pgather< double, Packet8d >(const double *from, Index stride)
Definition PacketMath.h:813
EIGEN_STRONG_INLINE Packet8d pfrexp< Packet8d >(const Packet8d &a, Packet8d &exponent)
Definition PacketMath.h:915
EIGEN_STRONG_INLINE Eigen::half predux_max< Packet16h >(const Packet16h &a)
Definition PacketMath.h:1612
EIGEN_STRONG_INLINE Packet2cf pcmp_eq(const Packet2cf &a, const Packet2cf &b)
Definition Complex.h:231
EIGEN_STRONG_INLINE bfloat16 pfirst< Packet16bf >(const Packet16bf &from)
Definition PacketMath.h:1888
EIGEN_STRONG_INLINE bfloat16 predux< Packet16bf >(const Packet16bf &p)
Definition PacketMath.h:2121
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Packet pldexp_generic(const Packet &a, const Packet &exponent)
Definition GenericPacketMathFunctions.h:85
EIGEN_STRONG_INLINE void pstoreu< int >(int *to, const Packet4i &from)
Definition PacketMath.h:1092
EIGEN_STRONG_INLINE Packet8h pand(const Packet8h &a, const Packet8h &b)
Definition PacketMath.h:1050
EIGEN_STRONG_INLINE Packet16bf pround< Packet16bf >(const Packet16bf &a)
Definition PacketMath.h:2014
EIGEN_STRONG_INLINE Packet8h pxor(const Packet8h &a, const Packet8h &b)
Definition PacketMath.h:1047
EIGEN_DEVICE_FUNC Packet16f pgather< float, Packet16f >(const float *from, Index stride)
Definition PacketMath.h:803
EIGEN_STRONG_INLINE half predux< Packet16h >(const Packet16h &from)
Definition PacketMath.h:1600
eigen_packet_wrapper< __m256i, 1 > Packet16h
Definition PacketMath.h:34
EIGEN_STRONG_INLINE Packet16h print< Packet16h >(const Packet16h &a)
Definition PacketMath.h:1535
EIGEN_STRONG_INLINE void pscatter< bfloat16, Packet16bf >(bfloat16 *to, const Packet16bf &from, Index stride)
Definition PacketMath.h:2163
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Packet pfrexp_generic(const Packet &a, Packet &exponent)
Definition GenericPacketMathFunctions.h:40
EIGEN_DEVICE_FUNC Packet psub(const Packet &a, const Packet &b)
Definition GenericPacketMath.h:222
EIGEN_STRONG_INLINE Packet16i pload< Packet16i >(const int *from)
Definition PacketMath.h:687
EIGEN_STRONG_INLINE Packet16bf pload< Packet16bf >(const bfloat16 *from)
Definition PacketMath.h:1895
EIGEN_STRONG_INLINE Packet16f pmin< PropagateNaN, Packet16f >(const Packet16f &a, const Packet16f &b)
Definition PacketMath.h:414
EIGEN_STRONG_INLINE double pfirst< Packet8d >(const Packet8d &a)
Definition PacketMath.h:867
EIGEN_STRONG_INLINE Packet8d pand< Packet8d >(const Packet8d &a, const Packet8d &b)
Definition PacketMath.h:566
EIGEN_STRONG_INLINE void pstore< half >(Eigen::half *to, const Packet16h &from)
Definition PacketMath.h:1394
EIGEN_STRONG_INLINE Packet16f pfloor< Packet16f >(const Packet16f &a)
Definition PacketMath.h:532
EIGEN_STRONG_INLINE Packet8i ptrue< Packet8i >(const Packet8i &a)
Definition PacketMath.h:459
EIGEN_STRONG_INLINE Packet8d pset1< Packet8d >(const double &from)
Definition PacketMath.h:201
EIGEN_STRONG_INLINE float predux_min< Packet16f >(const Packet16f &a)
Definition PacketMath.h:1057
EIGEN_STRONG_INLINE Packet16h pmul< Packet16h >(const Packet16h &a, const Packet16h &b)
Definition PacketMath.h:1586
EIGEN_STRONG_INLINE Packet16bf pdiv< Packet16bf >(const Packet16bf &a, const Packet16bf &b)
Definition PacketMath.h:2091
EIGEN_STRONG_INLINE Packet16f ploadquad< Packet16f >(const float *from)
Definition PacketMath.h:752
EIGEN_STRONG_INLINE Packet8d pround< Packet8d >(const Packet8d &a)
Definition PacketMath.h:658
EIGEN_STRONG_INLINE Packet16f pmin< Packet16f >(const Packet16f &a, const Packet16f &b)
Definition PacketMath.h:371
EIGEN_STRONG_INLINE Packet8h padd< Packet8h >(const Packet8h &a, const Packet8h &b)
Definition PacketMath.h:1100
EIGEN_STRONG_INLINE Packet16h pdiv< Packet16h >(const Packet16h &a, const Packet16h &b)
Definition PacketMath.h:1593
__m256 Packet8f
Definition PacketMath.h:31
EIGEN_STRONG_INLINE Packet16h pmax< Packet16h >(const Packet16h &a, const Packet16h &b)
Definition PacketMath.h:1502
EIGEN_STRONG_INLINE Packet8d pxor< Packet8d >(const Packet8d &a, const Packet8d &b)
Definition PacketMath.h:621
EIGEN_STRONG_INLINE Packet8d pceil< Packet8d >(const Packet8d &a)
Definition PacketMath.h:530
EIGEN_STRONG_INLINE Packet8bf F32ToBf16(Packet4f p4f)
Definition PacketMath.h:1252
EIGEN_STRONG_INLINE Packet8d pmin< PropagateNumbers, Packet8d >(const Packet8d &a, const Packet8d &b)
Definition PacketMath.h:402
EIGEN_STRONG_INLINE void pstoreu< float >(float *to, const Packet4f &from)
Definition PacketMath.h:1088
EIGEN_STRONG_INLINE Packet4f pcmp_lt_or_nan(const Packet4f &a, const Packet4f &b)
Definition PacketMath.h:870
EIGEN_STRONG_INLINE Packet8i pand< Packet8i >(const Packet8i &a, const Packet8i &b)
Definition PacketMath.h:491
EIGEN_STRONG_INLINE Packet16f pmax< PropagateNaN, Packet16f >(const Packet16f &a, const Packet16f &b)
Definition PacketMath.h:422
EIGEN_STRONG_INLINE Packet16bf padd< Packet16bf >(const Packet16bf &a, const Packet16bf &b)
Definition PacketMath.h:2073
EIGEN_STRONG_INLINE void prefetch< int >(const int *addr)
Definition PacketMath.h:1118
__m256d Packet4d
Definition PacketMath.h:33
EIGEN_STRONG_INLINE Packet16h ploaddup< Packet16h >(const Eigen::half *from)
Definition PacketMath.h:1407
EIGEN_STRONG_INLINE Packet16bf pmin< Packet16bf >(const Packet16bf &a, const Packet16bf &b)
Definition PacketMath.h:2097
EIGEN_STRONG_INLINE bfloat16 predux_mul< Packet16bf >(const Packet16bf &from)
Definition PacketMath.h:2126
EIGEN_STRONG_INLINE Packet8d pmin< Packet8d >(const Packet8d &a, const Packet8d &b)
Definition PacketMath.h:377
__m512 Packet16f
Definition PacketMath.h:31
EIGEN_STRONG_INLINE Packet8d pmax< PropagateNaN, Packet8d >(const Packet8d &a, const Packet8d &b)
Definition PacketMath.h:426
EIGEN_STRONG_INLINE Packet16h psub< Packet16h >(const Packet16h &a, const Packet16h &b)
Definition PacketMath.h:1579
EIGEN_STRONG_INLINE void pstore1< Packet16i >(int *to, const int &a)
Definition PacketMath.h:853
EIGEN_STRONG_INLINE float pfirst< Packet16f >(const Packet16f &a)
Definition PacketMath.h:863
EIGEN_STRONG_INLINE void prefetch< double >(const double *addr)
Definition PacketMath.h:692
EIGEN_STRONG_INLINE Packet16h pmin< Packet16h >(const Packet16h &a, const Packet16h &b)
Definition PacketMath.h:1496
EIGEN_STRONG_INLINE Packet8d padd< Packet8d >(const Packet8d &a, const Packet8d &b)
Definition PacketMath.h:264
::uint64_t uint64_t
Definition Meta.h:58
::uint16_t uint16_t
Definition Meta.h:54
::uint32_t uint32_t
Definition Meta.h:56
Namespace containing all symbols from the Eigen library.
Definition bench_norm.cpp:85
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition Meta.h:74
Definition BandTriangularSolver.h:13
unsigned short value
Definition BFloat16.h:36
Definition GenericPacketMath.h:43
@ HasRsqrt
Definition GenericPacketMath.h:67
@ HasSin
Definition GenericPacketMath.h:75
@ HasBlend
Definition GenericPacketMath.h:60
@ HasNdtri
Definition GenericPacketMath.h:90
@ HasCos
Definition GenericPacketMath.h:76
@ HasCmp
Definition GenericPacketMath.h:63
@ HasLog1p
Definition GenericPacketMath.h:71
@ HasCeil
Definition GenericPacketMath.h:101
@ HasExp
Definition GenericPacketMath.h:68
@ HasRound
Definition GenericPacketMath.h:98
@ HasRint
Definition GenericPacketMath.h:99
@ HasSqrt
Definition GenericPacketMath.h:66
@ HasErf
Definition GenericPacketMath.h:88
@ HasBessel
Definition GenericPacketMath.h:91
@ HasExpm1
Definition GenericPacketMath.h:69
@ HasLog
Definition GenericPacketMath.h:70
@ HasTanh
Definition GenericPacketMath.h:83
@ HasFloor
Definition GenericPacketMath.h:100
@ HasDiv
Definition GenericPacketMath.h:65
Definition GenericPacketMath.h:160
@ value
Definition Meta.h:133
Packet8bf half
Definition PacketMath.h:1845
Packet16bf type
Definition PacketMath.h:1844
Packet4d half
Definition PacketMath.h:135
Packet8d type
Definition PacketMath.h:134
Packet8f half
Definition PacketMath.h:98
Packet16f type
Definition PacketMath.h:97
Packet16h half
Definition PacketMath.h:56
Packet16h type
Definition PacketMath.h:54
Definition GenericPacketMath.h:107
@ HasSub
Definition GenericPacketMath.h:118
@ HasMax
Definition GenericPacketMath.h:124
@ HasNegate
Definition GenericPacketMath.h:120
@ HasMul
Definition GenericPacketMath.h:119
@ HasAdd
Definition GenericPacketMath.h:117
@ HasSetLinear
Definition GenericPacketMath.h:126
@ HasMin
Definition GenericPacketMath.h:123
@ HasConj
Definition GenericPacketMath.h:125
@ HasAbs2
Definition GenericPacketMath.h:122
@ HasAbs
Definition GenericPacketMath.h:121
@ HasHalfPacket
Definition GenericPacketMath.h:114
@ size
Definition GenericPacketMath.h:112
@ AlignedOnScalar
Definition GenericPacketMath.h:113
@ Vectorizable
Definition GenericPacketMath.h:111
Definition ForwardDeclarations.h:17
Packet8bf half
Definition PacketMath.h:1879
bfloat16 type
Definition PacketMath.h:1877
uint16_t mask_t
Definition PacketMath.h:173
float type
Definition PacketMath.h:170
Packet8f half
Definition PacketMath.h:171
Packet16i integer_packet
Definition PacketMath.h:172
Packet8h half
Definition PacketMath.h:192
Eigen::half type
Definition PacketMath.h:191
Packet8i half
Definition PacketMath.h:185
int type
Definition PacketMath.h:184
Packet4d half
Definition PacketMath.h:179
double type
Definition PacketMath.h:178
Definition GenericPacketMath.h:133
@ masked_load_available
Definition GenericPacketMath.h:141
@ size
Definition GenericPacketMath.h:138
@ masked_store_available
Definition GenericPacketMath.h:142
@ vectorizable
Definition GenericPacketMath.h:140
@ alignment
Definition GenericPacketMath.h:139
std::ofstream out("Result.txt")
std::ptrdiff_t j
Definition tut_arithmetic_redux_minmax.cpp:2