diff options
Diffstat (limited to 'testsuite/synth/func01/func08.vhdl')
-rw-r--r-- | testsuite/synth/func01/func08.vhdl | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/testsuite/synth/func01/func08.vhdl b/testsuite/synth/func01/func08.vhdl new file mode 100644 index 000000000..d8f0e4d18 --- /dev/null +++ b/testsuite/synth/func01/func08.vhdl @@ -0,0 +1,26 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity func08 is + port (v : std_ulogic_vector (31 downto 0); + r : out integer); +end func08; + +architecture behav of func08 is + function fls (val: std_ulogic_vector(31 downto 0)) return integer is + variable ret: integer; + begin + ret := 32; + for i in val'range loop + if val(i) = '1' then + ret := 31 - i; + exit; + end if; + end loop; + + return ret; + end; +begin + r <= fls(v); +end behav; |