Consider the result and operand having the same width a downconv, too. This results...
authorChristoph Mallon <christoph.mallon@gmx.de>
Fri, 14 Nov 2008 07:52:10 +0000 (07:52 +0000)
committerChristoph Mallon <christoph.mallon@gmx.de>
Fri, 14 Nov 2008 07:52:10 +0000 (07:52 +0000)
[r23644]

ir/be/ia32/ia32_transform.c

index c3e7cc6..a4fed43 100644 (file)
@@ -593,9 +593,10 @@ static int is_downconv(const ir_node *node)
 
        src_mode  = get_irn_mode(get_Conv_op(node));
        dest_mode = get_irn_mode(node);
-       return ia32_mode_needs_gp_reg(src_mode)
-               && ia32_mode_needs_gp_reg(dest_mode)
-               && get_mode_size_bits(dest_mode) < get_mode_size_bits(src_mode);
+       return
+               ia32_mode_needs_gp_reg(src_mode)  &&
+               ia32_mode_needs_gp_reg(dest_mode) &&
+               get_mode_size_bits(dest_mode) <= get_mode_size_bits(src_mode);
 }
 
 /* Skip all Down-Conv's on a given node and return the resulting node. */