2 * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved.
4 * This file is part of libFirm.
6 * This file may be distributed and/or modified under the terms of the
7 * GNU General Public License version 2 as published by the Free Software
8 * Foundation and appearing in the file LICENSE.GPL included in the
9 * packaging of this file.
11 * Licensees holding valid libFirm Professional Edition licenses may use
12 * this file in accordance with the libFirm Commercial License.
13 * Agreement provided with the Software.
15 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
16 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21 * Function prototypes for Firm into ia32-Firm transformations.
22 * @author Christian Wuerdig
26 #ifndef _IA32_TRANSFORM_H_
27 #define _IA32_TRANSFORM_H_
29 #include "firm_config.h"
30 #include "bearch_ia32_t.h"
33 * Transform firm nodes to x86 assembler nodes
35 void ia32_transform_graph(ia32_code_gen_t *cg);
39 * Enters all transform functions into the generic pointer
41 void ia32_register_transformers(void);
44 * Transforms the given Firm node into one or more appropriate ia32 nodes.
46 void ia32_transform_node(ir_node *node, void *env);
50 * The Psi selector can be a tree of compares combined with "And"s and "Or"s.
51 * We create a Set node, respectively a xCmp in case the Psi is a float, for each
52 * compare, which causes the compare result to be stores in a register. The
53 * "And"s and "Or"s are transformed later, we only adjust their mode.
55 void ia32_transform_psi_cond_tree(ir_node *node, void *env);
59 * Prints the old node name on cg obst and returns a pointer to it.
61 const char *ia32_get_old_node_name(ia32_code_gen_t *cg, ir_node *irn);
65 ia32_SSIGN, ia32_DSIGN, ia32_SABS, ia32_DABS, ia32_known_const_max
69 * Generate a known floating point constant
71 ir_entity *ia32_gen_fp_known_const(ia32_known_const_t kct);
73 #endif /* _IA32_TRANSFORM_H_ */