Instead of adding an isSS field to LiveInterval to denote stack slot. Use top bit...
[oota-llvm.git] / tools / llvmc2 / Common.td
index 32e0180f8b86717f7e4394d2f6de480fb97931e6..046e19e4448e2db484c88cdb21a53b7c3eb8e6e9 100644 (file)
@@ -1,4 +1,4 @@
-//===- Tools.td - Common definitions for LLVMCC  -----------*- tablegen -*-===//
+//===- Common.td - Common definitions for LLVMCC  ----------*- tablegen -*-===//
 //
 //                     The LLVM Compiler Infrastructure
 //
@@ -15,7 +15,7 @@ class Tool<list<dag> l> {
       list<dag> properties = l;
 }
 
-// Special Tool instance - graph root.
+// Special Tool instance - the root node of the compilation graph.
 
 def root : Tool<[]>;
 
@@ -30,6 +30,7 @@ def sink;
 
 // Possible option types
 
+def alias_option;
 def switch_option;
 def parameter_option;
 def parameter_list_option;
@@ -45,18 +46,34 @@ def unpack_values;
 def help;
 def required;
 
-// Possible edge properties
+// Empty DAG marker.
+def empty;
 
+// The 'case' construct.
+def case;
+
+// Primitive tests.
 def switch_on;
 def parameter_equals;
 def element_in_list;
-def if_input_languages_contain;
+def input_languages_contain;
+def not_empty;
+// TOTHINK: remove?
+def default;
 
-// Edge property combinators.
-def weight;
+// Boolean operators.
 def and;
 def or;
 
+// Increase/decrease the edge weight.
+def inc_weight;
+def dec_weight;
+
+// Option list - used to specify aliases and sometimes help strings.
+class OptionList<list<dag> l> {
+      list<dag> options = l;
+}
+
 // Map from suffixes to language names
 
 class LangToSuffixes<string str, list<string> lst> {
@@ -70,19 +87,19 @@ class LanguageMap<list<LangToSuffixes> lst> {
 
 // Compilation graph
 
-class EdgeBase<Tool t1, Tool t2, list<dag> lst> {
+class EdgeBase<Tool t1, Tool t2, dag d> {
       Tool a = t1;
       Tool b = t2;
-      list<dag> props = lst;
+      dag weight = d;
 }
 
-class Edge<Tool t1, Tool t2> : EdgeBase<t1, t2, []>;
+class Edge<Tool t1, Tool t2> : EdgeBase<t1, t2, (empty)>;
 
 // Edge and SimpleEdge are synonyms.
-class SimpleEdge<Tool t1, Tool t2> : EdgeBase<t1, t2, []>;
+class SimpleEdge<Tool t1, Tool t2> : EdgeBase<t1, t2, (empty)>;
 
 // Optionally enabled edge.
-class OptionalEdge<Tool t1, Tool t2, list<dag> lst> : EdgeBase<t1, t2, lst>;
+class OptionalEdge<Tool t1, Tool t2, dag props> : EdgeBase<t1, t2, props>;
 
 class CompilationGraph<list<EdgeBase> lst> {
       list<EdgeBase> edges = lst;