Sort of update the vector test for floating point. Still a lot of cruft in there.
This commit is contained in:
@@ -30,31 +30,24 @@ static void *pStupid;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// The reference values.
|
// The reference values.
|
||||||
static void ScalarWrite( int32_t *pDestBuf, const int16_t *pSrcBuf, unsigned iSize, int iVol )
|
static void ScalarWrite( float *pDestBuf, const float *pSrcBuf, size_t iSize )
|
||||||
{
|
{
|
||||||
for( unsigned iPos = 0; iPos < iSize; ++iPos )
|
for( unsigned iPos = 0; iPos < iSize; ++iPos )
|
||||||
pDestBuf[iPos] += int32_t(pSrcBuf[iPos]) * iVol;
|
pDestBuf[iPos] += pSrcBuf[iPos];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
static void ScalarRead( int16_t *pDestBuf, const int32_t *pSrcBuf, unsigned iSize )
|
static void ScalarRead( int16_t *pDestBuf, const int32_t *pSrcBuf, unsigned iSize )
|
||||||
{
|
{
|
||||||
for( unsigned iPos = 0; iPos < iSize; ++iPos )
|
for( unsigned iPos = 0; iPos < iSize; ++iPos )
|
||||||
pDestBuf[iPos] = max( -32768, min(pSrcBuf[iPos]/256, 32767) );
|
pDestBuf[iPos] = max( -32768, min(pSrcBuf[iPos]/256, 32767) );
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void ScalarRead( float *pDestBuf, const int32_t *pSrcBuf, unsigned iSize )
|
static void RandBuffer( float *pBuffer, unsigned iSize )
|
||||||
{
|
|
||||||
const int iMinimum = -32768 * 256;
|
|
||||||
const int iMaximum = 32767 * 256;
|
|
||||||
for( unsigned iPos = 0; iPos < iSize; ++iPos )
|
|
||||||
pDestBuf[iPos] = SCALE( (float)pSrcBuf[iPos], iMinimum, iMaximum, -1.0f, +1.0f );
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
static void RandBuffer( T *pBuffer, unsigned iSize )
|
|
||||||
{
|
{
|
||||||
while( iSize-- )
|
while( iSize-- )
|
||||||
*pBuffer++ = rand() % 40000;
|
*pBuffer++ = float(rand())/RAND_MAX;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
@@ -94,24 +87,22 @@ static void Diagnostic<float>( const float *pDestBuf, const float *pRefBuf, size
|
|||||||
puts( "" );
|
puts( "" );
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool TestWrite( int16_t *pSrcBuf, int32_t *pDestBuf, int32_t *pRefBuf, size_t iSize )
|
static bool TestWrite( float *pSrcBuf, float *pDestBuf, float *pRefBuf, size_t iSize )
|
||||||
{
|
{
|
||||||
const int iVol = 237;
|
|
||||||
|
|
||||||
RandBuffer( pSrcBuf, iSize );
|
RandBuffer( pSrcBuf, iSize );
|
||||||
memset( pDestBuf, 0, iSize * 4 );
|
memset( pDestBuf, 0, iSize * 4 );
|
||||||
memset( pRefBuf, 0, iSize * 4 );
|
memset( pRefBuf, 0, iSize * 4 );
|
||||||
Vector::FastSoundWrite( pDestBuf, pSrcBuf, iSize, iVol );
|
Vector::FastSoundWrite( pDestBuf, pSrcBuf, iSize );
|
||||||
ScalarWrite( pRefBuf, pSrcBuf, iSize, iVol );
|
ScalarWrite( pRefBuf, pSrcBuf, iSize );
|
||||||
return !memcmp( pRefBuf, pDestBuf, iSize * 4 );
|
return !memcmp( pRefBuf, pDestBuf, iSize * 4 );
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool CheckAlignedWrite()
|
static bool CheckAlignedWrite()
|
||||||
{
|
{
|
||||||
const size_t size = 1024;
|
const size_t size = 1024;
|
||||||
int16_t *pSrcBuf = NEW( int16_t, size );
|
float *pSrcBuf = NEW( float, size );
|
||||||
int32_t *pDestBuf = NEW( int32_t, size );
|
float *pDestBuf = NEW( float, size );
|
||||||
int32_t *pRefBuf = NEW( int32_t, size );
|
float *pRefBuf = NEW( float, size );
|
||||||
bool ret = true;
|
bool ret = true;
|
||||||
size_t s;
|
size_t s;
|
||||||
|
|
||||||
@@ -132,9 +123,9 @@ static bool CheckAlignedWrite()
|
|||||||
static bool CheckMisalignedSrcWrite()
|
static bool CheckMisalignedSrcWrite()
|
||||||
{
|
{
|
||||||
const size_t size = 1024;
|
const size_t size = 1024;
|
||||||
int16_t *pSrcBuf = NEW( int16_t, size );
|
float *pSrcBuf = NEW( float, size );
|
||||||
int32_t *pDestBuf = NEW( int32_t, size );
|
float *pDestBuf = NEW( float, size );
|
||||||
int32_t *pRefBuf = NEW( int32_t, size );
|
float *pRefBuf = NEW( float, size );
|
||||||
bool ret = true;
|
bool ret = true;
|
||||||
|
|
||||||
for( int j = 0; j < 8 && ret; ++j )
|
for( int j = 0; j < 8 && ret; ++j )
|
||||||
@@ -157,9 +148,9 @@ static bool CheckMisalignedSrcWrite()
|
|||||||
static bool CheckMisalignedDestWrite()
|
static bool CheckMisalignedDestWrite()
|
||||||
{
|
{
|
||||||
const size_t size = 1024;
|
const size_t size = 1024;
|
||||||
int16_t *pSrcBuf = NEW( int16_t, size );
|
float *pSrcBuf = NEW( float, size );
|
||||||
int32_t *pDestBuf = NEW( int32_t, size );
|
float *pDestBuf = NEW( float, size );
|
||||||
int32_t *pRefBuf = NEW( int32_t, size );
|
float *pRefBuf = NEW( float, size );
|
||||||
bool ret = true;
|
bool ret = true;
|
||||||
|
|
||||||
for( int j = 0; j < 4 && ret; ++j )
|
for( int j = 0; j < 4 && ret; ++j )
|
||||||
@@ -182,9 +173,9 @@ static bool CheckMisalignedDestWrite()
|
|||||||
static bool CheckMisalignedBothWrite()
|
static bool CheckMisalignedBothWrite()
|
||||||
{
|
{
|
||||||
const size_t size = 1024;
|
const size_t size = 1024;
|
||||||
int16_t *pSrcBuf = NEW( int16_t, size );
|
float *pSrcBuf = NEW( float, size );
|
||||||
int32_t *pDestBuf = NEW( int32_t, size );
|
float *pDestBuf = NEW( float, size );
|
||||||
int32_t *pRefBuf = NEW( int32_t, size );
|
float *pRefBuf = NEW( float, size );
|
||||||
bool ret = true;
|
bool ret = true;
|
||||||
size_t s;
|
size_t s;
|
||||||
|
|
||||||
@@ -221,7 +212,7 @@ static bool cmp( const float *p1, const float *p2, size_t size )
|
|||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
template<typename T>
|
template<typename T>
|
||||||
static bool CheckAlignedRead()
|
static bool CheckAlignedRead()
|
||||||
{
|
{
|
||||||
@@ -282,7 +273,7 @@ static bool CheckMisalignedRead()
|
|||||||
DELETE( pRefBuf );
|
DELETE( pRefBuf );
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
@@ -312,6 +303,7 @@ int main()
|
|||||||
fputs( "Failed misaligned source and destination write.\n", stderr );
|
fputs( "Failed misaligned source and destination write.\n", stderr );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
if( !CheckAlignedRead<int16_t>() )
|
if( !CheckAlignedRead<int16_t>() )
|
||||||
{
|
{
|
||||||
fputs( "Failed aligned read.\n", stderr );
|
fputs( "Failed aligned read.\n", stderr );
|
||||||
@@ -332,6 +324,7 @@ int main()
|
|||||||
fputs( "Failed misaligned float read.\n", stderr );
|
fputs( "Failed misaligned float read.\n", stderr );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
puts( "Passed." );
|
puts( "Passed." );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user