module __float64__to_int64( input wire [63:0] x, output wire [63:0] out ); wire [10:0] x_bexp__2; wire [10:0] exp; wire [8:0] bit_slice_462; wire [9:0] add_465; wire [11:0] concat_467; wire [51:0] x_fraction__2; wire [11:0] neg_472; wire [31:0] effective_exp; wire [52:0] fraction_shift_bits; wire eq_480; wire ne_481; wire [63:0] fraction; wire [63:0] sel_496; wire exp_oob; wire x_sign__1; wire [63:0] INT_MAX; wire [63:0] INT_MIN; wire [63:0] result; wire [63:0] result__2; assign x_bexp__2 = x[62:52]; assign exp = x_bexp__2 + 11'h401; assign bit_slice_462 = exp[10:2]; assign add_465 = {{1{bit_slice_462[8]}}, bit_slice_462} + 10'h3f3; assign concat_467 = {add_465, exp[1:0]}; assign x_fraction__2 = x[51:0]; assign neg_472 = -concat_467; assign effective_exp = {{20{concat_467[11]}}, concat_467}; assign fraction_shift_bits = {1'h1, x_fraction__2}; assign eq_480 = x_bexp__2 == 11'h7ff; assign ne_481 = x_fraction__2 != 52'h0_0000_0000_0000; assign fraction = {12'h001, x_fraction__2}; assign sel_496 = effective_exp[31] ? {11'h000, {{20{neg_472[11]}}, neg_472} >= 32'h0000_0035 ? 53'h00_0000_0000_0000 : fraction_shift_bits >> {{20{neg_472[11]}}, neg_472}} : ((effective_exp & {32{$signed(concat_467) > $signed(12'h000)}}) >= 32'h0000_0040 ? 64'h0000_0000_0000_0000 : fraction << (effective_exp & {32{$signed(concat_467) > $signed(12'h000)}})); assign exp_oob = $signed(exp) >= $signed(11'h03f); assign x_sign__1 = x[63:63]; assign INT_MAX = 64'h7fff_ffff_ffff_ffff; assign INT_MIN = 64'h8000_0000_0000_0000; assign result = exp_oob | ~(~eq_480 | ne_481) ? (x_sign__1 ? INT_MIN : INT_MAX) : (x_bexp__2 == 11'h3ff ? 64'h0000_0000_0000_0001 : sel_496) & {64{~(eq_480 & ne_481 | exp[10])}}; assign result__2 = x_sign__1 ? -result : result; assign out = result__2; endmodule