Fixes Immediate crash with 4.0.11.52 on WXP32, Issue 1982
This commit is contained in:
@@ -81,7 +81,7 @@ private:
|
|||||||
unsigned int maxs;
|
unsigned int maxs;
|
||||||
T * data;
|
T * data;
|
||||||
unsigned int clip, size, owner;
|
unsigned int clip, size, owner;
|
||||||
#ifdef __SSE2__
|
#if defined( __SSE2__ ) && ((defined( WIN32 ) && defined( __x86_64__ )) || !defined( WIN32 ))
|
||||||
__m128 maxsv __attribute__ ((aligned (16)));
|
__m128 maxsv __attribute__ ((aligned (16)));
|
||||||
__m128 sizev __attribute__ ((aligned (16)));
|
__m128 sizev __attribute__ ((aligned (16)));
|
||||||
__m128i maxsiv __attribute__ ((aligned (16)));
|
__m128i maxsiv __attribute__ ((aligned (16)));
|
||||||
@@ -94,7 +94,7 @@ public:
|
|||||||
owner = 1;
|
owner = 1;
|
||||||
size = s;
|
size = s;
|
||||||
maxs=size-2;
|
maxs=size-2;
|
||||||
#ifdef __SSE2__
|
#if defined( __SSE2__ ) && ((defined( WIN32 ) && defined( __x86_64__ )) || !defined( WIN32 ))
|
||||||
maxsv = _mm_set1_ps( maxs );
|
maxsv = _mm_set1_ps( maxs );
|
||||||
maxsiv = _mm_cvttps_epi32( maxsv );
|
maxsiv = _mm_cvttps_epi32( maxsv );
|
||||||
sizeiv = _mm_set1_epi32( (int)(size-1) );
|
sizeiv = _mm_set1_epi32( (int)(size-1) );
|
||||||
@@ -109,7 +109,7 @@ public:
|
|||||||
owner = 1;
|
owner = 1;
|
||||||
size = s;
|
size = s;
|
||||||
maxs=size-2;
|
maxs=size-2;
|
||||||
#ifdef __SSE2__
|
#if defined( __SSE2__ ) && ((defined( WIN32 ) && defined( __x86_64__ )) || !defined( WIN32 ))
|
||||||
maxsv = _mm_set1_ps( maxs );
|
maxsv = _mm_set1_ps( maxs );
|
||||||
maxsiv = _mm_cvttps_epi32( maxsv );
|
maxsiv = _mm_cvttps_epi32( maxsv );
|
||||||
sizeiv = _mm_set1_epi32( (int)(size-1) );
|
sizeiv = _mm_set1_epi32( (int)(size-1) );
|
||||||
@@ -123,7 +123,7 @@ public:
|
|||||||
owner = 1;
|
owner = 1;
|
||||||
size = s;
|
size = s;
|
||||||
maxs=size-2;
|
maxs=size-2;
|
||||||
#ifdef __SSE2__
|
#if defined( __SSE2__ ) && ((defined( WIN32 ) && defined( __x86_64__ )) || !defined( WIN32 ))
|
||||||
maxsv = _mm_set1_ps( size - 2);
|
maxsv = _mm_set1_ps( size - 2);
|
||||||
maxsiv = _mm_cvttps_epi32( maxsv );
|
maxsiv = _mm_cvttps_epi32( maxsv );
|
||||||
sizeiv = _mm_set1_epi32( (int)(size-1) );
|
sizeiv = _mm_set1_epi32( (int)(size-1) );
|
||||||
@@ -161,7 +161,7 @@ public:
|
|||||||
memcpy(this->data,rhs.data,rhs.size*sizeof(T));
|
memcpy(this->data,rhs.data,rhs.size*sizeof(T));
|
||||||
this->size=rhs.size;
|
this->size=rhs.size;
|
||||||
this->maxs=this->size-2;
|
this->maxs=this->size-2;
|
||||||
#ifdef __SSE2__
|
#if defined( __SSE2__ ) && ((defined( WIN32 ) && defined( __x86_64__ )) || !defined( WIN32 ))
|
||||||
this->maxsv = _mm_set1_ps( this->size - 2);
|
this->maxsv = _mm_set1_ps( this->size - 2);
|
||||||
this->maxsiv = _mm_cvttps_epi32( this->maxsv );
|
this->maxsiv = _mm_cvttps_epi32( this->maxsv );
|
||||||
this->sizeiv = _mm_set1_epi32( (int)(this->size-1) );
|
this->sizeiv = _mm_set1_epi32( (int)(this->size-1) );
|
||||||
@@ -184,7 +184,7 @@ public:
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __SSE2__
|
#if defined( __SSE2__ ) && ((defined( WIN32 ) && defined( __x86_64__ )) || !defined( WIN32 ))
|
||||||
__m128 operator[](__m128 indexv ) const {
|
__m128 operator[](__m128 indexv ) const {
|
||||||
printf("don't use this operator. It's not ready for production");
|
printf("don't use this operator. It's not ready for production");
|
||||||
return _mm_setzero_ps();
|
return _mm_setzero_ps();
|
||||||
@@ -249,7 +249,7 @@ public:
|
|||||||
return resultv ;
|
return resultv ;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined( __SSE2__ ) && defined( WIN32 )
|
#if defined( __SSE2__ ) && ((defined( WIN32 ) && defined( __x86_64__ )) || !defined( WIN32 ))
|
||||||
__attribute__((force_align_arg_pointer)) __m128 operator[](__m128i idxv ) const
|
__attribute__((force_align_arg_pointer)) __m128 operator[](__m128i idxv ) const
|
||||||
#else
|
#else
|
||||||
__m128 operator[](__m128i idxv ) const
|
__m128 operator[](__m128i idxv ) const
|
||||||
|
@@ -192,7 +192,7 @@ void SHMap::dirpyr_shmap(float ** data_fine, float ** data_coarse, int width, in
|
|||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#ifdef __SSE2__
|
#if defined( __SSE2__ ) && ((defined( WIN32 ) && defined( __x86_64__ )) || !defined( WIN32 ))
|
||||||
__m128 dirwtv, valv, normv;
|
__m128 dirwtv, valv, normv;
|
||||||
#endif // __SSE2__
|
#endif // __SSE2__
|
||||||
int j;
|
int j;
|
||||||
@@ -215,7 +215,7 @@ void SHMap::dirpyr_shmap(float ** data_fine, float ** data_coarse, int width, in
|
|||||||
}
|
}
|
||||||
data_coarse[i][j] = val/norm; // low pass filter
|
data_coarse[i][j] = val/norm; // low pass filter
|
||||||
}
|
}
|
||||||
#ifdef __SSE2__
|
#if defined( __SSE2__ ) && ((defined( WIN32 ) && defined( __x86_64__ )) || !defined( WIN32 ))
|
||||||
for(; j < (width-scalewin)-3; j+=4)
|
for(; j < (width-scalewin)-3; j+=4)
|
||||||
{
|
{
|
||||||
valv= _mm_setzero_ps();
|
valv= _mm_setzero_ps();
|
||||||
@@ -288,7 +288,7 @@ else {
|
|||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#ifdef __SSE2__
|
#if defined( __SSE2__ ) && ((defined( WIN32 ) && defined( __x86_64__ )) || !defined( WIN32 ))
|
||||||
__m128 dirwtv, valv, normv;
|
__m128 dirwtv, valv, normv;
|
||||||
float domkerv[5][5][4] __attribute__ ((aligned (16))) = {{{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}},{{1,1,1,1},{2,2,2,2},{2,2,2,2},{2,2,2,2},{1,1,1,1}},{{1,1,1,1},{2,2,2,2},{2,2,2,2},{2,2,2,2},{1,1,1,1}},{{1,1,1,1},{2,2,2,2},{2,2,2,2},{2,2,2,2},{1,1,1,1}},{{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}}};
|
float domkerv[5][5][4] __attribute__ ((aligned (16))) = {{{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}},{{1,1,1,1},{2,2,2,2},{2,2,2,2},{2,2,2,2},{1,1,1,1}},{{1,1,1,1},{2,2,2,2},{2,2,2,2},{2,2,2,2},{1,1,1,1}},{{1,1,1,1},{2,2,2,2},{2,2,2,2},{2,2,2,2},{1,1,1,1}},{{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}}};
|
||||||
|
|
||||||
@@ -313,7 +313,7 @@ else {
|
|||||||
}
|
}
|
||||||
data_coarse[i][j] = val/norm; // low pass filter
|
data_coarse[i][j] = val/norm; // low pass filter
|
||||||
}
|
}
|
||||||
#ifdef __SSE2__
|
#if defined( __SSE2__ ) && ((defined( WIN32 ) && defined( __x86_64__ )) || !defined( WIN32 ))
|
||||||
for(; j < width-scalewin-3; j+=4)
|
for(; j < width-scalewin-3; j+=4)
|
||||||
{
|
{
|
||||||
valv = _mm_setzero_ps();
|
valv = _mm_setzero_ps();
|
||||||
|
Reference in New Issue
Block a user