module __bfloat16__from_uint8( input wire [7:0] x, output wire [15:0] out ); wire [7:0] reverse_95; wire [8:0] one_hot_96; wire [3:0] MAX_EXPONENT; wire [3:0] lz; wire [3:0] exp; wire [3:0] add_103; wire [7:0] BIAS; wire ne_106; wire [7:0] shll_107; wire [7:0] bexp; wire [6:0] fraction; wire sign; assign reverse_95 = {x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7]}; assign one_hot_96 = {reverse_95[7:0] == 8'h00, reverse_95[7] && reverse_95[6:0] == 7'h00, reverse_95[6] && reverse_95[5:0] == 6'h00, reverse_95[5] && reverse_95[4:0] == 5'h00, reverse_95[4] && reverse_95[3:0] == 4'h0, reverse_95[3] && reverse_95[2:0] == 3'h0, reverse_95[2] && reverse_95[1:0] == 2'h0, reverse_95[1] && !reverse_95[0], reverse_95[0]}; assign MAX_EXPONENT = 4'h7; assign lz = {one_hot_96[8], one_hot_96[4] | one_hot_96[5] | one_hot_96[6] | one_hot_96[7], one_hot_96[2] | one_hot_96[3] | one_hot_96[6] | one_hot_96[7], one_hot_96[1] | one_hot_96[3] | one_hot_96[5] | one_hot_96[7]}; assign exp = MAX_EXPONENT - lz; assign add_103 = lz + 4'h1; assign BIAS = 8'h7f; assign ne_106 = x != 8'h00; assign shll_107 = add_103 >= 4'h8 ? 8'h00 : x << add_103; assign bexp = {4'h0, exp} + BIAS; assign fraction = shll_107[7:1]; assign sign = 1'h0; assign out = {sign, bexp & {8{ne_106}}, fraction & {7{ne_106}}}; endmodule