aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite/gna/issue207/pack1.vhd
blob: 0951b5a804a0e043a811f41504362ecfd90ade7b (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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

package pack0 is

  procedure inc(signal val:inout std_logic_vector);
  procedure inc(signal val:inout unsigned);
  procedure inc(signal val:inout signed);
  procedure inc(signal val:inout integer);
  procedure dec(signal val:inout std_logic_vector);
  procedure dec(signal val:inout unsigned);
  procedure dec(signal val:inout signed);
  procedure dec(signal val:inout integer);
  
end pack0;

package body pack0 is

  procedure inc(signal val:inout std_logic_vector) is
  begin
    val<= std_logic_vector(unsigned(val) + 1);
  end;

  procedure inc(signal val:inout signed) is
  begin
    val<= val + 1;
  end;

  procedure inc(signal val:inout unsigned) is
  begin
    val<= val + 1;
  end;

  procedure inc(signal val:inout integer) is
  begin
    val<= val + 1;
  end;

  procedure dec(signal val:inout std_logic_vector) is
  begin
    val<= std_logic_vector(unsigned(val) - 1);
  end;

  procedure dec(signal val:inout unsigned) is
  begin
    val<= val - 1;
  end;

  procedure dec(signal val:inout signed) is
  begin
    val<= val - 1;
  end;

  procedure dec(signal val:inout integer) is
  begin
    val<= val - 1;
  end;

end;

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

package pack1 is

  procedure inc(variable val:inout unsigned);
  procedure inc(variable val:inout integer);
  procedure dec(variable val:inout unsigned);
  procedure dec(variable val:inout integer);

end pack1;

package body pack1 is

  procedure inc(variable val:inout unsigned) is
  begin
    val := val + 1;
  end;

  procedure inc(variable val:inout integer) is
  begin
    val := val + 1;
  end;

  procedure dec(variable val:inout unsigned) is
  begin
    val := val - 1;
  end;

  procedure dec(variable val:inout integer) is
  begin
    val := val - 1;
  end;

end;

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use work.pack0.all;
use work.pack1.all;

entity overload is
end entity;

architecture foo of overload is
    signal sig: unsigned ( 7 downto 0) := (others => '0');
    signal int: integer range 0 to 255; -- 'LEFT = 0 initial value
begin
    process
        variable isig: unsigned ( 7 downto 0) := (others => '0');
        variable iint: integer range 0 to 255;
    begin
        inc(sig);
        inc(isig);
        inc(int);
        inc(iint);
        wait for 0 ns;
        dec(sig);
        dec(isig);
        dec(int);
        dec(iint);
        wait;
    end process;
    
end architecture;