Skip to content

Commit

Permalink
[elbrus] Porting to e2k-v4 arch.
Browse files Browse the repository at this point in the history
Compiler version: lcc:1.25.10:Nov--7-2020:e2k-v4-linux
  • Loading branch information
tomilov authored and milchakov committed Jan 15, 2021
1 parent 35d0e83 commit 213a7bb
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 18 deletions.
24 changes: 14 additions & 10 deletions openlr/router.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -648,20 +648,22 @@ bool Router::ReconstructPath(std::vector<Edge> & edges, std::vector<routing::Edg

double const kFakeCoverageThreshold = 0.5;

base::EraseIf(edges, std::mem_fn(&Edge::IsSpecial));
base::EraseIf(edges, [](auto && e) { return e.IsSpecial(); });

{
auto toPair = [](auto && e) { return e.ToPair(); };
size_t const n = FindPrefixLengthToConsume(
make_transform_iterator(edges.begin(), std::mem_fn(&Edge::ToPair)),
make_transform_iterator(edges.end(), std::mem_fn(&Edge::ToPair)), m_positiveOffsetM);
make_transform_iterator(edges.begin(), toPair),
make_transform_iterator(edges.end(), toPair), m_positiveOffsetM);
CHECK_LESS_OR_EQUAL(n, edges.size(), ());
edges.erase(edges.begin(), edges.begin() + n);
}

{
auto toPairRev = [](auto && e) { return e.ToPairRev(); };
size_t const n = FindPrefixLengthToConsume(
make_transform_iterator(edges.rbegin(), std::mem_fn(&Edge::ToPairRev)),
make_transform_iterator(edges.rend(), std::mem_fn(&Edge::ToPairRev)), m_negativeOffsetM);
make_transform_iterator(edges.rbegin(), toPairRev),
make_transform_iterator(edges.rend(), toPairRev), m_negativeOffsetM);
CHECK_LESS_OR_EQUAL(n, edges.size(), ());
edges.erase(edges.begin() + edges.size() - n, edges.end());
}
Expand All @@ -671,10 +673,11 @@ bool Router::ReconstructPath(std::vector<Edge> & edges, std::vector<routing::Edg
ForStagePrefix(edges.begin(), edges.end(), 0, [&](EdgeIt e) {
ForEachNonFakeEdge(e->m_u, false /* outgoing */, m_points[0].m_lfrcnp,
[&](routing::Edge const & edge) {
auto toPairRev = [](auto && e) { return e.ToPairRev(); };
double const score = GetMatchingScore(
edge.GetEndJunction().GetPoint(), edge.GetStartJunction().GetPoint(),
make_transform_iterator(EdgeItRev(e), std::mem_fn(&Edge::ToPairRev)),
make_transform_iterator(edges.rend(), std::mem_fn(&Edge::ToPairRev)));
make_transform_iterator(EdgeItRev(e), toPairRev),
make_transform_iterator(edges.rend(), toPairRev));
if (score > frontEdgeScore)
{
frontEdgeScore = score;
Expand All @@ -688,10 +691,11 @@ bool Router::ReconstructPath(std::vector<Edge> & edges, std::vector<routing::Edg
ForStagePrefix(edges.rbegin(), edges.rend(), m_points.size() - 2 /* stage */, [&](EdgeItRev e) {
ForEachNonFakeEdge(e->m_v, true /* outgoing */, m_points[m_points.size() - 2].m_lfrcnp,
[&](routing::Edge const & edge) {
auto toPair = [](auto && e) { return e.ToPair(); };
double const score = GetMatchingScore(
edge.GetStartJunction().GetPoint(), edge.GetEndJunction().GetPoint(),
make_transform_iterator(e.base(), std::mem_fn(&Edge::ToPair)),
make_transform_iterator(edges.end(), std::mem_fn(&Edge::ToPair)));
make_transform_iterator(e.base(), toPair),
make_transform_iterator(edges.end(), toPair));
if (score > backEdgeScore)
{
backEdgeScore = score;
Expand Down Expand Up @@ -727,7 +731,7 @@ void Router::FindSingleEdgeApproximation(std::vector<Edge> const & edges,
{
double const kCoverageThreshold = 0.5;

CHECK(all_of(edges.begin(), edges.end(), std::mem_fn(&Edge::IsFake)), ());
CHECK(all_of(edges.begin(), edges.end(), [](auto && e) { return e.IsFake(); }), ());

double expectedLength = 0;
for (auto const & edge : edges)
Expand Down
8 changes: 4 additions & 4 deletions routing/routing_tests/followed_polyline_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ using namespace routing;

namespace
{
static const m2::PolylineD kTestDirectedPolyline1({{0.0, 0.0}, {3.0, 0.0}, {5.0, 0.0}});
static const m2::PolylineD kTestDirectedPolyline2({{6.0, 0.0}, {7.0, 0.0}});
static const m2::PolylineD kTestDirectedPolyline1(std::vector<m2::PointD>{{0.0, 0.0}, {3.0, 0.0}, {5.0, 0.0}});
static const m2::PolylineD kTestDirectedPolyline2(std::vector<m2::PointD>{{6.0, 0.0}, {7.0, 0.0}});
} // namespace

UNIT_TEST(FollowedPolylineAppend)
Expand Down Expand Up @@ -100,7 +100,7 @@ UNIT_TEST(FollowedPolylineDistanceCalculationTest)

UNIT_TEST(FollowedPolylineDirectionTest)
{
m2::PolylineD testPolyline({{0, 0}, {1.00003, 0}, {1.00003, 1}});
m2::PolylineD testPolyline(std::vector<m2::PointD>{{0, 0}, {1.00003, 0}, {1.00003, 1}});
FollowedPolyline polyline(testPolyline.Begin(), testPolyline.End());
TEST_EQUAL(polyline.GetCurrentIter().m_ind, 0, ());
m2::PointD directionPoint;
Expand All @@ -115,7 +115,7 @@ UNIT_TEST(FollowedPolylineDirectionTest)

UNIT_TEST(FollowedPolylineGetDistanceFromBeginM)
{
m2::PolylineD testPolyline({{0, 0}, {1, 0}, {2, 0}, {3, 0}, {5, 0}, {6, 0}});
m2::PolylineD testPolyline(std::vector<m2::PointD>{{0, 0}, {1, 0}, {2, 0}, {3, 0}, {5, 0}, {6, 0}});
FollowedPolyline polyline(testPolyline.Begin(), testPolyline.End());
m2::PointD point(4, 0);
polyline.UpdateProjection(mercator::RectByCenterXYAndSizeInMeters(point, 2));
Expand Down
8 changes: 4 additions & 4 deletions search/geocoder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1223,7 +1223,7 @@ void Geocoder::GreedilyMatchStreetsWithSuburbs(BaseContext & ctx,
auto & layers = ctx.m_layers;
ASSERT(layers.empty(), ());
layers.emplace_back();
SCOPE_GUARD(cleanupGuard, bind(&vector<FeaturesLayer>::pop_back, &layers));
SCOPE_GUARD(cleanupGuard, [&]{ layers.pop_back(); });

auto & layer = layers.back();
InitLayer(Model::TYPE_SUBURB, suburb.m_tokenRange, layer);
Expand Down Expand Up @@ -1262,7 +1262,7 @@ void Geocoder::CreateStreetsLayerAndMatchLowerLayers(BaseContext & ctx,
auto & layers = ctx.m_layers;

layers.emplace_back();
SCOPE_GUARD(cleanupGuard, bind(&vector<FeaturesLayer>::pop_back, &layers));
SCOPE_GUARD(cleanupGuard, [&]{ layers.pop_back(); });

auto & layer = layers.back();
InitLayer(Model::TYPE_STREET, prediction.m_tokenRange, layer);
Expand Down Expand Up @@ -1353,7 +1353,7 @@ void Geocoder::MatchPOIsAndBuildings(BaseContext & ctx, size_t curToken, CBV con
// Following code creates a fake layer with buildings and
// intersects it with the streets layer.
layers.emplace_back();
SCOPE_GUARD(cleanupGuard, bind(&vector<FeaturesLayer>::pop_back, &layers));
SCOPE_GUARD(cleanupGuard, [&]{ layers.pop_back(); });

auto & layer = layers.back();
InitLayer(Model::TYPE_BUILDING, m_postcodes.m_tokenRange, layer);
Expand All @@ -1367,7 +1367,7 @@ void Geocoder::MatchPOIsAndBuildings(BaseContext & ctx, size_t curToken, CBV con
}

layers.emplace_back();
SCOPE_GUARD(cleanupGuard, bind(&vector<FeaturesLayer>::pop_back, &layers));
SCOPE_GUARD(cleanupGuard, [&]{ layers.pop_back(); });

// Clusters of features by search type. Each cluster is a sorted
// list of ids.
Expand Down

0 comments on commit 213a7bb

Please sign in to comment.