module __std__next_pow2( input wire [31:0] n, output wire [31:0] out ); // lint_off MULTIPLY function automatic [14:0] umul15b_8b_x_8b (input reg [7:0] lhs, input reg [7:0] rhs); begin umul15b_8b_x_8b = lhs * rhs; end endfunction // lint_on MULTIPLY // lint_off MULTIPLY function automatic [29:0] umul30b_16b_x_15b (input reg [15:0] lhs, input reg [14:0] rhs); begin umul30b_16b_x_15b = lhs * rhs; end endfunction // lint_on MULTIPLY // lint_off MULTIPLY function automatic [26:0] umul27b_15b_x_15b (input reg [14:0] lhs, input reg [14:0] rhs); begin umul27b_15b_x_15b = lhs * rhs; end endfunction // lint_on MULTIPLY // lint_off MULTIPLY function automatic [27:0] umul28b_28b_x_27b (input reg [27:0] lhs, input reg [26:0] rhs); begin umul28b_28b_x_27b = lhs * rhs; end endfunction // lint_on MULTIPLY wire [31:0] add_5825; wire [31:0] reverse_5826; wire [32:0] one_hot_5827; wire umul_4074_TrailingBits_; wire [6:0] sub_5834; wire [6:0] and_5836; wire [1:0] result_squeezed; wire [1:0] result__1_squeezed; wire [3:0] result__1_squeezed__1; wire [3:0] result__2_squeezed; wire [7:0] result__2_squeezed__1; wire [7:0] result__3_squeezed; wire [7:0] concat_5865; wire [15:0] result__3_squeezed__1; wire [7:0] sel_5869; wire [15:0] result__4_squeezed; wire [14:0] umul_5871; wire [15:0] result__4_squeezed_const_msb_bits; wire [29:0] umul_4317_NarrowedMult__NarrowedMult_; wire [31:0] result__4; wire [31:0] result__5; wire [26:0] umul_5644_NarrowedMult_; wire [27:0] umul_4074_NarrowedMult__NarrowedMult__NarrowedMult_; wire [31:0] result__6; wire [31:0] result__32; assign add_5825 = n + 32'hffff_ffff; assign reverse_5826 = {add_5825[0], add_5825[1], add_5825[2], add_5825[3], add_5825[4], add_5825[5], add_5825[6], add_5825[7], add_5825[8], add_5825[9], add_5825[10], add_5825[11], add_5825[12], add_5825[13], add_5825[14], add_5825[15], add_5825[16], add_5825[17], add_5825[18], add_5825[19], add_5825[20], add_5825[21], add_5825[22], add_5825[23], add_5825[24], add_5825[25], add_5825[26], add_5825[27], add_5825[28], add_5825[29], add_5825[30], add_5825[31]}; assign one_hot_5827 = {reverse_5826[31:0] == 32'h0000_0000, reverse_5826[31] && reverse_5826[30:0] == 31'h0000_0000, reverse_5826[30] && reverse_5826[29:0] == 30'h0000_0000, reverse_5826[29] && reverse_5826[28:0] == 29'h0000_0000, reverse_5826[28] && reverse_5826[27:0] == 28'h000_0000, reverse_5826[27] && reverse_5826[26:0] == 27'h000_0000, reverse_5826[26] && reverse_5826[25:0] == 26'h000_0000, reverse_5826[25] && reverse_5826[24:0] == 25'h000_0000, reverse_5826[24] && reverse_5826[23:0] == 24'h00_0000, reverse_5826[23] && reverse_5826[22:0] == 23'h00_0000, reverse_5826[22] && reverse_5826[21:0] == 22'h00_0000, reverse_5826[21] && reverse_5826[20:0] == 21'h00_0000, reverse_5826[20] && reverse_5826[19:0] == 20'h0_0000, reverse_5826[19] && reverse_5826[18:0] == 19'h0_0000, reverse_5826[18] && reverse_5826[17:0] == 18'h0_0000, reverse_5826[17] && reverse_5826[16:0] == 17'h0_0000, reverse_5826[16] && reverse_5826[15:0] == 16'h0000, reverse_5826[15] && reverse_5826[14:0] == 15'h0000, reverse_5826[14] && reverse_5826[13:0] == 14'h0000, reverse_5826[13] && reverse_5826[12:0] == 13'h0000, reverse_5826[12] && reverse_5826[11:0] == 12'h000, reverse_5826[11] && reverse_5826[10:0] == 11'h000, reverse_5826[10] && reverse_5826[9:0] == 10'h000, reverse_5826[9] && reverse_5826[8:0] == 9'h000, reverse_5826[8] && reverse_5826[7:0] == 8'h00, reverse_5826[7] && reverse_5826[6:0] == 7'h00, reverse_5826[6] && reverse_5826[5:0] == 6'h00, reverse_5826[5] && reverse_5826[4:0] == 5'h00, reverse_5826[4] && reverse_5826[3:0] == 4'h0, reverse_5826[3] && reverse_5826[2:0] == 3'h0, reverse_5826[2] && reverse_5826[1:0] == 2'h0, reverse_5826[1] && !reverse_5826[0], reverse_5826[0]}; assign umul_4074_TrailingBits_ = 1'h0; assign sub_5834 = 7'h20 - {umul_4074_TrailingBits_, {one_hot_5827[32], one_hot_5827[16] | one_hot_5827[17] | one_hot_5827[18] | one_hot_5827[19] | one_hot_5827[20] | one_hot_5827[21] | one_hot_5827[22] | one_hot_5827[23] | one_hot_5827[24] | one_hot_5827[25] | one_hot_5827[26] | one_hot_5827[27] | one_hot_5827[28] | one_hot_5827[29] | one_hot_5827[30] | one_hot_5827[31], one_hot_5827[8] | one_hot_5827[9] | one_hot_5827[10] | one_hot_5827[11] | one_hot_5827[12] | one_hot_5827[13] | one_hot_5827[14] | one_hot_5827[15] | one_hot_5827[24] | one_hot_5827[25] | one_hot_5827[26] | one_hot_5827[27] | one_hot_5827[28] | one_hot_5827[29] | one_hot_5827[30] | one_hot_5827[31], one_hot_5827[4] | one_hot_5827[5] | one_hot_5827[6] | one_hot_5827[7] | one_hot_5827[12] | one_hot_5827[13] | one_hot_5827[14] | one_hot_5827[15] | one_hot_5827[20] | one_hot_5827[21] | one_hot_5827[22] | one_hot_5827[23] | one_hot_5827[28] | one_hot_5827[29] | one_hot_5827[30] | one_hot_5827[31], one_hot_5827[2] | one_hot_5827[3] | one_hot_5827[6] | one_hot_5827[7] | one_hot_5827[10] | one_hot_5827[11] | one_hot_5827[14] | one_hot_5827[15] | one_hot_5827[18] | one_hot_5827[19] | one_hot_5827[22] | one_hot_5827[23] | one_hot_5827[26] | one_hot_5827[27] | one_hot_5827[30] | one_hot_5827[31], one_hot_5827[1] | one_hot_5827[3] | one_hot_5827[5] | one_hot_5827[7] | one_hot_5827[9] | one_hot_5827[11] | one_hot_5827[13] | one_hot_5827[15] | one_hot_5827[17] | one_hot_5827[19] | one_hot_5827[21] | one_hot_5827[23] | one_hot_5827[25] | one_hot_5827[27] | one_hot_5827[29] | one_hot_5827[31]}}; assign and_5836 = sub_5834 & {7{n != 32'h0000_0000}}; assign result_squeezed = 2'h1; assign result__1_squeezed = and_5836[0] ? 2'h2 : result_squeezed; assign result__1_squeezed__1 = {2'h0, result__1_squeezed}; assign result__2_squeezed = and_5836[1] ? {result__1_squeezed, 2'h0} : result__1_squeezed__1; assign result__2_squeezed__1 = {4'h0, result__2_squeezed}; assign result__3_squeezed = and_5836[2] ? {result__2_squeezed, 4'h0} : result__2_squeezed__1; assign concat_5865 = {4'h0, and_5836[6:1] == 6'h00 ? {2'h0, and_5836 == 7'h00 ? result_squeezed : 2'h2} : 4'h8}; assign result__3_squeezed__1 = {8'h00, result__3_squeezed}; assign sel_5869 = and_5836[6:2] == 5'h00 ? concat_5865 : 8'h80; assign result__4_squeezed = and_5836[3] ? {result__3_squeezed, 8'h00} : result__3_squeezed__1; assign umul_5871 = umul15b_8b_x_8b(sel_5869, sel_5869); assign result__4_squeezed_const_msb_bits = 16'h0000; assign umul_4317_NarrowedMult__NarrowedMult_ = umul30b_16b_x_15b(result__4_squeezed, umul_5871); assign result__4 = {result__4_squeezed_const_msb_bits, result__4_squeezed}; assign result__5 = and_5836[4] ? {umul_4317_NarrowedMult__NarrowedMult_, 2'h0} : result__4; assign umul_5644_NarrowedMult_ = umul27b_15b_x_15b(umul_5871, umul_5871); assign umul_4074_NarrowedMult__NarrowedMult__NarrowedMult_ = umul28b_28b_x_27b(result__5[27:0], umul_5644_NarrowedMult_); assign result__6 = and_5836[5] ? {umul_4074_NarrowedMult__NarrowedMult__NarrowedMult_, 4'h0} : result__5; assign result__32 = result__6 & {32{~and_5836[6]}}; assign out = result__32; endmodule