module __bfloat16__to_int16( input wire [15:0] x, output wire [15:0] out ); wire [7:0] x_bexp__2; wire [7:0] exp; wire [8:0] add_435; wire [6:0] x_fraction__2; wire [8:0] neg_439; wire [15:0] fraction; wire [31:0] effective_exp; wire [7:0] fraction_shift_bits; wire eq_447; wire ne_448; wire exp_oob; wire x_sign__1; wire [15:0] INT_MAX; wire [15:0] INT_MIN; wire [15:0] and_474; wire [15:0] result; wire [15:0] result__2; assign x_bexp__2 = x[14:7]; assign exp = x_bexp__2 + 8'h81; assign add_435 = {{1{exp[7]}}, exp} + 9'h1f9; assign x_fraction__2 = x[6:0]; assign neg_439 = -add_435; assign fraction = {9'h001, x_fraction__2}; assign effective_exp = {{23{add_435[8]}}, add_435}; assign fraction_shift_bits = {1'h1, x_fraction__2}; assign eq_447 = x_bexp__2 == 8'hff; assign ne_448 = x_fraction__2 != 7'h00; assign exp_oob = $signed(exp) >= $signed(8'h0f); assign x_sign__1 = x[15:15]; assign INT_MAX = 16'h7fff; assign INT_MIN = 16'h8000; assign and_474 = (x_bexp__2 == 8'h7f ? 16'h0001 : (effective_exp[31] ? {8'h00, {{23{neg_439[8]}}, neg_439} >= 32'h0000_0008 ? 8'h00 : fraction_shift_bits >> {{23{neg_439[8]}}, neg_439}} : ($signed(add_435) > $signed(9'h000) ? (effective_exp >= 32'h0000_0010 ? 16'h0000 : fraction << effective_exp) : fraction))) & {16{~(eq_447 & ne_448 | exp[7])}}; assign result = exp_oob | ~(~eq_447 | ne_448) ? (x_sign__1 ? INT_MIN : INT_MAX) : and_474; assign result__2 = x_sign__1 ? -result : result; assign out = result__2; endmodule