Micro optimisation of the day: Remove ia32_Test, which tests the high result of ia32_Mul.
[libfirm] / ir / be / ia32 / ia32_spec.pl
index 0249edd..f830e75 100644 (file)
@@ -253,9 +253,9 @@ sub ia32_custom_init_attr {
        if(defined($node->{am})) {
                my $am = $node->{am};
                if($am eq "source,unary") {
-                       $res .= "\tset_ia32_am_support(res, ia32_am_Source, ia32_am_unary);";
+                       $res .= "\tset_ia32_am_support(res, ia32_am_unary);";
                } elsif($am eq "source,binary") {
-                       $res .= "\tset_ia32_am_support(res, ia32_am_Source, ia32_am_binary);";
+                       $res .= "\tset_ia32_am_support(res, ia32_am_binary);";
                } elsif($am eq "none") {
                        # nothing to do
                } else {
@@ -434,10 +434,10 @@ Mul => {
        # very strict constraints
        state     => "exc_pinned",
        reg_req   => { in => [ "gp", "gp", "none", "eax", "gp" ],
-                      out => [ "eax", "edx", "none" ] },
+                      out => [ "eax", "flags", "edx", "none" ] },
        ins       => [ "base", "index", "mem", "left", "right" ],
        emit      => '. mul%M %unop4',
-       outs      => [ "res_low", "res_high", "M" ],
+       outs      => [ "res_low", "flags", "res_high", "M" ],
        am        => "source,binary",
        latency   => 10,
        units     => [ "GP" ],
@@ -449,7 +449,7 @@ l_Mul => {
        # very strict constraints
        op_flags  => "C",
        cmp_attr  => "return 1;",
-       outs      => [ "EAX", "EDX", "M" ],
+       outs      => [ "EAX", "flags", "EDX", "M" ],
        arity     => 2
 },