initial
[fpgammix.git] / rtl / mmix_opcodes.v
bloba9a870c71d832182da5e90c434b4b40b3fb71dd9
1 /*
2 (let ((i 0))
3 (while (< i 256)
4 (insert-string (format "parameter I_ = 8'h%02x;\n" i))
5 (setq i (+ i 1))))
6 */
7 parameter I_TRAP = 8'h00;
8 parameter I_FCMP = 8'h01;
9 parameter I_FUN = 8'h02;
10 parameter I_FEQL = 8'h03;
11 parameter I_FADD = 8'h04;
12 parameter I_FIX = 8'h05;
13 parameter I_FSUB = 8'h06;
14 parameter I_FIXU = 8'h07;
15 parameter I_FLOT = 8'h08;
16 parameter I_FLOTI = 8'h09;
17 parameter I_FLOTU = 8'h0a;
18 parameter I_FLOTUI = 8'h0b;
19 parameter I_SFLOT = 8'h0c;
20 parameter I_SFLOTI = 8'h0d;
21 parameter I_SFLOTU = 8'h0e;
22 parameter I_SFLOTUI = 8'h0f;
23 parameter I_FMUL = 8'h10;
24 parameter I_FCMPE = 8'h11;
25 parameter I_FUNE = 8'h12;
26 parameter I_FEQLE = 8'h13;
27 parameter I_FDIV = 8'h14;
28 parameter I_FSQRT = 8'h15;
29 parameter I_FREM = 8'h16;
30 parameter I_FINT = 8'h17;
31 parameter I_MUL = 8'h18;
32 parameter I_MULI = 8'h19;
33 parameter I_MULU = 8'h1a;
34 parameter I_MULUI = 8'h1b;
35 parameter I_DIV = 8'h1c;
36 parameter I_DIVI = 8'h1d;
37 parameter I_DIVU = 8'h1e;
38 parameter I_DIVUI = 8'h1f;
39 parameter I_ADD = 8'h20;
40 parameter I_ADDI = 8'h21;
41 parameter I_ADDU = 8'h22;
42 parameter I_ADDUI = 8'h23;
43 parameter I_SUB = 8'h24;
44 parameter I_SUBI = 8'h25;
45 parameter I_SUBU = 8'h26;
46 parameter I_SUBUI = 8'h27;
47 parameter I_2ADDU = 8'h28;
48 parameter I_2ADDUI = 8'h29;
49 parameter I_4ADDU = 8'h2a;
50 parameter I_4ADDUI = 8'h2b;
51 parameter I_8ADDU = 8'h2c;
52 parameter I_8ADDUI = 8'h2d;
53 parameter I_16ADDU = 8'h2e;
54 parameter I_16ADDUI = 8'h2f;
55 parameter I_CMP = 8'h30;
56 parameter I_CMPI = 8'h31;
57 parameter I_CMPU = 8'h32;
58 parameter I_CMPUI = 8'h33;
59 parameter I_NEG = 8'h34;
60 parameter I_NEGI = 8'h35;
61 parameter I_NEGU = 8'h36;
62 parameter I_NEGUI = 8'h37;
63 parameter I_SL = 8'h38;
64 parameter I_SLI = 8'h39;
65 parameter I_SLU = 8'h3a;
66 parameter I_SLUI = 8'h3b;
67 parameter I_SR = 8'h3c;
68 parameter I_SRI = 8'h3d;
69 parameter I_SRU = 8'h3e;
70 parameter I_SRUI = 8'h3f;
71 parameter I_BN = 8'h40;
72 parameter I_BNB = 8'h41;
73 parameter I_BZ = 8'h42;
74 parameter I_BZB = 8'h43;
75 parameter I_BP = 8'h44;
76 parameter I_BPB = 8'h45;
77 parameter I_BOD = 8'h46;
78 parameter I_BODB = 8'h47;
79 parameter I_BNN = 8'h48;
80 parameter I_BNNB = 8'h49;
81 parameter I_BNZ = 8'h4a;
82 parameter I_BNZB = 8'h4b;
83 parameter I_BNP = 8'h4c;
84 parameter I_BNPB = 8'h4d;
85 parameter I_BNOD = 8'h4e; // == EVEN
86 parameter I_BNODB = 8'h4f; // == EVEN
87 parameter I_PBN = 8'h50;
88 parameter I_PBNB = 8'h51;
89 parameter I_PBZ = 8'h52;
90 parameter I_PBZB = 8'h53;
91 parameter I_PBP = 8'h54;
92 parameter I_PBPB = 8'h55;
93 parameter I_PBOD = 8'h56;
94 parameter I_PBODB = 8'h57;
95 parameter I_PBNN = 8'h58;
96 parameter I_PBNNB = 8'h59;
97 parameter I_PBNZ = 8'h5a;
98 parameter I_PBNZB = 8'h5b;
99 parameter I_PBNP = 8'h5c;
100 parameter I_PBNPB = 8'h5d;
101 parameter I_PBNOD = 8'h5e; // == EVEN
102 parameter I_PBNODB = 8'h5f; // == EVEN
103 parameter I_CSN = 8'h60;
104 parameter I_CSNI = 8'h61;
105 parameter I_CSZ = 8'h62;
106 parameter I_CSZI = 8'h63;
107 parameter I_CSP = 8'h64;
108 parameter I_CSPI = 8'h65;
109 parameter I_CSOD = 8'h66;
110 parameter I_CSODI = 8'h67;
111 parameter I_CSNN = 8'h68;
112 parameter I_CSNNI = 8'h69;
113 parameter I_CSNZ = 8'h6a;
114 parameter I_CSNZI = 8'h6b;
115 parameter I_CSNP = 8'h6c;
116 parameter I_CSNPI = 8'h6d;
117 parameter I_CSEV = 8'h6e;
118 parameter I_CSEVI = 8'h6f;
119 parameter I_ZSN = 8'h70;
120 parameter I_ZSNI = 8'h71;
121 parameter I_ZSZ = 8'h72;
122 parameter I_ZSZI = 8'h73;
123 parameter I_ZSP = 8'h74;
124 parameter I_ZSPI = 8'h75;
125 parameter I_ZSOD = 8'h76;
126 parameter I_ZSODI = 8'h77;
127 parameter I_ZSNN = 8'h78;
128 parameter I_ZSNNI = 8'h79;
129 parameter I_ZSNZ = 8'h7a;
130 parameter I_ZSNZI = 8'h7b;
131 parameter I_ZSNP = 8'h7c;
132 parameter I_ZSNPI = 8'h7d;
133 parameter I_ZSEV = 8'h7e;
134 parameter I_ZSEVI = 8'h7f;
135 parameter I_LDB = 8'h80;
136 parameter I_LDBI = 8'h81;
137 parameter I_LDBU = 8'h82;
138 parameter I_LDBUI = 8'h83;
139 parameter I_LDW = 8'h84;
140 parameter I_LDWI = 8'h85;
141 parameter I_LDWU = 8'h86;
142 parameter I_LDWUI = 8'h87;
143 parameter I_LDT = 8'h88;
144 parameter I_LDTI = 8'h89;
145 parameter I_LDTU = 8'h8a;
146 parameter I_LDTUI = 8'h8b;
147 parameter I_LDO = 8'h8c;
148 parameter I_LDOI = 8'h8d;
149 parameter I_LDOU = 8'h8e;
150 parameter I_LDOUI = 8'h8f;
151 parameter I_LDSF = 8'h90;
152 parameter I_LDSFI = 8'h91;
153 parameter I_LDHT = 8'h92;
154 parameter I_LDHTI = 8'h93;
155 parameter I_CSWAP = 8'h94;
156 parameter I_CSWAPI = 8'h95;
157 parameter I_LDUNC = 8'h96;
158 parameter I_LDUNCI = 8'h97;
159 parameter I_LDVTS = 8'h98;
160 parameter I_LDVTSI = 8'h99;
161 parameter I_PRELD = 8'h9a;
162 parameter I_PRELDI = 8'h9b;
163 parameter I_PREGO = 8'h9c;
164 parameter I_PREGOI = 8'h9d;
165 parameter I_GO = 8'h9e;
166 parameter I_GOI = 8'h9f;
167 parameter I_STB = 8'ha0;
168 parameter I_STBI = 8'ha1;
169 parameter I_STBU = 8'ha2;
170 parameter I_STBUI = 8'ha3;
171 parameter I_STW = 8'ha4;
172 parameter I_STWI = 8'ha5;
173 parameter I_STWU = 8'ha6;
174 parameter I_STWUI = 8'ha7;
175 parameter I_STT = 8'ha8;
176 parameter I_STTI = 8'ha9;
177 parameter I_STTU = 8'haa;
178 parameter I_STTUI = 8'hab;
179 parameter I_STO = 8'hac;
180 parameter I_STOI = 8'had;
181 parameter I_STOU = 8'hae;
182 parameter I_STOUI = 8'haf;
183 parameter I_STSF = 8'hb0;
184 parameter I_STSFI = 8'hb1;
185 parameter I_STHT = 8'hb2;
186 parameter I_STHTI = 8'hb3;
187 parameter I_STCO = 8'hb4;
188 parameter I_STCOI = 8'hb5;
189 parameter I_STUNC = 8'hb6;
190 parameter I_STUNCI = 8'hb7;
191 parameter I_SYNCD = 8'hb8;
192 parameter I_SYNCDI = 8'hb9;
193 parameter I_PREST = 8'hba;
194 parameter I_PRESTI = 8'hbb;
195 parameter I_SYNCID = 8'hbc;
196 parameter I_SYNCIDI = 8'hbd;
197 parameter I_PUSHGO = 8'hbe;
198 parameter I_PUSHGOI = 8'hbf;
199 parameter I_OR = 8'hc0;
200 parameter I_ORI = 8'hc1;
201 parameter I_ORN = 8'hc2;
202 parameter I_ORNI = 8'hc3;
203 parameter I_NOR = 8'hc4;
204 parameter I_NORI = 8'hc5;
205 parameter I_XOR = 8'hc6;
206 parameter I_XORI = 8'hc7;
207 parameter I_AND = 8'hc8;
208 parameter I_ANDI = 8'hc9;
209 parameter I_ANDN = 8'hca;
210 parameter I_ANDNI = 8'hcb;
211 parameter I_NAND = 8'hcc;
212 parameter I_NANDI = 8'hcd;
213 parameter I_NXOR = 8'hce;
214 parameter I_NXORI = 8'hcf;
215 parameter I_BDIF = 8'hd0;
216 parameter I_BDIFI = 8'hd1;
217 parameter I_WDIF = 8'hd2;
218 parameter I_WDIFI = 8'hd3;
219 parameter I_TDIF = 8'hd4;
220 parameter I_TDIFI = 8'hd5;
221 parameter I_ODIF = 8'hd6;
222 parameter I_ODIFI = 8'hd7;
223 parameter I_MUX = 8'hd8;
224 parameter I_MUXI = 8'hd9;
225 parameter I_SADD = 8'hda;
226 parameter I_SADDI = 8'hdb;
227 parameter I_MOR = 8'hdc;
228 parameter I_MORI = 8'hdd;
229 parameter I_MXOR = 8'hde;
230 parameter I_MXORI = 8'hdf;
231 parameter I_SETH = 8'he0;
232 parameter I_SETMH = 8'he1;
233 parameter I_SETML = 8'he2;
234 parameter I_SETL = 8'he3;
235 parameter I_INCH = 8'he4;
236 parameter I_INCMH = 8'he5;
237 parameter I_INCML = 8'he6;
238 parameter I_INCL = 8'he7;
239 parameter I_ORH = 8'he8;
240 parameter I_ORMH = 8'he9;
241 parameter I_ORML = 8'hea;
242 parameter I_ORL = 8'heb;
243 parameter I_ANDNH = 8'hec;
244 parameter I_ANDNMH = 8'hed;
245 parameter I_ANDNML = 8'hee;
246 parameter I_ANDNL = 8'hef;
247 parameter I_JMP = 8'hf0;
248 parameter I_JMPB = 8'hf1;
249 parameter I_PUSHJ = 8'hf2;
250 parameter I_PUSHJB = 8'hf3;
251 parameter I_GETA = 8'hf4;
252 parameter I_GETAB = 8'hf5;
253 parameter I_PUT = 8'hf6;
254 parameter I_PUTI = 8'hf7;
255 parameter I_POP = 8'hf8;
256 parameter I_RESUME = 8'hf9;
257 parameter I_SAVE = 8'hfa;
258 parameter I_UNSAVE = 8'hfb;
259 parameter I_SYNC = 8'hfc;
260 parameter I_SWYM = 8'hfd;
261 parameter I_GET = 8'hfe;
262 parameter I_TRIP = 8'hff;
264 /* Special registers */
265 parameter REG_B = 0;
266 parameter REG_D = 1;
267 parameter REG_E = 2;
268 parameter REG_H = 3;
269 parameter REG_J = 4;
270 parameter REG_M = 5;
271 parameter REG_R = 6;
272 parameter REG_BB = 7;
273 parameter REG_C = 8;
274 parameter REG_N = 9;
275 parameter REG_O = 10;
276 parameter REG_S = 11;
277 parameter REG_I = 12; // Priviledged vvvvvvvv
278 parameter REG_T = 13;
279 parameter REG_TT = 14;
280 parameter REG_K = 15;
281 parameter REG_Q = 16;
282 parameter REG_U = 17;
283 parameter REG_V = 18; // ^^^^^^^^^^^^^^^^^^^^
284 parameter REG_G = 19;
285 parameter REG_L = 20;
286 parameter REG_A = 21;
287 parameter REG_F = 22;
288 parameter REG_P = 23;
289 parameter REG_W = 24;
290 parameter REG_X = 25;
291 parameter REG_Y = 26;
292 parameter REG_Z = 27;
293 parameter REG_WW = 28;
294 parameter REG_XX = 29;
295 parameter REG_YY = 30;
296 parameter REG_ZZ = 31;