module __float32__fma( input wire [31:0] a, input wire [31:0] b, input wire [31:0] c, output wire [31:0] out ); // lint_off MULTIPLY function automatic [47:0] umul48b_24b_x_24b (input reg [23:0] lhs, input reg [23:0] rhs); begin umul48b_24b_x_24b = lhs * rhs; end endfunction // lint_on MULTIPLY function automatic priority_sel_1b_2way (input reg [1:0] sel, input reg case0, input reg case1, input reg default_value); begin casez (sel) 2'b?1: begin priority_sel_1b_2way = case0; end 2'b10: begin priority_sel_1b_2way = case1; end 2'b00: begin priority_sel_1b_2way = default_value; end default: begin // Propagate X priority_sel_1b_2way = 1'dx; end endcase end endfunction wire [7:0] a_bexp__1; wire [7:0] b_bexp__1; wire cancel__1; wire bnot__1; wire [22:0] a_fraction__1; wire [22:0] b_fraction__1; wire eq_2072; wire eq_2073; wire [23:0] a_significand__1; wire [23:0] b_significand__1; wire nor_2078; wire [8:0] add_2079; wire [47:0] umul_2080; wire [7:0] max_exp; wire [47:0] full_product; wire eq_2087; wire eq_2088; wire eq_2089; wire eq_2090; wire [9:0] exp; wire in_upper_binade; wire [9:0] exp__1; wire has_inf_arg; wire [9:0] result_exp__1; wire [9:0] result_exp__3; wire is_subnormal; wire has_0_arg; wire is_result_nan__1; wire [8:0] result_exp; wire [7:0] c_bexp__2; wire [8:0] ab_bexp__2; wire [7:0] bnot__2; wire [9:0] ab_bexp_extended__1; wire [9:0] bnot_extended__2; wire [9:0] full_result; wire overflow_detected; wire nc; wire [8:0] narrowed_result; wire [8:0] ab_bexpor_mask__2; wire [47:0] result_fraction__1; wire [8:0] result; wire [47:0] result_fraction__2; wire [8:0] exp_difference; wire [22:0] c_fraction__2; wire [47:0] result_fraction__5; wire [8:0] rshift_ab; wire [23:0] sign_ext_2148; wire [8:0] rshift_c; wire [47:0] ab_fraction__2; wire [72:0] shll_2152; wire [23:0] wide_c__3; wire [72:0] shll_2156; wire a_sign__1; wire b_sign__1; wire [72:0] wide_ab; wire [72:0] wide_c__2; wire result_sign__3; wire [72:0] shifted_ab; wire [72:0] shifted_c; wire c_sign__2; wire ab_sign__2; wire greater_sign; wire [73:0] shifted_ab__1_squeezed; wire [73:0] shifted_c__1_squeezed; wire [73:0] shifted_ab__2_squeezed; wire [73:0] shifted_c__2_squeezed; wire [74:0] shifted_ab__2; wire [74:0] shifted_c__2; wire [74:0] sum_fraction; wire [73:0] abs_fraction__2; wire [73:0] reverse_2200; wire [74:0] one_hot_2201; wire [6:0] encode_2202; wire cancel__2; wire carry_bit__2; wire [7:0] add_2211; wire carry_fraction__1; wire [2:0] concat_2219; wire [72:0] carry_fraction__2; wire [72:0] cancel_fraction__2; wire [72:0] shifted_fraction; wire [48:0] normal_chunk; wire [48:0] half_of_extra; wire [1:0] half_way_chunk; wire [24:0] concat_2231; wire [24:0] add_2234; wire [24:0] rounded_fraction__1; wire [6:0] sub_2240; wire [8:0] greater_exp; wire rounding_carry; wire [7:0] concat_2245; wire fraction_is_zero; wire [9:0] bexp_associative_element__1; wire [9:0] bexp_associative_element__4; wire [9:0] bexp__1; wire [9:0] bexp__2; wire eq_2259; wire eq_2260; wire eq_2261; wire eq_2262; wire [8:0] bexp__6; wire and_2267; wire is_operand_inf; wire and_reduce_2276; wire has_pos_inf; wire has_neg_inf; wire is_result_nan; wire result_sign; wire [22:0] result_fraction; wire result_sign__1; wire [22:0] result_fraction__3; wire [3:0] one_hot_2306; wire result_sign__2; wire [7:0] result_exp__2; wire [22:0] result_fraction__4; wire nand_2299; wire eq_2308; assign a_bexp__1 = a[30:23]; assign b_bexp__1 = b[30:23]; assign cancel__1 = 1'h0; assign bnot__1 = 1'h1; assign a_fraction__1 = a[22:0]; assign b_fraction__1 = b[22:0]; assign eq_2072 = a_bexp__1 == 8'h00; assign eq_2073 = b_bexp__1 == 8'h00; assign a_significand__1 = {bnot__1, a_fraction__1}; assign b_significand__1 = {bnot__1, b_fraction__1}; assign nor_2078 = ~(eq_2072 | eq_2073); assign add_2079 = {cancel__1, a_bexp__1} + {cancel__1, b_bexp__1}; assign umul_2080 = umul48b_24b_x_24b(a_significand__1, b_significand__1); assign max_exp = 8'hff; assign full_product = umul_2080 & {48{nor_2078}}; assign eq_2087 = a_bexp__1 == max_exp; assign eq_2088 = a_fraction__1 == 23'h00_0000; assign eq_2089 = b_bexp__1 == max_exp; assign eq_2090 = b_fraction__1 == 23'h00_0000; assign exp = {cancel__1, add_2079} + 10'h381; assign in_upper_binade = full_product[47]; assign exp__1 = exp & {10{nor_2078}}; assign has_inf_arg = eq_2087 & eq_2088 | eq_2089 & eq_2090; assign result_exp__1 = exp__1 + {9'h000, in_upper_binade}; assign result_exp__3 = has_inf_arg ? 10'h1ff : result_exp__1; assign is_subnormal = $signed(result_exp__3) <= $signed(10'h000); assign has_0_arg = eq_2072 | eq_2073; assign is_result_nan__1 = ~(~eq_2087 | eq_2088) | ~(~eq_2089 | eq_2090) | has_0_arg & has_inf_arg; assign result_exp = result_exp__3[8:0] & {9{~is_subnormal}}; assign c_bexp__2 = c[30:23]; assign ab_bexp__2 = is_result_nan__1 ? 9'h1ff : result_exp; assign bnot__2 = ~c_bexp__2; assign ab_bexp_extended__1 = {cancel__1, ab_bexp__2}; assign bnot_extended__2 = {2'h1, bnot__2}; assign full_result = ab_bexp_extended__1 + bnot_extended__2; assign overflow_detected = full_result[9]; assign nc = ~overflow_detected; assign narrowed_result = full_result[8:0]; assign ab_bexpor_mask__2 = {9{nc}}; assign result_fraction__1 = in_upper_binade ? full_product : {full_product[46:0], cancel__1}; assign result = narrowed_result ^ ab_bexpor_mask__2; assign result_fraction__2 = result_fraction__1 & {48{~has_inf_arg}}; assign exp_difference = result + {8'h00, overflow_detected}; assign c_fraction__2 = c[22:0]; assign result_fraction__5 = (-result_exp__3[8:0] & {9{is_subnormal}}) >= 9'h030 ? 48'h0000_0000_0000 : result_fraction__2 >> (-result_exp__3[8:0] & {9{is_subnormal}}); assign rshift_ab = exp_difference & ab_bexpor_mask__2; assign sign_ext_2148 = {24{c_bexp__2 != 8'h00}}; assign rshift_c = exp_difference & {9{overflow_detected}}; assign ab_fraction__2 = is_result_nan__1 ? 48'hc000_0000_0000 : result_fraction__5; assign shll_2152 = rshift_ab >= 9'h049 ? 73'h000_0000_0000_0000_0000 : 73'h1ff_ffff_ffff_ffff_ffff << rshift_ab; assign wide_c__3 = {bnot__1, c_fraction__2} & sign_ext_2148; assign shll_2156 = rshift_c >= 9'h049 ? 73'h000_0000_0000_0000_0000 : 73'h1ff_ffff_ffff_ffff_ffff << rshift_c; assign a_sign__1 = a[31:31]; assign b_sign__1 = b[31:31]; assign wide_ab = {ab_fraction__2, 25'h000_0000}; assign wide_c__2 = {wide_c__3, 49'h0_0000_0000_0000}; assign result_sign__3 = a_sign__1 ^ b_sign__1; assign shifted_ab = rshift_ab >= 9'h049 ? 73'h000_0000_0000_0000_0000 : wide_ab >> rshift_ab; assign shifted_c = rshift_c >= 9'h049 ? 73'h000_0000_0000_0000_0000 : wide_c__2 >> rshift_c; assign c_sign__2 = c[31:31]; assign ab_sign__2 = ~(is_result_nan__1 | ~result_sign__3); assign greater_sign = overflow_detected ? ab_sign__2 : c_sign__2; assign shifted_ab__1_squeezed = {cancel__1, shifted_ab[72:1], shifted_ab[0] | ~(~ab_fraction__2 | shll_2152[72:25]) != 48'h0000_0000_0000}; assign shifted_c__1_squeezed = {cancel__1, shifted_c[72:1], shifted_c[0] | ~({cancel__1, ~c_fraction__2} | ~sign_ext_2148 | shll_2156[72:49]) != 24'h00_0000}; assign shifted_ab__2_squeezed = ab_sign__2 ^ greater_sign ? -shifted_ab__1_squeezed : shifted_ab__1_squeezed; assign shifted_c__2_squeezed = c_sign__2 ^ greater_sign ? -shifted_c__1_squeezed : shifted_c__1_squeezed; assign shifted_ab__2 = {{1{shifted_ab__2_squeezed[73]}}, shifted_ab__2_squeezed}; assign shifted_c__2 = {{1{shifted_c__2_squeezed[73]}}, shifted_c__2_squeezed}; assign sum_fraction = shifted_ab__2 + shifted_c__2; assign abs_fraction__2 = sum_fraction[74] ? -sum_fraction[73:0] : sum_fraction[73:0]; assign reverse_2200 = {abs_fraction__2[0], abs_fraction__2[1], abs_fraction__2[2], abs_fraction__2[3], abs_fraction__2[4], abs_fraction__2[5], abs_fraction__2[6], abs_fraction__2[7], abs_fraction__2[8], abs_fraction__2[9], abs_fraction__2[10], abs_fraction__2[11], abs_fraction__2[12], abs_fraction__2[13], abs_fraction__2[14], abs_fraction__2[15], abs_fraction__2[16], abs_fraction__2[17], abs_fraction__2[18], abs_fraction__2[19], abs_fraction__2[20], abs_fraction__2[21], abs_fraction__2[22], abs_fraction__2[23], abs_fraction__2[24], abs_fraction__2[25], abs_fraction__2[26], abs_fraction__2[27], abs_fraction__2[28], abs_fraction__2[29], abs_fraction__2[30], abs_fraction__2[31], abs_fraction__2[32], abs_fraction__2[33], abs_fraction__2[34], abs_fraction__2[35], abs_fraction__2[36], abs_fraction__2[37], abs_fraction__2[38], abs_fraction__2[39], abs_fraction__2[40], abs_fraction__2[41], abs_fraction__2[42], abs_fraction__2[43], abs_fraction__2[44], abs_fraction__2[45], abs_fraction__2[46], abs_fraction__2[47], abs_fraction__2[48], abs_fraction__2[49], abs_fraction__2[50], abs_fraction__2[51], abs_fraction__2[52], abs_fraction__2[53], abs_fraction__2[54], abs_fraction__2[55], abs_fraction__2[56], abs_fraction__2[57], abs_fraction__2[58], abs_fraction__2[59], abs_fraction__2[60], abs_fraction__2[61], abs_fraction__2[62], abs_fraction__2[63], abs_fraction__2[64], abs_fraction__2[65], abs_fraction__2[66], abs_fraction__2[67], abs_fraction__2[68], abs_fraction__2[69], abs_fraction__2[70], abs_fraction__2[71], abs_fraction__2[72], abs_fraction__2[73]}; assign one_hot_2201 = {reverse_2200[73:0] == 74'h000_0000_0000_0000_0000, reverse_2200[73] && reverse_2200[72:0] == 73'h000_0000_0000_0000_0000, reverse_2200[72] && reverse_2200[71:0] == 72'h00_0000_0000_0000_0000, reverse_2200[71] && reverse_2200[70:0] == 71'h00_0000_0000_0000_0000, reverse_2200[70] && reverse_2200[69:0] == 70'h00_0000_0000_0000_0000, reverse_2200[69] && reverse_2200[68:0] == 69'h00_0000_0000_0000_0000, reverse_2200[68] && reverse_2200[67:0] == 68'h0_0000_0000_0000_0000, reverse_2200[67] && reverse_2200[66:0] == 67'h0_0000_0000_0000_0000, reverse_2200[66] && reverse_2200[65:0] == 66'h0_0000_0000_0000_0000, reverse_2200[65] && reverse_2200[64:0] == 65'h0_0000_0000_0000_0000, reverse_2200[64] && reverse_2200[63:0] == 64'h0000_0000_0000_0000, reverse_2200[63] && reverse_2200[62:0] == 63'h0000_0000_0000_0000, reverse_2200[62] && reverse_2200[61:0] == 62'h0000_0000_0000_0000, reverse_2200[61] && reverse_2200[60:0] == 61'h0000_0000_0000_0000, reverse_2200[60] && reverse_2200[59:0] == 60'h000_0000_0000_0000, reverse_2200[59] && reverse_2200[58:0] == 59'h000_0000_0000_0000, reverse_2200[58] && reverse_2200[57:0] == 58'h000_0000_0000_0000, reverse_2200[57] && reverse_2200[56:0] == 57'h000_0000_0000_0000, reverse_2200[56] && reverse_2200[55:0] == 56'h00_0000_0000_0000, reverse_2200[55] && reverse_2200[54:0] == 55'h00_0000_0000_0000, reverse_2200[54] && reverse_2200[53:0] == 54'h00_0000_0000_0000, reverse_2200[53] && reverse_2200[52:0] == 53'h00_0000_0000_0000, reverse_2200[52] && reverse_2200[51:0] == 52'h0_0000_0000_0000, reverse_2200[51] && reverse_2200[50:0] == 51'h0_0000_0000_0000, reverse_2200[50] && reverse_2200[49:0] == 50'h0_0000_0000_0000, reverse_2200[49] && reverse_2200[48:0] == 49'h0_0000_0000_0000, reverse_2200[48] && reverse_2200[47:0] == 48'h0000_0000_0000, reverse_2200[47] && reverse_2200[46:0] == 47'h0000_0000_0000, reverse_2200[46] && reverse_2200[45:0] == 46'h0000_0000_0000, reverse_2200[45] && reverse_2200[44:0] == 45'h0000_0000_0000, reverse_2200[44] && reverse_2200[43:0] == 44'h000_0000_0000, reverse_2200[43] && reverse_2200[42:0] == 43'h000_0000_0000, reverse_2200[42] && reverse_2200[41:0] == 42'h000_0000_0000, reverse_2200[41] && reverse_2200[40:0] == 41'h000_0000_0000, reverse_2200[40] && reverse_2200[39:0] == 40'h00_0000_0000, reverse_2200[39] && reverse_2200[38:0] == 39'h00_0000_0000, reverse_2200[38] && reverse_2200[37:0] == 38'h00_0000_0000, reverse_2200[37] && reverse_2200[36:0] == 37'h00_0000_0000, reverse_2200[36] && reverse_2200[35:0] == 36'h0_0000_0000, reverse_2200[35] && reverse_2200[34:0] == 35'h0_0000_0000, reverse_2200[34] && reverse_2200[33:0] == 34'h0_0000_0000, reverse_2200[33] && reverse_2200[32:0] == 33'h0_0000_0000, reverse_2200[32] && reverse_2200[31:0] == 32'h0000_0000, reverse_2200[31] && reverse_2200[30:0] == 31'h0000_0000, reverse_2200[30] && reverse_2200[29:0] == 30'h0000_0000, reverse_2200[29] && reverse_2200[28:0] == 29'h0000_0000, reverse_2200[28] && reverse_2200[27:0] == 28'h000_0000, reverse_2200[27] && reverse_2200[26:0] == 27'h000_0000, reverse_2200[26] && reverse_2200[25:0] == 26'h000_0000, reverse_2200[25] && reverse_2200[24:0] == 25'h000_0000, reverse_2200[24] && reverse_2200[23:0] == 24'h00_0000, reverse_2200[23] && reverse_2200[22:0] == 23'h00_0000, reverse_2200[22] && reverse_2200[21:0] == 22'h00_0000, reverse_2200[21] && reverse_2200[20:0] == 21'h00_0000, reverse_2200[20] && reverse_2200[19:0] == 20'h0_0000, reverse_2200[19] && reverse_2200[18:0] == 19'h0_0000, reverse_2200[18] && reverse_2200[17:0] == 18'h0_0000, reverse_2200[17] && reverse_2200[16:0] == 17'h0_0000, reverse_2200[16] && reverse_2200[15:0] == 16'h0000, reverse_2200[15] && reverse_2200[14:0] == 15'h0000, reverse_2200[14] && reverse_2200[13:0] == 14'h0000, reverse_2200[13] && reverse_2200[12:0] == 13'h0000, reverse_2200[12] && reverse_2200[11:0] == 12'h000, reverse_2200[11] && reverse_2200[10:0] == 11'h000, reverse_2200[10] && reverse_2200[9:0] == 10'h000, reverse_2200[9] && reverse_2200[8:0] == 9'h000, reverse_2200[8] && reverse_2200[7:0] == 8'h00, reverse_2200[7] && reverse_2200[6:0] == 7'h00, reverse_2200[6] && reverse_2200[5:0] == 6'h00, reverse_2200[5] && reverse_2200[4:0] == 5'h00, reverse_2200[4] && reverse_2200[3:0] == 4'h0, reverse_2200[3] && reverse_2200[2:0] == 3'h0, reverse_2200[2] && reverse_2200[1:0] == 2'h0, reverse_2200[1] && !reverse_2200[0], reverse_2200[0]}; assign encode_2202 = {one_hot_2201[64] | one_hot_2201[65] | one_hot_2201[66] | one_hot_2201[67] | one_hot_2201[68] | one_hot_2201[69] | one_hot_2201[70] | one_hot_2201[71] | one_hot_2201[72] | one_hot_2201[73] | one_hot_2201[74], one_hot_2201[32] | one_hot_2201[33] | one_hot_2201[34] | one_hot_2201[35] | one_hot_2201[36] | one_hot_2201[37] | one_hot_2201[38] | one_hot_2201[39] | one_hot_2201[40] | one_hot_2201[41] | one_hot_2201[42] | one_hot_2201[43] | one_hot_2201[44] | one_hot_2201[45] | one_hot_2201[46] | one_hot_2201[47] | one_hot_2201[48] | one_hot_2201[49] | one_hot_2201[50] | one_hot_2201[51] | one_hot_2201[52] | one_hot_2201[53] | one_hot_2201[54] | one_hot_2201[55] | one_hot_2201[56] | one_hot_2201[57] | one_hot_2201[58] | one_hot_2201[59] | one_hot_2201[60] | one_hot_2201[61] | one_hot_2201[62] | one_hot_2201[63], one_hot_2201[16] | one_hot_2201[17] | one_hot_2201[18] | one_hot_2201[19] | one_hot_2201[20] | one_hot_2201[21] | one_hot_2201[22] | one_hot_2201[23] | one_hot_2201[24] | one_hot_2201[25] | one_hot_2201[26] | one_hot_2201[27] | one_hot_2201[28] | one_hot_2201[29] | one_hot_2201[30] | one_hot_2201[31] | one_hot_2201[48] | one_hot_2201[49] | one_hot_2201[50] | one_hot_2201[51] | one_hot_2201[52] | one_hot_2201[53] | one_hot_2201[54] | one_hot_2201[55] | one_hot_2201[56] | one_hot_2201[57] | one_hot_2201[58] | one_hot_2201[59] | one_hot_2201[60] | one_hot_2201[61] | one_hot_2201[62] | one_hot_2201[63], one_hot_2201[8] | one_hot_2201[9] | one_hot_2201[10] | one_hot_2201[11] | one_hot_2201[12] | one_hot_2201[13] | one_hot_2201[14] | one_hot_2201[15] | one_hot_2201[24] | one_hot_2201[25] | one_hot_2201[26] | one_hot_2201[27] | one_hot_2201[28] | one_hot_2201[29] | one_hot_2201[30] | one_hot_2201[31] | one_hot_2201[40] | one_hot_2201[41] | one_hot_2201[42] | one_hot_2201[43] | one_hot_2201[44] | one_hot_2201[45] | one_hot_2201[46] | one_hot_2201[47] | one_hot_2201[56] | one_hot_2201[57] | one_hot_2201[58] | one_hot_2201[59] | one_hot_2201[60] | one_hot_2201[61] | one_hot_2201[62] | one_hot_2201[63] | one_hot_2201[72] | one_hot_2201[73] | one_hot_2201[74], one_hot_2201[4] | one_hot_2201[5] | one_hot_2201[6] | one_hot_2201[7] | one_hot_2201[12] | one_hot_2201[13] | one_hot_2201[14] | one_hot_2201[15] | one_hot_2201[20] | one_hot_2201[21] | one_hot_2201[22] | one_hot_2201[23] | one_hot_2201[28] | one_hot_2201[29] | one_hot_2201[30] | one_hot_2201[31] | one_hot_2201[36] | one_hot_2201[37] | one_hot_2201[38] | one_hot_2201[39] | one_hot_2201[44] | one_hot_2201[45] | one_hot_2201[46] | one_hot_2201[47] | one_hot_2201[52] | one_hot_2201[53] | one_hot_2201[54] | one_hot_2201[55] | one_hot_2201[60] | one_hot_2201[61] | one_hot_2201[62] | one_hot_2201[63] | one_hot_2201[68] | one_hot_2201[69] | one_hot_2201[70] | one_hot_2201[71], one_hot_2201[2] | one_hot_2201[3] | one_hot_2201[6] | one_hot_2201[7] | one_hot_2201[10] | one_hot_2201[11] | one_hot_2201[14] | one_hot_2201[15] | one_hot_2201[18] | one_hot_2201[19] | one_hot_2201[22] | one_hot_2201[23] | one_hot_2201[26] | one_hot_2201[27] | one_hot_2201[30] | one_hot_2201[31] | one_hot_2201[34] | one_hot_2201[35] | one_hot_2201[38] | one_hot_2201[39] | one_hot_2201[42] | one_hot_2201[43] | one_hot_2201[46] | one_hot_2201[47] | one_hot_2201[50] | one_hot_2201[51] | one_hot_2201[54] | one_hot_2201[55] | one_hot_2201[58] | one_hot_2201[59] | one_hot_2201[62] | one_hot_2201[63] | one_hot_2201[66] | one_hot_2201[67] | one_hot_2201[70] | one_hot_2201[71] | one_hot_2201[74], one_hot_2201[1] | one_hot_2201[3] | one_hot_2201[5] | one_hot_2201[7] | one_hot_2201[9] | one_hot_2201[11] | one_hot_2201[13] | one_hot_2201[15] | one_hot_2201[17] | one_hot_2201[19] | one_hot_2201[21] | one_hot_2201[23] | one_hot_2201[25] | one_hot_2201[27] | one_hot_2201[29] | one_hot_2201[31] | one_hot_2201[33] | one_hot_2201[35] | one_hot_2201[37] | one_hot_2201[39] | one_hot_2201[41] | one_hot_2201[43] | one_hot_2201[45] | one_hot_2201[47] | one_hot_2201[49] | one_hot_2201[51] | one_hot_2201[53] | one_hot_2201[55] | one_hot_2201[57] | one_hot_2201[59] | one_hot_2201[61] | one_hot_2201[63] | one_hot_2201[65] | one_hot_2201[67] | one_hot_2201[69] | one_hot_2201[71] | one_hot_2201[73]}; assign cancel__2 = |encode_2202[6:1]; assign carry_bit__2 = abs_fraction__2[73]; assign add_2211 = {cancel__1, encode_2202} + max_exp; assign carry_fraction__1 = abs_fraction__2[1] | abs_fraction__2[0]; assign concat_2219 = {~(carry_bit__2 | cancel__2), ~(carry_bit__2 | ~cancel__2), ~(~carry_bit__2 | cancel__2)}; assign carry_fraction__2 = {abs_fraction__2[73:2], carry_fraction__1}; assign cancel_fraction__2 = {{66{add_2211[7]}}, add_2211} >= 74'h000_0000_0000_0000_0049 ? 73'h000_0000_0000_0000_0000 : abs_fraction__2[72:0] << {{66{add_2211[7]}}, add_2211}; assign shifted_fraction = carry_fraction__2 & {73{concat_2219[0]}} | cancel_fraction__2 & {73{concat_2219[1]}} | abs_fraction__2[72:0] & {73{concat_2219[2]}}; assign normal_chunk = shifted_fraction[48:0]; assign half_of_extra = 49'h1_0000_0000_0000; assign half_way_chunk = shifted_fraction[49:48]; assign concat_2231 = {cancel__1, shifted_fraction[72:49]}; assign add_2234 = concat_2231 + 25'h000_0001; assign rounded_fraction__1 = normal_chunk > half_of_extra | half_way_chunk == 2'h3 ? add_2234 : concat_2231; assign sub_2240 = 7'h00 - {cancel__1, encode_2202[6:1]}; assign greater_exp = overflow_detected ? ab_bexp__2 : {cancel__1, c_bexp__2}; assign rounding_carry = rounded_fraction__1[24]; assign concat_2245 = {sub_2240, ~encode_2202[0]}; assign fraction_is_zero = sum_fraction == 75'h000_0000_0000_0000_0000; assign bexp_associative_element__1 = {{2{concat_2245[7]}}, concat_2245}; assign bexp_associative_element__4 = {cancel__1, greater_exp} + {9'h000, rounding_carry}; assign bexp__1 = bexp_associative_element__1 + bexp_associative_element__4; assign bexp__2 = bexp__1 & {10{~fraction_is_zero}}; assign eq_2259 = ab_bexp__2 == 9'h1ff; assign eq_2260 = ab_fraction__2 == 48'h0000_0000_0000; assign eq_2261 = c_bexp__2 == max_exp; assign eq_2262 = c_fraction__2 == 23'h00_0000; assign bexp__6 = bexp__2[8:0] & {9{~bexp__2[9]}}; assign and_2267 = eq_2259 & eq_2260; assign is_operand_inf = and_2267 | eq_2261 & eq_2262; assign and_reduce_2276 = &bexp__6[7:0]; assign has_pos_inf = ~(~(eq_2259 & eq_2260) | ab_sign__2) | ~(~eq_2261 | ~eq_2262 | c_sign__2); assign has_neg_inf = and_2267 & ab_sign__2 | eq_2261 & eq_2262 & c_sign__2; assign is_result_nan = ~(~eq_2259 | eq_2260) | ~(~eq_2261 | eq_2262) | has_pos_inf & has_neg_inf; assign result_sign = priority_sel_1b_2way({sum_fraction[74], fraction_is_zero}, cancel__1, ~greater_sign, greater_sign); assign result_fraction = rounded_fraction__1[22:0]; assign result_sign__1 = is_operand_inf ? ~has_pos_inf : result_sign; assign result_fraction__3 = result_fraction & {23{~(is_operand_inf | bexp__6[8] | and_reduce_2276 | bexp__6 == 9'h000)}}; assign one_hot_2306 = {concat_2219[2:0] == 3'h0, concat_2219[2] && concat_2219[1:0] == 2'h0, concat_2219[1] && !concat_2219[0], concat_2219[0]}; assign result_sign__2 = ~is_result_nan & result_sign__1; assign result_exp__2 = is_result_nan | is_operand_inf | bexp__6[8] | and_reduce_2276 ? max_exp : bexp__6[7:0]; assign result_fraction__4 = is_result_nan ? 23'h08_0000 : result_fraction__3; assign nand_2299 = ~(carry_bit__2 & cancel__2); assign eq_2308 = concat_2219 == one_hot_2306[2:0]; assign out = {result_sign__2, result_exp__2, result_fraction__4}; endmodule