do Conv after Set command (instead of mov 0,) before the set, should be as fast as...
[libfirm] / ir / be / ia32 / ia32_transform.c
index ff88626..248069f 100644 (file)
@@ -1981,6 +1981,9 @@ static ir_node *create_set(long pnc, ir_node *cmp_left, ir_node *cmp_right,
                                          new_cmp_left, new_cmp_right, nomem, pnc);
                set_ia32_am_support(res, ia32_am_Source, ia32_am_binary);
 
+               res = new_rd_ia32_Conv_I2I8Bit(dbgi, irg, block, noreg, noreg, res,
+                                              nomem, mode_Bu);
+
                return res;
        }
 
@@ -1993,8 +1996,10 @@ static ir_node *create_set(long pnc, ir_node *cmp_left, ir_node *cmp_right,
        new_cmp_left  = maybe_scale_up(new_cmp_left, mode, dbgi);
        new_cmp_right = maybe_scale_up(new_cmp_right, mode, dbgi);
 
-       res           = new_rd_ia32_CmpSet(dbgi, irg, block, noreg, noreg,
-                                          new_cmp_left, new_cmp_right, nomem, pnc);
+       res = new_rd_ia32_CmpSet(dbgi, irg, block, noreg, noreg, new_cmp_left,
+                                new_cmp_right, nomem, pnc);
+       res = new_rd_ia32_ConvI2I8Bit(dbgi, irg, block, noreg, noreg, res, nomem,
+                                     mode_Bu);
 
        return res;
 }