module __hfloat16__to_int16( input wire [15:0] x, output wire [15:0] out ); wire [4:0] x_bexp__2; wire [4:0] exp; wire [3:0] bit_slice_451; wire [4:0] add_454; wire [5:0] concat_456; wire [9:0] x_fraction__2; wire [5:0] neg_460; wire [15:0] fraction; wire [31:0] effective_exp; wire [10:0] fraction_shift_bits; wire eq_468; wire ne_469; wire exp_oob; wire x_sign__1; wire [15:0] INT_MAX; wire [15:0] INT_MIN; wire [15:0] and_494; wire [15:0] result; wire [15:0] result__2; assign x_bexp__2 = x[14:10]; assign exp = x_bexp__2 + 5'h11; assign bit_slice_451 = exp[4:1]; assign add_454 = {{1{bit_slice_451[3]}}, bit_slice_451} + 5'h1b; assign concat_456 = {add_454, exp[0]}; assign x_fraction__2 = x[9:0]; assign neg_460 = -concat_456; assign fraction = {6'h01, x_fraction__2}; assign effective_exp = {{26{concat_456[5]}}, concat_456}; assign fraction_shift_bits = {1'h1, x_fraction__2}; assign eq_468 = x_bexp__2 == 5'h1f; assign ne_469 = x_fraction__2 != 10'h000; assign exp_oob = $signed(exp) >= $signed(5'h0f); assign x_sign__1 = x[15:15]; assign INT_MAX = 16'h7fff; assign INT_MIN = 16'h8000; assign and_494 = (x_bexp__2 == 5'h0f ? 16'h0001 : (effective_exp[31] ? {5'h00, {{26{neg_460[5]}}, neg_460} >= 32'h0000_000b ? 11'h000 : fraction_shift_bits >> {{26{neg_460[5]}}, neg_460}} : ($signed(concat_456) > $signed(6'h00) ? (effective_exp >= 32'h0000_0010 ? 16'h0000 : fraction << effective_exp) : fraction))) & {16{~(eq_468 & ne_469 | exp[4])}}; assign result = exp_oob | ~(~eq_468 | ne_469) ? (x_sign__1 ? INT_MIN : INT_MAX) : and_494; assign result__2 = x_sign__1 ? -result : result; assign out = result__2; endmodule