Implement CRNOR and friends
[microwatt.git] / insn_helpers.vhdl
1 library ieee;
2 use ieee.std_logic_1164.all;
3
4 package insn_helpers is
5 function insn_rs (insn_in : std_ulogic_vector) return std_ulogic_vector;
6 function insn_rt (insn_in : std_ulogic_vector) return std_ulogic_vector;
7 function insn_ra (insn_in : std_ulogic_vector) return std_ulogic_vector;
8 function insn_rb (insn_in : std_ulogic_vector) return std_ulogic_vector;
9 function insn_si (insn_in : std_ulogic_vector) return std_ulogic_vector;
10 function insn_ui (insn_in : std_ulogic_vector) return std_ulogic_vector;
11 function insn_l (insn_in : std_ulogic_vector) return std_ulogic;
12 function insn_sh32 (insn_in : std_ulogic_vector) return std_ulogic_vector;
13 function insn_mb32 (insn_in : std_ulogic_vector) return std_ulogic_vector;
14 function insn_me32 (insn_in : std_ulogic_vector) return std_ulogic_vector;
15 function insn_li (insn_in : std_ulogic_vector) return std_ulogic_vector;
16 function insn_lk (insn_in : std_ulogic_vector) return std_ulogic;
17 function insn_aa (insn_in : std_ulogic_vector) return std_ulogic;
18 function insn_rc (insn_in : std_ulogic_vector) return std_ulogic;
19 function insn_oe (insn_in : std_ulogic_vector) return std_ulogic;
20 function insn_bd (insn_in : std_ulogic_vector) return std_ulogic_vector;
21 function insn_bf (insn_in : std_ulogic_vector) return std_ulogic_vector;
22 function insn_bfa (insn_in : std_ulogic_vector) return std_ulogic_vector;
23 function insn_cr (insn_in : std_ulogic_vector) return std_ulogic_vector;
24 function insn_bt (insn_in : std_ulogic_vector) return std_ulogic_vector;
25 function insn_ba (insn_in : std_ulogic_vector) return std_ulogic_vector;
26 function insn_bb (insn_in : std_ulogic_vector) return std_ulogic_vector;
27 function insn_fxm (insn_in : std_ulogic_vector) return std_ulogic_vector;
28 function insn_bo (insn_in : std_ulogic_vector) return std_ulogic_vector;
29 function insn_bi (insn_in : std_ulogic_vector) return std_ulogic_vector;
30 function insn_bh (insn_in : std_ulogic_vector) return std_ulogic_vector;
31 function insn_d (insn_in : std_ulogic_vector) return std_ulogic_vector;
32 function insn_ds (insn_in : std_ulogic_vector) return std_ulogic_vector;
33 function insn_to (insn_in : std_ulogic_vector) return std_ulogic_vector;
34 function insn_bc (insn_in : std_ulogic_vector) return std_ulogic_vector;
35 function insn_sh (insn_in : std_ulogic_vector) return std_ulogic_vector;
36 function insn_me (insn_in : std_ulogic_vector) return std_ulogic_vector;
37 function insn_mb (insn_in : std_ulogic_vector) return std_ulogic_vector;
38 end package insn_helpers;
39
40 package body insn_helpers is
41 function insn_rs (insn_in : std_ulogic_vector) return std_ulogic_vector is
42 begin
43 return insn_in(25 downto 21);
44 end;
45
46 function insn_rt (insn_in : std_ulogic_vector) return std_ulogic_vector is
47 begin
48 return insn_in(25 downto 21);
49 end;
50
51 function insn_ra (insn_in : std_ulogic_vector) return std_ulogic_vector is
52 begin
53 return insn_in(20 downto 16);
54 end;
55
56 function insn_rb (insn_in : std_ulogic_vector) return std_ulogic_vector is
57 begin
58 return insn_in(15 downto 11);
59 end;
60
61 function insn_si (insn_in : std_ulogic_vector) return std_ulogic_vector is
62 begin
63 return insn_in(15 downto 0);
64 end;
65
66 function insn_ui (insn_in : std_ulogic_vector) return std_ulogic_vector is
67 begin
68 return insn_in(15 downto 0);
69 end;
70
71 function insn_l (insn_in : std_ulogic_vector) return std_ulogic is
72 begin
73 return insn_in(21);
74 end;
75
76 function insn_sh32 (insn_in : std_ulogic_vector) return std_ulogic_vector is
77 begin
78 return insn_in(15 downto 11);
79 end;
80
81 function insn_mb32 (insn_in : std_ulogic_vector) return std_ulogic_vector is
82 begin
83 return insn_in(10 downto 6);
84 end;
85
86 function insn_me32 (insn_in : std_ulogic_vector) return std_ulogic_vector is
87 begin
88 return insn_in(5 downto 1);
89 end;
90
91 function insn_li (insn_in : std_ulogic_vector) return std_ulogic_vector is
92 begin
93 return insn_in(25 downto 2);
94 end;
95
96 function insn_lk (insn_in : std_ulogic_vector) return std_ulogic is
97 begin
98 return insn_in(0);
99 end;
100
101 function insn_aa (insn_in : std_ulogic_vector) return std_ulogic is
102 begin
103 return insn_in(1);
104 end;
105
106 function insn_rc (insn_in : std_ulogic_vector) return std_ulogic is
107 begin
108 return insn_in(0);
109 end;
110
111 function insn_oe (insn_in : std_ulogic_vector) return std_ulogic is
112 begin
113 return insn_in(10);
114 end;
115
116 function insn_bd (insn_in : std_ulogic_vector) return std_ulogic_vector is
117 begin
118 return insn_in(15 downto 2);
119 end;
120
121 function insn_bf (insn_in : std_ulogic_vector) return std_ulogic_vector is
122 begin
123 return insn_in(25 downto 23);
124 end;
125
126 function insn_bfa (insn_in : std_ulogic_vector) return std_ulogic_vector is
127 begin
128 return insn_in(20 downto 18);
129 end;
130
131 function insn_cr (insn_in : std_ulogic_vector) return std_ulogic_vector is
132 begin
133 return insn_in(10 downto 1);
134 end;
135
136 function insn_bb (insn_in : std_ulogic_vector) return std_ulogic_vector is
137 begin
138 return insn_in(15 downto 11);
139 end;
140
141 function insn_ba (insn_in : std_ulogic_vector) return std_ulogic_vector is
142 begin
143 return insn_in(20 downto 16);
144 end;
145
146 function insn_bt (insn_in : std_ulogic_vector) return std_ulogic_vector is
147 begin
148 return insn_in(25 downto 21);
149 end;
150
151 function insn_fxm (insn_in : std_ulogic_vector) return std_ulogic_vector is
152 begin
153 return insn_in(19 downto 12);
154 end;
155
156 function insn_bo (insn_in : std_ulogic_vector) return std_ulogic_vector is
157 begin
158 return insn_in(25 downto 21);
159 end;
160
161 function insn_bi (insn_in : std_ulogic_vector) return std_ulogic_vector is
162 begin
163 return insn_in(20 downto 16);
164 end;
165
166 function insn_bh (insn_in : std_ulogic_vector) return std_ulogic_vector is
167 begin
168 return insn_in(12 downto 11);
169 end;
170
171 function insn_d (insn_in : std_ulogic_vector) return std_ulogic_vector is
172 begin
173 return insn_in(15 downto 0);
174 end;
175
176 function insn_ds (insn_in : std_ulogic_vector) return std_ulogic_vector is
177 begin
178 return insn_in(15 downto 2);
179 end;
180
181 function insn_to (insn_in : std_ulogic_vector) return std_ulogic_vector is
182 begin
183 return insn_in(25 downto 21);
184 end;
185
186 function insn_bc (insn_in : std_ulogic_vector) return std_ulogic_vector is
187 begin
188 return insn_in(10 downto 6);
189 end;
190
191 function insn_sh (insn_in : std_ulogic_vector) return std_ulogic_vector is
192 begin
193 return insn_in(1) & insn_in(15 downto 11);
194 end;
195
196 function insn_me (insn_in : std_ulogic_vector) return std_ulogic_vector is
197 begin
198 return insn_in(5) & insn_in(10 downto 6);
199 end;
200
201 function insn_mb (insn_in : std_ulogic_vector) return std_ulogic_vector is
202 begin
203 return insn_in(5) & insn_in(10 downto 6);
204 end;
205 end package body insn_helpers;