blitz
Version 1.0.2
|
The _tv_evaluator class has a bool template argument that is used to select code paths at compile time. More...
#include <tvevaluate.h>
Static Public Member Functions | |
template<typename T , typename T_expr , typename T_update > | |
static _bz_forceinline void | select_evaluation (TinyVector< T, N_length > &dest, const T_expr &expr, T_update) |
The select_evaluation function redirects expressions that do not contains solely TinyVector operands to the general evaluation function. More... | |
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 TinyVectors have appropriate alignment (as will always be the case if they are actual TinyVector objects and not created using reinterpret_cast in the chunked_updater. More... | |
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. More... | |
The _tv_evaluator class has a bool template argument that is used to select code paths at compile time.
|
inlinestatic |
This version of the evaluation function assumes that the TinyVectors have appropriate alignment (as will always be the case if they are actual TinyVector objects and not created using reinterpret_cast in the chunked_updater.
If no SIMD width is set, however, we can not guarantee alignment and must remove the pragmas.
References blitz::tensor::i.
Referenced by blitz::_tv_evaluator< unroll, N_length >::select_evaluation().
|
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.
References blitz::tensor::i.
|
inlinestatic |
The select_evaluation function redirects expressions that do not contains solely TinyVector 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 TinyVector-only evaluation. Since TinyVectors can't have funny storage, ordering, stride, or anything, it's now just a matter of evaluating it like in the old vecassign.
References BZ_TV_EVALUATE_UNROLL_LENGTH, blitz::TinyVector< P_numtype, N_length >::data(), blitz::_tv_evaluator< unroll, N_length >::evaluate_aligned(), and blitz::TinyVector< P_numtype, N_length >::shape().
Referenced by blitz::TinyVector< P_numtype, N_length >::_tv_evaluate().