blitz Version 1.0.2
Loading...
Searching...
No Matches
blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype > Class Template Reference

#include <tm2fastiter.h>

Inheritance diagram for blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >:
Inheritance graph
Collaboration diagram for blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >:
Collaboration graph

Classes

struct  tvresult
 For an iterator, the vectorized result for width N is always a TinyVector<T_numtype, N>. More...
class  SliceInfo

Public Types

typedef P_numtype T_numtype
typedef opType< T_numtype >::T_optype T_optype
typedef asET< T_numtype >::T_wrapped T_typeprop
typedef unwrapET< T_typeprop >::T_unwrapped T_result
typedef ETBase< FastTV2Iterator< T_numtype, simdTypes< T_numtype >::vecWidth > > T_tvtypeprop
 Result type for fastRead_tv is a FastTVIterator.
typedef unwrapET< T_tvtypeprop >::T_unwrapped T_tvresult
typedef TinyMatrix< T_numtype, N_rows, N_columns > T_matrix
typedef FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype > T_iterator
typedef const T_matrixT_ctorArg1
typedef int T_ctorArg2
typedef FastTM2CopyIterator< P_numtype, N_rows, N_columns > T_range_result

Public Member Functions

 FastTM2IteratorBase (const T_iterator &x)
void operator= (const T_iterator &x)
 FastTM2IteratorBase (const T_matrix &array)
 ~FastTM2IteratorBase ()
T_result operator() (TinyVector< int, 2 > i) const
T_result first_value () const
T_result operator* () const
T_result operator[] (int i) const
T_result fastRead (diffType i) const
template<int N>
tvresult< N >::Type fastRead_tv (diffType i) const
bool isVectorAligned (diffType offset) const
 Since data_ is simd aligned by construction, we just have to check the offest.
void push (int position)
void pop (int position)
void advance ()
void advance (int n)
void loadStride (int rank)
const T_numtype *restrict data () const
const T_matrixarray () const
void _bz_setData (const T_numtype *ptr)
void _bz_offsetData (sizeType i)
void _bz_offsetData (sizeType offset, int dim)
void _bz_offsetData (sizeType offset1, int dim1, sizeType offset2, int dim2)
int stride () const
bool isUnitStride () const
void advanceUnitStride ()
bool canCollapse (int outerLoopRank, int innerLoopRank) const
template<typename T_shape>
bool shapeCheck (const T_shape &s) const
T_result shift (int offset, int dim) const
T_result shift (int offset1, int dim1, int offset2, int dim2) const
void prettyPrint (std::string &str, prettyPrintFormat &format) const

Static Public Member Functions

static int ascending (const int r)
static int ordering (const int r)
static int lbound (const int r)
static int ubound (const int r)
static int suggestStride (int r)
static bool isStride (int r, diffType stride)
static bool isUnitStride (int r)

Static Public Attributes

static const int numArrayOperands = 0
static const int numTVOperands = 0
static const int numTMOperands = 1
static const int numIndexPlaceholders = 0
static const int minWidth = simdTypes<T_numtype>::vecWidth
static const int maxWidth = simdTypes<T_numtype>::vecWidth
static const int rank_ = 2

Protected Attributes

const T_numtype *restrict data_
P_arraytype array_
ConstPointerStack< T_numtype, rank_stack_
diffType stride_

Member Typedef Documentation

◆ T_ctorArg1

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
typedef const T_matrix& blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::T_ctorArg1

◆ T_ctorArg2

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
typedef int blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::T_ctorArg2

◆ T_iterator

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
typedef FastTM2IteratorBase<P_numtype, N_rows, N_columns, P_arraytype> blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::T_iterator

◆ T_matrix

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
typedef TinyMatrix<T_numtype, N_rows, N_columns> blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::T_matrix

◆ T_numtype

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
typedef P_numtype blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::T_numtype

◆ T_optype

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
typedef opType<T_numtype>::T_optype blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::T_optype

◆ T_range_result

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
typedef FastTM2CopyIterator<P_numtype, N_rows, N_columns> blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::T_range_result

◆ T_result

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
typedef unwrapET<T_typeprop>::T_unwrapped blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::T_result

◆ T_tvresult

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
typedef unwrapET<T_tvtypeprop>::T_unwrapped blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::T_tvresult

◆ T_tvtypeprop

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
typedef ETBase<FastTV2Iterator<T_numtype, simdTypes<T_numtype>::vecWidth> > blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::T_tvtypeprop

Result type for fastRead_tv is a FastTVIterator.

This should only be used for mixed TM/Array expressions.

◆ T_typeprop

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
typedef asET<T_numtype>::T_wrapped blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::T_typeprop

Constructor & Destructor Documentation

◆ FastTM2IteratorBase() [1/2]

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::FastTM2IteratorBase ( const T_iterator & x)
inline

◆ FastTM2IteratorBase() [2/2]

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::FastTM2IteratorBase ( const T_matrix & array)
inline

◆ ~FastTM2IteratorBase()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::~FastTM2IteratorBase ( )
inline

Member Function Documentation

◆ _bz_offsetData() [1/3]

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
void blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::_bz_offsetData ( sizeType i)
inline

◆ _bz_offsetData() [2/3]

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
void blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::_bz_offsetData ( sizeType offset,
int dim )
inline

◆ _bz_offsetData() [3/3]

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
void blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::_bz_offsetData ( sizeType offset1,
int dim1,
sizeType offset2,
int dim2 )
inline

◆ _bz_setData()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
void blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::_bz_setData ( const T_numtype * ptr)
inline

◆ advance() [1/2]

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
void blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::advance ( )
inline

◆ advance() [2/2]

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
void blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::advance ( int n)
inline

◆ advanceUnitStride()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
void blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::advanceUnitStride ( )
inline

◆ array()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
const T_matrix & blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::array ( ) const
inline

◆ ascending()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
int blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::ascending ( const int r)
inlinestatic

◆ canCollapse()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
bool blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::canCollapse ( int outerLoopRank,
int innerLoopRank ) const
inline

◆ data()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
const T_numtype *restrict blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::data ( ) const
inline

◆ fastRead()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
T_result blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::fastRead ( diffType i) const
inline

◆ fastRead_tv()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
template<int N>
tvresult< N >::Type blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::fastRead_tv ( diffType i) const
inline

◆ first_value()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
T_result blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::first_value ( ) const
inline

◆ isStride()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
bool blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::isStride ( int r,
diffType stride )
inlinestatic

◆ isUnitStride() [1/2]

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
bool blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::isUnitStride ( ) const
inline

◆ isUnitStride() [2/2]

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
bool blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::isUnitStride ( int r)
inlinestatic

◆ isVectorAligned()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
bool blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::isVectorAligned ( diffType offset) const
inline

Since data_ is simd aligned by construction, we just have to check the offest.

◆ lbound()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
int blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::lbound ( const int r)
inlinestatic

◆ loadStride()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
void blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::loadStride ( int rank)
inline

◆ operator()()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
T_result blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::operator() ( TinyVector< int, 2 > i) const
inline

◆ operator*()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
T_result blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::operator* ( ) const
inline

◆ operator=()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
void blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::operator= ( const T_iterator & x)
inline

◆ operator[]()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
T_result blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::operator[] ( int i) const
inline

◆ ordering()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
int blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::ordering ( const int r)
inlinestatic

◆ pop()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
void blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::pop ( int position)
inline

◆ prettyPrint()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
void blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::prettyPrint ( std::string & str,
prettyPrintFormat & format ) const
inline

◆ push()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
void blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::push ( int position)
inline

◆ shapeCheck()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
template<typename T_shape>
bool blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::shapeCheck ( const T_shape & s) const
inline

◆ shift() [1/2]

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
T_result blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::shift ( int offset,
int dim ) const
inline

◆ shift() [2/2]

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
T_result blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::shift ( int offset1,
int dim1,
int offset2,
int dim2 ) const
inline

◆ stride()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
int blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::stride ( ) const
inline

◆ suggestStride()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
int blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::suggestStride ( int r)
inlinestatic

◆ ubound()

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
int blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::ubound ( const int r)
inlinestatic

Member Data Documentation

◆ array_

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
P_arraytype blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::array_
protected

◆ data_

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
const T_numtype* restrict blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::data_
protected

◆ maxWidth

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
const int blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::maxWidth = simdTypes<T_numtype>::vecWidth
static

◆ minWidth

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
const int blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::minWidth = simdTypes<T_numtype>::vecWidth
static

◆ numArrayOperands

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
const int blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::numArrayOperands = 0
static

◆ numIndexPlaceholders

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
const int blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::numIndexPlaceholders = 0
static

◆ numTMOperands

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
const int blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::numTMOperands = 1
static

◆ numTVOperands

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
const int blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::numTVOperands = 0
static

◆ rank_

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
const int blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::rank_ = 2
static

◆ stack_

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
ConstPointerStack<T_numtype,rank_> blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::stack_
protected

◆ stride_

template<typename P_numtype, int N_rows, int N_columns, typename P_arraytype>
diffType blitz::FastTM2IteratorBase< P_numtype, N_rows, N_columns, P_arraytype >::stride_
protected

The documentation for this class was generated from the following file: