Skip to content

Commit

Permalink
Use direct pointer arithmetic in all calls to intrinsic load or store…
Browse files Browse the repository at this point in the history
… functions within the 'DynamicVector' and 'DynamicMatrix' class template
  • Loading branch information
igl42 committed Nov 11, 2013
1 parent 0f09ef8 commit 39abfe2
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 47 deletions.
84 changes: 42 additions & 42 deletions blaze/math/dense/DynamicMatrix.h
Original file line number Diff line number Diff line change
Expand Up @@ -1587,7 +1587,7 @@ inline typename DynamicMatrix<Type,SO>::IntrinsicType
BLAZE_INTERNAL_ASSERT( j + IT::size <= nn_, "Invalid column access index" );
BLAZE_INTERNAL_ASSERT( j % IT::size == 0UL, "Invalid column access index" );

return load( &v_[i*nn_+j] );
return load( v_+i*nn_+j );
}
//*************************************************************************************************

Expand Down Expand Up @@ -1620,7 +1620,7 @@ inline typename DynamicMatrix<Type,SO>::IntrinsicType
BLAZE_INTERNAL_ASSERT( j < n_ , "Invalid column access index" );
BLAZE_INTERNAL_ASSERT( j + IT::size <= nn_, "Invalid column access index" );

return loadu( &v_[i*nn_+j] );
return loadu( v_+i*nn_+j );
}
//*************************************************************************************************

Expand Down Expand Up @@ -1654,7 +1654,7 @@ inline void DynamicMatrix<Type,SO>::store( size_t i, size_t j, const IntrinsicTy
BLAZE_INTERNAL_ASSERT( j + IT::size <= nn_, "Invalid column access index" );
BLAZE_INTERNAL_ASSERT( j % IT::size == 0UL, "Invalid column access index" );

store( &v_[i*nn_+j], value );
store( v_+i*nn_+j, value );
}
//*************************************************************************************************

Expand Down Expand Up @@ -1687,7 +1687,7 @@ inline void DynamicMatrix<Type,SO>::storeu( size_t i, size_t j, const IntrinsicT
BLAZE_INTERNAL_ASSERT( j < n_ , "Invalid column access index" );
BLAZE_INTERNAL_ASSERT( j + IT::size <= nn_, "Invalid column access index" );

storeu( &v_[i*nn_+j], value );
storeu( v_+i*nn_+j, value );
}
//*************************************************************************************************

Expand Down Expand Up @@ -1721,7 +1721,7 @@ inline void DynamicMatrix<Type,SO>::stream( size_t i, size_t j, const IntrinsicT
BLAZE_INTERNAL_ASSERT( j + IT::size <= nn_, "Invalid column access index" );
BLAZE_INTERNAL_ASSERT( j % IT::size == 0UL, "Invalid column access index" );

stream( &v_[i*nn_+j], value );
stream( v_+i*nn_+j, value );
}
//*************************************************************************************************

Expand Down Expand Up @@ -1791,7 +1791,7 @@ inline typename EnableIf< typename DynamicMatrix<Type,SO>::BLAZE_TEMPLATE Vector
{
for( size_t i=0UL; i<m_; ++i )
for( size_t j=0UL; j<n_; j+=IT::size )
stream( &v_[i*nn_+j], (~rhs).load(i,j) );
stream( v_+i*nn_+j, (~rhs).load(i,j) );
}
else
{
Expand All @@ -1800,13 +1800,13 @@ inline typename EnableIf< typename DynamicMatrix<Type,SO>::BLAZE_TEMPLATE Vector

for( size_t i=0UL; i<m_; ++i ) {
for( size_t j=0UL; j<jend; j+=IT::size*4UL ) {
store( &v_[i*nn_+j ], (~rhs).load(i,j ) );
store( &v_[i*nn_+j+IT::size ], (~rhs).load(i,j+IT::size ) );
store( &v_[i*nn_+j+IT::size*2UL], (~rhs).load(i,j+IT::size*2UL) );
store( &v_[i*nn_+j+IT::size*3UL], (~rhs).load(i,j+IT::size*3UL) );
store( v_+i*nn_+j , (~rhs).load(i,j ) );
store( v_+i*nn_+j+IT::size , (~rhs).load(i,j+IT::size ) );
store( v_+i*nn_+j+IT::size*2UL, (~rhs).load(i,j+IT::size*2UL) );
store( v_+i*nn_+j+IT::size*3UL, (~rhs).load(i,j+IT::size*3UL) );
}
for( size_t j=jend; j<n_; j+=IT::size ) {
store( &v_[i*nn_+j], (~rhs).load(i,j) );
store( v_+i*nn_+j, (~rhs).load(i,j) );
}
}
}
Expand Down Expand Up @@ -1968,13 +1968,13 @@ inline typename EnableIf< typename DynamicMatrix<Type,SO>::BLAZE_TEMPLATE Vector

for( size_t i=0UL; i<m_; ++i ) {
for( size_t j=0UL; j<jend; j+=IT::size*4UL ) {
store( &v_[i*nn_+j ], load( &v_[i*nn_+j ] ) + (~rhs).load(i,j ) );
store( &v_[i*nn_+j+IT::size ], load( &v_[i*nn_+j+IT::size ] ) + (~rhs).load(i,j+IT::size ) );
store( &v_[i*nn_+j+IT::size*2UL], load( &v_[i*nn_+j+IT::size*2UL] ) + (~rhs).load(i,j+IT::size*2UL) );
store( &v_[i*nn_+j+IT::size*3UL], load( &v_[i*nn_+j+IT::size*3UL] ) + (~rhs).load(i,j+IT::size*3UL) );
store( v_+i*nn_+j , load( v_+i*nn_+j ) + (~rhs).load(i,j ) );
store( v_+i*nn_+j+IT::size , load( v_+i*nn_+j+IT::size ) + (~rhs).load(i,j+IT::size ) );
store( v_+i*nn_+j+IT::size*2UL, load( v_+i*nn_+j+IT::size*2UL ) + (~rhs).load(i,j+IT::size*2UL) );
store( v_+i*nn_+j+IT::size*3UL, load( v_+i*nn_+j+IT::size*3UL ) + (~rhs).load(i,j+IT::size*3UL) );
}
for( size_t j=jend; j<n_; j+=IT::size ) {
store( &v_[i*nn_+j], load( &v_[i*nn_+j] ) + (~rhs).load(i,j) );
store( v_+i*nn_+j, load( v_+i*nn_+j ) + (~rhs).load(i,j) );
}
}
}
Expand Down Expand Up @@ -2135,13 +2135,13 @@ inline typename EnableIf< typename DynamicMatrix<Type,SO>::BLAZE_TEMPLATE Vector

for( size_t i=0UL; i<m_; ++i ) {
for( size_t j=0UL; j<jend; j+=IT::size*4UL ) {
store( &v_[i*nn_+j ], load( &v_[i*nn_+j ] ) - (~rhs).load(i,j ) );
store( &v_[i*nn_+j+IT::size ], load( &v_[i*nn_+j+IT::size ] ) - (~rhs).load(i,j+IT::size ) );
store( &v_[i*nn_+j+IT::size*2UL], load( &v_[i*nn_+j+IT::size*2UL] ) - (~rhs).load(i,j+IT::size*2UL) );
store( &v_[i*nn_+j+IT::size*3UL], load( &v_[i*nn_+j+IT::size*3UL] ) - (~rhs).load(i,j+IT::size*3UL) );
store( v_+i*nn_+j , load( v_+i*nn_+j ) - (~rhs).load(i,j ) );
store( v_+i*nn_+j+IT::size , load( v_+i*nn_+j+IT::size ) - (~rhs).load(i,j+IT::size ) );
store( v_+i*nn_+j+IT::size*2UL, load( v_+i*nn_+j+IT::size*2UL ) - (~rhs).load(i,j+IT::size*2UL) );
store( v_+i*nn_+j+IT::size*3UL, load( v_+i*nn_+j+IT::size*3UL ) - (~rhs).load(i,j+IT::size*3UL) );
}
for( size_t j=jend; j<n_; j+=IT::size ) {
store( &v_[i*nn_+j], load( &v_[i*nn_+j] ) - (~rhs).load(i,j) );
store( v_+i*nn_+j, load( v_+i*nn_+j ) - (~rhs).load(i,j) );
}
}
}
Expand Down Expand Up @@ -3687,7 +3687,7 @@ inline typename DynamicMatrix<Type,true>::IntrinsicType
BLAZE_INTERNAL_ASSERT( i % IT::size == 0UL, "Invalid row access index" );
BLAZE_INTERNAL_ASSERT( j < n_ , "Invalid column access index" );

return load( &v_[i+j*mm_] );
return load( v_+i+j*mm_ );
}
/*! \endcond */
//*************************************************************************************************
Expand Down Expand Up @@ -3720,7 +3720,7 @@ inline typename DynamicMatrix<Type,true>::IntrinsicType
BLAZE_INTERNAL_ASSERT( i + IT::size <= mm_, "Invalid row access index" );
BLAZE_INTERNAL_ASSERT( j < n_ , "Invalid column access index" );

return loadu( &v_[i+j*mm_] );
return loadu( v_+i+j*mm_ );
}
/*! \endcond */
//*************************************************************************************************
Expand Down Expand Up @@ -3754,7 +3754,7 @@ inline void DynamicMatrix<Type,true>::store( size_t i, size_t j, const Intrinsic
BLAZE_INTERNAL_ASSERT( i % IT::size == 0UL, "Invalid row access index" );
BLAZE_INTERNAL_ASSERT( j < n_ , "Invalid column access index" );

store( &v_[i+j*mm_], value );
store( v_+i+j*mm_, value );
}
/*! \endcond */
//*************************************************************************************************
Expand Down Expand Up @@ -3787,7 +3787,7 @@ inline void DynamicMatrix<Type,true>::storeu( size_t i, size_t j, const Intrinsi
BLAZE_INTERNAL_ASSERT( i + IT::size <= mm_, "Invalid row access index" );
BLAZE_INTERNAL_ASSERT( j < n_ , "Invalid column access index" );

storeu( &v_[i+j*mm_], value );
storeu( v_+i+j*mm_, value );
}
/*! \endcond */
//*************************************************************************************************
Expand Down Expand Up @@ -3822,7 +3822,7 @@ inline void DynamicMatrix<Type,true>::stream( size_t i, size_t j, const Intrinsi
BLAZE_INTERNAL_ASSERT( i % IT::size == 0UL, "Invalid row access index" );
BLAZE_INTERNAL_ASSERT( j < n_ , "Invalid column access index" );

stream( &v_[i+j*mm_], value );
stream( v_+i+j*mm_, value );
}
/*! \endcond */
//*************************************************************************************************
Expand Down Expand Up @@ -3894,7 +3894,7 @@ inline typename EnableIf< typename DynamicMatrix<Type,true>::BLAZE_TEMPLATE Vect
{
for( size_t j=0UL; j<n_; ++j )
for( size_t i=0UL; i<m_; i+=IT::size )
stream( &v_[i+j*mm_], (~rhs).load(i,j) );
stream( v_+i+j*mm_, (~rhs).load(i,j) );
}
else
{
Expand All @@ -3903,13 +3903,13 @@ inline typename EnableIf< typename DynamicMatrix<Type,true>::BLAZE_TEMPLATE Vect

for( size_t j=0UL; j<n_; ++j ) {
for( size_t i=0UL; i<iend; i+=IT::size*4UL ) {
store( &v_[i+j*mm_ ], (~rhs).load(i ,j) );
store( &v_[i+j*mm_+IT::size ], (~rhs).load(i+IT::size ,j) );
store( &v_[i+j*mm_+IT::size*2UL], (~rhs).load(i+IT::size*2UL,j) );
store( &v_[i+j*mm_+IT::size*3UL], (~rhs).load(i+IT::size*3UL,j) );
store( v_+i+j*mm_ , (~rhs).load(i ,j) );
store( v_+i+j*mm_+IT::size , (~rhs).load(i+IT::size ,j) );
store( v_+i+j*mm_+IT::size*2UL, (~rhs).load(i+IT::size*2UL,j) );
store( v_+i+j*mm_+IT::size*3UL, (~rhs).load(i+IT::size*3UL,j) );
}
for( size_t i=iend; i<m_; i+=IT::size ) {
store( &v_[i+j*mm_], (~rhs).load(i,j) );
store( v_+i+j*mm_, (~rhs).load(i,j) );
}
}
}
Expand Down Expand Up @@ -4070,13 +4070,13 @@ inline typename EnableIf< typename DynamicMatrix<Type,true>::BLAZE_TEMPLATE Vect

for( size_t j=0UL; j<n_; ++j ) {
for( size_t i=0UL; i<iend; i+=IT::size*4UL ) {
store( &v_[i+j*mm_ ], load( &v_[i+j*mm_ ] ) + (~rhs).load(i ,j) );
store( &v_[i+j*mm_+IT::size ], load( &v_[i+j*mm_+IT::size ] ) + (~rhs).load(i+IT::size ,j) );
store( &v_[i+j*mm_+IT::size*2UL], load( &v_[i+j*mm_+IT::size*2UL] ) + (~rhs).load(i+IT::size*2UL,j) );
store( &v_[i+j*mm_+IT::size*3UL], load( &v_[i+j*mm_+IT::size*3UL] ) + (~rhs).load(i+IT::size*3UL,j) );
store( v_+i+j*mm_ , load( v_+i+j*mm_ ) + (~rhs).load(i ,j) );
store( v_+i+j*mm_+IT::size , load( v_+i+j*mm_+IT::size ) + (~rhs).load(i+IT::size ,j) );
store( v_+i+j*mm_+IT::size*2UL, load( v_+i+j*mm_+IT::size*2UL ) + (~rhs).load(i+IT::size*2UL,j) );
store( v_+i+j*mm_+IT::size*3UL, load( v_+i+j*mm_+IT::size*3UL ) + (~rhs).load(i+IT::size*3UL,j) );
}
for( size_t i=iend; i<m_; i+=IT::size ) {
store( &v_[i+j*mm_], load( &v_[i+j*mm_] ) + (~rhs).load(i,j) );
store( v_+i+j*mm_, load( v_+i+j*mm_ ) + (~rhs).load(i,j) );
}
}
}
Expand Down Expand Up @@ -4237,13 +4237,13 @@ inline typename EnableIf< typename DynamicMatrix<Type,true>::BLAZE_TEMPLATE Vect

for( size_t j=0UL; j<n_; ++j ) {
for( size_t i=0UL; i<iend; i+=IT::size*4UL ) {
store( &v_[i+j*mm_ ], load( &v_[i+j*mm_ ] ) - (~rhs).load(i ,j) );
store( &v_[i+j*mm_+IT::size ], load( &v_[i+j*mm_+IT::size ] ) - (~rhs).load(i+IT::size ,j) );
store( &v_[i+j*mm_+IT::size*2UL], load( &v_[i+j*mm_+IT::size*2UL] ) - (~rhs).load(i+IT::size*2UL,j) );
store( &v_[i+j*mm_+IT::size*3UL], load( &v_[i+j*mm_+IT::size*3UL] ) - (~rhs).load(i+IT::size*3UL,j) );
store( v_+i+j*mm_ , load( v_+i+j*mm_ ) - (~rhs).load(i ,j) );
store( v_+i+j*mm_+IT::size , load( v_+i+j*mm_+IT::size ) - (~rhs).load(i+IT::size ,j) );
store( v_+i+j*mm_+IT::size*2UL, load( v_+i+j*mm_+IT::size*2UL ) - (~rhs).load(i+IT::size*2UL,j) );
store( v_+i+j*mm_+IT::size*3UL, load( v_+i+j*mm_+IT::size*3UL ) - (~rhs).load(i+IT::size*3UL,j) );
}
for( size_t i=iend; i<m_; i+=IT::size ) {
store( &v_[i+j*mm_], load( &v_[i+j*mm_] ) - (~rhs).load(i,j) );
store( v_+i+j*mm_, load( v_+i+j*mm_ ) - (~rhs).load(i,j) );
}
}
}
Expand Down
10 changes: 5 additions & 5 deletions blaze/math/dense/DynamicVector.h
Original file line number Diff line number Diff line change
Expand Up @@ -1312,7 +1312,7 @@ inline typename DynamicVector<Type,TF>::IntrinsicType
BLAZE_INTERNAL_ASSERT( index + IT::size <= capacity_, "Invalid vector access index" );
BLAZE_INTERNAL_ASSERT( index % IT::size == 0UL , "Invalid vector access index" );

return load( &v_[index] );
return load( v_+index );
}
//*************************************************************************************************

Expand Down Expand Up @@ -1342,7 +1342,7 @@ inline typename DynamicVector<Type,TF>::IntrinsicType
BLAZE_INTERNAL_ASSERT( index < size_ , "Invalid vector access index" );
BLAZE_INTERNAL_ASSERT( index + IT::size <= capacity_, "Invalid vector access index" );

return loadu( &v_[index] );
return loadu( v_+index );
}
//*************************************************************************************************

Expand Down Expand Up @@ -1373,7 +1373,7 @@ inline void DynamicVector<Type,TF>::store( size_t index, const IntrinsicType& va
BLAZE_INTERNAL_ASSERT( index + IT::size <= capacity_, "Invalid vector access index" );
BLAZE_INTERNAL_ASSERT( index % IT::size == 0UL , "Invalid vector access index" );

store( &v_[index], value );
store( v_+index, value );
}
//*************************************************************************************************

Expand Down Expand Up @@ -1403,7 +1403,7 @@ inline void DynamicVector<Type,TF>::storeu( size_t index, const IntrinsicType& v
BLAZE_INTERNAL_ASSERT( index < size_ , "Invalid vector access index" );
BLAZE_INTERNAL_ASSERT( index + IT::size <= capacity_, "Invalid vector access index" );

storeu( &v_[index], value );
storeu( v_+index, value );
}
//*************************************************************************************************

Expand Down Expand Up @@ -1434,7 +1434,7 @@ inline void DynamicVector<Type,TF>::stream( size_t index, const IntrinsicType& v
BLAZE_INTERNAL_ASSERT( index + IT::size <= capacity_, "Invalid vector access index" );
BLAZE_INTERNAL_ASSERT( index % IT::size == 0UL , "Invalid vector access index" );

stream( &v_[index], value );
stream( v_+index, value );
}
//*************************************************************************************************

Expand Down

0 comments on commit 39abfe2

Please sign in to comment.