diff options
author | Tristan Gingold <tgingold@free.fr> | 2019-11-13 18:36:31 +0100 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2019-11-13 18:36:31 +0100 |
commit | cc0ea4be71cfb321f85d8195328f1db3a0fbb427 (patch) | |
tree | 191361df844f37ba95e5cf3211f24d9713b721de /libraries/openieee/v87/numeric_std-body.vhdl | |
parent | 29693dc550ad3f33e8fba23256640e849818b749 (diff) | |
download | ghdl-cc0ea4be71cfb321f85d8195328f1db3a0fbb427.tar.gz ghdl-cc0ea4be71cfb321f85d8195328f1db3a0fbb427.tar.bz2 ghdl-cc0ea4be71cfb321f85d8195328f1db3a0fbb427.zip |
libraries/openieee: reformating.
Diffstat (limited to 'libraries/openieee/v87/numeric_std-body.vhdl')
-rw-r--r-- | libraries/openieee/v87/numeric_std-body.vhdl | 68 |
1 files changed, 34 insertions, 34 deletions
diff --git a/libraries/openieee/v87/numeric_std-body.vhdl b/libraries/openieee/v87/numeric_std-body.vhdl index c716b19f3..6942bd4e1 100644 --- a/libraries/openieee/v87/numeric_std-body.vhdl +++ b/libraries/openieee/v87/numeric_std-body.vhdl @@ -1012,41 +1012,41 @@ package body NUMERIC_STD is return res; end has_0x; - -- All index range are normalized (N downto 0). - -- NUM and QUOT have the same range. - -- DEM and REMAIN have the same range. - -- No 'X'. - procedure divmod (num, dem : UNSIGNED; quot, remain : out UNSIGNED) - is - variable reg : unsigned (dem'left + 1 downto 0) := (others => '0'); - variable sub : unsigned (dem'range) := (others => '0'); - variable carry, d : sl_x01; - begin - for i in num'range loop - -- Shift - reg (reg'left downto 1) := reg (reg'left - 1 downto 0); - reg (0) := num (i); - -- Substract - carry := '1'; - for j in dem'reverse_range loop - d := not dem (j); - sub (j) := compute_sum (carry, reg (j), d); - carry := compute_carry (carry, reg (j), d); - end loop; - carry := compute_carry (carry, reg (reg'left), '1'); - -- Test - if carry = '0' then - -- Greater than - quot (i) := '0'; - else - quot (i) := '1'; - reg (reg'left) := '0'; - reg (sub'range) := sub; - end if; + -- All index range are normalized (N downto 0). + -- NUM and QUOT have the same range. + -- DEM and REMAIN have the same range. + -- No 'X'. + procedure divmod (num, dem : UNSIGNED; quot, remain : out UNSIGNED) + is + variable reg : unsigned (dem'left + 1 downto 0) := (others => '0'); + variable sub : unsigned (dem'range) := (others => '0'); + variable carry, d : sl_x01; + begin + for i in num'range loop + -- Shift + reg (reg'left downto 1) := reg (reg'left - 1 downto 0); + reg (0) := num (i); + -- Substract + carry := '1'; + for j in dem'reverse_range loop + d := not dem (j); + sub (j) := compute_sum (carry, reg (j), d); + carry := compute_carry (carry, reg (j), d); end loop; - remain := reg (dem'range); - end divmod; - + carry := compute_carry (carry, reg (reg'left), '1'); + -- Test + if carry = '0' then + -- Greater than + quot (i) := '0'; + else + quot (i) := '1'; + reg (reg'left) := '0'; + reg (sub'range) := sub; + end if; + end loop; + remain := reg (dem'range); + end divmod; + function size_unsigned (n : natural) return natural is -- At least one bit (even for 0). |