Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/trunk/src/MLRISC/alpha/instructions/alphaInstr.sml
ViewVC logotype

Annotation of /sml/trunk/src/MLRISC/alpha/instructions/alphaInstr.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 646 - (view) (download)

1 : monnier 409 (*
2 : george 545 * This file was automatically generated by MDGen (v2.0)
3 : monnier 409 * from the machine description file "alpha/alpha.md".
4 :     *)
5 :    
6 :    
7 :     signature ALPHAINSTR =
8 :     sig
9 :     structure C : ALPHACELLS
10 :     structure Constant: CONSTANT
11 : george 545 structure LabelExp: LABELEXP
12 : monnier 409 structure Region : REGION
13 : george 545 sharing Constant = LabelExp.Constant
14 : monnier 409 datatype ea =
15 :     Direct of int
16 :     | FDirect of int
17 :     | Displace of {base:int, disp:int}
18 :     datatype operand =
19 :     REGop of int
20 :     | IMMop of int
21 :     | HILABop of LabelExp.labexp
22 :     | LOLABop of LabelExp.labexp
23 :     | LABop of LabelExp.labexp
24 :     datatype branch =
25 :     BR
26 :     | BLBC
27 :     | BEQ
28 :     | BLT
29 :     | BLE
30 :     | BLBS
31 :     | BNE
32 :     | BGE
33 :     | BGT
34 :     datatype fbranch =
35 :     FBEQ
36 :     | FBLT
37 :     | FBLE
38 :     | FBNE
39 :     | FBGE
40 :     | FBGT
41 :     datatype load =
42 : leunga 585 LDB
43 :     | LDW
44 :     | LDBU
45 : leunga 583 | LDWU
46 :     | LDL
47 : monnier 409 | LDL_L
48 :     | LDQ
49 :     | LDQ_L
50 :     | LDQ_U
51 :     datatype store =
52 : leunga 583 STB
53 :     | STW
54 :     | STL
55 : monnier 409 | STQ
56 :     | STQ_U
57 :     datatype fload =
58 :     LDF
59 :     | LDG
60 :     | LDS
61 :     | LDT
62 :     datatype fstore =
63 :     STF
64 :     | STG
65 :     | STS
66 :     | STT
67 :     datatype operate =
68 :     ADDL
69 :     | ADDQ
70 :     | CMPBGE
71 :     | CMPEQ
72 :     | CMPLE
73 :     | CMPLT
74 :     | CMPULE
75 :     | CMPULT
76 :     | SUBL
77 :     | SUBQ
78 :     | S4ADDL
79 :     | S4ADDQ
80 :     | S4SUBL
81 :     | S4SUBQ
82 :     | S8ADDL
83 :     | S8ADDQ
84 :     | S8SUBL
85 :     | S8SUBQ
86 :     | AND
87 :     | BIC
88 :     | BIS
89 :     | EQV
90 :     | ORNOT
91 :     | XOR
92 :     | EXTBL
93 :     | EXTLH
94 :     | EXTLL
95 :     | EXTQH
96 :     | EXTQL
97 :     | EXTWH
98 :     | EXTWL
99 :     | INSBL
100 :     | INSLH
101 :     | INSLL
102 :     | INSQH
103 :     | INSQL
104 :     | INSWH
105 :     | INSWL
106 :     | MSKBL
107 :     | MSKLH
108 :     | MSKLL
109 :     | MSKQH
110 :     | MSKQL
111 :     | MSKWH
112 :     | MSKWL
113 :     | SLL
114 :     | SRA
115 :     | SRL
116 :     | ZAP
117 :     | ZAPNOT
118 :     | MULL
119 :     | MULQ
120 :     | UMULH
121 :     datatype cmove =
122 :     CMOVEQ
123 :     | CMOVLBC
124 :     | CMOVLBS
125 :     | CMOVGE
126 :     | CMOVGT
127 :     | CMOVLE
128 :     | CMOVLT
129 :     | CMOVNE
130 :     datatype pseudo_op =
131 :     DIVL
132 :     | DIVLU
133 : monnier 429 | DIVQ
134 :     | DIVQU
135 :     | REML
136 :     | REMLU
137 :     | REMQ
138 :     | REMQU
139 : monnier 409 datatype operateV =
140 :     ADDLV
141 :     | ADDQV
142 :     | SUBLV
143 :     | SUBQV
144 :     | MULLV
145 :     | MULQV
146 :     datatype funary =
147 :     CVTLQ
148 :     | CVTQL
149 :     | CVTQLSV
150 :     | CVTQLV
151 :     | CVTQS
152 :     | CVTQSC
153 :     | CVTQT
154 :     | CVTQTC
155 :     | CVTTS
156 :     | CVTTSC
157 : monnier 429 | CVTST
158 :     | CVTSTS
159 : monnier 409 | CVTTQ
160 :     | CVTTQC
161 :     datatype foperate =
162 :     CPYS
163 :     | CPYSE
164 :     | CPYSN
165 :     | MF_FPCR
166 :     | MT_FPCR
167 :     | CMPTEQ
168 :     | CMPTLT
169 :     | CMPTLE
170 :     | CMPTUN
171 :     | CMPTEQSU
172 :     | CMPTLTSU
173 :     | CMPTLESU
174 :     | CMPTUNSU
175 : george 545 | ADDS
176 :     | ADDT
177 :     | DIVS
178 :     | DIVT
179 :     | MULS
180 :     | MULT
181 :     | SUBS
182 :     | SUBT
183 : monnier 409 datatype fcmove =
184 :     FCMOVEQ
185 : george 545 | FCMOVGE
186 :     | FCMOVGT
187 : monnier 409 | FCMOVLE
188 : george 545 | FCMOVLT
189 :     | FCMOVNE
190 : monnier 409 datatype foperateV =
191 :     ADDSSUD
192 :     | ADDSSU
193 :     | ADDTSUD
194 :     | ADDTSU
195 :     | DIVSSUD
196 :     | DIVSSU
197 :     | DIVTSUD
198 :     | DIVTSU
199 :     | MULSSUD
200 :     | MULSSU
201 :     | MULTSUD
202 :     | MULTSU
203 :     | SUBSSUD
204 :     | SUBSSU
205 :     | SUBTSUD
206 :     | SUBTSU
207 :     datatype osf_user_palcode =
208 :     BPT
209 :     | BUGCHK
210 :     | CALLSYS
211 :     | GENTRAP
212 :     | IMB
213 :     | RDUNIQUE
214 :     | WRUNIQUE
215 : george 545 type addressing_mode = (C.cell * operand)
216 : monnier 409 datatype instruction =
217 :     DEFFREG of int
218 :     | LDA of {r:int, b:int, d:operand}
219 :     | LDAH of {r:int, b:int, d:operand}
220 :     | LOAD of {ldOp:load, r:int, b:int, d:operand, mem:Region.region}
221 :     | STORE of {stOp:store, r:int, b:int, d:operand, mem:Region.region}
222 :     | FLOAD of {ldOp:fload, r:int, b:int, d:operand, mem:Region.region}
223 :     | FSTORE of {stOp:fstore, r:int, b:int, d:operand, mem:Region.region
224 :     }
225 :     | JMPL of ({r:int, b:int, d:int} * Label.label list)
226 : george 545 | JSR of {r:int, b:int, d:int, defs:C.cellset, uses:C.cellset, mem:Region.region
227 :     }
228 : leunga 624 | BSR of {r:int, lab:Label.label, defs:C.cellset, uses:C.cellset, mem:Region.region
229 :     }
230 : monnier 409 | RET of {r:int, b:int, d:int}
231 : george 545 | BRANCH of {b:branch, r:int, lab:Label.label}
232 :     | FBRANCH of {b:fbranch, f:int, lab:Label.label}
233 : monnier 409 | OPERATE of {oper:operate, ra:int, rb:operand, rc:int}
234 :     | OPERATEV of {oper:operateV, ra:int, rb:operand, rc:int}
235 :     | CMOVE of {oper:cmove, ra:int, rb:operand, rc:int}
236 :     | PSEUDOARITH of {oper:pseudo_op, ra:int, rb:operand, rc:int, tmps:C.cellset
237 :     }
238 :     | COPY of {dst:int list, src:int list, impl:instruction list option ref
239 :     , tmp:ea option}
240 :     | FCOPY of {dst:int list, src:int list, impl:instruction list option ref
241 :     , tmp:ea option}
242 :     | FUNARY of {oper:funary, fb:int, fc:int}
243 :     | FOPERATE of {oper:foperate, fa:int, fb:int, fc:int}
244 :     | FOPERATEV of {oper:foperateV, fa:int, fb:int, fc:int}
245 :     | FCMOVE of {oper:fcmove, fa:int, fb:int, fc:int}
246 :     | TRAPB
247 :     | CALL_PAL of {code:osf_user_palcode, def:int list, use:int list}
248 :     | ANNOTATION of {i:instruction, a:Annotations.annotation}
249 : leunga 624 | SOURCE of {}
250 :     | SINK of {}
251 :     | PHI of {}
252 : monnier 409 end
253 :    
254 : george 545 functor AlphaInstr(structure LabelExp : LABELEXP
255 :     structure Region : REGION
256 : monnier 409 ) : ALPHAINSTR =
257 :     struct
258 :     structure C = AlphaCells
259 :     structure Region = Region
260 : george 545 structure LabelExp = LabelExp
261 :     structure Constant = LabelExp.Constant
262 : monnier 409 datatype ea =
263 :     Direct of int
264 :     | FDirect of int
265 :     | Displace of {base:int, disp:int}
266 :     datatype operand =
267 :     REGop of int
268 :     | IMMop of int
269 :     | HILABop of LabelExp.labexp
270 :     | LOLABop of LabelExp.labexp
271 :     | LABop of LabelExp.labexp
272 :     datatype branch =
273 :     BR
274 :     | BLBC
275 :     | BEQ
276 :     | BLT
277 :     | BLE
278 :     | BLBS
279 :     | BNE
280 :     | BGE
281 :     | BGT
282 :     datatype fbranch =
283 :     FBEQ
284 :     | FBLT
285 :     | FBLE
286 :     | FBNE
287 :     | FBGE
288 :     | FBGT
289 :     datatype load =
290 : leunga 585 LDB
291 :     | LDW
292 :     | LDBU
293 : leunga 583 | LDWU
294 :     | LDL
295 : monnier 409 | LDL_L
296 :     | LDQ
297 :     | LDQ_L
298 :     | LDQ_U
299 :     datatype store =
300 : leunga 583 STB
301 :     | STW
302 :     | STL
303 : monnier 409 | STQ
304 :     | STQ_U
305 :     datatype fload =
306 :     LDF
307 :     | LDG
308 :     | LDS
309 :     | LDT
310 :     datatype fstore =
311 :     STF
312 :     | STG
313 :     | STS
314 :     | STT
315 :     datatype operate =
316 :     ADDL
317 :     | ADDQ
318 :     | CMPBGE
319 :     | CMPEQ
320 :     | CMPLE
321 :     | CMPLT
322 :     | CMPULE
323 :     | CMPULT
324 :     | SUBL
325 :     | SUBQ
326 :     | S4ADDL
327 :     | S4ADDQ
328 :     | S4SUBL
329 :     | S4SUBQ
330 :     | S8ADDL
331 :     | S8ADDQ
332 :     | S8SUBL
333 :     | S8SUBQ
334 :     | AND
335 :     | BIC
336 :     | BIS
337 :     | EQV
338 :     | ORNOT
339 :     | XOR
340 :     | EXTBL
341 :     | EXTLH
342 :     | EXTLL
343 :     | EXTQH
344 :     | EXTQL
345 :     | EXTWH
346 :     | EXTWL
347 :     | INSBL
348 :     | INSLH
349 :     | INSLL
350 :     | INSQH
351 :     | INSQL
352 :     | INSWH
353 :     | INSWL
354 :     | MSKBL
355 :     | MSKLH
356 :     | MSKLL
357 :     | MSKQH
358 :     | MSKQL
359 :     | MSKWH
360 :     | MSKWL
361 :     | SLL
362 :     | SRA
363 :     | SRL
364 :     | ZAP
365 :     | ZAPNOT
366 :     | MULL
367 :     | MULQ
368 :     | UMULH
369 :     datatype cmove =
370 :     CMOVEQ
371 :     | CMOVLBC
372 :     | CMOVLBS
373 :     | CMOVGE
374 :     | CMOVGT
375 :     | CMOVLE
376 :     | CMOVLT
377 :     | CMOVNE
378 :     datatype pseudo_op =
379 :     DIVL
380 :     | DIVLU
381 : monnier 429 | DIVQ
382 :     | DIVQU
383 :     | REML
384 :     | REMLU
385 :     | REMQ
386 :     | REMQU
387 : monnier 409 datatype operateV =
388 :     ADDLV
389 :     | ADDQV
390 :     | SUBLV
391 :     | SUBQV
392 :     | MULLV
393 :     | MULQV
394 :     datatype funary =
395 :     CVTLQ
396 :     | CVTQL
397 :     | CVTQLSV
398 :     | CVTQLV
399 :     | CVTQS
400 :     | CVTQSC
401 :     | CVTQT
402 :     | CVTQTC
403 :     | CVTTS
404 :     | CVTTSC
405 : monnier 429 | CVTST
406 :     | CVTSTS
407 : monnier 409 | CVTTQ
408 :     | CVTTQC
409 :     datatype foperate =
410 :     CPYS
411 :     | CPYSE
412 :     | CPYSN
413 :     | MF_FPCR
414 :     | MT_FPCR
415 :     | CMPTEQ
416 :     | CMPTLT
417 :     | CMPTLE
418 :     | CMPTUN
419 :     | CMPTEQSU
420 :     | CMPTLTSU
421 :     | CMPTLESU
422 :     | CMPTUNSU
423 : george 545 | ADDS
424 :     | ADDT
425 :     | DIVS
426 :     | DIVT
427 :     | MULS
428 :     | MULT
429 :     | SUBS
430 :     | SUBT
431 : monnier 409 datatype fcmove =
432 :     FCMOVEQ
433 : george 545 | FCMOVGE
434 :     | FCMOVGT
435 : monnier 409 | FCMOVLE
436 : george 545 | FCMOVLT
437 :     | FCMOVNE
438 : monnier 409 datatype foperateV =
439 :     ADDSSUD
440 :     | ADDSSU
441 :     | ADDTSUD
442 :     | ADDTSU
443 :     | DIVSSUD
444 :     | DIVSSU
445 :     | DIVTSUD
446 :     | DIVTSU
447 :     | MULSSUD
448 :     | MULSSU
449 :     | MULTSUD
450 :     | MULTSU
451 :     | SUBSSUD
452 :     | SUBSSU
453 :     | SUBTSUD
454 :     | SUBTSU
455 :     datatype osf_user_palcode =
456 :     BPT
457 :     | BUGCHK
458 :     | CALLSYS
459 :     | GENTRAP
460 :     | IMB
461 :     | RDUNIQUE
462 :     | WRUNIQUE
463 : george 545 type addressing_mode = (C.cell * operand)
464 : monnier 409 datatype instruction =
465 :     DEFFREG of int
466 :     | LDA of {r:int, b:int, d:operand}
467 :     | LDAH of {r:int, b:int, d:operand}
468 :     | LOAD of {ldOp:load, r:int, b:int, d:operand, mem:Region.region}
469 :     | STORE of {stOp:store, r:int, b:int, d:operand, mem:Region.region}
470 :     | FLOAD of {ldOp:fload, r:int, b:int, d:operand, mem:Region.region}
471 :     | FSTORE of {stOp:fstore, r:int, b:int, d:operand, mem:Region.region
472 :     }
473 :     | JMPL of ({r:int, b:int, d:int} * Label.label list)
474 : george 545 | JSR of {r:int, b:int, d:int, defs:C.cellset, uses:C.cellset, mem:Region.region
475 :     }
476 : leunga 624 | BSR of {r:int, lab:Label.label, defs:C.cellset, uses:C.cellset, mem:Region.region
477 :     }
478 : monnier 409 | RET of {r:int, b:int, d:int}
479 : george 545 | BRANCH of {b:branch, r:int, lab:Label.label}
480 :     | FBRANCH of {b:fbranch, f:int, lab:Label.label}
481 : monnier 409 | OPERATE of {oper:operate, ra:int, rb:operand, rc:int}
482 :     | OPERATEV of {oper:operateV, ra:int, rb:operand, rc:int}
483 :     | CMOVE of {oper:cmove, ra:int, rb:operand, rc:int}
484 :     | PSEUDOARITH of {oper:pseudo_op, ra:int, rb:operand, rc:int, tmps:C.cellset
485 :     }
486 :     | COPY of {dst:int list, src:int list, impl:instruction list option ref
487 :     , tmp:ea option}
488 :     | FCOPY of {dst:int list, src:int list, impl:instruction list option ref
489 :     , tmp:ea option}
490 :     | FUNARY of {oper:funary, fb:int, fc:int}
491 :     | FOPERATE of {oper:foperate, fa:int, fb:int, fc:int}
492 :     | FOPERATEV of {oper:foperateV, fa:int, fb:int, fc:int}
493 :     | FCMOVE of {oper:fcmove, fa:int, fb:int, fc:int}
494 :     | TRAPB
495 :     | CALL_PAL of {code:osf_user_palcode, def:int list, use:int list}
496 :     | ANNOTATION of {i:instruction, a:Annotations.annotation}
497 : leunga 624 | SOURCE of {}
498 :     | SINK of {}
499 :     | PHI of {}
500 : monnier 409 end
501 :    

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0