Merge pull request #629 from litghost/move_hash_selection_to_header
Moving hash map/set type selection to header.
This commit is contained in:
commit
b8678e778e
48
common/hash_table.h
Normal file
48
common/hash_table.h
Normal file
@ -0,0 +1,48 @@
|
||||
/*
|
||||
* nextpnr -- Next Generation Place and Route
|
||||
*
|
||||
* Copyright (C) 2021 Symbiflow Authors
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef HASH_TABLE_H
|
||||
#define HASH_TABLE_H
|
||||
|
||||
#if defined(NPNR_DISABLE_THREADS)
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
#else
|
||||
#include <absl/container/flat_hash_map.h>
|
||||
#include <absl/container/flat_hash_set.h>
|
||||
#endif
|
||||
|
||||
#include "nextpnr_namespaces.h"
|
||||
|
||||
NEXTPNR_NAMESPACE_BEGIN
|
||||
|
||||
namespace HashTables {
|
||||
#if defined(NPNR_DISABLE_THREADS)
|
||||
template <typename Key, typename Value> using HashMap = std::unordered_map<Key, Value>;
|
||||
template <typename Value> using HashSet = std::unordered_set<Value>;
|
||||
#else
|
||||
template <typename Key, typename Value> using HashMap = absl::flat_hash_map<Key, Value>;
|
||||
template <typename Value> using HashSet = absl::flat_hash_set<Value>;
|
||||
#endif
|
||||
|
||||
}; // namespace HashTables
|
||||
|
||||
NEXTPNR_NAMESPACE_END
|
||||
|
||||
#endif /* HASH_TABLE_H */
|
@ -27,15 +27,15 @@
|
||||
*/
|
||||
|
||||
#include "router2.h"
|
||||
#if !defined(NPNR_DISABLE_THREADS)
|
||||
#include <absl/container/flat_hash_map.h>
|
||||
#endif
|
||||
|
||||
#include <algorithm>
|
||||
#include <boost/container/flat_map.hpp>
|
||||
#include <chrono>
|
||||
#include <deque>
|
||||
#include <fstream>
|
||||
#include <queue>
|
||||
|
||||
#include "hash_table.h"
|
||||
#include "log.h"
|
||||
#include "nextpnr.h"
|
||||
#include "router1.h"
|
||||
@ -193,11 +193,7 @@ struct Router2
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(NPNR_DISABLE_THREADS)
|
||||
std::unordered_map<WireId, int> wire_to_idx;
|
||||
#else
|
||||
absl::flat_hash_map<WireId, int> wire_to_idx;
|
||||
#endif
|
||||
HashTables::HashMap<WireId, int> wire_to_idx;
|
||||
std::vector<PerWireData> flat_wires;
|
||||
|
||||
PerWireData &wire_data(WireId w) { return flat_wires[wire_to_idx.at(w)]; }
|
||||
|
Loading…
Reference in New Issue
Block a user