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] literal_2026; 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_2032; wire eq_2033; wire [23:0] a_significand__1; wire [23:0] b_significand__1; wire nor_2038; wire [8:0] add_2039; wire [47:0] umul_2040; wire [7:0] max_exp; wire [22:0] literal_2043; wire [47:0] full_product; wire eq_2047; wire eq_2048; wire eq_2049; wire eq_2050; wire [9:0] exp; wire [8:0] literal_2053; wire in_upper_binade; wire [9:0] exp__1; wire has_inf_arg; wire [9:0] result_exp__3; wire [9:0] result_exp__4; wire is_subnormal; wire has_0_arg; wire is_result_nan__1; wire [8:0] result_exp__5; wire [8:0] literal_2076; 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__5; wire [8:0] result; wire [47:0] result_fraction__6; wire [8:0] exp_difference; wire [47:0] result_fraction__7; wire [72:0] literal_2103; wire [8:0] rshift_ab; wire [22:0] c_fraction__2; wire [8:0] rshift_c; wire [47:0] ab_fraction__2; wire [72:0] shll_2109; wire [23:0] sign_ext_2111; wire [72:0] shll_2112; wire a_sign__1; wire b_sign__1; wire [47:0] literal_2123; wire [23:0] wide_c__3; wire result_sign__3; wire [72:0] wide_ab; wire [71:0] literal_2130; wire [72:0] wide_c__2; wire [72:0] shifted_ab; wire [72:0] sticky_ab; wire [72:0] shifted_c; wire [72:0] sticky_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_2159; wire [74:0] one_hot_2160; wire [6:0] encode_2161; wire cancel__2; wire carry_bit__2; wire [7:0] concat_2165; wire [7:0] add_2169; wire [72:0] carry_fraction__1; wire [2:0] concat_2177; wire [72:0] carry_fraction__4; 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_2189; wire [24:0] add_2192; wire [24:0] rounded_fraction__1; wire [8:0] greater_exp; wire rounding_carry; wire [7:0] sub_2199; 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_2213; wire eq_2214; wire eq_2215; wire eq_2216; wire [8:0] bexp__6; wire and_2221; wire is_operand_inf; wire and_reduce_2230; 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_2260; wire result_sign__2; wire [7:0] result_exp__2; wire [22:0] result_fraction__4; assign a_bexp__1 = a[30:23]; assign literal_2026 = 8'h00; 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_2032 = a_bexp__1 == literal_2026; assign eq_2033 = b_bexp__1 == literal_2026; assign a_significand__1 = {bnot__1, a_fraction__1}; assign b_significand__1 = {bnot__1, b_fraction__1}; assign nor_2038 = ~(eq_2032 | eq_2033); assign add_2039 = {cancel__1, a_bexp__1} + {cancel__1, b_bexp__1}; assign umul_2040 = umul48b_24b_x_24b(a_significand__1, b_significand__1); assign max_exp = 8'hff; assign literal_2043 = 23'h00_0000; assign full_product = umul_2040 & {48{nor_2038}}; assign eq_2047 = a_bexp__1 == max_exp; assign eq_2048 = a_fraction__1 == literal_2043; assign eq_2049 = b_bexp__1 == max_exp; assign eq_2050 = b_fraction__1 == literal_2043; assign exp = {cancel__1, add_2039} + 10'h381; assign literal_2053 = 9'h000; assign in_upper_binade = full_product[47]; assign exp__1 = exp & {10{nor_2038}}; assign has_inf_arg = eq_2047 & eq_2048 | eq_2049 & eq_2050; assign result_exp__3 = exp__1 + {literal_2053, in_upper_binade}; assign result_exp__4 = has_inf_arg ? 10'h1ff : result_exp__3; assign is_subnormal = $signed(result_exp__4) <= $signed(10'h000); assign has_0_arg = eq_2032 | eq_2033; assign is_result_nan__1 = ~(~eq_2047 | eq_2048) | ~(~eq_2049 | eq_2050) | has_0_arg & has_inf_arg; assign result_exp__5 = result_exp__4[8:0] & {9{~is_subnormal}}; assign literal_2076 = 9'h1ff; assign c_bexp__2 = c[30:23]; assign ab_bexp__2 = is_result_nan__1 ? literal_2076 : result_exp__5; 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__5 = in_upper_binade ? full_product : {full_product[46:0], cancel__1}; assign result = narrowed_result ^ ab_bexpor_mask__2; assign result_fraction__6 = result_fraction__5 & {48{~has_inf_arg}}; assign exp_difference = result + {literal_2026, overflow_detected}; assign result_fraction__7 = (-result_exp__4[8:0] & {9{is_subnormal}}) >= 9'h030 ? 48'h0000_0000_0000 : result_fraction__6 >> (-result_exp__4[8:0] & {9{is_subnormal}}); assign literal_2103 = 73'h1ff_ffff_ffff_ffff_ffff; assign rshift_ab = exp_difference & ab_bexpor_mask__2; assign c_fraction__2 = c[22:0]; assign rshift_c = exp_difference & {9{overflow_detected}}; assign ab_fraction__2 = is_result_nan__1 ? 48'hc000_0000_0000 : result_fraction__7; assign shll_2109 = rshift_ab >= 9'h049 ? 73'h000_0000_0000_0000_0000 : literal_2103 << rshift_ab; assign sign_ext_2111 = {24{c_bexp__2 != literal_2026}}; assign shll_2112 = rshift_c >= 9'h049 ? 73'h000_0000_0000_0000_0000 : literal_2103 << rshift_c; assign a_sign__1 = a[31:31]; assign b_sign__1 = b[31:31]; assign literal_2123 = 48'h0000_0000_0000; assign wide_c__3 = {bnot__1, c_fraction__2} & sign_ext_2111; assign result_sign__3 = a_sign__1 ^ b_sign__1; assign wide_ab = {ab_fraction__2, 25'h000_0000}; assign literal_2130 = 72'h00_0000_0000_0000_0000; assign wide_c__2 = {wide_c__3, 49'h0_0000_0000_0000}; assign shifted_ab = rshift_ab >= 9'h049 ? 73'h000_0000_0000_0000_0000 : wide_ab >> rshift_ab; assign sticky_ab = {literal_2130, ~(~ab_fraction__2 | shll_2109[72:25]) != literal_2123}; assign shifted_c = rshift_c >= 9'h049 ? 73'h000_0000_0000_0000_0000 : wide_c__2 >> rshift_c; assign sticky_c = {literal_2130, ~({cancel__1, ~c_fraction__2} | ~sign_ext_2111 | shll_2112[72:49]) != 24'h00_0000}; 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 | sticky_ab}; assign shifted_c__1_squeezed = {cancel__1, shifted_c | sticky_c}; 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_2159 = {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_2160 = {reverse_2159[73:0] == 74'h000_0000_0000_0000_0000, reverse_2159[73] && reverse_2159[72:0] == 73'h000_0000_0000_0000_0000, reverse_2159[72] && reverse_2159[71:0] == 72'h00_0000_0000_0000_0000, reverse_2159[71] && reverse_2159[70:0] == 71'h00_0000_0000_0000_0000, reverse_2159[70] && reverse_2159[69:0] == 70'h00_0000_0000_0000_0000, reverse_2159[69] && reverse_2159[68:0] == 69'h00_0000_0000_0000_0000, reverse_2159[68] && reverse_2159[67:0] == 68'h0_0000_0000_0000_0000, reverse_2159[67] && reverse_2159[66:0] == 67'h0_0000_0000_0000_0000, reverse_2159[66] && reverse_2159[65:0] == 66'h0_0000_0000_0000_0000, reverse_2159[65] && reverse_2159[64:0] == 65'h0_0000_0000_0000_0000, reverse_2159[64] && reverse_2159[63:0] == 64'h0000_0000_0000_0000, reverse_2159[63] && reverse_2159[62:0] == 63'h0000_0000_0000_0000, reverse_2159[62] && reverse_2159[61:0] == 62'h0000_0000_0000_0000, reverse_2159[61] && reverse_2159[60:0] == 61'h0000_0000_0000_0000, reverse_2159[60] && reverse_2159[59:0] == 60'h000_0000_0000_0000, reverse_2159[59] && reverse_2159[58:0] == 59'h000_0000_0000_0000, reverse_2159[58] && reverse_2159[57:0] == 58'h000_0000_0000_0000, reverse_2159[57] && reverse_2159[56:0] == 57'h000_0000_0000_0000, reverse_2159[56] && reverse_2159[55:0] == 56'h00_0000_0000_0000, reverse_2159[55] && reverse_2159[54:0] == 55'h00_0000_0000_0000, reverse_2159[54] && reverse_2159[53:0] == 54'h00_0000_0000_0000, reverse_2159[53] && reverse_2159[52:0] == 53'h00_0000_0000_0000, reverse_2159[52] && reverse_2159[51:0] == 52'h0_0000_0000_0000, reverse_2159[51] && reverse_2159[50:0] == 51'h0_0000_0000_0000, reverse_2159[50] && reverse_2159[49:0] == 50'h0_0000_0000_0000, reverse_2159[49] && reverse_2159[48:0] == 49'h0_0000_0000_0000, reverse_2159[48] && reverse_2159[47:0] == 48'h0000_0000_0000, reverse_2159[47] && reverse_2159[46:0] == 47'h0000_0000_0000, reverse_2159[46] && reverse_2159[45:0] == 46'h0000_0000_0000, reverse_2159[45] && reverse_2159[44:0] == 45'h0000_0000_0000, reverse_2159[44] && reverse_2159[43:0] == 44'h000_0000_0000, reverse_2159[43] && reverse_2159[42:0] == 43'h000_0000_0000, reverse_2159[42] && reverse_2159[41:0] == 42'h000_0000_0000, reverse_2159[41] && reverse_2159[40:0] == 41'h000_0000_0000, reverse_2159[40] && reverse_2159[39:0] == 40'h00_0000_0000, reverse_2159[39] && reverse_2159[38:0] == 39'h00_0000_0000, reverse_2159[38] && reverse_2159[37:0] == 38'h00_0000_0000, reverse_2159[37] && reverse_2159[36:0] == 37'h00_0000_0000, reverse_2159[36] && reverse_2159[35:0] == 36'h0_0000_0000, reverse_2159[35] && reverse_2159[34:0] == 35'h0_0000_0000, reverse_2159[34] && reverse_2159[33:0] == 34'h0_0000_0000, reverse_2159[33] && reverse_2159[32:0] == 33'h0_0000_0000, reverse_2159[32] && reverse_2159[31:0] == 32'h0000_0000, reverse_2159[31] && reverse_2159[30:0] == 31'h0000_0000, reverse_2159[30] && reverse_2159[29:0] == 30'h0000_0000, reverse_2159[29] && reverse_2159[28:0] == 29'h0000_0000, reverse_2159[28] && reverse_2159[27:0] == 28'h000_0000, reverse_2159[27] && reverse_2159[26:0] == 27'h000_0000, reverse_2159[26] && reverse_2159[25:0] == 26'h000_0000, reverse_2159[25] && reverse_2159[24:0] == 25'h000_0000, reverse_2159[24] && reverse_2159[23:0] == 24'h00_0000, reverse_2159[23] && reverse_2159[22:0] == 23'h00_0000, reverse_2159[22] && reverse_2159[21:0] == 22'h00_0000, reverse_2159[21] && reverse_2159[20:0] == 21'h00_0000, reverse_2159[20] && reverse_2159[19:0] == 20'h0_0000, reverse_2159[19] && reverse_2159[18:0] == 19'h0_0000, reverse_2159[18] && reverse_2159[17:0] == 18'h0_0000, reverse_2159[17] && reverse_2159[16:0] == 17'h0_0000, reverse_2159[16] && reverse_2159[15:0] == 16'h0000, reverse_2159[15] && reverse_2159[14:0] == 15'h0000, reverse_2159[14] && reverse_2159[13:0] == 14'h0000, reverse_2159[13] && reverse_2159[12:0] == 13'h0000, reverse_2159[12] && reverse_2159[11:0] == 12'h000, reverse_2159[11] && reverse_2159[10:0] == 11'h000, reverse_2159[10] && reverse_2159[9:0] == 10'h000, reverse_2159[9] && reverse_2159[8:0] == 9'h000, reverse_2159[8] && reverse_2159[7:0] == 8'h00, reverse_2159[7] && reverse_2159[6:0] == 7'h00, reverse_2159[6] && reverse_2159[5:0] == 6'h00, reverse_2159[5] && reverse_2159[4:0] == 5'h00, reverse_2159[4] && reverse_2159[3:0] == 4'h0, reverse_2159[3] && reverse_2159[2:0] == 3'h0, reverse_2159[2] && reverse_2159[1:0] == 2'h0, reverse_2159[1] && !reverse_2159[0], reverse_2159[0]}; assign encode_2161 = {one_hot_2160[64] | one_hot_2160[65] | one_hot_2160[66] | one_hot_2160[67] | one_hot_2160[68] | one_hot_2160[69] | one_hot_2160[70] | one_hot_2160[71] | one_hot_2160[72] | one_hot_2160[73] | one_hot_2160[74], one_hot_2160[32] | one_hot_2160[33] | one_hot_2160[34] | one_hot_2160[35] | one_hot_2160[36] | one_hot_2160[37] | one_hot_2160[38] | one_hot_2160[39] | one_hot_2160[40] | one_hot_2160[41] | one_hot_2160[42] | one_hot_2160[43] | one_hot_2160[44] | one_hot_2160[45] | one_hot_2160[46] | one_hot_2160[47] | one_hot_2160[48] | one_hot_2160[49] | one_hot_2160[50] | one_hot_2160[51] | one_hot_2160[52] | one_hot_2160[53] | one_hot_2160[54] | one_hot_2160[55] | one_hot_2160[56] | one_hot_2160[57] | one_hot_2160[58] | one_hot_2160[59] | one_hot_2160[60] | one_hot_2160[61] | one_hot_2160[62] | one_hot_2160[63], one_hot_2160[16] | one_hot_2160[17] | one_hot_2160[18] | one_hot_2160[19] | one_hot_2160[20] | one_hot_2160[21] | one_hot_2160[22] | one_hot_2160[23] | one_hot_2160[24] | one_hot_2160[25] | one_hot_2160[26] | one_hot_2160[27] | one_hot_2160[28] | one_hot_2160[29] | one_hot_2160[30] | one_hot_2160[31] | one_hot_2160[48] | one_hot_2160[49] | one_hot_2160[50] | one_hot_2160[51] | one_hot_2160[52] | one_hot_2160[53] | one_hot_2160[54] | one_hot_2160[55] | one_hot_2160[56] | one_hot_2160[57] | one_hot_2160[58] | one_hot_2160[59] | one_hot_2160[60] | one_hot_2160[61] | one_hot_2160[62] | one_hot_2160[63], one_hot_2160[8] | one_hot_2160[9] | one_hot_2160[10] | one_hot_2160[11] | one_hot_2160[12] | one_hot_2160[13] | one_hot_2160[14] | one_hot_2160[15] | one_hot_2160[24] | one_hot_2160[25] | one_hot_2160[26] | one_hot_2160[27] | one_hot_2160[28] | one_hot_2160[29] | one_hot_2160[30] | one_hot_2160[31] | one_hot_2160[40] | one_hot_2160[41] | one_hot_2160[42] | one_hot_2160[43] | one_hot_2160[44] | one_hot_2160[45] | one_hot_2160[46] | one_hot_2160[47] | one_hot_2160[56] | one_hot_2160[57] | one_hot_2160[58] | one_hot_2160[59] | one_hot_2160[60] | one_hot_2160[61] | one_hot_2160[62] | one_hot_2160[63] | one_hot_2160[72] | one_hot_2160[73] | one_hot_2160[74], one_hot_2160[4] | one_hot_2160[5] | one_hot_2160[6] | one_hot_2160[7] | one_hot_2160[12] | one_hot_2160[13] | one_hot_2160[14] | one_hot_2160[15] | one_hot_2160[20] | one_hot_2160[21] | one_hot_2160[22] | one_hot_2160[23] | one_hot_2160[28] | one_hot_2160[29] | one_hot_2160[30] | one_hot_2160[31] | one_hot_2160[36] | one_hot_2160[37] | one_hot_2160[38] | one_hot_2160[39] | one_hot_2160[44] | one_hot_2160[45] | one_hot_2160[46] | one_hot_2160[47] | one_hot_2160[52] | one_hot_2160[53] | one_hot_2160[54] | one_hot_2160[55] | one_hot_2160[60] | one_hot_2160[61] | one_hot_2160[62] | one_hot_2160[63] | one_hot_2160[68] | one_hot_2160[69] | one_hot_2160[70] | one_hot_2160[71], one_hot_2160[2] | one_hot_2160[3] | one_hot_2160[6] | one_hot_2160[7] | one_hot_2160[10] | one_hot_2160[11] | one_hot_2160[14] | one_hot_2160[15] | one_hot_2160[18] | one_hot_2160[19] | one_hot_2160[22] | one_hot_2160[23] | one_hot_2160[26] | one_hot_2160[27] | one_hot_2160[30] | one_hot_2160[31] | one_hot_2160[34] | one_hot_2160[35] | one_hot_2160[38] | one_hot_2160[39] | one_hot_2160[42] | one_hot_2160[43] | one_hot_2160[46] | one_hot_2160[47] | one_hot_2160[50] | one_hot_2160[51] | one_hot_2160[54] | one_hot_2160[55] | one_hot_2160[58] | one_hot_2160[59] | one_hot_2160[62] | one_hot_2160[63] | one_hot_2160[66] | one_hot_2160[67] | one_hot_2160[70] | one_hot_2160[71] | one_hot_2160[74], one_hot_2160[1] | one_hot_2160[3] | one_hot_2160[5] | one_hot_2160[7] | one_hot_2160[9] | one_hot_2160[11] | one_hot_2160[13] | one_hot_2160[15] | one_hot_2160[17] | one_hot_2160[19] | one_hot_2160[21] | one_hot_2160[23] | one_hot_2160[25] | one_hot_2160[27] | one_hot_2160[29] | one_hot_2160[31] | one_hot_2160[33] | one_hot_2160[35] | one_hot_2160[37] | one_hot_2160[39] | one_hot_2160[41] | one_hot_2160[43] | one_hot_2160[45] | one_hot_2160[47] | one_hot_2160[49] | one_hot_2160[51] | one_hot_2160[53] | one_hot_2160[55] | one_hot_2160[57] | one_hot_2160[59] | one_hot_2160[61] | one_hot_2160[63] | one_hot_2160[65] | one_hot_2160[67] | one_hot_2160[69] | one_hot_2160[71] | one_hot_2160[73]}; assign cancel__2 = |encode_2161[6:1]; assign carry_bit__2 = abs_fraction__2[73]; assign concat_2165 = {cancel__1, encode_2161}; assign add_2169 = concat_2165 + max_exp; assign carry_fraction__1 = abs_fraction__2[73:1]; assign concat_2177 = {~(carry_bit__2 | cancel__2), ~(carry_bit__2 | ~cancel__2), ~(~carry_bit__2 | cancel__2)}; assign carry_fraction__4 = carry_fraction__1 | {literal_2130, abs_fraction__2[0]}; assign cancel_fraction__2 = {{66{add_2169[7]}}, add_2169} >= 74'h000_0000_0000_0000_0049 ? 73'h000_0000_0000_0000_0000 : abs_fraction__2[72:0] << {{66{add_2169[7]}}, add_2169}; assign shifted_fraction = carry_fraction__4 & {73{concat_2177[0]}} | cancel_fraction__2 & {73{concat_2177[1]}} | abs_fraction__2[72:0] & {73{concat_2177[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_2189 = {cancel__1, shifted_fraction[72:49]}; assign add_2192 = concat_2189 + 25'h000_0001; assign rounded_fraction__1 = normal_chunk > half_of_extra | half_way_chunk == 2'h3 ? add_2192 : concat_2189; assign greater_exp = overflow_detected ? ab_bexp__2 : {cancel__1, c_bexp__2}; assign rounding_carry = rounded_fraction__1[24]; assign sub_2199 = 8'h01 - concat_2165; assign fraction_is_zero = sum_fraction == 75'h000_0000_0000_0000_0000; assign bexp_associative_element__1 = {{2{sub_2199[7]}}, sub_2199}; assign bexp_associative_element__4 = {cancel__1, greater_exp} + {literal_2053, rounding_carry}; assign bexp__1 = bexp_associative_element__1 + bexp_associative_element__4; assign bexp__2 = bexp__1 & {10{~fraction_is_zero}}; assign eq_2213 = ab_bexp__2 == literal_2076; assign eq_2214 = ab_fraction__2 == literal_2123; assign eq_2215 = c_bexp__2 == max_exp; assign eq_2216 = c_fraction__2 == literal_2043; assign bexp__6 = bexp__2[8:0] & {9{~bexp__2[9]}}; assign and_2221 = eq_2213 & eq_2214; assign is_operand_inf = and_2221 | eq_2215 & eq_2216; assign and_reduce_2230 = &bexp__6[7:0]; assign has_pos_inf = ~(~(eq_2213 & eq_2214) | ab_sign__2) | ~(~eq_2215 | ~eq_2216 | c_sign__2); assign has_neg_inf = and_2221 & ab_sign__2 | eq_2215 & eq_2216 & c_sign__2; assign is_result_nan = ~(~eq_2213 | eq_2214) | ~(~eq_2215 | eq_2216) | 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_2230 | bexp__6 == literal_2053)}}; assign one_hot_2260 = {concat_2177[2:0] == 3'h0, concat_2177[2] && concat_2177[1:0] == 2'h0, concat_2177[1] && !concat_2177[0], concat_2177[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_2230 ? max_exp : bexp__6[7:0]; assign result_fraction__4 = is_result_nan ? 23'h08_0000 : result_fraction__3; assign out = {result_sign__2, result_exp__2, result_fraction__4}; endmodule