X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=tools%2Fllvmc2%2FCommon.td;h=046e19e4448e2db484c88cdb21a53b7c3eb8e6e9;hb=99ec779a93cf7a09ac336b63d2d67818960343a1;hp=15b9264d88e15fb97818e8cc9af6afa2c4db0591;hpb=ac67b7ea8fcd530995d7aefd2ad0f04543789855;p=oota-llvm.git diff --git a/tools/llvmc2/Common.td b/tools/llvmc2/Common.td index 15b9264d88e..046e19e4448 100644 --- a/tools/llvmc2/Common.td +++ b/tools/llvmc2/Common.td @@ -1,4 +1,4 @@ -//===- Tools.td - Common definitions for LLVMCC -----------*- tablegen -*-===// +//===- Common.td - Common definitions for LLVMCC ----------*- tablegen -*-===// // // The LLVM Compiler Infrastructure // @@ -15,6 +15,10 @@ class Tool l> { list properties = l; } +// Special Tool instance - the root node of the compilation graph. + +def root : Tool<[]>; + // Possible Tool properties def in_language; @@ -26,6 +30,7 @@ def sink; // Possible option types +def alias_option; def switch_option; def parameter_option; def parameter_list_option; @@ -41,6 +46,34 @@ def unpack_values; def help; def required; +// Empty DAG marker. +def empty; + +// The 'case' construct. +def case; + +// Primitive tests. +def switch_on; +def parameter_equals; +def element_in_list; +def input_languages_contain; +def not_empty; +// TOTHINK: remove? +def default; + +// 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 l> { + list options = l; +} + // Map from suffixes to language names class LangToSuffixes lst> { @@ -52,12 +85,22 @@ class LanguageMap lst> { list map = lst; } -// Toolchain classes +// Compilation graph -class ToolChain lst> { - list tools = lst; +class EdgeBase { + Tool a = t1; + Tool b = t2; + dag weight = d; } -class ToolChains lst> { - list chains = lst; +class Edge : EdgeBase; + +// Edge and SimpleEdge are synonyms. +class SimpleEdge : EdgeBase; + +// Optionally enabled edge. +class OptionalEdge : EdgeBase; + +class CompilationGraph lst> { + list edges = lst; }