-# the cpu architecture (ia32, ia64, mips, sparc, ppc, ...)
-
$arch = "amd64";
-# The node description is done as a perl hash initializer with the
-# following structure:
-#
-# %nodes = (
-#
-# <op-name> => {
-# arity => "0|1|2|3 ... |variable|dynamic|any", # optional
-# state => "floats|pinned|mem_pinned|exc_pinned", # optional
-# args => [
-# { type => "type 1", name => "name 1" },
-# { type => "type 2", name => "name 2" },
-# ...
-# ],
-# comment => "any comment for constructor", # optional
-# reg_req => { in => [ "reg_class|register" ], out => [ "reg_class|register|in_rX" ] },
-# cmp_attr => "c source code for comparing node attributes", # optional
-# outs => { "out1", "out2" },# optional, creates pn_op_out1, ... consts
-# ins => { "in1", "in2" }, # optional, creates n_op_in1, ... consts
-# mode => "mode_Iu", # optional, predefines the mode
-# emit => "emit code with templates", # optional for virtual nodes
-# attr => "additional attribute arguments for constructor", # optional
-# init_attr => "emit attribute initialization template", # optional
-# rd_constructor => "c source code which constructs an ir_node", # optional
-# hash_func => "name of the hash function for this operation", # optional, get the default hash function else
-# latency => "latency of this operation (can be float)" # optional
-# attr_type => "name of the attribute struct", # optional
-# },
-#
-# ... # (all nodes you need to describe)
-#
-# ); # close the %nodes initializer
-
-# state: state of the operation, OPTIONAL (default is "floats")
-#
-# arity: arity of the operation, MUST NOT BE OMITTED
-#
-# args: the OPTIONAL arguments of the node constructor (debug, irg and block
-# are always the first 3 arguments and are always autmatically
-# created)
-# If this key is missing the following arguments will be created:
-# for i = 1 .. arity: ir_node *op_i
-# ir_mode *mode
-#
-# outs: if a node defines more than one output, the names of the projections
-# nodes having outs having automatically the mode mode_T
-#
-# comment: OPTIONAL comment for the node constructor
-#
-# register types:
-$normal = 0; # no special type
-$ignore = 1; # ignore (do not assign this register)
-$virtual = 2; # the register is a virtual one
-$state = 4; # register represents a state
-# NOTE: Last entry of each class is the largest Firm-Mode a register can hold
%reg_classes = (
gp => [
{ name => "rax", dwarf => 0 },