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_2024; 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_2030; wire eq_2031; wire [23:0] a_significand__1; wire [23:0] b_significand__1; wire nor_2036; wire [8:0] add_2037; wire [47:0] umul_2038; wire [7:0] max_exp; wire [22:0] literal_2041; wire [47:0] full_product; wire eq_2045; wire eq_2046; wire eq_2047; wire eq_2048; wire [9:0] exp; wire [8:0] literal_2051; 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_2074; 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_2101; 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_2107; wire [23:0] sign_ext_2109; wire [72:0] shll_2110; wire a_sign__1; wire b_sign__1; wire [47:0] literal_2121; wire [23:0] wide_c__3; wire result_sign__3; wire [72:0] wide_ab; wire [71:0] literal_2128; 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_2157; wire [74:0] one_hot_2158; wire [6:0] encode_2159; wire cancel__2; wire carry_bit__2; wire [7:0] concat_2163; wire [7:0] add_2167; wire [72:0] carry_fraction__1; wire [2:0] concat_2175; 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_2187; wire [24:0] add_2190; wire [24:0] rounded_fraction__1; wire [8:0] greater_exp; wire rounding_carry; wire [7:0] sub_2197; 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_2211; wire eq_2212; wire eq_2213; wire eq_2214; wire [8:0] bexp__6; wire and_2219; wire is_operand_inf; wire and_reduce_2228; 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_2258; 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_2024 = 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_2030 = a_bexp__1 == literal_2024; assign eq_2031 = b_bexp__1 == literal_2024; assign a_significand__1 = {bnot__1, a_fraction__1}; assign b_significand__1 = {bnot__1, b_fraction__1}; assign nor_2036 = ~(eq_2030 | eq_2031); assign add_2037 = {cancel__1, a_bexp__1} + {cancel__1, b_bexp__1}; assign umul_2038 = umul48b_24b_x_24b(a_significand__1, b_significand__1); assign max_exp = 8'hff; assign literal_2041 = 23'h00_0000; assign full_product = umul_2038 & {48{nor_2036}}; assign eq_2045 = a_bexp__1 == max_exp; assign eq_2046 = a_fraction__1 == literal_2041; assign eq_2047 = b_bexp__1 == max_exp; assign eq_2048 = b_fraction__1 == literal_2041; assign exp = {cancel__1, add_2037} + 10'h381; assign literal_2051 = 9'h000; assign in_upper_binade = full_product[47]; assign exp__1 = exp & {10{nor_2036}}; assign has_inf_arg = eq_2045 & eq_2046 | eq_2047 & eq_2048; assign result_exp__3 = exp__1 + {literal_2051, 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_2030 | eq_2031; assign is_result_nan__1 = ~(~eq_2045 | eq_2046) | ~(~eq_2047 | eq_2048) | has_0_arg & has_inf_arg; assign result_exp__5 = result_exp__4[8:0] & {9{~is_subnormal}}; assign literal_2074 = 9'h1ff; assign c_bexp__2 = c[30:23]; assign ab_bexp__2 = is_result_nan__1 ? literal_2074 : 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_2024, 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_2101 = 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_2107 = rshift_ab >= 9'h049 ? 73'h000_0000_0000_0000_0000 : literal_2101 << rshift_ab; assign sign_ext_2109 = {24{c_bexp__2 != literal_2024}}; assign shll_2110 = rshift_c >= 9'h049 ? 73'h000_0000_0000_0000_0000 : literal_2101 << rshift_c; assign a_sign__1 = a[31:31]; assign b_sign__1 = b[31:31]; assign literal_2121 = 48'h0000_0000_0000; assign wide_c__3 = {bnot__1, c_fraction__2} & sign_ext_2109; assign result_sign__3 = a_sign__1 ^ b_sign__1; assign wide_ab = {ab_fraction__2, 25'h000_0000}; assign literal_2128 = 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_2128, ~(~ab_fraction__2 | shll_2107[72:25]) != literal_2121}; assign shifted_c = rshift_c >= 9'h049 ? 73'h000_0000_0000_0000_0000 : wide_c__2 >> rshift_c; assign sticky_c = {literal_2128, ~({cancel__1, ~c_fraction__2} | ~sign_ext_2109 | shll_2110[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_2157 = {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_2158 = {reverse_2157[73:0] == 74'h000_0000_0000_0000_0000, reverse_2157[73] && reverse_2157[72:0] == 73'h000_0000_0000_0000_0000, reverse_2157[72] && reverse_2157[71:0] == 72'h00_0000_0000_0000_0000, reverse_2157[71] && reverse_2157[70:0] == 71'h00_0000_0000_0000_0000, reverse_2157[70] && reverse_2157[69:0] == 70'h00_0000_0000_0000_0000, reverse_2157[69] && reverse_2157[68:0] == 69'h00_0000_0000_0000_0000, reverse_2157[68] && reverse_2157[67:0] == 68'h0_0000_0000_0000_0000, reverse_2157[67] && reverse_2157[66:0] == 67'h0_0000_0000_0000_0000, reverse_2157[66] && reverse_2157[65:0] == 66'h0_0000_0000_0000_0000, reverse_2157[65] && reverse_2157[64:0] == 65'h0_0000_0000_0000_0000, reverse_2157[64] && reverse_2157[63:0] == 64'h0000_0000_0000_0000, reverse_2157[63] && reverse_2157[62:0] == 63'h0000_0000_0000_0000, reverse_2157[62] && reverse_2157[61:0] == 62'h0000_0000_0000_0000, reverse_2157[61] && reverse_2157[60:0] == 61'h0000_0000_0000_0000, reverse_2157[60] && reverse_2157[59:0] == 60'h000_0000_0000_0000, reverse_2157[59] && reverse_2157[58:0] == 59'h000_0000_0000_0000, reverse_2157[58] && reverse_2157[57:0] == 58'h000_0000_0000_0000, reverse_2157[57] && reverse_2157[56:0] == 57'h000_0000_0000_0000, reverse_2157[56] && reverse_2157[55:0] == 56'h00_0000_0000_0000, reverse_2157[55] && reverse_2157[54:0] == 55'h00_0000_0000_0000, reverse_2157[54] && reverse_2157[53:0] == 54'h00_0000_0000_0000, reverse_2157[53] && reverse_2157[52:0] == 53'h00_0000_0000_0000, reverse_2157[52] && reverse_2157[51:0] == 52'h0_0000_0000_0000, reverse_2157[51] && reverse_2157[50:0] == 51'h0_0000_0000_0000, reverse_2157[50] && reverse_2157[49:0] == 50'h0_0000_0000_0000, reverse_2157[49] && reverse_2157[48:0] == 49'h0_0000_0000_0000, reverse_2157[48] && reverse_2157[47:0] == 48'h0000_0000_0000, reverse_2157[47] && reverse_2157[46:0] == 47'h0000_0000_0000, reverse_2157[46] && reverse_2157[45:0] == 46'h0000_0000_0000, reverse_2157[45] && reverse_2157[44:0] == 45'h0000_0000_0000, reverse_2157[44] && reverse_2157[43:0] == 44'h000_0000_0000, reverse_2157[43] && reverse_2157[42:0] == 43'h000_0000_0000, reverse_2157[42] && reverse_2157[41:0] == 42'h000_0000_0000, reverse_2157[41] && reverse_2157[40:0] == 41'h000_0000_0000, reverse_2157[40] && reverse_2157[39:0] == 40'h00_0000_0000, reverse_2157[39] && reverse_2157[38:0] == 39'h00_0000_0000, reverse_2157[38] && reverse_2157[37:0] == 38'h00_0000_0000, reverse_2157[37] && reverse_2157[36:0] == 37'h00_0000_0000, reverse_2157[36] && reverse_2157[35:0] == 36'h0_0000_0000, reverse_2157[35] && reverse_2157[34:0] == 35'h0_0000_0000, reverse_2157[34] && reverse_2157[33:0] == 34'h0_0000_0000, reverse_2157[33] && reverse_2157[32:0] == 33'h0_0000_0000, reverse_2157[32] && reverse_2157[31:0] == 32'h0000_0000, reverse_2157[31] && reverse_2157[30:0] == 31'h0000_0000, reverse_2157[30] && reverse_2157[29:0] == 30'h0000_0000, reverse_2157[29] && reverse_2157[28:0] == 29'h0000_0000, reverse_2157[28] && reverse_2157[27:0] == 28'h000_0000, reverse_2157[27] && reverse_2157[26:0] == 27'h000_0000, reverse_2157[26] && reverse_2157[25:0] == 26'h000_0000, reverse_2157[25] && reverse_2157[24:0] == 25'h000_0000, reverse_2157[24] && reverse_2157[23:0] == 24'h00_0000, reverse_2157[23] && reverse_2157[22:0] == 23'h00_0000, reverse_2157[22] && reverse_2157[21:0] == 22'h00_0000, reverse_2157[21] && reverse_2157[20:0] == 21'h00_0000, reverse_2157[20] && reverse_2157[19:0] == 20'h0_0000, reverse_2157[19] && reverse_2157[18:0] == 19'h0_0000, reverse_2157[18] && reverse_2157[17:0] == 18'h0_0000, reverse_2157[17] && reverse_2157[16:0] == 17'h0_0000, reverse_2157[16] && reverse_2157[15:0] == 16'h0000, reverse_2157[15] && reverse_2157[14:0] == 15'h0000, reverse_2157[14] && reverse_2157[13:0] == 14'h0000, reverse_2157[13] && reverse_2157[12:0] == 13'h0000, reverse_2157[12] && reverse_2157[11:0] == 12'h000, reverse_2157[11] && reverse_2157[10:0] == 11'h000, reverse_2157[10] && reverse_2157[9:0] == 10'h000, reverse_2157[9] && reverse_2157[8:0] == 9'h000, reverse_2157[8] && reverse_2157[7:0] == 8'h00, reverse_2157[7] && reverse_2157[6:0] == 7'h00, reverse_2157[6] && reverse_2157[5:0] == 6'h00, reverse_2157[5] && reverse_2157[4:0] == 5'h00, reverse_2157[4] && reverse_2157[3:0] == 4'h0, reverse_2157[3] && reverse_2157[2:0] == 3'h0, reverse_2157[2] && reverse_2157[1:0] == 2'h0, reverse_2157[1] && !reverse_2157[0], reverse_2157[0]}; assign encode_2159 = {one_hot_2158[64] | one_hot_2158[65] | one_hot_2158[66] | one_hot_2158[67] | one_hot_2158[68] | one_hot_2158[69] | one_hot_2158[70] | one_hot_2158[71] | one_hot_2158[72] | one_hot_2158[73] | one_hot_2158[74], one_hot_2158[32] | one_hot_2158[33] | one_hot_2158[34] | one_hot_2158[35] | one_hot_2158[36] | one_hot_2158[37] | one_hot_2158[38] | one_hot_2158[39] | one_hot_2158[40] | one_hot_2158[41] | one_hot_2158[42] | one_hot_2158[43] | one_hot_2158[44] | one_hot_2158[45] | one_hot_2158[46] | one_hot_2158[47] | one_hot_2158[48] | one_hot_2158[49] | one_hot_2158[50] | one_hot_2158[51] | one_hot_2158[52] | one_hot_2158[53] | one_hot_2158[54] | one_hot_2158[55] | one_hot_2158[56] | one_hot_2158[57] | one_hot_2158[58] | one_hot_2158[59] | one_hot_2158[60] | one_hot_2158[61] | one_hot_2158[62] | one_hot_2158[63], one_hot_2158[16] | one_hot_2158[17] | one_hot_2158[18] | one_hot_2158[19] | one_hot_2158[20] | one_hot_2158[21] | one_hot_2158[22] | one_hot_2158[23] | one_hot_2158[24] | one_hot_2158[25] | one_hot_2158[26] | one_hot_2158[27] | one_hot_2158[28] | one_hot_2158[29] | one_hot_2158[30] | one_hot_2158[31] | one_hot_2158[48] | one_hot_2158[49] | one_hot_2158[50] | one_hot_2158[51] | one_hot_2158[52] | one_hot_2158[53] | one_hot_2158[54] | one_hot_2158[55] | one_hot_2158[56] | one_hot_2158[57] | one_hot_2158[58] | one_hot_2158[59] | one_hot_2158[60] | one_hot_2158[61] | one_hot_2158[62] | one_hot_2158[63], one_hot_2158[8] | one_hot_2158[9] | one_hot_2158[10] | one_hot_2158[11] | one_hot_2158[12] | one_hot_2158[13] | one_hot_2158[14] | one_hot_2158[15] | one_hot_2158[24] | one_hot_2158[25] | one_hot_2158[26] | one_hot_2158[27] | one_hot_2158[28] | one_hot_2158[29] | one_hot_2158[30] | one_hot_2158[31] | one_hot_2158[40] | one_hot_2158[41] | one_hot_2158[42] | one_hot_2158[43] | one_hot_2158[44] | one_hot_2158[45] | one_hot_2158[46] | one_hot_2158[47] | one_hot_2158[56] | one_hot_2158[57] | one_hot_2158[58] | one_hot_2158[59] | one_hot_2158[60] | one_hot_2158[61] | one_hot_2158[62] | one_hot_2158[63] | one_hot_2158[72] | one_hot_2158[73] | one_hot_2158[74], one_hot_2158[4] | one_hot_2158[5] | one_hot_2158[6] | one_hot_2158[7] | one_hot_2158[12] | one_hot_2158[13] | one_hot_2158[14] | one_hot_2158[15] | one_hot_2158[20] | one_hot_2158[21] | one_hot_2158[22] | one_hot_2158[23] | one_hot_2158[28] | one_hot_2158[29] | one_hot_2158[30] | one_hot_2158[31] | one_hot_2158[36] | one_hot_2158[37] | one_hot_2158[38] | one_hot_2158[39] | one_hot_2158[44] | one_hot_2158[45] | one_hot_2158[46] | one_hot_2158[47] | one_hot_2158[52] | one_hot_2158[53] | one_hot_2158[54] | one_hot_2158[55] | one_hot_2158[60] | one_hot_2158[61] | one_hot_2158[62] | one_hot_2158[63] | one_hot_2158[68] | one_hot_2158[69] | one_hot_2158[70] | one_hot_2158[71], one_hot_2158[2] | one_hot_2158[3] | one_hot_2158[6] | one_hot_2158[7] | one_hot_2158[10] | one_hot_2158[11] | one_hot_2158[14] | one_hot_2158[15] | one_hot_2158[18] | one_hot_2158[19] | one_hot_2158[22] | one_hot_2158[23] | one_hot_2158[26] | one_hot_2158[27] | one_hot_2158[30] | one_hot_2158[31] | one_hot_2158[34] | one_hot_2158[35] | one_hot_2158[38] | one_hot_2158[39] | one_hot_2158[42] | one_hot_2158[43] | one_hot_2158[46] | one_hot_2158[47] | one_hot_2158[50] | one_hot_2158[51] | one_hot_2158[54] | one_hot_2158[55] | one_hot_2158[58] | one_hot_2158[59] | one_hot_2158[62] | one_hot_2158[63] | one_hot_2158[66] | one_hot_2158[67] | one_hot_2158[70] | one_hot_2158[71] | one_hot_2158[74], one_hot_2158[1] | one_hot_2158[3] | one_hot_2158[5] | one_hot_2158[7] | one_hot_2158[9] | one_hot_2158[11] | one_hot_2158[13] | one_hot_2158[15] | one_hot_2158[17] | one_hot_2158[19] | one_hot_2158[21] | one_hot_2158[23] | one_hot_2158[25] | one_hot_2158[27] | one_hot_2158[29] | one_hot_2158[31] | one_hot_2158[33] | one_hot_2158[35] | one_hot_2158[37] | one_hot_2158[39] | one_hot_2158[41] | one_hot_2158[43] | one_hot_2158[45] | one_hot_2158[47] | one_hot_2158[49] | one_hot_2158[51] | one_hot_2158[53] | one_hot_2158[55] | one_hot_2158[57] | one_hot_2158[59] | one_hot_2158[61] | one_hot_2158[63] | one_hot_2158[65] | one_hot_2158[67] | one_hot_2158[69] | one_hot_2158[71] | one_hot_2158[73]}; assign cancel__2 = |encode_2159[6:1]; assign carry_bit__2 = abs_fraction__2[73]; assign concat_2163 = {cancel__1, encode_2159}; assign add_2167 = concat_2163 + max_exp; assign carry_fraction__1 = abs_fraction__2[73:1]; assign concat_2175 = {~(carry_bit__2 | cancel__2), ~(carry_bit__2 | ~cancel__2), ~(~carry_bit__2 | cancel__2)}; assign carry_fraction__4 = carry_fraction__1 | {literal_2128, abs_fraction__2[0]}; assign cancel_fraction__2 = {{66{add_2167[7]}}, add_2167} >= 74'h000_0000_0000_0000_0049 ? 73'h000_0000_0000_0000_0000 : abs_fraction__2[72:0] << {{66{add_2167[7]}}, add_2167}; assign shifted_fraction = carry_fraction__4 & {73{concat_2175[0]}} | cancel_fraction__2 & {73{concat_2175[1]}} | abs_fraction__2[72:0] & {73{concat_2175[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_2187 = {cancel__1, shifted_fraction[72:49]}; assign add_2190 = concat_2187 + 25'h000_0001; assign rounded_fraction__1 = normal_chunk > half_of_extra | half_way_chunk == 2'h3 ? add_2190 : concat_2187; assign greater_exp = overflow_detected ? ab_bexp__2 : {cancel__1, c_bexp__2}; assign rounding_carry = rounded_fraction__1[24]; assign sub_2197 = 8'h01 - concat_2163; assign fraction_is_zero = sum_fraction == 75'h000_0000_0000_0000_0000; assign bexp_associative_element__1 = {{2{sub_2197[7]}}, sub_2197}; assign bexp_associative_element__4 = {cancel__1, greater_exp} + {literal_2051, rounding_carry}; assign bexp__1 = bexp_associative_element__1 + bexp_associative_element__4; assign bexp__2 = bexp__1 & {10{~fraction_is_zero}}; assign eq_2211 = ab_bexp__2 == literal_2074; assign eq_2212 = ab_fraction__2 == literal_2121; assign eq_2213 = c_bexp__2 == max_exp; assign eq_2214 = c_fraction__2 == literal_2041; assign bexp__6 = bexp__2[8:0] & {9{~bexp__2[9]}}; assign and_2219 = eq_2211 & eq_2212; assign is_operand_inf = and_2219 | eq_2213 & eq_2214; assign and_reduce_2228 = &bexp__6[7:0]; assign has_pos_inf = ~(~(eq_2211 & eq_2212) | ab_sign__2) | ~(~eq_2213 | ~eq_2214 | c_sign__2); assign has_neg_inf = and_2219 & ab_sign__2 | eq_2213 & eq_2214 & c_sign__2; assign is_result_nan = ~(~eq_2211 | eq_2212) | ~(~eq_2213 | eq_2214) | 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_2228 | bexp__6 == literal_2051)}}; assign one_hot_2258 = {concat_2175[2:0] == 3'h0, concat_2175[2] && concat_2175[1:0] == 2'h0, concat_2175[1] && !concat_2175[0], concat_2175[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_2228 ? 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