mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-23 15:29:51 +00:00
6620ec1928
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74906 91177308-0d34-0410-b5e6-96231b3b80d8
124 lines
2.4 KiB
TableGen
124 lines
2.4 KiB
TableGen
//===- Common.td - Common definitions for LLVMC2 ----------*- tablegen -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file contains common definitions used in llvmc tool description files.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
class Tool<list<dag> l> {
|
|
list<dag> properties = l;
|
|
}
|
|
|
|
// Possible Tool properties.
|
|
|
|
def in_language;
|
|
def out_language;
|
|
def output_suffix;
|
|
def cmd_line;
|
|
def join;
|
|
def sink;
|
|
def actions;
|
|
|
|
// Possible option types.
|
|
|
|
def alias_option;
|
|
def switch_option;
|
|
def parameter_option;
|
|
def parameter_list_option;
|
|
def prefix_option;
|
|
def prefix_list_option;
|
|
|
|
// Possible option properties.
|
|
|
|
def extern;
|
|
def help;
|
|
def hidden;
|
|
def init;
|
|
def multi_val;
|
|
def one_or_more;
|
|
def really_hidden;
|
|
def required;
|
|
def zero_or_one;
|
|
|
|
// Empty DAG marker.
|
|
def empty;
|
|
|
|
// The 'case' construct.
|
|
def case;
|
|
|
|
// Boolean constants.
|
|
def true;
|
|
def false;
|
|
|
|
// Boolean operators.
|
|
def and;
|
|
def or;
|
|
|
|
// Primitive tests.
|
|
def switch_on;
|
|
def parameter_equals;
|
|
def element_in_list;
|
|
def input_languages_contain;
|
|
def not_empty;
|
|
def default;
|
|
|
|
// Possible actions.
|
|
|
|
def append_cmd;
|
|
def forward;
|
|
def forward_as;
|
|
def stop_compilation;
|
|
def unpack_values;
|
|
def error;
|
|
|
|
// Increase/decrease the edge weight.
|
|
def inc_weight;
|
|
def dec_weight;
|
|
|
|
// Used to specify plugin priority.
|
|
class PluginPriority<int p> {
|
|
int priority = p;
|
|
}
|
|
|
|
// 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> {
|
|
string lang = str;
|
|
list<string> suffixes = lst;
|
|
}
|
|
|
|
class LanguageMap<list<LangToSuffixes> lst> {
|
|
list<LangToSuffixes> map = lst;
|
|
}
|
|
|
|
// Compilation graph
|
|
|
|
class EdgeBase<string t1, string t2, dag d> {
|
|
string a = t1;
|
|
string b = t2;
|
|
dag weight = d;
|
|
}
|
|
|
|
class Edge<string t1, string t2> : EdgeBase<t1, t2, (empty)>;
|
|
|
|
// Edge and SimpleEdge are synonyms.
|
|
class SimpleEdge<string t1, string t2> : EdgeBase<t1, t2, (empty)>;
|
|
|
|
// Optionally enabled edge.
|
|
class OptionalEdge<string t1, string t2, dag props> : EdgeBase<t1, t2, props>;
|
|
|
|
class CompilationGraph<list<EdgeBase> lst> {
|
|
list<EdgeBase> edges = lst;
|
|
}
|