Skip to content

Commit

Permalink
give alg.update() a pointer to update
Browse files Browse the repository at this point in the history
  • Loading branch information
xdsopl committed Dec 1, 2018
1 parent 571dc72 commit 32be32d
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 39 deletions.
20 changes: 10 additions & 10 deletions algorithms.hh
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ template <typename VALUE, int WIDTH>
struct SelfCorrectedUpdate<SIMD<VALUE, WIDTH>>
{
typedef SIMD<VALUE, WIDTH> TYPE;
static TYPE update(TYPE a, TYPE b)
static void update(TYPE *a, TYPE b)
{
return vreinterpret<TYPE>(vand(vmask(b), vorr(vceqz(a), veor(vcgtz(a), vcltz(b)))));
*a = vreinterpret<TYPE>(vand(vmask(b), vorr(vceqz(*a), veor(vcgtz(*a), vcltz(b)))));
}
};

Expand Down Expand Up @@ -65,9 +65,9 @@ struct MinSumAlgorithm<SIMD<VALUE, WIDTH>, UPDATE>
return true;
return false;
}
static TYPE update(TYPE a, TYPE b)
static void update(TYPE *a, TYPE b)
{
return UPDATE::update(a, b);
UPDATE::update(a, b);
}
};

Expand Down Expand Up @@ -123,9 +123,9 @@ struct MinSumAlgorithm<SIMD<int8_t, WIDTH>, UPDATE>
return true;
return false;
}
static TYPE update(TYPE a, TYPE b)
static void update(TYPE *a, TYPE b)
{
return UPDATE::update(a, b);
UPDATE::update(a, b);
}
};

Expand Down Expand Up @@ -184,9 +184,9 @@ struct MinSumCAlgorithm<SIMD<VALUE, WIDTH>, UPDATE, FACTOR>
return true;
return false;
}
static TYPE update(TYPE a, TYPE b)
static void update(TYPE *a, TYPE b)
{
return UPDATE::update(a, b);
UPDATE::update(a, b);
}
};

Expand Down Expand Up @@ -246,9 +246,9 @@ struct MinSumCAlgorithm<SIMD<int8_t, WIDTH>, UPDATE, FACTOR>
return true;
return false;
}
static TYPE update(TYPE a, TYPE b)
static void update(TYPE *a, TYPE b)
{
return UPDATE::update(a, b);
UPDATE::update(a, b);
}
};

Expand Down
14 changes: 7 additions & 7 deletions decoder.hh
Original file line number Diff line number Diff line change
Expand Up @@ -70,17 +70,17 @@ class LDPCDecoder
{
TYPE *bl = bnl;
bnv[0] = alg.add(parity[0], alg.add(cnl[0], cnl[CNL]));
*bl = alg.update(*bl, alg.add(parity[0], cnl[CNL])); ++bl;
*bl = alg.update(*bl, alg.add(parity[0], cnl[0])); ++bl;
alg.update(bl++, alg.add(parity[0], cnl[CNL]));
alg.update(bl++, alg.add(parity[0], cnl[0]));
cnc[0] = 1;
for (int i = 1; i < R-1; ++i) {
bnv[i] = alg.add(parity[i], alg.add(cnl[CNL*i+1], cnl[CNL*(i+1)]));
*bl = alg.update(*bl, alg.add(parity[i], cnl[CNL*(i+1)])); ++bl;
*bl = alg.update(*bl, alg.add(parity[i], cnl[CNL*i+1])); ++bl;
alg.update(bl++, alg.add(parity[i], cnl[CNL*(i+1)]));
alg.update(bl++, alg.add(parity[i], cnl[CNL*i+1]));
cnc[i] = 2;
}
bnv[R-1] = alg.add(parity[R-1], cnl[CNL*(R-1)+1]);
*bl = alg.update(*bl, parity[R-1]); ++bl;
alg.update(bl++, parity[R-1]);
cnc[R-1] = 2;
ldpc->first_bit();
for (int j = 0; j < K; ++j) {
Expand All @@ -94,8 +94,8 @@ class LDPCDecoder
TYPE out[bit_deg];
CODE::exclusive_reduce(inp, out, bit_deg, alg.add);
bnv[j+R] = alg.add(data[j], alg.add(out[0], inp[0]));
for (int n = 0; n < bit_deg; ++n, ++bl)
*bl = alg.update(*bl, alg.add(data[j], out[n]));
for (int n = 0; n < bit_deg; ++n)
alg.update(bl++, alg.add(data[j], out[n]));
ldpc->next_bit();
}
}
Expand Down
44 changes: 22 additions & 22 deletions generic.hh
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,18 @@ Copyright 2018 Ahmet Inan <[email protected]>
template <typename TYPE>
struct NormalUpdate
{
static TYPE update(TYPE, TYPE v)
static void update(TYPE *a, TYPE b)
{
return v;
*a = b;
}
};

template <typename TYPE>
struct SelfCorrectedUpdate
{
static TYPE update(TYPE a, TYPE b)
static void update(TYPE *a, TYPE b)
{
return (a == TYPE(0) || (a < TYPE(0)) == (b < TYPE(0))) ? b : TYPE(0);
*a = (*a == TYPE(0) || (*a < TYPE(0)) == (b < TYPE(0))) ? b : TYPE(0);
}
};

Expand Down Expand Up @@ -67,9 +67,9 @@ struct MinSumAlgorithm
{
return v <= TYPE(0);
}
static TYPE update(TYPE a, TYPE b)
static void update(TYPE *a, TYPE b)
{
return UPDATE::update(a, b);
UPDATE::update(a, b);
}
};

Expand Down Expand Up @@ -120,9 +120,9 @@ struct MinSumAlgorithm<float, UPDATE>
{
return v <= 0.f;
}
static float update(float a, float b)
static void update(float *a, float b)
{
return UPDATE::update(a, b);
UPDATE::update(a, b);
}
};

Expand Down Expand Up @@ -178,9 +178,9 @@ struct MinSumAlgorithm<int8_t, UPDATE>
{
return v <= 0;
}
static int8_t update(int8_t a, int8_t b)
static void update(int8_t *a, int8_t b)
{
return UPDATE::update(a, b);
UPDATE::update(a, b);
}
};

Expand Down Expand Up @@ -235,9 +235,9 @@ struct MinSumCAlgorithm
{
return v <= TYPE(0);
}
static TYPE update(TYPE a, TYPE b)
static void update(TYPE *a, TYPE b)
{
return UPDATE::update(a, b);
UPDATE::update(a, b);
}
};

Expand Down Expand Up @@ -291,9 +291,9 @@ struct MinSumCAlgorithm<float, UPDATE, FACTOR>
{
return v <= 0.f;
}
static float update(float a, float b)
static void update(float *a, float b)
{
return UPDATE::update(a, b);
UPDATE::update(a, b);
}
};

Expand Down Expand Up @@ -376,9 +376,9 @@ struct MinSumCAlgorithm<int8_t, UPDATE, FACTOR>
{
return v <= 0;
}
static int8_t update(int8_t a, int8_t b)
static void update(int8_t *a, int8_t b)
{
return UPDATE::update(a, b);
UPDATE::update(a, b);
}
};

Expand Down Expand Up @@ -423,9 +423,9 @@ struct LogDomainSPA
{
return v <= TYPE(0);
}
static TYPE update(TYPE a, TYPE b)
static void update(TYPE *a, TYPE b)
{
return UPDATE::update(a, b);
UPDATE::update(a, b);
}
};

Expand Down Expand Up @@ -485,9 +485,9 @@ struct LambdaMinAlgorithm
{
return v <= TYPE(0);
}
static TYPE update(TYPE a, TYPE b)
static void update(TYPE *a, TYPE b)
{
return UPDATE::update(a, b);
UPDATE::update(a, b);
}
};

Expand Down Expand Up @@ -535,9 +535,9 @@ struct SumProductAlgorithm
{
return v <= TYPE(0);
}
static TYPE update(TYPE a, TYPE b)
static void update(TYPE *a, TYPE b)
{
return UPDATE::update(a, b);
UPDATE::update(a, b);
}
};

Expand Down

0 comments on commit 32be32d

Please sign in to comment.