mirror of https://github.com/status-im/leopard.git
Fixes
This commit is contained in:
parent
2e1007c4aa
commit
d0a3aa287d
|
@ -159,7 +159,7 @@
|
|||
#define LEO_SCHEDULE_OPT
|
||||
|
||||
// Avoid calculating final FFT values in decoder using bitfield
|
||||
//#define LEO_ERROR_BITFIELD_OPT
|
||||
#define LEO_ERROR_BITFIELD_OPT
|
||||
|
||||
// Optimize M=1 case
|
||||
#define LEO_M1_OPT
|
||||
|
|
|
@ -1213,11 +1213,11 @@ class ErrorBitfield
|
|||
static const unsigned kWords = kOrder / 64;
|
||||
uint64_t Words[kWordMips][kWords] = {};
|
||||
|
||||
static const unsigned kBigMips = 5;
|
||||
static const unsigned kBigMips = 6;
|
||||
static const unsigned kBigWords = (kWords + 63) / 64;
|
||||
uint64_t BigWords[kBigMips][kBigWords] = {};
|
||||
|
||||
static const unsigned kBiggestMips = 5;
|
||||
static const unsigned kBiggestMips = 4;
|
||||
uint64_t BiggestWords[kBiggestMips] = {};
|
||||
|
||||
public:
|
||||
|
@ -1232,10 +1232,10 @@ public:
|
|||
{
|
||||
if (mip_level >= 16)
|
||||
return true;
|
||||
if (mip_level >= 11)
|
||||
if (mip_level >= 12)
|
||||
{
|
||||
bit /= 4096;
|
||||
return 0 != (BiggestWords[mip_level - 11] & ((uint64_t)1 << bit));
|
||||
return 0 != (BiggestWords[mip_level - 12] & ((uint64_t)1 << bit));
|
||||
}
|
||||
if (mip_level >= 6)
|
||||
{
|
||||
|
@ -1276,7 +1276,7 @@ void ErrorBitfield::Prepare()
|
|||
{
|
||||
uint64_t w_i = 0;
|
||||
uint64_t bit = 1;
|
||||
const uint64_t* src = &Words[4][i * 64];
|
||||
const uint64_t* src = &Words[kWordMips - 1][i * 64];
|
||||
for (unsigned j = 0; j < 64; ++j, bit <<= 1)
|
||||
{
|
||||
const uint64_t w = src[j];
|
||||
|
@ -1294,9 +1294,10 @@ void ErrorBitfield::Prepare()
|
|||
|
||||
uint64_t w_i = 0;
|
||||
uint64_t bit = 1;
|
||||
const uint64_t* src = &BigWords[kBigMips - 1][0];
|
||||
for (unsigned j = 0; j < kBigWords; ++j, bit <<= 1)
|
||||
{
|
||||
const uint64_t w = BigWords[kBigMips - 1][j];
|
||||
const uint64_t w = src[j];
|
||||
w_i |= (w | (w >> 32) | (w << 32)) & bit;
|
||||
}
|
||||
BiggestWords[0] = w_i;
|
||||
|
|
|
@ -48,7 +48,7 @@ struct TestParameters
|
|||
unsigned original_count = 128; // under 65536
|
||||
unsigned recovery_count = 128; // under 65536 - original_count
|
||||
#endif
|
||||
unsigned buffer_bytes = 640; // multiple of 64 bytes
|
||||
unsigned buffer_bytes = 2560; // multiple of 64 bytes
|
||||
unsigned loss_count = 2; // some fraction of original_count
|
||||
unsigned seed = 2;
|
||||
bool multithreaded = true;
|
||||
|
@ -399,7 +399,7 @@ static LEO_FORCE_INLINE void SIMDSafeFree(void* ptr)
|
|||
|
||||
static bool BasicTest(const TestParameters& params)
|
||||
{
|
||||
static const unsigned kTrials = 10;
|
||||
const unsigned kTrials = params.original_count > 8000 ? 1 : 10;
|
||||
|
||||
std::vector<uint8_t*> original_data(params.original_count);
|
||||
|
||||
|
@ -807,7 +807,7 @@ int main(int argc, char **argv)
|
|||
if (!BasicTest(params))
|
||||
goto Failed;
|
||||
|
||||
prng.Seed(params.seed, 7);
|
||||
prng.Seed(params.seed, 8);
|
||||
for (;; ++params.seed)
|
||||
{
|
||||
params.original_count = prng.Next() % 32768;
|
||||
|
|
Loading…
Reference in New Issue