exmat::PNS Namespace Reference

Private namespace to hide the details from the user. More...


Classes

class  GetAliasTmpType
 Find the appropriate temp type for an aliased assignment operation. More...
struct  AliasAnalyser
 The alias analyzer. More...
struct  Assign_UnRollRowCol_STAT
 Unroll both Rows and Cols. More...
struct  Assign_UnRollRow_STAT
 Unroll Rows only. More...
struct  Assign_UnRollCol_STAT
 Unroll Cols only. More...
struct  Assign_UnRollSIMDSTAT
 Unroller for SIMD. More...
struct  ReplaceTmp
 The ReplaceTmp class. More...
struct  DeterminantComplexity
 Calculate the complexity of a determinant. More...
struct  ReplaceTmp< Loki::NullType >
 ReplaceTmp termination specialization. More...

Assignment unroller

Using compile-time loop to unroll an assignment loop

template<class MAT1, class MAT2>
static void Assign_FullUnRoll (MAT1 &A, const MAT2 &B)
 Perform full unrolling to the assignment operation.
template<class MAT1, class MAT2>
static void Assign_FullUnRollRow (MAT1 &A, const MAT2 &B)
 Perform full unrolling of Rows to the assignment operation.
template<class MAT1, class MAT2>
static void Assign_FullUnRollCol (MAT1 &A, const MAT2 &B)
 Perform full unrolling of Cols to the assignment operation.
template<class MAT1, class MAT2>
static void Assign_PartialUnRoll (MAT1 &A, const MAT2 &B)
template<class MAT1, class MAT2>
static void Assign_NoUnRoll (MAT1 &A, const MAT2 &B)
 Perform no unrolling to the assignment operation.
template<class MAT1, class MAT2>
static void Assign_FullUnRollSIMD (MAT1 &A, const MAT2 &B)
 Perform full unrolling of SIMD assignment operation.
template<class MAT1, class MAT2>
static void Assign (MAT1 &A, const MAT2 &B, Int2Type< ASSIGN_TYPE::Ass_FullUnRoll >)
template<class MAT1, class MAT2>
static void Assign (MAT1 &A, const MAT2 &B, Int2Type< ASSIGN_TYPE::Ass_FullUnRollRow >)
template<class MAT1, class MAT2>
static void Assign (MAT1 &A, const MAT2 &B, Int2Type< ASSIGN_TYPE::Ass_FullUnRollCol >)
template<class MAT1, class MAT2>
static void Assign (MAT1 &A, const MAT2 &B, Int2Type< ASSIGN_TYPE::Ass_NoUnRoll >)
template<class MAT1, class MAT2>
static void Assign (MAT1 &A, const MAT2 &B, Int2Type< ASSIGN_TYPE::Ass_SIMD >)
template<class MAT1, class MAT2>
static void Assign_SIMD_inner (MAT1 &A, const MAT2 &B, Int2Type< true > WholeAssign)
template<class MAT1, class MAT2>
static void Assign_SIMD_inner (MAT1 &A, const MAT2 &B, Int2Type< false > WholeAssign)

Functions

template<class LT, class RT>
bool IsAliased_Helper (LT &l, const RT &r, const Int2Type< true > &isCon)
template<class LT, class RT>
bool IsAliased_Helper (LT &l, const RT &r, const Int2Type< false > &isCon)
 For rhs expression.


Detailed Description

Private namespace to hide the details from the user.

Function Documentation

template<class MAT1, class MAT2>
static void exmat::PNS::Assign MAT1 &  A,
const MAT2 &  B,
Int2Type< ASSIGN_TYPE::Ass_SIMD > 
[inline, static]
 

Overloaded functions to choose the appropriate unroller Parameters: Mat to be assigned to, Mat to be assigned, Unroll the row, Unroll the col

template<class MAT1, class MAT2>
static void exmat::PNS::Assign MAT1 &  A,
const MAT2 &  B,
Int2Type< ASSIGN_TYPE::Ass_NoUnRoll > 
[inline, static]
 

Overloaded functions to choose the appropriate unroller Parameters: Mat to be assigned to, Mat to be assigned, Unroll the row, Unroll the col

template<class MAT1, class MAT2>
static void exmat::PNS::Assign MAT1 &  A,
const MAT2 &  B,
Int2Type< ASSIGN_TYPE::Ass_FullUnRollCol > 
[inline, static]
 

Overloaded functions to choose the appropriate unroller Parameters: Mat to be assigned to, Mat to be assigned, Unroll the row, Unroll the col

template<class MAT1, class MAT2>
static void exmat::PNS::Assign MAT1 &  A,
const MAT2 &  B,
Int2Type< ASSIGN_TYPE::Ass_FullUnRollRow > 
[inline, static]
 

Overloaded functions to choose the appropriate unroller Parameters: Mat to be assigned to, Mat to be assigned, Unroll the row, Unroll the col

template<class MAT1, class MAT2>
static void exmat::PNS::Assign MAT1 &  A,
const MAT2 &  B,
Int2Type< ASSIGN_TYPE::Ass_FullUnRoll > 
[inline, static]
 

Overloaded functions to choose the appropriate unroller Parameters: Mat to be assigned to, Mat to be assigned, Unroll the row, Unroll the col

template<class MAT1, class MAT2>
static void exmat::PNS::Assign_PartialUnRoll MAT1 &  A,
const MAT2 &  B
[inline, static]
 

Perform partial unrolling to the assignment operation

Note:
Loop is unrolled using the Tom Duff's device

template<class MAT1, class MAT2>
static void exmat::PNS::Assign_SIMD_inner MAT1 &  A,
const MAT2 &  B,
Int2Type< false >  WholeAssign
[inline, static]
 

Overloaded functions to choose the appropriate unroller Parameters: Mat to be assigned to, Mat to be assigned, Unroll the row, Unroll the col

template<class MAT1, class MAT2>
static void exmat::PNS::Assign_SIMD_inner MAT1 &  A,
const MAT2 &  B,
Int2Type< true >  WholeAssign
[inline, static]
 

Overloaded functions to choose the appropriate unroller Parameters: Mat to be assigned to, Mat to be assigned, Unroll the row, Unroll the col

template<class LT, class RT>
bool exmat::PNS::IsAliased_Helper LT &  l,
const RT &  r,
const Int2Type< true > &  isCon
[inline]
 

Overload functions for alias analyzer, to distinguish between container and expression For rhs container


Generated on Sat May 6 23:12:10 2006 for Exmat by  doxygen 1.4.6-NO