bearch: remove arch_register_type_joker.
[libfirm] / ir / be / amd64 / amd64_transform.c
index 6d4d6df..fbf32c9 100644 (file)
@@ -20,7 +20,6 @@
 /**
  * @file
  * @brief   code selection (transform FIRM into amd64 FIRM)
- * @version $Id: amd64_transform.c 26673 2009-10-01 16:43:13Z matze $
  */
 #include "config.h"
 
@@ -34,9 +33,9 @@
 #include "error.h"
 #include "debug.h"
 
-#include "../benode.h"
-#include "../betranshlp.h"
-#include "../beutil.h"
+#include "benode.h"
+#include "betranshlp.h"
+#include "beutil.h"
 #include "bearch_amd64_t.h"
 
 #include "amd64_nodes_attr.h"
@@ -180,7 +179,7 @@ static ir_node *gen_Jmp(ir_node *node)
 static ir_node *gen_be_Call(ir_node *node)
 {
        ir_node *res = be_duplicate_node(node);
-       arch_irn_add_flags(res, arch_irn_flags_modify_flags);
+       arch_add_irn_flags(res, arch_irn_flags_modify_flags);
 
        return res;
 }
@@ -197,7 +196,7 @@ static ir_node *gen_Cmp(ir_node *node)
        bool      is_unsigned;
 
        if (mode_is_float(cmp_mode)) {
-               panic("Floating point not implemented yet (in gen_Cmp)!");
+               panic("Floating point not implemented yet!");
        }
 
        assert(get_irn_mode(op2) == cmp_mode);
@@ -303,18 +302,10 @@ static bool upper_bits_clean(ir_node *transformed_node, ir_mode *mode)
 }
 #endif
 
-/**
- * Change some phi modes
- */
 static ir_node *gen_Phi(ir_node *node)
 {
+       ir_mode                   *mode = get_irn_mode(node);
        const arch_register_req_t *req;
-       ir_node  *block = be_transform_node(get_nodes_block(node));
-       ir_graph *irg   = current_ir_graph;
-       dbg_info *dbgi  = get_irn_dbg_info(node);
-       ir_mode  *mode  = get_irn_mode(node);
-       ir_node  *phi;
-
        if (mode_needs_gp_reg(mode)) {
                /* all integer operations are on 64bit registers now */
                mode = mode_Lu;
@@ -323,22 +314,9 @@ static ir_node *gen_Phi(ir_node *node)
                req = arch_no_register_req;
        }
 
-       /* phi nodes allow loops, so we use the old arguments for now
-        * and fix this later */
-       phi = new_ir_node(dbgi, irg, block, op_Phi, mode, get_irn_arity(node),
-                         get_irn_in(node) + 1);
-       copy_node_attr(irg, node, phi);
-       be_duplicate_deps(node, phi);
-
-       arch_set_out_register_req(phi, 0, req);
-
-       be_enqueue_preds(node);
-
-       return phi;
+       return be_transform_phi(node, req);
 }
 
-
-
 /**
  * Transforms a Conv node.
  *
@@ -361,7 +339,6 @@ static ir_node *gen_Conv(ir_node *node)
        } else { /* complete in gp registers */
                int src_bits = get_mode_size_bits(src_mode);
                int dst_bits = get_mode_size_bits(dst_mode);
-               int min_bits;
                ir_mode *min_mode;
 
                if (src_bits == dst_bits) {
@@ -370,10 +347,8 @@ static ir_node *gen_Conv(ir_node *node)
                }
 
                if (src_bits < dst_bits) {
-                       min_bits = src_bits;
                        min_mode = src_mode;
                } else {
-                       min_bits = dst_bits;
                        min_mode = dst_mode;
                }
 
@@ -518,9 +493,6 @@ static ir_node *gen_Proj(ir_node *node)
        } else if (be_is_AddSP(pred)) {
                //panic("gen_Proj not implemented for AddSP");
                return gen_Proj_be_AddSP(node);
-       } else if (is_Cmp(pred)) {
-               //panic("gen_Proj not implemented for Cmp");
-               return gen_Proj_Cmp(node);
        } else if (is_Div(pred)) {
                return gen_Proj_Div(node);
 #endif