/* * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana * University Research and Technology * Corporation. All rights reserved. * Copyright (c) 2004-2005 The University of Tennessee and The University * of Tennessee Research Foundation. All rights * reserved. * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, * University of Stuttgart. All rights reserved. * Copyright (c) 2004-2005 The Regents of the University of California. * All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow * * $HEADER$ */ #include "opal_config.h" #include "opal/util/pow2.h" /** * This routine takes in an interger, and returns the nearest * power of 2 integer, same or greater than the input. * * @param input_integer input value * * @returnvalue power of 2 integer same or greater than the input * parameter. */ int opal_round_up_to_nearest_pow2(int input_integer) { int pop_count, highest_used_bit, tmp_input_integer, return_value; /* init counters */ pop_count=0; highest_used_bit=-1; /* get population count, and highest non-zero bit */ tmp_input_integer=input_integer; while ( tmp_input_integer > 0 ){ pop_count+=(tmp_input_integer&1); highest_used_bit++; tmp_input_integer>>=1; }; if( 1 < pop_count ) { /* "round" up */ highest_used_bit++; } /* generate return value */ return_value=1<