sparc: dont emit unnecarry block labels
[libfirm] / ir / be / sparc / sparc_spec.pl
index da7be55..0231f81 100644 (file)
@@ -284,11 +284,13 @@ AddCC_t => {
        ins       => [ "left", "right" ],
        outs      => [ "res", "flags" ],
        attr_type => "",
+       dump_func => "NULL",
 },
 
 AddX_t => {
        ins       => [ "left", "right", "flags_input" ],
        attr_type => "",
+       dump_func => "NULL",
 },
 
 Sub => {
@@ -316,11 +318,13 @@ SubCC_t => {
        ins       => [ "left", "right" ],
        outs      => [ "res", "flags" ],
        attr_type => "",
+       dump_func => "NULL",
 },
 
 SubX_t => {
        ins       => [ "left", "right", "flags_input" ],
        attr_type => "",
+       dump_func => "NULL",
 },
 
 # Load / Store
@@ -420,25 +424,27 @@ Restore => {
 },
 
 RestoreZero => {
-       emit => '. restore',
        reg_req => { in => [ "frame_pointer" ], out => [ "sp:I|S" ] },
        ins     => [ "frame_pointer" ],
        outs    => [ "stack" ],
+       emit    => '. restore',
        mode    => $mode_gp,
 },
 
 SubSP => {
-       reg_req   => { in => [ "sp", "gp", "none" ], out => [ "sp:I|S", "gp", "none" ] },
-       ins       => [ "stack", "size", "mem" ],
-       outs      => [ "stack", "addr", "M" ],
-       emit      => ". sub %S0, %S1, %D0\n",
+       reg_req => { in => [ "sp", "gp" ], out => [ "sp:I|S" ] },
+       ins     => [ "stack", "size" ],
+       outs    => [ "stack" ],
+       emit    => ". sub %S0, %S1, %D0\n",
+       mode    => $mode_gp,
 },
 
 AddSP => {
-       reg_req   => { in => [ "sp", "gp", "none" ], out => [ "sp:I|S", "none" ] },
-       ins       => [ "stack", "size", "mem" ],
-       outs      => [ "stack", "M" ],
-       emit      => ". add %S0, %S1, %D0\n",
+       reg_req => { in => [ "sp", "gp" ], out => [ "sp:I|S" ] },
+       ins     => [ "stack", "size" ],
+       outs    => [ "stack" ],
+       emit    => ". add %S0, %S1, %D0\n",
+       mode    => $mode_gp,
 },
 
 FrameAddr => {
@@ -662,7 +668,13 @@ Mul => {
        constructors => \%binop_operand_constructors,
 },
 
-Mulh => {
+SMulh => {
+       irn_flags    => [ "rematerializable" ],
+       outs         => [ "low", "high" ],
+       constructors => \%binop_operand_constructors,
+},
+
+UMulh => {
        irn_flags    => [ "rematerializable" ],
        outs         => [ "low", "high" ],
        constructors => \%binop_operand_constructors,