blob: 0ddfbd137ff775d666142a88d387b4575b88506d (
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
|
-- { dg-do compile }
-- { dg-options "-gnatws" }
package Discr_Private is
package Dec is
type T_DECIMAL (Prec : Integer := 1) is private;
private
type T_DECIMAL (Prec : Integer := 1) is record
case Prec is
when 1 .. 2 => Value : Integer;
when others => null;
end case;
end record;
end;
type Value_T is record
Bits : Dec.T_DECIMAL(1);
end record;
for Value_T'size use 88;
type Value_Entry_T is record
Index : Integer;
Value : Value_T;
end record;
type Value_Mode is (QI, HI, SI, DI, XI);
for Value_Mode'size use 8;
type Valid_Modes_T is array (Value_Mode) of Boolean;
type Register_T is record
Ventry : Value_Entry_T;
Vmodes : Valid_Modes_T;
end record;
type Regid_T is (Latch, Acc);
for Regid_T use (Latch => 0, Acc => 2);
for Regid_T'Size use 8;
type Regarray_T is array (Regid_T) of Register_T;
type Machine_T (Up : Boolean := True) is record
case Up is
when True => Regs : Regarray_T;
when False => null;
end case;
end record;
end Discr_Private;
|