2 * Copyright (C) 1995-2008 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
22 * @brief Contains implementation of some useful functions for ia32 backend.
23 * @author Christian Wuerdig, Matthias Braun
33 #include "ia32_util.h"
36 * Returns the first Proj with given mode connected to irn.
38 * @param First proj with mode == mode or NULL if none found
40 ir_node *ia32_get_proj_for_mode(const ir_node *irn, ir_mode *mode)
42 const ir_edge_t *edge;
45 assert(get_irn_mode(irn) == mode_T && "expected mode_T node");
47 foreach_out_edge(irn, edge) {
48 src = get_edge_src_irn(edge);
50 assert(is_Proj(src) && "Proj expected");
52 if (get_irn_mode(src) == mode)
60 * Returns the first Proj with mode != mode_M connected to irn.
62 * @param First proj with mode != mode_M or NULL if none found
64 ir_node *ia32_get_res_proj(const ir_node *irn) {
65 const ir_edge_t *edge;
68 assert(get_irn_mode(irn) == mode_T && "expected mode_T node");
70 foreach_out_edge(irn, edge) {
71 src = get_edge_src_irn(edge);
73 assert(is_Proj(src) && "Proj expected");
75 if (get_irn_mode(src) != mode_M)