aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite/synth/issue1157/ent.vhdl
blob: 86d89e7de79e25ad7e5818e71afcbe52f8a1e35b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity ent is
	port (
		sgn : signed(7 downto 0) := x"f8";
		uns : unsigned(7 downto 0) := x"07";
		nat : natural := 15;
		int : integer := -3;

		mul_int_int : out integer;
		mul_uns_uns : out unsigned(15 downto 0);
		mul_uns_nat : out unsigned(15 downto 0);
		mul_nat_uns : out unsigned(15 downto 0);
		mul_sgn_sgn : out signed(15 downto 0);
		mul_sgn_int : out signed(15 downto 0);
		mul_int_sgn : out signed(15 downto 0);

		div_int_int : out integer;
		div_uns_uns : out unsigned(7 downto 0);
		div_uns_nat : out unsigned(7 downto 0);
		div_nat_uns : out unsigned(7 downto 0);
		div_sgn_sgn : out signed(7 downto 0);
		div_sgn_int : out signed(7 downto 0);
		div_int_sgn : out signed(7 downto 0);

		rem_int_int : out integer;
		rem_uns_uns : out unsigned(7 downto 0);
		rem_uns_nat : out unsigned(7 downto 0);
		rem_nat_uns : out unsigned(7 downto 0);
		rem_sgn_sgn : out signed(7 downto 0);
		rem_sgn_int : out signed(7 downto 0);
		rem_int_sgn : out signed(7 downto 0);

		mod_int_int : out integer;
		mod_uns_uns : out unsigned(7 downto 0);
		mod_uns_nat : out unsigned(7 downto 0);
		mod_nat_uns : out unsigned(7 downto 0);
		mod_sgn_sgn : out signed(7 downto 0);
		mod_sgn_int : out signed(7 downto 0);
		mod_int_sgn : out signed(7 downto 0)
	);
end;

architecture a of ent is
begin
	mul_int_int <= int * int;
	mul_uns_uns <= uns * uns;
	mul_uns_nat <= uns * nat;
	mul_nat_uns <= nat * uns;
	mul_sgn_sgn <= sgn * sgn;
	mul_sgn_int <= sgn * int;
	mul_int_sgn <= int * sgn;

	div_int_int <= int / int;
	div_uns_uns <= uns / uns;
	div_uns_nat <= uns / nat;
	div_nat_uns <= nat / uns;
	div_sgn_sgn <= sgn / sgn;
	div_sgn_int <= sgn / int;
	div_int_sgn <= int / sgn;

	rem_int_int <= int rem int;
	rem_uns_uns <= uns rem uns;
	rem_uns_nat <= uns rem nat;
	rem_nat_uns <= nat rem uns;
	rem_sgn_sgn <= sgn rem sgn;
	rem_sgn_int <= sgn rem int;
	rem_int_sgn <= int rem sgn;

	mod_int_int <= int mod int;
	mod_uns_uns <= uns mod uns;
	mod_uns_nat <= uns mod nat;
	mod_nat_uns <= nat mod uns;
	mod_sgn_sgn <= sgn mod sgn;
	mod_sgn_int <= sgn mod int;
	mod_int_sgn <= int mod sgn;
end;