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
22 * @brief Contains implementation of some useful functions for ia32 backend.
23 * @author Christian Wuerdig, Matthias Braun
35 #include "ia32_util.h"
38 * Returns the first Proj with given mode connected to irn.
40 * @param First proj with mode == mode or NULL if none found
42 ir_node *ia32_get_proj_for_mode(const ir_node *irn, ir_mode *mode) {
43 const ir_edge_t *edge;
46 assert(get_irn_mode(irn) == mode_T && "expected mode_T node");
48 foreach_out_edge(irn, edge) {
49 src = get_edge_src_irn(edge);
51 assert(is_Proj(src) && "Proj expected");
53 if (get_irn_mode(src) == mode_M)
61 * Returns the first Proj with mode != mode_M connected to irn.
63 * @param First proj with mode != mode_M or NULL if none found
65 ir_node *ia32_get_res_proj(const ir_node *irn) {
66 const ir_edge_t *edge;
69 assert(get_irn_mode(irn) == mode_T && "expected mode_T node");
71 foreach_out_edge(irn, edge) {
72 src = get_edge_src_irn(edge);
74 assert(is_Proj(src) && "Proj expected");
76 if (get_irn_mode(src) != mode_M)