Move log2/ispow2 to a utils package
(Out of icache and dcache) Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>pull/118/head
							parent
							
								
									3349bdc798
								
							
						
					
					
						commit
						9a63c098a5
					
				@ -0,0 +1,35 @@
 | 
			
		||||
library ieee;
 | 
			
		||||
use ieee.std_logic_1164.all;
 | 
			
		||||
use ieee.numeric_std.all;
 | 
			
		||||
 | 
			
		||||
package utils is
 | 
			
		||||
 | 
			
		||||
    function log2(i : natural) return integer;
 | 
			
		||||
    function ispow2(i : integer) return boolean;
 | 
			
		||||
 | 
			
		||||
end utils;
 | 
			
		||||
 | 
			
		||||
package body utils is
 | 
			
		||||
 | 
			
		||||
    function log2(i : natural) return integer is
 | 
			
		||||
        variable tmp : integer := i;
 | 
			
		||||
        variable ret : integer := 0;
 | 
			
		||||
    begin
 | 
			
		||||
        while tmp > 1 loop
 | 
			
		||||
            ret  := ret + 1;
 | 
			
		||||
            tmp := tmp / 2;
 | 
			
		||||
        end loop;
 | 
			
		||||
        return ret;
 | 
			
		||||
    end function;
 | 
			
		||||
 | 
			
		||||
    function ispow2(i : integer) return boolean is
 | 
			
		||||
    begin
 | 
			
		||||
        if to_integer(to_unsigned(i, 32) and to_unsigned(i - 1, 32)) = 0 then
 | 
			
		||||
            return true;
 | 
			
		||||
        else
 | 
			
		||||
            return false;
 | 
			
		||||
        end if;
 | 
			
		||||
    end function;
 | 
			
		||||
 | 
			
		||||
end utils;
 | 
			
		||||
 | 
			
		||||
					Loading…
					
					
				
		Reference in New Issue