return conv_const_tv(node, dest_mode) == tarval_bad ? 1 : 0;
}
+ if (is_Conv(node) &&
+ is_downconv(get_irn_mode(node), dest_mode) &&
+ get_irn_mode(get_Conv_op(node)) == dest_mode) {
+ return -1;
+ }
+
if (get_irn_n_edges(node) > 1) {
DB((dbg, LEVEL_3, "multi outs at %+F\n", node));
return 1;
}
}
+ if (is_Conv(node) &&
+ is_downconv(get_irn_mode(node), dest_mode) &&
+ get_irn_mode(get_Conv_op(node)) == dest_mode) {
+ return get_Conv_op(node);
+ }
+
if (get_irn_n_edges(node) > 1) {
return place_conv(node, dest_mode);
}