- case ir_bk_ffs:
- {
- const lower64_entry_t *entry = get_node_entry(operand);
- ir_node *in_high[1] = {entry->high_word};
- ir_node *in_low[1] = {entry->low_word};
- ir_node *number_of_bits = new_r_Const_long(irg, mode_Is, get_mode_size_bits(env->low_unsigned));
- ir_node *zero_signed = new_rd_Const(dbgi, irg, get_mode_null(mode_Is));
- ir_node *zero_unsigned = new_rd_Const(dbgi, irg, get_mode_null(mode_Iu));
- ir_node *cmp_low = new_rd_Cmp(dbgi, block, entry->low_word, zero_unsigned, ir_relation_equal);
- ir_node *cmp_high = new_rd_Cmp(dbgi, block, entry->high_word, zero_unsigned, ir_relation_equal);
- ir_node *ffs_high = new_rd_Builtin(dbgi, block, mem, 1, in_high, kind, lowered_type_high);
- ir_node *high_proj = new_r_Proj(ffs_high, mode_Is, pn_Builtin_1_result);
- ir_node *high = new_rd_Add(dbgi, block, high_proj, number_of_bits, mode_Is);
- ir_node *ffs_low = new_rd_Builtin(dbgi, block, mem, 1, in_low, kind, lowered_type_low);
- ir_node *low = new_r_Proj(ffs_low, mode_Is, pn_Builtin_1_result);
- ir_node *mux_high = new_rd_Mux(dbgi, block, cmp_high, high, zero_signed, mode_Is);
-
- if (! allow_ifconv(cmp_high, high, zero_signed))
- ir_nodeset_insert(&created_mux_nodes, mux_high);
-
- res = new_rd_Mux(dbgi, block, cmp_low, low, mux_high, mode_Is);
-
- if (! allow_ifconv(cmp_low, low, mux_high))
- ir_nodeset_insert(&created_mux_nodes, res);
- }
+ case ir_bk_ffs: {
+ const lower64_entry_t *entry = get_node_entry(operand);
+ ir_node *in_high[1] = {entry->high_word};
+ ir_node *in_low[1] = {entry->low_word};
+ ir_node *number_of_bits = new_r_Const_long(irg, mode_Is, get_mode_size_bits(env->low_unsigned));
+ ir_node *zero_signed = new_rd_Const(dbgi, irg, get_mode_null(mode_Is));
+ ir_node *zero_unsigned = new_rd_Const(dbgi, irg, get_mode_null(mode_Iu));
+ ir_node *cmp_low = new_rd_Cmp(dbgi, block, entry->low_word, zero_unsigned, ir_relation_equal);
+ ir_node *cmp_high = new_rd_Cmp(dbgi, block, entry->high_word, zero_unsigned, ir_relation_equal);
+ ir_node *ffs_high = new_rd_Builtin(dbgi, block, mem, 1, in_high, kind, lowered_type_high);
+ ir_node *high_proj = new_r_Proj(ffs_high, mode_Is, pn_Builtin_max+1);
+ ir_node *high = new_rd_Add(dbgi, block, high_proj, number_of_bits, mode_Is);
+ ir_node *ffs_low = new_rd_Builtin(dbgi, block, mem, 1, in_low, kind, lowered_type_low);
+ ir_node *low = new_r_Proj(ffs_low, mode_Is, pn_Builtin_max+1);
+ ir_node *mux_high = new_rd_Mux(dbgi, block, cmp_high, high, zero_signed, mode_Is);
+
+ if (! allow_ifconv(cmp_high, high, zero_signed))
+ ir_nodeset_insert(&created_mux_nodes, mux_high);
+
+ res = new_rd_Mux(dbgi, block, cmp_low, low, mux_high, mode_Is);
+
+ if (! allow_ifconv(cmp_low, low, mux_high))
+ ir_nodeset_insert(&created_mux_nodes, res);