module __bfloat16__normalize( input wire sign, input wire [7:0] exp, input wire [7:0] fraction_with_hidden, output wire [15:0] out ); wire [7:0] reverse_172; wire [8:0] one_hot_173; wire [3:0] encode_175; wire [7:0] concat_176; wire is_denormal; wire nor_180; wire [7:0] sub_182; wire [6:0] normalized_fraction; assign reverse_172 = {fraction_with_hidden[0], fraction_with_hidden[1], fraction_with_hidden[2], fraction_with_hidden[3], fraction_with_hidden[4], fraction_with_hidden[5], fraction_with_hidden[6], fraction_with_hidden[7]}; assign one_hot_173 = {reverse_172[7:0] == 8'h00, reverse_172[7] && reverse_172[6:0] == 7'h00, reverse_172[6] && reverse_172[5:0] == 6'h00, reverse_172[5] && reverse_172[4:0] == 5'h00, reverse_172[4] && reverse_172[3:0] == 4'h0, reverse_172[3] && reverse_172[2:0] == 3'h0, reverse_172[2] && reverse_172[1:0] == 2'h0, reverse_172[1] && !reverse_172[0], reverse_172[0]}; assign encode_175 = {one_hot_173[8], one_hot_173[4] | one_hot_173[5] | one_hot_173[6] | one_hot_173[7], one_hot_173[2] | one_hot_173[3] | one_hot_173[6] | one_hot_173[7], one_hot_173[1] | one_hot_173[3] | one_hot_173[5] | one_hot_173[7]}; assign concat_176 = {4'h0, encode_175}; assign is_denormal = exp <= concat_176; assign nor_180 = ~(is_denormal | encode_175 == 4'h8); assign sub_182 = exp - concat_176; assign normalized_fraction = encode_175 >= 4'h7 ? 7'h00 : fraction_with_hidden[6:0] << encode_175; assign out = {sign, sub_182 & {8{nor_180}}, normalized_fraction & {7{nor_180}}}; endmodule