backend: ProjT/Start is an anchor and explicitely transformed
[libfirm] / ir / be / sparc / sparc_spec.pl
index 41330e8..332c253 100644 (file)
@@ -144,8 +144,8 @@ $default_copy_attr = "sparc_copy_attr";
 );
 
 %custom_irn_flags = (
-       modifies_flags    => "sparc_arch_irn_flag_modifies_flags",
-       modifies_fp_flags => "sparc_arch_irn_flag_modifies_fp_flags",
+       modifies_flags    => "(arch_irn_flags_t)sparc_arch_irn_flag_modifies_flags",
+       modifies_fp_flags => "(arch_irn_flags_t)sparc_arch_irn_flag_modifies_fp_flags",
 );
 
 my %cmp_operand_constructors = (
@@ -305,6 +305,7 @@ St => {
 Save => {
        emit      => '. save %S0, %R1I, %D0',
        outs      => [ "stack" ],
+       ins       => [ "stack" ],
        constructors => {
                imm => {
                        attr       => "ir_entity *immediate_entity, int32_t immediate_value",
@@ -317,11 +318,13 @@ Save => {
                        ins        => [ "stack", "increment" ],
                }
        },
+       mode => $mode_gp,
 },
 
 Restore => {
        emit => '. restore %S0, %R1I, %D0',
        outs => [ "stack" ],
+       ins  => [ "stack" ],
        constructors => {
                imm => {
                        attr       => "ir_entity *immediate_entity, int32_t immediate_value",
@@ -334,13 +337,15 @@ Restore => {
                        ins        => [ "stack", "increment" ],
                }
        },
+       mode => $mode_gp,
 },
 
 RestoreZero => {
        emit => '. restore',
-       outs => [ ],
-       ins  => [ ],
-       mode => "mode_T",
+       reg_req => { in => [ "frame_pointer" ], out => [ "sp:I|S" ] },
+       ins     => [ "frame_pointer" ],
+       outs    => [ "stack" ],
+       mode    => $mode_gp,
 },
 
 SubSP => {
@@ -373,8 +378,8 @@ Bicc => {
        state     => "pinned",
        mode      => "mode_T",
        attr_type => "sparc_jmp_cond_attr_t",
-       attr      => "pn_Cmp pnc, bool is_unsigned",
-       init_attr => "\tinit_sparc_jmp_cond_attr(res, pnc, is_unsigned);",
+       attr      => "ir_relation relation, bool is_unsigned",
+       init_attr => "\tinit_sparc_jmp_cond_attr(res, relation, is_unsigned);",
        reg_req   => { in => [ "flags" ], out => [ "none", "none" ] },
 },
 
@@ -383,8 +388,8 @@ fbfcc => {
        state     => "pinned",
        mode      => "mode_T",
        attr_type => "sparc_jmp_cond_attr_t",
-       attr      => "pn_Cmp pnc",
-       init_attr => "\tinit_sparc_jmp_cond_attr(res, pnc, false);",
+       attr      => "ir_relation relation",
+       init_attr => "\tinit_sparc_jmp_cond_attr(res, relation, false);",
        reg_req   => { in => [ "fpflags" ], out => [ "none", "none" ] },
 },