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/hppa/instructions/hppaInstr.sml
ViewVC logotype

Annotation of /sml/trunk/src/MLRISC/hppa/instructions/hppaInstr.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 651 - (view) (download)

1 : monnier 411 (*
2 : george 545 * This file was automatically generated by MDGen (v2.0)
3 : monnier 411 * from the machine description file "hppa/hppa.md".
4 : monnier 245 *)
5 :    
6 : monnier 411
7 :     signature HPPAINSTR =
8 :     sig
9 :     structure C : HPPACELLS
10 :     structure Constant: CONSTANT
11 : george 545 structure LabelExp: LABELEXP
12 : monnier 411 structure Region : REGION
13 : george 545 sharing Constant = LabelExp.Constant
14 : monnier 411 datatype fmt =
15 :     SGL
16 :     | DBL
17 :     | QUAD
18 :     datatype loadi =
19 :     LDW
20 :     | LDH
21 :     | LDB
22 :     datatype store =
23 :     STW
24 :     | STH
25 :     | STB
26 :     datatype load =
27 :     LDWX
28 :     | LDWX_S
29 :     | LDWX_M
30 :     | LDWX_SM
31 :     | LDHX
32 :     | LDHX_S
33 :     | LDHX_M
34 :     | LDHX_SM
35 :     | LDBX
36 :     | LDBX_M
37 :     datatype cmp =
38 :     COMBT
39 :     | COMBF
40 :     datatype cmpi =
41 :     COMIBT
42 :     | COMIBF
43 :     datatype arith =
44 :     ADD
45 :     | ADDL
46 :     | ADDO
47 :     | SH1ADD
48 :     | SH1ADDL
49 :     | SH1ADDO
50 :     | SH2ADD
51 :     | SH2ADDL
52 :     | SH2ADDO
53 :     | SH3ADD
54 :     | SH3ADDL
55 :     | SH3ADDO
56 :     | SUB
57 :     | SUBO
58 :     | OR
59 :     | XOR
60 :     | AND
61 :     | ANDCM
62 :     datatype arithi =
63 :     ADDI
64 :     | ADDIO
65 :     | ADDIL
66 :     | SUBI
67 :     | SUBIO
68 :     datatype shiftv =
69 :     VEXTRU
70 :     | VEXTRS
71 :     | ZVDEP
72 :     datatype shift =
73 :     EXTRU
74 :     | EXTRS
75 :     | ZDEP
76 :     datatype farith =
77 :     FADD_S
78 :     | FADD_D
79 :     | FADD_Q
80 :     | FSUB_S
81 :     | FSUB_D
82 :     | FSUB_Q
83 :     | FMPY_S
84 :     | FMPY_D
85 :     | FMPY_Q
86 :     | FDIV_S
87 :     | FDIV_D
88 :     | FDIV_Q
89 :     | XMPYU
90 :     datatype funary =
91 :     FCPY_S
92 :     | FCPY_D
93 :     | FCPY_Q
94 :     | FABS_S
95 :     | FABS_D
96 :     | FABS_Q
97 :     | FSQRT_S
98 :     | FSQRT_D
99 :     | FSQRT_Q
100 :     | FRND_S
101 :     | FRND_D
102 :     | FRND_Q
103 :     datatype fcnv =
104 :     FCNVFF_SD
105 :     | FCNVFF_SQ
106 :     | FCNVFF_DS
107 :     | FCNVFF_DQ
108 :     | FCNVFF_QS
109 :     | FCNVFF_QD
110 :     | FCNVXF_S
111 :     | FCNVXF_D
112 :     | FCNVXF_Q
113 :     | FCNVFX_S
114 :     | FCNVFX_D
115 :     | FCNVFX_Q
116 :     | FCNVFXT_S
117 :     | FCNVFXT_D
118 :     | FCNVFXT_Q
119 :     datatype fstore =
120 :     FSTDS
121 :     | FSTWS
122 :     datatype fstorex =
123 :     FSTDX
124 :     | FSTDX_S
125 :     | FSTDX_M
126 :     | FSTDX_SM
127 :     | FSTWX
128 :     | FSTWX_S
129 :     | FSTWX_M
130 :     | FSTWX_SM
131 :     datatype floadx =
132 :     FLDDX
133 :     | FLDDX_S
134 :     | FLDDX_M
135 :     | FLDDX_SM
136 :     | FLDWX
137 :     | FLDWX_S
138 :     | FLDWX_M
139 :     | FLDWX_SM
140 :     datatype fload =
141 :     FLDDS
142 :     | FLDWS
143 :     datatype bcond =
144 :     EQ
145 :     | LT
146 :     | LE
147 :     | LTU
148 :     | LEU
149 :     | NE
150 :     | GE
151 :     | GT
152 :     | GTU
153 :     | GEU
154 :     datatype bitcond =
155 :     BSET
156 :     | BCLR
157 :     datatype fcond =
158 :     False_
159 :     | False
160 :     | ?
161 :     | !<=>
162 :     | ==
163 :     | EQT
164 :     | ?=
165 :     | !<>
166 :     | !?>=
167 :     | <
168 :     | ?<
169 :     | !>=
170 :     | !?>
171 :     | <=
172 :     | ?<=
173 :     | !>
174 :     | !?<=
175 :     | >
176 :     | ?>
177 :     | !<=
178 :     | !?<
179 :     | >=
180 :     | ?>=
181 :     | !<
182 :     | !?=
183 :     | <>
184 :     | !=
185 :     | NET
186 :     | !?
187 :     | <=>
188 :     | True_
189 :     | True
190 :     datatype scond =
191 :     ALL_ZERO
192 :     | LEFTMOST_ONE
193 :     | LEFTMOST_ZERO
194 :     | RIGHTMOST_ONE
195 :     | RIGHTMOST_ZERO
196 :     datatype field_selector =
197 :     F
198 :     | S
199 :     | D
200 :     | R
201 :     | T
202 :     | P
203 :     datatype ea =
204 :     Direct of int
205 :     | FDirect of int
206 :     | Displace of {base:int, disp:int}
207 :     datatype operand =
208 : george 545 REG of int
209 :     | IMMED of int
210 : monnier 411 | LabExp of (LabelExp.labexp * field_selector)
211 :     | HILabExp of (LabelExp.labexp * field_selector)
212 :     | LOLabExp of (LabelExp.labexp * field_selector)
213 : george 545 datatype addressing_mode =
214 :     DISPea of (C.cell * operand)
215 :     | INDXea of (C.cell * C.cell)
216 :     | INDXSCALEDea of (C.cell * C.cell)
217 : monnier 411 datatype instruction =
218 :     LOADI of {li:loadi, r:int, i:operand, t:int, mem:Region.region}
219 :     | LOAD of {l:load, r1:int, r2:int, t:int, mem:Region.region}
220 :     | STORE of {st:store, b:int, d:operand, r:int, mem:Region.region}
221 :     | ARITH of {a:arith, r1:int, r2:int, t:int}
222 :     | ARITHI of {ai:arithi, i:operand, r:int, t:int}
223 :     | COMCLR_LDO of {cc:bcond, r1:int, r2:int, t1:int, i:int, b:int, t2:int
224 :     }
225 : george 555 | COMICLR_LDO of {cc:bcond, i1:operand, r2:int, t1:int, i2:int, b:int
226 :     , t2:int}
227 : monnier 411 | SHIFTV of {sv:shiftv, r:int, len:int, t:int}
228 :     | SHIFT of {s:shift, r:int, p:int, len:int, t:int}
229 :     | BCOND of {cmp:cmp, bc:bcond, r1:int, r2:int, n:bool, nop:bool, t:Label.label
230 :     , f:Label.label}
231 :     | BCONDI of {cmpi:cmpi, bc:bcond, i:int, r2:int, n:bool, nop:bool, t:Label.label
232 :     , f:Label.label}
233 :     | BB of {bc:bitcond, r:int, p:int, n:bool, nop:bool, t:Label.label, f:Label.label
234 :     }
235 :     | B of {lab:Label.label, n:bool}
236 : leunga 585 | LONGJUMP of {lab:Label.label, n:bool, tmp:int, tmpLab:Label.label
237 :     }
238 : monnier 429 | BE of {b:int, d:operand, sr:int, n:bool, labs:Label.label list}
239 : monnier 411 | BV of {x:int, b:int, labs:Label.label list, n:bool}
240 :     | BLR of {x:int, t:int, labs:Label.label list, n:bool}
241 : leunga 585 | BL of {lab:Label.label, t:int, defs:C.cellset, uses:C.cellset, mem:Region.region
242 : george 545 , n:bool}
243 : monnier 411 | BLE of {d:operand, b:int, sr:int, t:int, defs:C.cellset, uses:C.cellset
244 :     , mem:Region.region}
245 :     | LDIL of {i:operand, t:int}
246 :     | LDO of {i:operand, b:int, t:int}
247 :     | MTCTL of {r:int, t:int}
248 :     | FSTORE of {fst:fstore, b:int, d:int, r:int, mem:Region.region}
249 :     | FSTOREX of {fstx:fstorex, b:int, x:int, r:int, mem:Region.region}
250 :     | FLOAD of {fl:fload, b:int, d:int, t:int, mem:Region.region}
251 :     | FLOADX of {flx:floadx, b:int, x:int, t:int, mem:Region.region}
252 :     | FARITH of {fa:farith, r1:int, r2:int, t:int}
253 :     | FUNARY of {fu:funary, f:int, t:int}
254 :     | FCNV of {fcnv:fcnv, f:int, t:int}
255 :     | FBRANCH of {cc:fcond, fmt:fmt, f1:int, f2:int, t:Label.label, f:Label.label
256 :     , n:bool, long:bool}
257 :     | BREAK of {code1:int, code2:int}
258 :     | NOP
259 :     | COPY of {dst:int list, src:int list, impl:instruction list option ref
260 :     , tmp:ea option}
261 :     | FCOPY of {dst:int list, src:int list, impl:instruction list option ref
262 :     , tmp:ea option}
263 :     | ANNOTATION of {i:instruction, a:Annotations.annotation}
264 : leunga 624 | SOURCE of {}
265 :     | SINK of {}
266 :     | PHI of {}
267 : monnier 411 end
268 :    
269 : george 545 functor HppaInstr(structure LabelExp : LABELEXP
270 :     structure Region : REGION
271 : monnier 411 ) : HPPAINSTR =
272 : monnier 245 struct
273 : monnier 411 structure C = HppaCells
274 :     structure Region = Region
275 : george 545 structure LabelExp = LabelExp
276 :     structure Constant = LabelExp.Constant
277 : monnier 411 datatype fmt =
278 :     SGL
279 :     | DBL
280 :     | QUAD
281 :     datatype loadi =
282 :     LDW
283 :     | LDH
284 :     | LDB
285 :     datatype store =
286 :     STW
287 :     | STH
288 :     | STB
289 :     datatype load =
290 :     LDWX
291 :     | LDWX_S
292 :     | LDWX_M
293 :     | LDWX_SM
294 :     | LDHX
295 :     | LDHX_S
296 :     | LDHX_M
297 :     | LDHX_SM
298 :     | LDBX
299 :     | LDBX_M
300 :     datatype cmp =
301 :     COMBT
302 :     | COMBF
303 :     datatype cmpi =
304 :     COMIBT
305 :     | COMIBF
306 :     datatype arith =
307 :     ADD
308 :     | ADDL
309 :     | ADDO
310 :     | SH1ADD
311 :     | SH1ADDL
312 :     | SH1ADDO
313 :     | SH2ADD
314 :     | SH2ADDL
315 :     | SH2ADDO
316 :     | SH3ADD
317 :     | SH3ADDL
318 :     | SH3ADDO
319 :     | SUB
320 :     | SUBO
321 :     | OR
322 :     | XOR
323 :     | AND
324 :     | ANDCM
325 :     datatype arithi =
326 :     ADDI
327 :     | ADDIO
328 :     | ADDIL
329 :     | SUBI
330 :     | SUBIO
331 :     datatype shiftv =
332 :     VEXTRU
333 :     | VEXTRS
334 :     | ZVDEP
335 :     datatype shift =
336 :     EXTRU
337 :     | EXTRS
338 :     | ZDEP
339 :     datatype farith =
340 :     FADD_S
341 :     | FADD_D
342 :     | FADD_Q
343 :     | FSUB_S
344 :     | FSUB_D
345 :     | FSUB_Q
346 :     | FMPY_S
347 :     | FMPY_D
348 :     | FMPY_Q
349 :     | FDIV_S
350 :     | FDIV_D
351 :     | FDIV_Q
352 :     | XMPYU
353 :     datatype funary =
354 :     FCPY_S
355 :     | FCPY_D
356 :     | FCPY_Q
357 :     | FABS_S
358 :     | FABS_D
359 :     | FABS_Q
360 :     | FSQRT_S
361 :     | FSQRT_D
362 :     | FSQRT_Q
363 :     | FRND_S
364 :     | FRND_D
365 :     | FRND_Q
366 :     datatype fcnv =
367 :     FCNVFF_SD
368 :     | FCNVFF_SQ
369 :     | FCNVFF_DS
370 :     | FCNVFF_DQ
371 :     | FCNVFF_QS
372 :     | FCNVFF_QD
373 :     | FCNVXF_S
374 :     | FCNVXF_D
375 :     | FCNVXF_Q
376 :     | FCNVFX_S
377 :     | FCNVFX_D
378 :     | FCNVFX_Q
379 :     | FCNVFXT_S
380 :     | FCNVFXT_D
381 :     | FCNVFXT_Q
382 :     datatype fstore =
383 :     FSTDS
384 :     | FSTWS
385 :     datatype fstorex =
386 :     FSTDX
387 :     | FSTDX_S
388 :     | FSTDX_M
389 :     | FSTDX_SM
390 :     | FSTWX
391 :     | FSTWX_S
392 :     | FSTWX_M
393 :     | FSTWX_SM
394 :     datatype floadx =
395 :     FLDDX
396 :     | FLDDX_S
397 :     | FLDDX_M
398 :     | FLDDX_SM
399 :     | FLDWX
400 :     | FLDWX_S
401 :     | FLDWX_M
402 :     | FLDWX_SM
403 :     datatype fload =
404 :     FLDDS
405 :     | FLDWS
406 :     datatype bcond =
407 :     EQ
408 :     | LT
409 :     | LE
410 :     | LTU
411 :     | LEU
412 :     | NE
413 :     | GE
414 :     | GT
415 :     | GTU
416 :     | GEU
417 :     datatype bitcond =
418 :     BSET
419 :     | BCLR
420 :     datatype fcond =
421 :     False_
422 :     | False
423 :     | ?
424 :     | !<=>
425 :     | ==
426 :     | EQT
427 :     | ?=
428 :     | !<>
429 :     | !?>=
430 :     | <
431 :     | ?<
432 :     | !>=
433 :     | !?>
434 :     | <=
435 :     | ?<=
436 :     | !>
437 :     | !?<=
438 :     | >
439 :     | ?>
440 :     | !<=
441 :     | !?<
442 :     | >=
443 :     | ?>=
444 :     | !<
445 :     | !?=
446 :     | <>
447 :     | !=
448 :     | NET
449 :     | !?
450 :     | <=>
451 :     | True_
452 :     | True
453 :     datatype scond =
454 :     ALL_ZERO
455 :     | LEFTMOST_ONE
456 :     | LEFTMOST_ZERO
457 :     | RIGHTMOST_ONE
458 :     | RIGHTMOST_ZERO
459 :     datatype field_selector =
460 :     F
461 :     | S
462 :     | D
463 :     | R
464 :     | T
465 :     | P
466 :     datatype ea =
467 :     Direct of int
468 :     | FDirect of int
469 :     | Displace of {base:int, disp:int}
470 :     datatype operand =
471 : george 545 REG of int
472 :     | IMMED of int
473 : monnier 411 | LabExp of (LabelExp.labexp * field_selector)
474 :     | HILabExp of (LabelExp.labexp * field_selector)
475 :     | LOLabExp of (LabelExp.labexp * field_selector)
476 : george 545 datatype addressing_mode =
477 :     DISPea of (C.cell * operand)
478 :     | INDXea of (C.cell * C.cell)
479 :     | INDXSCALEDea of (C.cell * C.cell)
480 : monnier 411 datatype instruction =
481 :     LOADI of {li:loadi, r:int, i:operand, t:int, mem:Region.region}
482 :     | LOAD of {l:load, r1:int, r2:int, t:int, mem:Region.region}
483 :     | STORE of {st:store, b:int, d:operand, r:int, mem:Region.region}
484 :     | ARITH of {a:arith, r1:int, r2:int, t:int}
485 :     | ARITHI of {ai:arithi, i:operand, r:int, t:int}
486 :     | COMCLR_LDO of {cc:bcond, r1:int, r2:int, t1:int, i:int, b:int, t2:int
487 :     }
488 : george 555 | COMICLR_LDO of {cc:bcond, i1:operand, r2:int, t1:int, i2:int, b:int
489 :     , t2:int}
490 : monnier 411 | SHIFTV of {sv:shiftv, r:int, len:int, t:int}
491 :     | SHIFT of {s:shift, r:int, p:int, len:int, t:int}
492 :     | BCOND of {cmp:cmp, bc:bcond, r1:int, r2:int, n:bool, nop:bool, t:Label.label
493 :     , f:Label.label}
494 :     | BCONDI of {cmpi:cmpi, bc:bcond, i:int, r2:int, n:bool, nop:bool, t:Label.label
495 :     , f:Label.label}
496 :     | BB of {bc:bitcond, r:int, p:int, n:bool, nop:bool, t:Label.label, f:Label.label
497 :     }
498 :     | B of {lab:Label.label, n:bool}
499 : leunga 585 | LONGJUMP of {lab:Label.label, n:bool, tmp:int, tmpLab:Label.label
500 :     }
501 : monnier 429 | BE of {b:int, d:operand, sr:int, n:bool, labs:Label.label list}
502 : monnier 411 | BV of {x:int, b:int, labs:Label.label list, n:bool}
503 :     | BLR of {x:int, t:int, labs:Label.label list, n:bool}
504 : leunga 585 | BL of {lab:Label.label, t:int, defs:C.cellset, uses:C.cellset, mem:Region.region
505 : george 545 , n:bool}
506 : monnier 411 | BLE of {d:operand, b:int, sr:int, t:int, defs:C.cellset, uses:C.cellset
507 :     , mem:Region.region}
508 :     | LDIL of {i:operand, t:int}
509 :     | LDO of {i:operand, b:int, t:int}
510 :     | MTCTL of {r:int, t:int}
511 :     | FSTORE of {fst:fstore, b:int, d:int, r:int, mem:Region.region}
512 :     | FSTOREX of {fstx:fstorex, b:int, x:int, r:int, mem:Region.region}
513 :     | FLOAD of {fl:fload, b:int, d:int, t:int, mem:Region.region}
514 :     | FLOADX of {flx:floadx, b:int, x:int, t:int, mem:Region.region}
515 :     | FARITH of {fa:farith, r1:int, r2:int, t:int}
516 :     | FUNARY of {fu:funary, f:int, t:int}
517 :     | FCNV of {fcnv:fcnv, f:int, t:int}
518 :     | FBRANCH of {cc:fcond, fmt:fmt, f1:int, f2:int, t:Label.label, f:Label.label
519 :     , n:bool, long:bool}
520 :     | BREAK of {code1:int, code2:int}
521 :     | NOP
522 :     | COPY of {dst:int list, src:int list, impl:instruction list option ref
523 :     , tmp:ea option}
524 :     | FCOPY of {dst:int list, src:int list, impl:instruction list option ref
525 :     , tmp:ea option}
526 :     | ANNOTATION of {i:instruction, a:Annotations.annotation}
527 : leunga 624 | SOURCE of {}
528 :     | SINK of {}
529 :     | PHI of {}
530 : monnier 245 end
531 :    

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