+/**
+ * creates a "set" node that produces a 0 or 1 based on a Cmp result
+ */
+static ir_node *create_set(ir_node *node)
+{
+ ir_graph *irg = current_ir_graph;
+ dbg_info *dbgi = get_irn_dbg_info(node);
+ ir_mode *mode = config.lowered_set_mode;
+ tarval *tv_one = get_tarval_one(mode);
+ ir_node *one = new_d_Const(dbgi, mode, tv_one);
+ ir_node *block = get_nodes_block(node);
+ tarval *tv_zero = get_tarval_null(mode);
+ ir_node *zero = new_d_Const(dbgi, mode, tv_zero);
+
+ ir_node *set = new_rd_Mux(dbgi, irg, block, node, zero, one, mode);
+
+ if (mode != config.lowered_mode) {
+ set = new_r_Conv(irg, block, set, config.lowered_mode);
+ }
+
+ return set;
+}
+