Classes | Namespaces | Macros | Functions | Variables
MatrixProduct.h File Reference
#include "MatrixProductCommon.h"
Include dependency graph for MatrixProduct.h:

Go to the source code of this file.

Classes

struct  Eigen::internal::dhs_cpack< Scalar, Index, DataMapper, Packet, PacketC, StorageOrder, Conjugate, PanelMode, UseLhs >
 
struct  Eigen::internal::dhs_cpack< double, Index, DataMapper, Packet, PacketC, StorageOrder, Conjugate, PanelMode, false >
 
struct  Eigen::internal::dhs_cpack< double, Index, DataMapper, Packet, PacketC, StorageOrder, Conjugate, PanelMode, true >
 
struct  Eigen::internal::dhs_pack< Scalar, Index, DataMapper, Packet, StorageOrder, PanelMode, UseLhs >
 
struct  Eigen::internal::dhs_pack< double, Index, DataMapper, Packet2d, StorageOrder, PanelMode, false >
 
struct  Eigen::internal::dhs_pack< double, Index, DataMapper, Packet2d, StorageOrder, PanelMode, true >
 
struct  Eigen::internal::gebp_kernel< double, double, Index, DataMapper, mr, nr, ConjugateLhs, ConjugateRhs >
 
struct  Eigen::internal::gebp_kernel< double, std::complex< double >, Index, DataMapper, mr, nr, ConjugateLhs, ConjugateRhs >
 
struct  Eigen::internal::gebp_kernel< float, float, Index, DataMapper, mr, nr, ConjugateLhs, ConjugateRhs >
 
struct  Eigen::internal::gebp_kernel< float, std::complex< float >, Index, DataMapper, mr, nr, ConjugateLhs, ConjugateRhs >
 
struct  Eigen::internal::gebp_kernel< std::complex< double >, double, Index, DataMapper, mr, nr, ConjugateLhs, ConjugateRhs >
 
struct  Eigen::internal::gebp_kernel< std::complex< double >, std::complex< double >, Index, DataMapper, mr, nr, ConjugateLhs, ConjugateRhs >
 
struct  Eigen::internal::gebp_kernel< std::complex< float >, float, Index, DataMapper, mr, nr, ConjugateLhs, ConjugateRhs >
 
struct  Eigen::internal::gebp_kernel< std::complex< float >, std::complex< float >, Index, DataMapper, mr, nr, ConjugateLhs, ConjugateRhs >
 
struct  Eigen::internal::gemm_pack_lhs< double, Index, DataMapper, Pack1, Pack2, Packet, ColMajor, Conjugate, PanelMode >
 
struct  Eigen::internal::gemm_pack_lhs< double, Index, DataMapper, Pack1, Pack2, Packet, RowMajor, Conjugate, PanelMode >
 
struct  Eigen::internal::gemm_pack_lhs< float, Index, DataMapper, Pack1, Pack2, Packet, ColMajor, Conjugate, PanelMode >
 
struct  Eigen::internal::gemm_pack_lhs< float, Index, DataMapper, Pack1, Pack2, Packet, RowMajor, Conjugate, PanelMode >
 
struct  Eigen::internal::gemm_pack_lhs< std::complex< double >, Index, DataMapper, Pack1, Pack2, Packet, ColMajor, Conjugate, PanelMode >
 
struct  Eigen::internal::gemm_pack_lhs< std::complex< double >, Index, DataMapper, Pack1, Pack2, Packet, RowMajor, Conjugate, PanelMode >
 
struct  Eigen::internal::gemm_pack_lhs< std::complex< float >, Index, DataMapper, Pack1, Pack2, Packet, ColMajor, Conjugate, PanelMode >
 
struct  Eigen::internal::gemm_pack_lhs< std::complex< float >, Index, DataMapper, Pack1, Pack2, Packet, RowMajor, Conjugate, PanelMode >
 
struct  Eigen::internal::gemm_pack_rhs< double, Index, DataMapper, nr, ColMajor, Conjugate, PanelMode >
 
struct  Eigen::internal::gemm_pack_rhs< double, Index, DataMapper, nr, RowMajor, Conjugate, PanelMode >
 
struct  Eigen::internal::gemm_pack_rhs< float, Index, DataMapper, nr, ColMajor, Conjugate, PanelMode >
 
struct  Eigen::internal::gemm_pack_rhs< float, Index, DataMapper, nr, RowMajor, Conjugate, PanelMode >
 
struct  Eigen::internal::gemm_pack_rhs< std::complex< double >, Index, DataMapper, nr, ColMajor, Conjugate, PanelMode >
 
struct  Eigen::internal::gemm_pack_rhs< std::complex< double >, Index, DataMapper, nr, RowMajor, Conjugate, PanelMode >
 
struct  Eigen::internal::gemm_pack_rhs< std::complex< float >, Index, DataMapper, nr, ColMajor, Conjugate, PanelMode >
 
struct  Eigen::internal::gemm_pack_rhs< std::complex< float >, Index, DataMapper, nr, RowMajor, Conjugate, PanelMode >
 
struct  Eigen::internal::quad_traits< Scalar >
 
struct  Eigen::internal::quad_traits< double >
 
struct  Eigen::internal::symm_pack_lhs< double, Index, Pack1, Pack2_dummy, StorageOrder >
 
struct  Eigen::internal::symm_pack_lhs< float, Index, Pack1, Pack2_dummy, StorageOrder >
 
struct  Eigen::internal::symm_pack_lhs< std::complex< double >, Index, Pack1, Pack2_dummy, StorageOrder >
 
struct  Eigen::internal::symm_pack_lhs< std::complex< float >, Index, Pack1, Pack2_dummy, StorageOrder >
 
struct  Eigen::internal::symm_pack_rhs< double, Index, nr, StorageOrder >
 
struct  Eigen::internal::symm_pack_rhs< float, Index, nr, StorageOrder >
 
struct  Eigen::internal::symm_pack_rhs< std::complex< double >, Index, nr, StorageOrder >
 
struct  Eigen::internal::symm_pack_rhs< std::complex< float >, Index, nr, StorageOrder >
 

Namespaces

 Eigen
 Namespace containing all symbols from the Eigen library.
 
 Eigen::internal
 

Macros

#define accColsC   (accCols / 2)
 
#define advanceCols   ((RhsIsReal) ? 1 : 2)
 
#define advanceRows   ((LhsIsReal) ? 1 : 2)
 
#define EIGEN_ALTIVEC_USE_CUSTOM_PACK   1
 
#define MAX_COMPLEX_UNROLL   3
 
#define MAX_COMPLEX_UNROLL   3
 
#define MAX_UNROLL   6
 
#define MAX_UNROLL   6
 
#define MICRO_COL_STORE   MICRO_UNROLL(MICRO_COL_STORE_ONE)
 
#define MICRO_COL_STORE_ONE(iter)
 
#define MICRO_COMPLEX_COL_STORE   MICRO_COMPLEX_UNROLL(MICRO_COMPLEX_COL_STORE_ONE)
 
#define MICRO_COMPLEX_COL_STORE_ONE(iter)
 
#define MICRO_COMPLEX_DST_PTR   MICRO_COMPLEX_UNROLL(MICRO_COMPLEX_DST_PTR_ONE)
 
#define MICRO_COMPLEX_DST_PTR_ONE(iter)
 
#define MICRO_COMPLEX_LOAD_ONE(iter)
 
#define MICRO_COMPLEX_ONE1
 
#define MICRO_COMPLEX_ONE4
 
#define MICRO_COMPLEX_ONE_PEEL1
 
#define MICRO_COMPLEX_ONE_PEEL4
 
#define MICRO_COMPLEX_PREFETCH   MICRO_COMPLEX_UNROLL(MICRO_COMPLEX_PREFETCH_ONE)
 
#define MICRO_COMPLEX_PREFETCH_ONE(iter)
 
#define MICRO_COMPLEX_SRC_PTR   MICRO_COMPLEX_UNROLL(MICRO_COMPLEX_SRC_PTR_ONE)
 
#define MICRO_COMPLEX_SRC_PTR_ONE(iter)
 
#define MICRO_COMPLEX_STORE   MICRO_COMPLEX_UNROLL(MICRO_COMPLEX_STORE_ONE)
 
#define MICRO_COMPLEX_STORE_ONE(iter)
 
#define MICRO_COMPLEX_TYPE_PEEL1(func, func2, peel)
 
#define MICRO_COMPLEX_TYPE_PEEL4(func, func2, peel)
 
#define MICRO_COMPLEX_UNROLL(func)   func(0) func(1) func(2) func(3) func(4)
 
#define MICRO_COMPLEX_UNROLL_TYPE_ONE(M, func, func1, func2)
 
#define MICRO_COMPLEX_UNROLL_TYPE_PEEL(M, func, func1, func2)
 
#define MICRO_COMPLEX_UNROLL_WORK(func, func2, peel)
 
#define MICRO_COMPLEX_WORK_ONE1(iter, peel)
 
#define MICRO_COMPLEX_WORK_ONE4(iter, peel)
 
#define MICRO_DST_PTR   MICRO_UNROLL(MICRO_DST_PTR_ONE)
 
#define MICRO_DST_PTR_ONE(iter)
 
#define MICRO_LOAD_ONE(iter)
 
#define MICRO_ONE1
 
#define MICRO_ONE4
 
#define MICRO_ONE_PEEL1
 
#define MICRO_ONE_PEEL4
 
#define MICRO_PREFETCH   MICRO_UNROLL(MICRO_PREFETCH_ONE)
 
#define MICRO_PREFETCH_ONE(iter)
 
#define MICRO_SRC_PTR   MICRO_UNROLL(MICRO_SRC_PTR_ONE)
 
#define MICRO_SRC_PTR_ONE(iter)
 
#define MICRO_STORE   MICRO_UNROLL(MICRO_STORE_ONE)
 
#define MICRO_STORE_ONE(iter)
 
#define MICRO_TYPE_PEEL1(func, func2, peel)
 
#define MICRO_TYPE_PEEL4(func, func2, peel)
 
#define MICRO_UNROLL(func)   func(0) func(1) func(2) func(3) func(4) func(5) func(6) func(7)
 
#define MICRO_UNROLL_TYPE_ONE(M, func, func1, func2)
 
#define MICRO_UNROLL_TYPE_PEEL(M, func, func1, func2)
 
#define MICRO_UNROLL_WORK(func, func2, peel)
 
#define MICRO_WORK_ONE(iter, peel)
 
#define PEEL   7
 
#define PEEL_COMPLEX   3
 

Functions

template<typename Packet >
EIGEN_ALWAYS_INLINE void Eigen::internal::band (PacketBlock< Packet, 4 > &acc, const Packet &pMask)
 
template<typename DataMapper , typename Packet , typename Index , const Index accCols, int N, int StorageOrder>
EIGEN_ALWAYS_INLINE void Eigen::internal::bload (PacketBlock< Packet, 4 > &acc, const DataMapper &res, Index row, Index col)
 
template<typename DataMapper , typename Packet , typename Index , const Index accCols, int N, int StorageOrder>
EIGEN_ALWAYS_INLINE void Eigen::internal::bload (PacketBlock< Packet, 8 > &acc, const DataMapper &res, Index row, Index col)
 
template<typename DataMapper , typename Packet , typename Index , const Index accCols, int N, int StorageOrder>
EIGEN_ALWAYS_INLINE void Eigen::internal::bload (PacketBlock< Packet, 2 > &acc, const DataMapper &res, Index row, Index col)
 
template<typename Packet >
EIGEN_ALWAYS_INLINE Packet Eigen::internal::bmask (const int remaining_rows)
 
template<>
EIGEN_ALWAYS_INLINE Packet2d Eigen::internal::bmask< Packet2d > (const int remaining_rows)
 
template<typename Packet >
EIGEN_ALWAYS_INLINE void Eigen::internal::bscale (PacketBlock< Packet, 4 > &acc, PacketBlock< Packet, 4 > &accZ, const Packet &pAlpha)
 
template<typename Packet >
EIGEN_ALWAYS_INLINE void Eigen::internal::bscale (PacketBlock< Packet, 1 > &acc, PacketBlock< Packet, 1 > &accZ, const Packet &pAlpha)
 
template<typename Packet >
EIGEN_ALWAYS_INLINE void Eigen::internal::bscale (PacketBlock< Packet, 4 > &acc, PacketBlock< Packet, 4 > &accZ, const Packet &pAlpha, const Packet &pMask)
 
template<typename Packet , int N>
EIGEN_ALWAYS_INLINE void Eigen::internal::bscalec (PacketBlock< Packet, N > &aReal, PacketBlock< Packet, N > &aImag, const Packet &bReal, const Packet &bImag, PacketBlock< Packet, N > &cReal, PacketBlock< Packet, N > &cImag)
 
template<typename Packet >
EIGEN_ALWAYS_INLINE void Eigen::internal::bscalec (PacketBlock< Packet, 4 > &aReal, PacketBlock< Packet, 4 > &aImag, const Packet &bReal, const Packet &bImag, PacketBlock< Packet, 4 > &cReal, PacketBlock< Packet, 4 > &cImag, const Packet &pMask)
 
template<typename Packet >
EIGEN_ALWAYS_INLINE void Eigen::internal::bscalec_common (PacketBlock< Packet, 4 > &acc, PacketBlock< Packet, 4 > &accZ, const Packet &pAlpha)
 
template<typename Packet >
EIGEN_ALWAYS_INLINE void Eigen::internal::bscalec_common (PacketBlock< Packet, 1 > &acc, PacketBlock< Packet, 1 > &accZ, const Packet &pAlpha)
 
template<typename Scalar , typename Packet >
EIGEN_ALWAYS_INLINE void Eigen::internal::bsetzero (PacketBlock< Packet, 4 > &acc)
 
template<typename Scalar , typename Packet >
EIGEN_ALWAYS_INLINE void Eigen::internal::bsetzero (PacketBlock< Packet, 1 > &acc)
 
template<typename Scalar , typename Index , typename Packet , typename RhsPacket , typename DataMapper , const Index accRows, const Index accCols>
EIGEN_STRONG_INLINE void Eigen::internal::gemm (const DataMapper &res, const Scalar *blockA, const Scalar *blockB, Index rows, Index depth, Index cols, Scalar alpha, Index strideA, Index strideB, Index offsetA, Index offsetB)
 
template<typename LhsScalar , typename RhsScalar , typename Scalarc , typename Scalar , typename Index , typename Packet , typename Packetc , typename RhsPacket , typename DataMapper , const Index accRows, const Index accCols, bool ConjugateLhs, bool ConjugateRhs, bool LhsIsReal, bool RhsIsReal>
EIGEN_STRONG_INLINE void Eigen::internal::gemm_complex (const DataMapper &res, const LhsScalar *blockAc, const RhsScalar *blockBc, Index rows, Index depth, Index cols, Scalarc alpha, Index strideA, Index strideB, Index offsetA, Index offsetB)
 
template<typename Scalar , typename Packet , typename Packetc , typename DataMapper , typename Index , const Index accRows, const Index accCols, bool ConjugateLhs, bool ConjugateRhs, bool LhsIsReal, bool RhsIsReal>
EIGEN_STRONG_INLINE void Eigen::internal::gemm_complex_extra_col (const DataMapper &res, const Scalar *lhs_base, const Scalar *rhs_base, Index depth, Index strideA, Index offsetA, Index strideB, Index row, Index col, Index remaining_rows, Index remaining_cols, const Packet &pAlphaReal, const Packet &pAlphaImag)
 
template<typename Scalar , typename Packet , typename Packetc , typename DataMapper , typename Index , const Index accRows, const Index accCols, bool ConjugateLhs, bool ConjugateRhs, bool LhsIsReal, bool RhsIsReal>
EIGEN_STRONG_INLINE void Eigen::internal::gemm_complex_extra_row (const DataMapper &res, const Scalar *lhs_base, const Scalar *rhs_base, Index depth, Index strideA, Index offsetA, Index strideB, Index row, Index col, Index rows, Index cols, Index remaining_rows, const Packet &pAlphaReal, const Packet &pAlphaImag, const Packet &pMask)
 
template<typename Scalar , typename Packet , typename Packetc , typename DataMapper , typename Index , const Index accCols, bool ConjugateLhs, bool ConjugateRhs, bool LhsIsReal, bool RhsIsReal>
EIGEN_STRONG_INLINE void Eigen::internal::gemm_complex_unrolled_col (const DataMapper &res, const Scalar *lhs_base, const Scalar *rhs_base, Index depth, Index strideA, Index offsetA, Index strideB, Index &row, Index rows, Index col, Index remaining_cols, const Packet &pAlphaReal, const Packet &pAlphaImag)
 
template<int unroll_factor, typename Scalar , typename Packet , typename Packetc , typename DataMapper , typename Index , const Index accCols, bool ConjugateLhs, bool ConjugateRhs, bool LhsIsReal, bool RhsIsReal>
EIGEN_STRONG_INLINE void Eigen::internal::gemm_complex_unrolled_col_iteration (const DataMapper &res, const Scalar *lhs_base, const Scalar *rhs_base, Index depth, Index strideA, Index offsetA, Index strideB, Index &row, Index col, Index remaining_cols, const Packet &pAlphaReal, const Packet &pAlphaImag)
 
template<int unroll_factor, typename Scalar , typename Packet , typename Packetc , typename DataMapper , typename Index , const Index accRows, const Index accCols, bool ConjugateLhs, bool ConjugateRhs, bool LhsIsReal, bool RhsIsReal>
EIGEN_STRONG_INLINE void Eigen::internal::gemm_complex_unrolled_iteration (const DataMapper &res, const Scalar *lhs_base, const Scalar *rhs_base, Index depth, Index strideA, Index offsetA, Index strideB, Index &row, Index col, const Packet &pAlphaReal, const Packet &pAlphaImag)
 
template<typename Scalar , typename Packet , typename DataMapper , typename Index , const Index accRows>
EIGEN_STRONG_INLINE void Eigen::internal::gemm_extra_col (const DataMapper &res, const Scalar *lhs_base, const Scalar *rhs_base, Index depth, Index strideA, Index offsetA, Index row, Index col, Index remaining_rows, Index remaining_cols, const Packet &pAlpha)
 
template<typename Scalar , typename Packet , typename DataMapper , typename Index , const Index accRows, const Index accCols>
EIGEN_STRONG_INLINE void Eigen::internal::gemm_extra_row (const DataMapper &res, const Scalar *lhs_base, const Scalar *rhs_base, Index depth, Index strideA, Index offsetA, Index row, Index col, Index rows, Index cols, Index remaining_rows, const Packet &pAlpha, const Packet &pMask)
 
template<typename Scalar , typename Packet , typename DataMapper , typename Index , const Index accCols>
EIGEN_STRONG_INLINE void Eigen::internal::gemm_unrolled_col (const DataMapper &res, const Scalar *lhs_base, const Scalar *rhs_base, Index depth, Index strideA, Index offsetA, Index &row, Index rows, Index col, Index remaining_cols, const Packet &pAlpha)
 
template<int unroll_factor, typename Scalar , typename Packet , typename DataMapper , typename Index , const Index accCols>
EIGEN_STRONG_INLINE void Eigen::internal::gemm_unrolled_col_iteration (const DataMapper &res, const Scalar *lhs_base, const Scalar *rhs_base, Index depth, Index strideA, Index offsetA, Index &row, Index col, Index remaining_cols, const Packet &pAlpha)
 
template<int unroll_factor, typename Scalar , typename Packet , typename DataMapper , typename Index , const Index accRows, const Index accCols>
EIGEN_STRONG_INLINE void Eigen::internal::gemm_unrolled_iteration (const DataMapper &res, const Scalar *lhs_base, const Scalar *rhs_base, Index depth, Index strideA, Index offsetA, Index &row, Index col, const Packet &pAlpha)
 
template<typename Scalar , typename Index , int StorageOrder>
EIGEN_ALWAYS_INLINE std::complex< ScalarEigen::internal::getAdjointVal (Index i, Index j, const_blas_data_mapper< std::complex< Scalar >, Index, StorageOrder > &dt)
 
template<typename Scalar , typename Packet , typename Index >
EIGEN_ALWAYS_INLINE void Eigen::internal::loadPacketRemaining (const Scalar *lhs, Packet &lhsV, Index remaining_rows)
 
template<typename Scalar , typename Packet , typename Index , bool LhsIsReal>
EIGEN_ALWAYS_INLINE void Eigen::internal::loadPacketRemaining (const Scalar *lhs_ptr, const Scalar *lhs_ptr_imag, Packet &lhsV, Packet &lhsVi, Index remaining_rows)
 
template<typename Scalar , typename Packet , typename Index , const Index accRows, bool ConjugateLhs, bool ConjugateRhs, bool LhsIsReal, bool RhsIsReal>
EIGEN_ALWAYS_INLINE void Eigen::internal::MICRO_COMPLEX_EXTRA_COL (const Scalar *&lhs_ptr_real, const Scalar *&lhs_ptr_imag, const Scalar *&rhs_ptr_real, const Scalar *&rhs_ptr_imag, PacketBlock< Packet, 1 > &accReal, PacketBlock< Packet, 1 > &accImag, Index remaining_rows, Index remaining_cols)
 
template<typename Scalar , typename Packet , typename Index , const Index accRows, bool ConjugateLhs, bool ConjugateRhs, bool LhsIsReal, bool RhsIsReal>
EIGEN_ALWAYS_INLINE void Eigen::internal::MICRO_COMPLEX_EXTRA_ROW (const Scalar *&lhs_ptr_real, const Scalar *&lhs_ptr_imag, const Scalar *&rhs_ptr_real, const Scalar *&rhs_ptr_imag, PacketBlock< Packet, 4 > &accReal, PacketBlock< Packet, 4 > &accImag, Index remaining_rows)
 
template<typename Scalar , typename Packet , typename Index >
EIGEN_ALWAYS_INLINE void Eigen::internal::MICRO_EXTRA_COL (const Scalar *&lhs_ptr, const Scalar *&rhs_ptr, PacketBlock< Packet, 1 > &accZero, Index remaining_rows, Index remaining_cols)
 
template<typename Scalar , typename Packet , typename Index , const Index accRows>
EIGEN_ALWAYS_INLINE void Eigen::internal::MICRO_EXTRA_ROW (const Scalar *&lhs_ptr, const Scalar *&rhs_ptr, PacketBlock< Packet, 4 > &accZero, Index remaining_rows)
 
template<typename Packet >
EIGEN_ALWAYS_INLINE void Eigen::internal::pbroadcast4_old (const __UNPACK_TYPE__(Packet) *a, Packet &a0, Packet &a1, Packet &a2, Packet &a3)
 
template<>
EIGEN_ALWAYS_INLINE void Eigen::internal::pbroadcast4_old< Packet2d > (const double *a, Packet2d &a0, Packet2d &a1, Packet2d &a2, Packet2d &a3)
 
template<int N, typename Scalar , typename Packet , bool NegativeAccumulate>
EIGEN_ALWAYS_INLINE void Eigen::internal::pger (PacketBlock< Packet, N > *acc, const Scalar *lhs, const Packet *rhsV)
 
template<int N, typename Scalar , typename Packet , typename Index , bool NegativeAccumulate>
EIGEN_ALWAYS_INLINE void Eigen::internal::pger (PacketBlock< Packet, N > *acc, const Scalar *lhs, const Packet *rhsV, Index remaining_rows)
 
template<typename Packet , bool NegativeAccumulate>
EIGEN_ALWAYS_INLINE void Eigen::internal::pger_common (PacketBlock< Packet, 4 > *acc, const Packet &lhsV, const Packet *rhsV)
 
template<typename Packet , bool NegativeAccumulate>
EIGEN_ALWAYS_INLINE void Eigen::internal::pger_common (PacketBlock< Packet, 1 > *acc, const Packet &lhsV, const Packet *rhsV)
 
template<int N, typename Scalar , typename Packet , bool ConjugateLhs, bool ConjugateRhs, bool LhsIsReal, bool RhsIsReal>
EIGEN_ALWAYS_INLINE void Eigen::internal::pgerc (PacketBlock< Packet, N > *accReal, PacketBlock< Packet, N > *accImag, const Scalar *lhs_ptr, const Scalar *lhs_ptr_imag, const Packet *rhsV, const Packet *rhsVi)
 
template<int N, typename Scalar , typename Packet , typename Index , bool ConjugateLhs, bool ConjugateRhs, bool LhsIsReal, bool RhsIsReal>
EIGEN_ALWAYS_INLINE void Eigen::internal::pgerc (PacketBlock< Packet, N > *accReal, PacketBlock< Packet, N > *accImag, const Scalar *lhs_ptr, const Scalar *lhs_ptr_imag, const Packet *rhsV, const Packet *rhsVi, Index remaining_rows)
 
template<int N, typename Packet , bool ConjugateLhs, bool ConjugateRhs, bool LhsIsReal, bool RhsIsReal>
EIGEN_ALWAYS_INLINE void Eigen::internal::pgerc_common (PacketBlock< Packet, N > *accReal, PacketBlock< Packet, N > *accImag, const Packet &lhsV, const Packet &lhsVi, const Packet *rhsV, const Packet *rhsVi)
 
template<typename Scalar , typename Packet >
EIGEN_ALWAYS_INLINE Packet Eigen::internal::ploadLhs (const Scalar *lhs)
 
template<typename Scalar , typename Packet , typename Index >
EIGEN_ALWAYS_INLINE void Eigen::internal::storeBlock (Scalar *to, PacketBlock< Packet, 4 > &block)
 
template<typename Scalar , typename Packet , typename Index >
EIGEN_ALWAYS_INLINE void Eigen::internal::storeBlock (Scalar *to, PacketBlock< Packet, 2 > &block)
 
template<typename Scalar , typename Index , int StorageOrder>
EIGEN_STRONG_INLINE void Eigen::internal::symm_pack_complex_lhs_helper (std::complex< Scalar > *blockA, const std::complex< Scalar > *_lhs, Index lhsStride, Index cols, Index rows)
 
template<typename Scalar , typename Index , int StorageOrder, int N>
EIGEN_STRONG_INLINE void Eigen::internal::symm_pack_complex_rhs_helper (std::complex< Scalar > *blockB, const std::complex< Scalar > *_rhs, Index rhsStride, Index rows, Index cols, Index k2)
 
template<typename Scalar , typename Index , int StorageOrder>
EIGEN_STRONG_INLINE void Eigen::internal::symm_pack_lhs_helper (Scalar *blockA, const Scalar *_lhs, Index lhsStride, Index cols, Index rows)
 
template<typename Scalar , typename Index , int StorageOrder, int N>
EIGEN_STRONG_INLINE void Eigen::internal::symm_pack_rhs_helper (Scalar *blockB, const Scalar *_rhs, Index rhsStride, Index rows, Index cols, Index k2)
 

Variables

static const Packet2l Eigen::internal::mask21 = { -1, 0 }
 
static const Packet4i Eigen::internal::mask41 = { -1, 0, 0, 0 }
 
static const Packet4i Eigen::internal::mask42 = { -1, -1, 0, 0 }
 
static const Packet4i Eigen::internal::mask43 = { -1, -1, -1, 0 }
 
static const Packet16uc Eigen::internal::p16uc_GETIMAG32
 
static const Packet16uc Eigen::internal::p16uc_GETIMAG64
 
static const Packet16uc Eigen::internal::p16uc_GETREAL32
 
static const Packet16uc Eigen::internal::p16uc_GETREAL64
 

Macro Definition Documentation

◆ accColsC

#define accColsC   (accCols / 2)

Definition at line 1786 of file MatrixProduct.h.

◆ advanceCols

#define advanceCols   ((RhsIsReal) ? 1 : 2)

Definition at line 1788 of file MatrixProduct.h.

◆ advanceRows

#define advanceRows   ((LhsIsReal) ? 1 : 2)

Definition at line 1787 of file MatrixProduct.h.

◆ EIGEN_ALTIVEC_USE_CUSTOM_PACK

#define EIGEN_ALTIVEC_USE_CUSTOM_PACK   1

Definition at line 15 of file MatrixProduct.h.

◆ MAX_COMPLEX_UNROLL [1/2]

#define MAX_COMPLEX_UNROLL   3

◆ MAX_COMPLEX_UNROLL [2/2]

#define MAX_COMPLEX_UNROLL   3

◆ MAX_UNROLL [1/2]

#define MAX_UNROLL   6

◆ MAX_UNROLL [2/2]

#define MAX_UNROLL   6

◆ MICRO_COL_STORE

#define MICRO_COL_STORE   MICRO_UNROLL(MICRO_COL_STORE_ONE)

Definition at line 1558 of file MatrixProduct.h.

◆ MICRO_COL_STORE_ONE

#define MICRO_COL_STORE_ONE (   iter)
Value:
if (unroll_factor > iter) { \
acc.packet[0] = res.template loadPacket<Packet>(row + iter*accCols, col + 0); \
bscale<Packet>(acc, accZero##iter, pAlpha); \
res.template storePacketBlock<Packet,1>(row + iter*accCols, col, acc); \
}
iterator iter(handle obj)
Definition: pytypes.h:2273
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
m row(1)
m col(1)

Definition at line 1551 of file MatrixProduct.h.

◆ MICRO_COMPLEX_COL_STORE

#define MICRO_COMPLEX_COL_STORE   MICRO_COMPLEX_UNROLL(MICRO_COMPLEX_COL_STORE_ONE)

Definition at line 2160 of file MatrixProduct.h.

◆ MICRO_COMPLEX_COL_STORE_ONE

#define MICRO_COMPLEX_COL_STORE_ONE (   iter)
Value:
if (unroll_factor > iter) { \
bload<DataMapper, Packetc, Index, accColsC, 0, ColMajor>(tRes, res, row + iter*accCols, col); \
bscalec<Packet,1>(accReal##iter, accImag##iter, pAlphaReal, pAlphaImag, taccReal, taccImag); \
bcouple<Packet, Packetc>(taccReal, taccImag, tRes, acc0, acc1); \
res.template storePacketBlock<Packetc,1>(row + iter*accCols + 0, col, acc0); \
res.template storePacketBlock<Packetc,1>(row + iter*accCols + accColsC, col, acc1); \
}
iterator iter(handle obj)
Definition: pytypes.h:2273
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
#define accColsC
m row(1)
m col(1)

Definition at line 2151 of file MatrixProduct.h.

◆ MICRO_COMPLEX_DST_PTR

#define MICRO_COMPLEX_DST_PTR   MICRO_COMPLEX_UNROLL(MICRO_COMPLEX_DST_PTR_ONE)

Definition at line 2113 of file MatrixProduct.h.

◆ MICRO_COMPLEX_DST_PTR_ONE

#define MICRO_COMPLEX_DST_PTR_ONE (   iter)
Value:
if (unroll_factor > iter) { \
bsetzero<Scalar, Packet>(accReal##iter); \
bsetzero<Scalar, Packet>(accImag##iter); \
} else { \
EIGEN_UNUSED_VARIABLE(accReal##iter); \
EIGEN_UNUSED_VARIABLE(accImag##iter); \
}
iterator iter(handle obj)
Definition: pytypes.h:2273

Definition at line 2104 of file MatrixProduct.h.

◆ MICRO_COMPLEX_LOAD_ONE

#define MICRO_COMPLEX_LOAD_ONE (   iter)
Value:
if (unroll_factor > iter) { \
lhsV##iter = ploadLhs<Scalar, Packet>(lhs_ptr_real##iter); \
lhs_ptr_real##iter += accCols; \
if(!LhsIsReal) { \
lhsVi##iter = ploadLhs<Scalar, Packet>(lhs_ptr_imag##iter); \
lhs_ptr_imag##iter += accCols; \
} else { \
EIGEN_UNUSED_VARIABLE(lhsVi##iter); \
} \
} else { \
EIGEN_UNUSED_VARIABLE(lhsV##iter); \
EIGEN_UNUSED_VARIABLE(lhsVi##iter); \
}
iterator iter(handle obj)
Definition: pytypes.h:2273

Definition at line 2014 of file MatrixProduct.h.

◆ MICRO_COMPLEX_ONE1

#define MICRO_COMPLEX_ONE1
Value:
rhs_ptr_real += remaining_cols; \
if(!RhsIsReal) rhs_ptr_imag += remaining_cols;
#define MICRO_COMPLEX_UNROLL_TYPE_ONE(M, func, func1, func2)
#define MICRO_COMPLEX_WORK_ONE1(iter, peel)
#define MICRO_COMPLEX_TYPE_PEEL1(func, func2, peel)
#define MICRO_COMPLEX_LOAD_ONE(iter)

Definition at line 2099 of file MatrixProduct.h.

◆ MICRO_COMPLEX_ONE4

#define MICRO_COMPLEX_ONE4
Value:
rhs_ptr_real += accRows; \
if(!RhsIsReal) rhs_ptr_imag += accRows;
#define MICRO_COMPLEX_TYPE_PEEL4(func, func2, peel)
#define MICRO_COMPLEX_UNROLL_TYPE_ONE(M, func, func1, func2)
#define MICRO_COMPLEX_LOAD_ONE(iter)
#define MICRO_COMPLEX_WORK_ONE4(iter, peel)

Definition at line 2089 of file MatrixProduct.h.

◆ MICRO_COMPLEX_ONE_PEEL1

#define MICRO_COMPLEX_ONE_PEEL1
Value:
rhs_ptr_real += (remaining_cols * PEEL_COMPLEX); \
if(!RhsIsReal) rhs_ptr_imag += (remaining_cols * PEEL_COMPLEX);
#define PEEL_COMPLEX
#define MICRO_COMPLEX_WORK_ONE1(iter, peel)
#define MICRO_COMPLEX_UNROLL_TYPE_PEEL(M, func, func1, func2)
#define MICRO_COMPLEX_TYPE_PEEL1(func, func2, peel)
#define MICRO_COMPLEX_LOAD_ONE(iter)

Definition at line 2094 of file MatrixProduct.h.

◆ MICRO_COMPLEX_ONE_PEEL4

#define MICRO_COMPLEX_ONE_PEEL4
Value:
rhs_ptr_real += (accRows * PEEL_COMPLEX); \
if(!RhsIsReal) rhs_ptr_imag += (accRows * PEEL_COMPLEX);
#define PEEL_COMPLEX
#define MICRO_COMPLEX_TYPE_PEEL4(func, func2, peel)
#define MICRO_COMPLEX_UNROLL_TYPE_PEEL(M, func, func1, func2)
#define MICRO_COMPLEX_LOAD_ONE(iter)
#define MICRO_COMPLEX_WORK_ONE4(iter, peel)

Definition at line 2084 of file MatrixProduct.h.

◆ MICRO_COMPLEX_PREFETCH

#define MICRO_COMPLEX_PREFETCH   MICRO_COMPLEX_UNROLL(MICRO_COMPLEX_PREFETCH_ONE)

Definition at line 2138 of file MatrixProduct.h.

◆ MICRO_COMPLEX_PREFETCH_ONE

#define MICRO_COMPLEX_PREFETCH_ONE (   iter)
Value:
if (unroll_factor > iter) { \
EIGEN_POWER_PREFETCH(lhs_ptr_real##iter); \
if(!LhsIsReal) { \
EIGEN_POWER_PREFETCH(lhs_ptr_imag##iter); \
} \
}
iterator iter(handle obj)
Definition: pytypes.h:2273

Definition at line 2130 of file MatrixProduct.h.

◆ MICRO_COMPLEX_SRC_PTR

#define MICRO_COMPLEX_SRC_PTR   MICRO_COMPLEX_UNROLL(MICRO_COMPLEX_SRC_PTR_ONE)

Definition at line 2128 of file MatrixProduct.h.

◆ MICRO_COMPLEX_SRC_PTR_ONE

#define MICRO_COMPLEX_SRC_PTR_ONE (   iter)
Value:
if (unroll_factor > iter) { \
lhs_ptr_real##iter = lhs_base + ( ((advanceRows*row)/accCols) + iter*advanceRows )*strideA*accCols + accCols*offsetA; \
if(!LhsIsReal) { \
lhs_ptr_imag##iter = lhs_ptr_real##iter + accCols*strideA; \
} else { \
EIGEN_UNUSED_VARIABLE(lhs_ptr_imag##iter); \
} \
} else { \
EIGEN_UNUSED_VARIABLE(lhs_ptr_real##iter); \
EIGEN_UNUSED_VARIABLE(lhs_ptr_imag##iter); \
}
iterator iter(handle obj)
Definition: pytypes.h:2273
m row(1)
#define advanceRows

Definition at line 2115 of file MatrixProduct.h.

◆ MICRO_COMPLEX_STORE

#define MICRO_COMPLEX_STORE   MICRO_COMPLEX_UNROLL(MICRO_COMPLEX_STORE_ONE)

Definition at line 2149 of file MatrixProduct.h.

◆ MICRO_COMPLEX_STORE_ONE

#define MICRO_COMPLEX_STORE_ONE (   iter)
Value:
if (unroll_factor > iter) { \
bload<DataMapper, Packetc, Index, accColsC, 0, ColMajor>(tRes, res, row + iter*accCols, col); \
bscalec<Packet,4>(accReal##iter, accImag##iter, pAlphaReal, pAlphaImag, taccReal, taccImag); \
bcouple<Packet, Packetc>(taccReal, taccImag, tRes, acc0, acc1); \
res.template storePacketBlock<Packetc,4>(row + iter*accCols + 0, col, acc0); \
res.template storePacketBlock<Packetc,4>(row + iter*accCols + accColsC, col, acc1); \
}
iterator iter(handle obj)
Definition: pytypes.h:2273
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
#define accColsC
m row(1)
m col(1)

Definition at line 2140 of file MatrixProduct.h.

◆ MICRO_COMPLEX_TYPE_PEEL1

#define MICRO_COMPLEX_TYPE_PEEL1 (   func,
  func2,
  peel 
)
Value:
if (PEEL_COMPLEX > peel) { \
Packet lhsV0, lhsV1, lhsV2, lhsV3, lhsV4; \
Packet lhsVi0, lhsVi1, lhsVi2, lhsVi3, lhsVi4; \
rhsV##peel[0] = pset1<Packet>(rhs_ptr_real[remaining_cols * peel]); \
if(!RhsIsReal) { \
rhsVi##peel[0] = pset1<Packet>(rhs_ptr_imag[remaining_cols * peel]); \
} else { \
EIGEN_UNUSED_VARIABLE(rhsVi##peel); \
} \
MICRO_COMPLEX_UNROLL_WORK(func, func2, peel) \
} else { \
EIGEN_UNUSED_VARIABLE(rhsV##peel); \
EIGEN_UNUSED_VARIABLE(rhsVi##peel); \
}
#define PEEL_COMPLEX

Definition at line 2055 of file MatrixProduct.h.

◆ MICRO_COMPLEX_TYPE_PEEL4

#define MICRO_COMPLEX_TYPE_PEEL4 (   func,
  func2,
  peel 
)
Value:
if (PEEL_COMPLEX > peel) { \
Packet lhsV0, lhsV1, lhsV2, lhsV3, lhsV4; \
Packet lhsVi0, lhsVi1, lhsVi2, lhsVi3, lhsVi4; \
pbroadcast4_old<Packet>(rhs_ptr_real + (accRows * peel), rhsV##peel[0], rhsV##peel[1], rhsV##peel[2], rhsV##peel[3]); \
if(!RhsIsReal) { \
pbroadcast4_old<Packet>(rhs_ptr_imag + (accRows * peel), rhsVi##peel[0], rhsVi##peel[1], rhsVi##peel[2], rhsVi##peel[3]); \
} else { \
EIGEN_UNUSED_VARIABLE(rhsVi##peel); \
} \
MICRO_COMPLEX_UNROLL_WORK(func, func2, peel) \
} else { \
EIGEN_UNUSED_VARIABLE(rhsV##peel); \
EIGEN_UNUSED_VARIABLE(rhsVi##peel); \
}
#define PEEL_COMPLEX

Definition at line 2039 of file MatrixProduct.h.

◆ MICRO_COMPLEX_UNROLL

#define MICRO_COMPLEX_UNROLL (   func)    func(0) func(1) func(2) func(3) func(4)

Definition at line 2007 of file MatrixProduct.h.

◆ MICRO_COMPLEX_UNROLL_TYPE_ONE

#define MICRO_COMPLEX_UNROLL_TYPE_ONE (   M,
  func,
  func1,
  func2 
)
Value:
Packet rhsV0[M], rhsVi0[M];\
func(func1,func2,0);
Matrix< RealScalar, Dynamic, Dynamic > M
Definition: bench_gemm.cpp:51

Definition at line 2080 of file MatrixProduct.h.

◆ MICRO_COMPLEX_UNROLL_TYPE_PEEL

#define MICRO_COMPLEX_UNROLL_TYPE_PEEL (   M,
  func,
  func1,
  func2 
)
Value:
Packet rhsV0[M], rhsV1[M], rhsV2[M], rhsV3[M], rhsV4[M], rhsV5[M], rhsV6[M], rhsV7[M], rhsV8[M], rhsV9[M]; \
Packet rhsVi0[M], rhsVi1[M], rhsVi2[M], rhsVi3[M], rhsVi4[M], rhsVi5[M], rhsVi6[M], rhsVi7[M], rhsVi8[M], rhsVi9[M]; \
func(func1,func2,0); func(func1,func2,1); \
func(func1,func2,2); func(func1,func2,3); \
func(func1,func2,4); func(func1,func2,5); \
func(func1,func2,6); func(func1,func2,7); \
func(func1,func2,8); func(func1,func2,9);
Matrix< RealScalar, Dynamic, Dynamic > M
Definition: bench_gemm.cpp:51
int func(const int &a)
Definition: testDSF.cpp:221

Definition at line 2071 of file MatrixProduct.h.

◆ MICRO_COMPLEX_UNROLL_WORK

#define MICRO_COMPLEX_UNROLL_WORK (   func,
  func2,
  peel 
)
Value:
func(0,peel) func(1,peel) func(2,peel) func(3,peel) func(4,peel)
#define MICRO_COMPLEX_UNROLL(func)
int func(const int &a)
Definition: testDSF.cpp:221

Definition at line 2010 of file MatrixProduct.h.

◆ MICRO_COMPLEX_WORK_ONE1

#define MICRO_COMPLEX_WORK_ONE1 (   iter,
  peel 
)
Value:
if (unroll_factor > iter) { \
pgerc_common<1, Packet, ConjugateLhs, ConjugateRhs, LhsIsReal, RhsIsReal>(&accReal##iter, &accImag##iter, lhsV##iter, lhsVi##iter, rhsV##peel, rhsVi##peel); \
}
iterator iter(handle obj)
Definition: pytypes.h:2273

Definition at line 2034 of file MatrixProduct.h.

◆ MICRO_COMPLEX_WORK_ONE4

#define MICRO_COMPLEX_WORK_ONE4 (   iter,
  peel 
)
Value:
if (unroll_factor > iter) { \
pgerc_common<4, Packet, ConjugateLhs, ConjugateRhs, LhsIsReal, RhsIsReal>(&accReal##iter, &accImag##iter, lhsV##iter, lhsVi##iter, rhsV##peel, rhsVi##peel); \
}
iterator iter(handle obj)
Definition: pytypes.h:2273

Definition at line 2029 of file MatrixProduct.h.

◆ MICRO_DST_PTR

#define MICRO_DST_PTR   MICRO_UNROLL(MICRO_DST_PTR_ONE)

Definition at line 1521 of file MatrixProduct.h.

◆ MICRO_DST_PTR_ONE

#define MICRO_DST_PTR_ONE (   iter)
Value:
if (unroll_factor > iter) { \
bsetzero<Scalar, Packet>(accZero##iter); \
} else { \
EIGEN_UNUSED_VARIABLE(accZero##iter); \
}
iterator iter(handle obj)
Definition: pytypes.h:2273

Definition at line 1514 of file MatrixProduct.h.

◆ MICRO_LOAD_ONE

#define MICRO_LOAD_ONE (   iter)
Value:
if (unroll_factor > iter) { \
lhsV##iter = ploadLhs<Scalar, Packet>(lhs_ptr##iter); \
lhs_ptr##iter += accCols; \
} else { \
EIGEN_UNUSED_VARIABLE(lhsV##iter); \
}
iterator iter(handle obj)
Definition: pytypes.h:2273

Definition at line 1455 of file MatrixProduct.h.

◆ MICRO_ONE1

#define MICRO_ONE1
Value:
rhs_ptr += remaining_cols;
#define MICRO_WORK_ONE(iter, peel)
#define MICRO_UNROLL_TYPE_ONE(M, func, func1, func2)
#define MICRO_TYPE_PEEL1(func, func2, peel)
#define MICRO_LOAD_ONE(iter)

Definition at line 1510 of file MatrixProduct.h.

◆ MICRO_ONE4

#define MICRO_ONE4
Value:
rhs_ptr += accRows;
#define MICRO_WORK_ONE(iter, peel)
#define MICRO_UNROLL_TYPE_ONE(M, func, func1, func2)
#define MICRO_TYPE_PEEL4(func, func2, peel)
#define MICRO_LOAD_ONE(iter)

Definition at line 1502 of file MatrixProduct.h.

◆ MICRO_ONE_PEEL1

#define MICRO_ONE_PEEL1
Value:
rhs_ptr += (remaining_cols * PEEL);
#define MICRO_WORK_ONE(iter, peel)
#define MICRO_UNROLL_TYPE_PEEL(M, func, func1, func2)
#define PEEL
#define MICRO_TYPE_PEEL1(func, func2, peel)
#define MICRO_LOAD_ONE(iter)

Definition at line 1506 of file MatrixProduct.h.

◆ MICRO_ONE_PEEL4

#define MICRO_ONE_PEEL4
Value:
rhs_ptr += (accRows * PEEL);
#define MICRO_WORK_ONE(iter, peel)
#define MICRO_UNROLL_TYPE_PEEL(M, func, func1, func2)
#define PEEL
#define MICRO_TYPE_PEEL4(func, func2, peel)
#define MICRO_LOAD_ONE(iter)

Definition at line 1498 of file MatrixProduct.h.

◆ MICRO_PREFETCH

#define MICRO_PREFETCH   MICRO_UNROLL(MICRO_PREFETCH_ONE)

Definition at line 1537 of file MatrixProduct.h.

◆ MICRO_PREFETCH_ONE

#define MICRO_PREFETCH_ONE (   iter)
Value:
if (unroll_factor > iter) { \
EIGEN_POWER_PREFETCH(lhs_ptr##iter); \
}
iterator iter(handle obj)
Definition: pytypes.h:2273

Definition at line 1532 of file MatrixProduct.h.

◆ MICRO_SRC_PTR

#define MICRO_SRC_PTR   MICRO_UNROLL(MICRO_SRC_PTR_ONE)

Definition at line 1530 of file MatrixProduct.h.

◆ MICRO_SRC_PTR_ONE

#define MICRO_SRC_PTR_ONE (   iter)
Value:
if (unroll_factor > iter) { \
lhs_ptr##iter = lhs_base + ( (row/accCols) + iter )*strideA*accCols + accCols*offsetA; \
} else { \
EIGEN_UNUSED_VARIABLE(lhs_ptr##iter); \
}
iterator iter(handle obj)
Definition: pytypes.h:2273
m row(1)

Definition at line 1523 of file MatrixProduct.h.

◆ MICRO_STORE

#define MICRO_STORE   MICRO_UNROLL(MICRO_STORE_ONE)

Definition at line 1549 of file MatrixProduct.h.

◆ MICRO_STORE_ONE

#define MICRO_STORE_ONE (   iter)
Value:
if (unroll_factor > iter) { \
acc.packet[0] = res.template loadPacket<Packet>(row + iter*accCols, col + 0); \
acc.packet[1] = res.template loadPacket<Packet>(row + iter*accCols, col + 1); \
acc.packet[2] = res.template loadPacket<Packet>(row + iter*accCols, col + 2); \
acc.packet[3] = res.template loadPacket<Packet>(row + iter*accCols, col + 3); \
bscale<Packet>(acc, accZero##iter, pAlpha); \
res.template storePacketBlock<Packet,4>(row + iter*accCols, col, acc); \
}
iterator iter(handle obj)
Definition: pytypes.h:2273
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
m row(1)
m col(1)

Definition at line 1539 of file MatrixProduct.h.

◆ MICRO_TYPE_PEEL1

#define MICRO_TYPE_PEEL1 (   func,
  func2,
  peel 
)
Value:
if (PEEL > peel) { \
Packet lhsV0, lhsV1, lhsV2, lhsV3, lhsV4, lhsV5, lhsV6, lhsV7; \
rhsV##peel[0] = pset1<Packet>(rhs_ptr[remaining_cols * peel]); \
MICRO_UNROLL_WORK(func, func2, peel) \
} else { \
EIGEN_UNUSED_VARIABLE(rhsV##peel); \
}
#define PEEL

Definition at line 1477 of file MatrixProduct.h.

◆ MICRO_TYPE_PEEL4

#define MICRO_TYPE_PEEL4 (   func,
  func2,
  peel 
)
Value:
if (PEEL > peel) { \
Packet lhsV0, lhsV1, lhsV2, lhsV3, lhsV4, lhsV5, lhsV6, lhsV7; \
pbroadcast4<Packet>(rhs_ptr + (accRows * peel), rhsV##peel[0], rhsV##peel[1], rhsV##peel[2], rhsV##peel[3]); \
MICRO_UNROLL_WORK(func, func2, peel) \
} else { \
EIGEN_UNUSED_VARIABLE(rhsV##peel); \
}
#define PEEL

Definition at line 1468 of file MatrixProduct.h.

◆ MICRO_UNROLL

#define MICRO_UNROLL (   func)    func(0) func(1) func(2) func(3) func(4) func(5) func(6) func(7)

Definition at line 1447 of file MatrixProduct.h.

◆ MICRO_UNROLL_TYPE_ONE

#define MICRO_UNROLL_TYPE_ONE (   M,
  func,
  func1,
  func2 
)
Value:
Packet rhsV0[M]; \
func(func1,func2,0);
Matrix< RealScalar, Dynamic, Dynamic > M
Definition: bench_gemm.cpp:51

Definition at line 1494 of file MatrixProduct.h.

◆ MICRO_UNROLL_TYPE_PEEL

#define MICRO_UNROLL_TYPE_PEEL (   M,
  func,
  func1,
  func2 
)
Value:
Packet rhsV0[M], rhsV1[M], rhsV2[M], rhsV3[M], rhsV4[M], rhsV5[M], rhsV6[M], rhsV7[M], rhsV8[M], rhsV9[M]; \
func(func1,func2,0); func(func1,func2,1); \
func(func1,func2,2); func(func1,func2,3); \
func(func1,func2,4); func(func1,func2,5); \
func(func1,func2,6); func(func1,func2,7); \
func(func1,func2,8); func(func1,func2,9);
Matrix< RealScalar, Dynamic, Dynamic > M
Definition: bench_gemm.cpp:51
int func(const int &a)
Definition: testDSF.cpp:221

Definition at line 1486 of file MatrixProduct.h.

◆ MICRO_UNROLL_WORK

#define MICRO_UNROLL_WORK (   func,
  func2,
  peel 
)
Value:
func(0,peel) func(1,peel) func(2,peel) func(3,peel) \
func(4,peel) func(5,peel) func(6,peel) func(7,peel)
#define MICRO_UNROLL(func)
int func(const int &a)
Definition: testDSF.cpp:221

Definition at line 1450 of file MatrixProduct.h.

◆ MICRO_WORK_ONE

#define MICRO_WORK_ONE (   iter,
  peel 
)
Value:
if (unroll_factor > iter) { \
pger_common<Packet, false>(&accZero##iter, lhsV##iter, rhsV##peel); \
}
iterator iter(handle obj)
Definition: pytypes.h:2273

Definition at line 1463 of file MatrixProduct.h.

◆ PEEL

#define PEEL   7

Definition at line 1302 of file MatrixProduct.h.

◆ PEEL_COMPLEX

#define PEEL_COMPLEX   3

Definition at line 1791 of file MatrixProduct.h.



gtsam
Author(s):
autogenerated on Tue Jul 4 2023 02:40:51