+ if (mode_is_signed(h_res_mode)) {
+ /* convert from float to signed 64bit */
+ float_to_ll = new_bd_ia32_l_FloattoLL(dbg, block, a_f);
+
+ l_res = new_r_Proj(irg, block, float_to_ll, l_res_mode,
+ pn_ia32_l_FloattoLL_res_low);
+ h_res = new_r_Proj(irg, block, float_to_ll, h_res_mode,
+ pn_ia32_l_FloattoLL_res_high);
+ } else {
+ /* convert from float to signed 64bit */
+ ir_mode *flt_mode = get_irn_mode(a_f);
+ tarval *flt_tv = new_tarval_from_str("9223372036854775808", 19, flt_mode);
+ ir_node *flt_corr = new_Const(flt_tv);
+ ir_node *lower_blk = block;
+ ir_node *upper_blk;
+ ir_node *cmp, *proj, *cond, *blk, *int_phi, *flt_phi;
+ ir_node *in[2];
+
+ part_block(call);
+ upper_blk = get_nodes_block(call);
+
+ cmp = new_rd_Cmp(dbg, irg, upper_blk, a_f, flt_corr);
+ proj = new_r_Proj(irg, upper_blk, cmp, mode_b, pn_Cmp_Lt);
+ cond = new_rd_Cond(dbg, irg, upper_blk, proj);
+ in[0] = new_r_Proj(irg, upper_blk, cond, mode_X, pn_Cond_true);
+ in[1] = new_r_Proj(irg, upper_blk, cond, mode_X, pn_Cond_false);
+ blk = new_r_Block(irg, 1, &in[1]);
+ in[1] = new_r_Jmp(irg, blk);
+
+ set_irn_in(lower_blk, 2, in);