sparc: implement float->unsigned conversions
[libfirm] / ir / be / sparc / sparc_spec.pl
index 61ac07c..0ab5f73 100644 (file)
@@ -1,5 +1,4 @@
 # Creation: 2006/02/13
-# $Id$
 
 $arch = "sparc";
 
@@ -127,24 +126,24 @@ $default_attr_type = "sparc_attr_t";
 $default_copy_attr = "sparc_copy_attr";
 
 %init_attr = (
-       sparc_attr_t             => "\tinit_sparc_attributes(res, irn_flags_, in_reqs, exec_units, n_res);",
-       sparc_load_store_attr_t  => "\tinit_sparc_attributes(res, irn_flags_, in_reqs, exec_units, n_res);",
-       sparc_jmp_cond_attr_t    => "\tinit_sparc_attributes(res, irn_flags_, in_reqs, exec_units, n_res);",
-       sparc_switch_jmp_attr_t  => "\tinit_sparc_attributes(res, irn_flags_, in_reqs, exec_units, n_res);\n".
-                                   "\tinit_sparc_switch_jmp_attributes(res, default_pn, jump_table);\n",
-       sparc_fp_attr_t          => "\tinit_sparc_attributes(res, irn_flags_, in_reqs, exec_units, n_res);\n".
+       sparc_attr_t             => "\tinit_sparc_attributes(res, irn_flags_, in_reqs, n_res);",
+       sparc_load_store_attr_t  => "\tinit_sparc_attributes(res, irn_flags_, in_reqs, n_res);",
+       sparc_jmp_cond_attr_t    => "\tinit_sparc_attributes(res, irn_flags_, in_reqs, n_res);",
+       sparc_switch_jmp_attr_t  => "\tinit_sparc_attributes(res, irn_flags_, in_reqs, n_res);\n".
+                                   "\tinit_sparc_switch_jmp_attributes(res, table, jump_table);\n",
+       sparc_fp_attr_t          => "\tinit_sparc_attributes(res, irn_flags_, in_reqs, n_res);\n".
                                    "\tinit_sparc_fp_attributes(res, fp_mode);\n",
-       sparc_fp_conv_attr_t     => "\tinit_sparc_attributes(res, irn_flags_, in_reqs, exec_units, n_res);".
+       sparc_fp_conv_attr_t     => "\tinit_sparc_attributes(res, irn_flags_, in_reqs, n_res);".
                                    "\tinit_sparc_fp_conv_attributes(res, src_mode, dest_mode);\n",
 );
 
 %compare_attr = (
        sparc_attr_t            => "cmp_attr_sparc",
-       sparc_load_store_attr_t => "cmp_attr_sparc_load_store",
-       sparc_jmp_cond_attr_t   => "cmp_attr_sparc_jmp_cond",
-       sparc_switch_jmp_attr_t => "cmp_attr_sparc_switch_jmp",
        sparc_fp_attr_t         => "cmp_attr_sparc_fp",
        sparc_fp_conv_attr_t    => "cmp_attr_sparc_fp_conv",
+       sparc_jmp_cond_attr_t   => "cmp_attr_sparc_jmp_cond",
+       sparc_load_store_attr_t => "cmp_attr_sparc_load_store",
+       sparc_switch_jmp_attr_t => "cmp_attr_sparc",
 );
 
 %custom_irn_flags = (
@@ -549,7 +548,7 @@ Call => {
                imm => {
                        attr       => "ir_entity *entity, int32_t offset, bool aggregate_return",
                        custominit => "\tsparc_set_attr_imm(res, entity, offset);".
-                                     "\tif (aggregate_return) arch_add_irn_flags(res, sparc_arch_irn_flag_aggregate_return);",
+                                     "\tif (aggregate_return) arch_add_irn_flags(res, (arch_irn_flags_t)sparc_arch_irn_flag_aggregate_return);",
                        arity     => "variable",
                        out_arity => "variable",
                },
@@ -557,7 +556,7 @@ Call => {
                        attr       => "bool aggregate_return",
                        arity      => "variable",
                        out_arity  => "variable",
-                       custominit => "\tif (aggregate_return) arch_add_irn_flags(res, sparc_arch_irn_flag_aggregate_return);",
+                       custominit => "\tif (aggregate_return) arch_add_irn_flags(res, (arch_irn_flags_t)sparc_arch_irn_flag_aggregate_return);",
                }
        },
 },
@@ -575,9 +574,9 @@ SwitchJmp => {
        state        => "pinned",
        mode         => "mode_T",
        reg_req      => { in => [ "gp" ], out => [ ] },
+       out_arity    => "variable",
        attr_type    => "sparc_switch_jmp_attr_t",
-       attr         => "long default_pn, ir_entity *jump_table",
-       init_attr => "info->out_infos = NULL;", # XXX ugly hack for out requirements
+       attr         => "const ir_switch_table *table, ir_entity *jump_table",
 },
 
 Sll => {