blitz Version 1.0.2
Loading...
Searching...
No Matches
blitz::_tm_evaluator< true, N_rows, N_columns > Struct Template Reference

Specialization of the _tm_evaluator class for false template arguments. More...

#include <tmevaluate.h>

Inheritance diagram for blitz::_tm_evaluator< true, N_rows, N_columns >:
Inheritance graph
Collaboration diagram for blitz::_tm_evaluator< true, N_rows, N_columns >:
Collaboration graph

Static Public Member Functions

template<typename T, typename T_expr, typename T_update>
static _bz_forceinline void select_evaluation (TinyMatrix< T, N_rows, N_columns > &dest, const T_expr &expr, T_update)
 The false version of select_evaluation is picked for expressions that contain operands other than TinyMatrixs.
 
template<typename T_numtype, typename T_expr, typename T_update>
static _bz_forceinline void evaluate_aligned (T_numtype *data, const T_expr &expr, T_update)
 This version of the evaluation function assumes that the TinyMatrixs have appropriate alignment (as will always be the case if they are actual TinyMatrix objects and not created using reinterpret_cast in the chunked_updater.
 
template<typename T_numtype, typename T_expr, typename T_update>
static _bz_forceinline void evaluate_unaligned (T_numtype *data, const T_expr &expr, T_update)
 This version of the evaluation function is used when vectorizing expressions that we know can't be aligned.
 
static _bz_forceinline void select_evaluation (TinyMatrix< T, N_rows, N_columns > &dest, const T_expr &expr, T_update)
 The select_evaluation function redirects expressions that do not contains solely TinyMatrix operands to the general evaluation function.
 
static _bz_forceinline void evaluate_aligned (T_numtype *data, const T_expr &expr, T_update)
 This version of the evaluation function assumes that the TinyMatrixs have appropriate alignment (as will always be the case if they are actual TinyMatrix objects and not created using reinterpret_cast in the chunked_updater.
 
static _bz_forceinline void evaluate_unaligned (T_numtype *data, const T_expr &expr, T_update)
 This version of the evaluation function is used when vectorizing expressions that we know can't be aligned.
 

Detailed Description

template<int N_rows, int N_columns>
struct blitz::_tm_evaluator< true, N_rows, N_columns >

Specialization of the _tm_evaluator class for false template arguments.

Member Function Documentation

◆ evaluate_aligned() [1/2]

static _bz_forceinline void blitz::_tm_evaluator< unroll, N_rows, N_columns >::evaluate_aligned ( T_numtype * data,
const T_expr & expr,
T_update  )
inlinestatic

This version of the evaluation function assumes that the TinyMatrixs have appropriate alignment (as will always be the case if they are actual TinyMatrix objects and not created using reinterpret_cast in the chunked_updater.

◆ evaluate_aligned() [2/2]

template<int N_rows, int N_columns>
template<typename T_numtype, typename T_expr, typename T_update>
static _bz_forceinline void blitz::_tm_evaluator< true, N_rows, N_columns >::evaluate_aligned ( T_numtype * data,
const T_expr & expr,
T_update  )
inlinestatic

This version of the evaluation function assumes that the TinyMatrixs have appropriate alignment (as will always be the case if they are actual TinyMatrix objects and not created using reinterpret_cast in the chunked_updater.

◆ evaluate_unaligned() [1/2]

static _bz_forceinline void blitz::_tm_evaluator< unroll, N_rows, N_columns >::evaluate_unaligned ( T_numtype * data,
const T_expr & expr,
T_update  )
inlinestatic

This version of the evaluation function is used when vectorizing expressions that we know can't be aligned.

The only difference with evaluate_aligned is the compiler pragma that tells the compiler it is unaligned.

◆ evaluate_unaligned() [2/2]

template<int N_rows, int N_columns>
template<typename T_numtype, typename T_expr, typename T_update>
static _bz_forceinline void blitz::_tm_evaluator< true, N_rows, N_columns >::evaluate_unaligned ( T_numtype * data,
const T_expr & expr,
T_update  )
inlinestatic

This version of the evaluation function is used when vectorizing expressions that we know can't be aligned.

The only difference with evaluate_aligned is the compiler pragma that tells the compiler it is unaligned.

◆ select_evaluation() [1/2]

static _bz_forceinline void blitz::_tm_evaluator< unroll, N_rows, N_columns >::select_evaluation ( TinyMatrix< T, N_rows, N_columns > & dest,
const T_expr & expr,
T_update  )
inlinestatic

The select_evaluation function redirects expressions that do not contains solely TinyMatrix operands to the general evaluation function.

The generic template (for unroll=false, note that "unroll" us the wrong name for this function, the template parameter in this context really means "use_full_eval") uses the TinyMatrix-only evaluation. Since TinyMatrixs can't have funny storage, ordering, stride, or anything, it's now just a matter of evaluating it like in the old vecassign.

◆ select_evaluation() [2/2]

template<int N_rows, int N_columns>
template<typename T, typename T_expr, typename T_update>
static _bz_forceinline void blitz::_tm_evaluator< true, N_rows, N_columns >::select_evaluation ( TinyMatrix< T, N_rows, N_columns > & dest,
const T_expr & expr,
T_update  )
inlinestatic

The false version of select_evaluation is picked for expressions that contain operands other than TinyMatrixs.

It just redirects to the general evaluation function.


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