Sponsored Content
Full Discussion: Vectorization
Special Forums UNIX and Linux Applications High Performance Computing Vectorization Post 302895149 by a3mlord on Friday 28th of March 2014 05:03:17 PM
Old 03-28-2014
Signal Vectorization

Hi,

I have the following vectorized code:
Code:
long valor = 0, i=0;

 __m128i vsum, vecPi, vecCi, vecQCi;

 vsum = _mm_set1_epi32(0);

 int32_t * const pA = A->data;
 int32_t * const pB = B->data;

 int sumDot[1];

 for( ; i<SIZE-3 ;i+=4){

 vecPi = _mm_loadu_si128((__m128i *)&(pA)[i] );
 vecCi = _mm_loadu_si128((__m128i *)&(pB)[i] );
 vecQCi = _mm_mullo_epi32(vecPi,vecCi);
 vsum = _mm_add_epi32(vsum,vecQCi);

 } 
 vsum = _mm_hadd_epi32(vsum, vsum);
 vsum = _mm_hadd_epi32(vsum, vsum);
 _mm_storeu_si128((__m128i *)&(sumDot), vsum);

 for( ; i<SIZE; i++)
 valor += A->data[i] * B->data[i];   valor += sumDot[0];

However, as I get overflows, I need to handle those cases. Could you please help me with that?

Thanks

Last edited by bartus11; 03-28-2014 at 06:06 PM.. Reason: Please use [code][/code] tags.
 
SbVec3i32(3)							       Coin							      SbVec3i32(3)

NAME
SbVec3i32 - SYNOPSIS
#include <Inventor/SbVec3i32.h> Public Member Functions SbVec3i32 (const int32_t v[3]) SbVec3i32 (int32_t x, int32_t y, int32_t z) SbVec3i32 (const SbVec3ui32 &v) SbVec3i32 (const SbVec3b &v) SbVec3i32 (const SbVec3s &v) SbVec3i32 (const SbVec3f &v) SbVec3i32 (const SbVec3d &v) SbVec3i32 & setValue (const int32_t v[3]) SbVec3i32 & setValue (int32_t x, int32_t y, int32_t z) SbVec3i32 & setValue (const SbVec3ui32 &v) SbVec3i32 & setValue (const SbVec3b &v) SbVec3i32 & setValue (const SbVec3s &v) SbVec3i32 & setValue (const SbVec3f &v) SbVec3i32 & setValue (const SbVec3d &v) const int32_t * getValue (void) const void getValue (int32_t &x, int32_t &y, int32_t &z) const int32_t & operator[] (int i) const int32_t & operator[] (int i) const int32_t dot (const SbVec3i32 &v) const void negate (void) SbVec3i32 & operator*= (int d) SbVec3i32 & operator*= (double d) SbVec3i32 & operator/= (int d) SbVec3i32 & operator/= (double d) SbVec3i32 & operator+= (const SbVec3i32 &v) SbVec3i32 & operator-= (const SbVec3i32 &v) SbVec3i32 operator- (void) const Protected Attributes int32_t vec [3] Detailed Description Since: Coin 2.5 Author Generated automatically by Doxygen for Coin from the source code. Version 3.1.3 Wed May 23 2012 SbVec3i32(3)
All times are GMT -4. The time now is 12:15 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy