Renamed toposort.h to utils.h
authorClifford Wolf <clifford@clifford.at>
Sat, 16 Aug 2014 22:55:35 +0000 (00:55 +0200)
committerClifford Wolf <clifford@clifford.at>
Sat, 16 Aug 2014 22:55:35 +0000 (00:55 +0200)
kernel/toposort.h [deleted file]
kernel/utils.h [new file with mode: 0644]
passes/opt/opt_const.cc
passes/techmap/techmap.cc

diff --git a/kernel/toposort.h b/kernel/toposort.h
deleted file mode 100644 (file)
index 4226e27..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- *  yosys -- Yosys Open SYnthesis Suite
- *
- *  Copyright (C) 2012  Clifford Wolf <clifford@clifford.at>
- *  
- *  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 TOPOSORT_H
-#define TOPOSORT_H
-
-template<typename T>
-struct TopoSort
-{
-       bool analyze_loops, found_loops;
-       std::map<T, std::set<T>> database;
-       std::set<std::set<T>> loops;
-       std::vector<T> sorted;
-
-       TopoSort()
-       {
-               analyze_loops = true;
-               found_loops = false;
-       }
-
-       void node(T n)
-       {
-               if (database.count(n) == 0)
-                       database[n] = std::set<T>();
-       }
-
-       void edge(T left, T right)
-       {
-               node(left);
-               database[right].insert(left);
-       }
-
-       void sort_worker(const T &n, std::set<T> &marked_cells, std::set<T> &active_cells, std::vector<T> &active_stack)
-       {
-               if (active_cells.count(n)) {
-                       found_loops = false;
-                       if (analyze_loops) {
-                               std::set<T> loop;
-                               for (int i = SIZE(active_stack)-1; i >= 0; i--) {
-                                       loop.insert(active_stack[i]);
-                                       if (active_stack[i] == n)
-                                               break;
-                               }
-                               loops.insert(loop);
-                       }
-                       return;
-               }
-
-               if (marked_cells.count(n))
-                       return;
-
-               if (!database.at(n).empty())
-               {
-                       if (analyze_loops)
-                               active_stack.push_back(n);
-                       active_cells.insert(n);
-
-                       for (auto &left_n : database.at(n))
-                               sort_worker(left_n, marked_cells, active_cells, active_stack);
-
-                       if (analyze_loops)
-                               active_stack.pop_back();
-                       active_cells.erase(n);
-               }
-               
-               marked_cells.insert(n);
-               sorted.push_back(n);
-       }
-
-       bool sort()
-       {
-               loops.clear();
-               sorted.clear();
-               found_loops = false;
-
-               std::set<T> marked_cells;
-               std::set<T> active_cells;
-               std::vector<T> active_stack;
-
-               for (auto &it : database)
-                       sort_worker(it.first, marked_cells, active_cells, active_stack);
-
-               log_assert(SIZE(sorted) == SIZE(database));
-               return !found_loops;
-       }
-};
-
-#endif
diff --git a/kernel/utils.h b/kernel/utils.h
new file mode 100644 (file)
index 0000000..4226e27
--- /dev/null
@@ -0,0 +1,104 @@
+/*
+ *  yosys -- Yosys Open SYnthesis Suite
+ *
+ *  Copyright (C) 2012  Clifford Wolf <clifford@clifford.at>
+ *  
+ *  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 TOPOSORT_H
+#define TOPOSORT_H
+
+template<typename T>
+struct TopoSort
+{
+       bool analyze_loops, found_loops;
+       std::map<T, std::set<T>> database;
+       std::set<std::set<T>> loops;
+       std::vector<T> sorted;
+
+       TopoSort()
+       {
+               analyze_loops = true;
+               found_loops = false;
+       }
+
+       void node(T n)
+       {
+               if (database.count(n) == 0)
+                       database[n] = std::set<T>();
+       }
+
+       void edge(T left, T right)
+       {
+               node(left);
+               database[right].insert(left);
+       }
+
+       void sort_worker(const T &n, std::set<T> &marked_cells, std::set<T> &active_cells, std::vector<T> &active_stack)
+       {
+               if (active_cells.count(n)) {
+                       found_loops = false;
+                       if (analyze_loops) {
+                               std::set<T> loop;
+                               for (int i = SIZE(active_stack)-1; i >= 0; i--) {
+                                       loop.insert(active_stack[i]);
+                                       if (active_stack[i] == n)
+                                               break;
+                               }
+                               loops.insert(loop);
+                       }
+                       return;
+               }
+
+               if (marked_cells.count(n))
+                       return;
+
+               if (!database.at(n).empty())
+               {
+                       if (analyze_loops)
+                               active_stack.push_back(n);
+                       active_cells.insert(n);
+
+                       for (auto &left_n : database.at(n))
+                               sort_worker(left_n, marked_cells, active_cells, active_stack);
+
+                       if (analyze_loops)
+                               active_stack.pop_back();
+                       active_cells.erase(n);
+               }
+               
+               marked_cells.insert(n);
+               sorted.push_back(n);
+       }
+
+       bool sort()
+       {
+               loops.clear();
+               sorted.clear();
+               found_loops = false;
+
+               std::set<T> marked_cells;
+               std::set<T> active_cells;
+               std::vector<T> active_stack;
+
+               for (auto &it : database)
+                       sort_worker(it.first, marked_cells, active_cells, active_stack);
+
+               log_assert(SIZE(sorted) == SIZE(database));
+               return !found_loops;
+       }
+};
+
+#endif
index 9af1e6bdfd4a6ea0f7db69aabddffac3b0d34680..58a7f7dfd84a46881f612faef6a2bb0eb6e95fd2 100644 (file)
@@ -21,7 +21,7 @@
 #include "kernel/register.h"
 #include "kernel/sigtools.h"
 #include "kernel/celltypes.h"
-#include "kernel/toposort.h"
+#include "kernel/utils.h"
 #include "kernel/log.h"
 #include <stdlib.h>
 #include <stdio.h>
index 59173393cb7faf562894afbcabe63e1306532d02..d9d8ddd6a9f0c614245ee5ac59aeb1b496304ae5 100644 (file)
@@ -18,7 +18,7 @@
  */
 
 #include "kernel/yosys.h"
-#include "kernel/toposort.h"
+#include "kernel/utils.h"
 #include "kernel/sigtools.h"
 #include "libs/sha1/sha1.h"