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/x86/instructions/x86Instr.sml
ViewVC logotype

Annotation of /sml/trunk/src/MLRISC/x86/instructions/x86Instr.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1156 - (view) (download)

1 : monnier 411 (*
2 : leunga 744 * WARNING: This file was automatically generated by MDLGen (v3.0)
3 :     * from the machine description file "x86/x86.mdl".
4 :     * DO NOT EDIT this file directly
5 : monnier 247 *)
6 :    
7 :    
8 : monnier 411 signature X86INSTR =
9 :     sig
10 :     structure C : X86CELLS
11 : george 1009 structure CB : CELLS_BASIS = CellsBasis
12 : leunga 775 structure T : MLTREE
13 : monnier 411 structure Constant: CONSTANT
14 :     structure Region : REGION
15 : leunga 775 sharing Constant = T.Constant
16 :     sharing Region = T.Region
17 : monnier 411 datatype operand =
18 :     Immed of Int32.int
19 : leunga 775 | ImmedLabel of T.labexp
20 : monnier 411 | Relative of int
21 : leunga 775 | LabelEA of T.labexp
22 : george 889 | Direct of CellsBasis.cell
23 :     | FDirect of CellsBasis.cell
24 :     | FPR of CellsBasis.cell
25 :     | ST of CellsBasis.cell
26 :     | MemReg of CellsBasis.cell
27 :     | Displace of {base:CellsBasis.cell, disp:operand, mem:Region.region}
28 : leunga 999 | Indexed of {base:(CellsBasis.cell) option, index:CellsBasis.cell, scale:int,
29 : george 889 disp:operand, mem:Region.region}
30 : george 545 type addressing_mode = operand
31 : monnier 411 type ea = operand
32 :     datatype cond =
33 :     EQ
34 :     | NE
35 :     | LT
36 :     | LE
37 :     | GT
38 :     | GE
39 :     | B
40 :     | BE
41 :     | A
42 :     | AE
43 :     | C
44 :     | NC
45 :     | P
46 :     | NP
47 :     | O
48 :     | NO
49 : george 545 datatype binaryOp =
50 :     ADDL
51 :     | SUBL
52 :     | ANDL
53 :     | ORL
54 :     | XORL
55 :     | SHLL
56 :     | SARL
57 :     | SHRL
58 : leunga 815 | MULL
59 :     | IMULL
60 : george 545 | ADCL
61 :     | SBBL
62 :     | ADDW
63 :     | SUBW
64 :     | ANDW
65 :     | ORW
66 :     | XORW
67 :     | SHLW
68 :     | SARW
69 :     | SHRW
70 : leunga 815 | MULW
71 :     | IMULW
72 : george 545 | ADDB
73 :     | SUBB
74 :     | ANDB
75 :     | ORB
76 :     | XORB
77 :     | SHLB
78 :     | SARB
79 :     | SHRB
80 : leunga 815 | MULB
81 :     | IMULB
82 : leunga 646 | BTSW
83 :     | BTCW
84 :     | BTRW
85 :     | BTSL
86 :     | BTCL
87 :     | BTRL
88 :     | ROLW
89 :     | RORW
90 :     | ROLL
91 :     | RORL
92 :     | XCHGB
93 :     | XCHGW
94 :     | XCHGL
95 :     | LOCK_ADCW
96 :     | LOCK_ADCL
97 :     | LOCK_ADDW
98 :     | LOCK_ADDL
99 :     | LOCK_ANDW
100 :     | LOCK_ANDL
101 :     | LOCK_BTSW
102 :     | LOCK_BTSL
103 :     | LOCK_BTRW
104 :     | LOCK_BTRL
105 :     | LOCK_BTCW
106 :     | LOCK_BTCL
107 :     | LOCK_ORW
108 :     | LOCK_ORL
109 :     | LOCK_SBBW
110 :     | LOCK_SBBL
111 :     | LOCK_SUBW
112 :     | LOCK_SUBL
113 :     | LOCK_XORW
114 :     | LOCK_XORL
115 : leunga 657 | LOCK_XADDB
116 :     | LOCK_XADDW
117 :     | LOCK_XADDL
118 : george 545 datatype multDivOp =
119 : leunga 1156 IMULL1
120 :     | MULL1
121 : leunga 815 | IDIVL1
122 :     | DIVL1
123 : george 545 datatype unaryOp =
124 :     DECL
125 :     | INCL
126 :     | NEGL
127 :     | NOTL
128 : leunga 797 | DECW
129 :     | INCW
130 :     | NEGW
131 : george 545 | NOTW
132 : leunga 797 | DECB
133 :     | INCB
134 :     | NEGB
135 : george 545 | NOTB
136 : leunga 646 | LOCK_DECL
137 :     | LOCK_INCL
138 :     | LOCK_NEGL
139 :     | LOCK_NOTL
140 : leunga 1156 datatype shiftOp =
141 :     SHLDL
142 :     | SHRDL
143 : leunga 646 datatype bitOp =
144 :     BTW
145 :     | BTL
146 :     | LOCK_BTW
147 :     | LOCK_BTL
148 : george 545 datatype move =
149 :     MOVL
150 :     | MOVB
151 :     | MOVW
152 :     | MOVSWL
153 :     | MOVZWL
154 :     | MOVSBL
155 :     | MOVZBL
156 : monnier 411 datatype fbinOp =
157 :     FADDP
158 : george 555 | FADDS
159 : monnier 411 | FMULP
160 : george 555 | FMULS
161 : leunga 565 | FCOMS
162 :     | FCOMPS
163 : monnier 411 | FSUBP
164 : george 555 | FSUBS
165 : monnier 411 | FSUBRP
166 : george 555 | FSUBRS
167 : monnier 411 | FDIVP
168 : george 555 | FDIVS
169 : monnier 411 | FDIVRP
170 : george 555 | FDIVRS
171 : leunga 565 | FADDL
172 :     | FMULL
173 :     | FCOML
174 :     | FCOMPL
175 :     | FSUBL
176 :     | FSUBRL
177 :     | FDIVL
178 :     | FDIVRL
179 :     datatype fibinOp =
180 :     FIADDS
181 :     | FIMULS
182 :     | FICOMS
183 :     | FICOMPS
184 :     | FISUBS
185 :     | FISUBRS
186 :     | FIDIVS
187 : george 555 | FIDIVRS
188 :     | FIADDL
189 :     | FIMULL
190 : leunga 565 | FICOML
191 :     | FICOMPL
192 : george 555 | FISUBL
193 :     | FISUBRL
194 :     | FIDIVL
195 :     | FIDIVRL
196 : monnier 411 datatype funOp =
197 : leunga 744 FCHS
198 :     | FABS
199 :     | FTST
200 :     | FXAM
201 : leunga 731 | FPTAN
202 :     | FPATAN
203 : leunga 744 | FXTRACT
204 :     | FPREM1
205 :     | FDECSTP
206 :     | FINCSTP
207 :     | FPREM
208 :     | FYL2XP1
209 :     | FSQRT
210 :     | FSINCOS
211 :     | FRNDINT
212 : george 545 | FSCALE
213 : leunga 744 | FSIN
214 :     | FCOS
215 : george 545 datatype fenvOp =
216 :     FLDENV
217 :     | FNLDENV
218 :     | FSTENV
219 :     | FNSTENV
220 : leunga 731 datatype fsize =
221 :     FP32
222 :     | FP64
223 :     | FP80
224 :     datatype isize =
225 :     I8
226 :     | I16
227 :     | I32
228 :     | I64
229 : george 1003 datatype instr =
230 : monnier 411 NOP
231 : leunga 999 | JMP of operand * Label.label list
232 : monnier 411 | JCC of {cond:cond, opnd:operand}
233 : leunga 815 | CALL of {opnd:operand, defs:C.cellset, uses:C.cellset, return:C.cellset,
234 : blume 839 cutsTo:Label.label list, mem:Region.region, pops:Int32.int}
235 : leunga 594 | ENTER of {src1:operand, src2:operand}
236 : george 545 | LEAVE
237 : monnier 429 | RET of operand option
238 : monnier 411 | MOVE of {mvOp:move, src:operand, dst:operand}
239 : george 889 | LEA of {r32:CellsBasis.cell, addr:operand}
240 : george 545 | CMPL of {lsrc:operand, rsrc:operand}
241 :     | CMPW of {lsrc:operand, rsrc:operand}
242 :     | CMPB of {lsrc:operand, rsrc:operand}
243 :     | TESTL of {lsrc:operand, rsrc:operand}
244 :     | TESTW of {lsrc:operand, rsrc:operand}
245 :     | TESTB of {lsrc:operand, rsrc:operand}
246 : leunga 646 | BITOP of {bitOp:bitOp, lsrc:operand, rsrc:operand}
247 : monnier 411 | BINARY of {binOp:binaryOp, src:operand, dst:operand}
248 : leunga 1156 | SHIFT of {shiftOp:shiftOp, src:operand, dst:operand, count:operand}
249 : leunga 797 | CMPXCHG of {lock:bool, sz:isize, src:operand, dst:operand}
250 : monnier 411 | MULTDIV of {multDivOp:multDivOp, src:operand}
251 : george 889 | MUL3 of {dst:CellsBasis.cell, src2:Int32.int, src1:operand}
252 : monnier 411 | UNARY of {unOp:unaryOp, opnd:operand}
253 : george 545 | SET of {cond:cond, opnd:operand}
254 : george 889 | CMOV of {cond:cond, src:operand, dst:CellsBasis.cell}
255 : george 545 | PUSHL of operand
256 :     | PUSHW of operand
257 :     | PUSHB of operand
258 : leunga 815 | PUSHFD
259 :     | POPFD
260 : monnier 411 | POP of operand
261 :     | CDQ
262 :     | INTO
263 :     | FBINARY of {binOp:fbinOp, src:operand, dst:operand}
264 : leunga 565 | FIBINARY of {binOp:fibinOp, src:operand}
265 : monnier 411 | FUNARY of funOp
266 : leunga 731 | FUCOM of operand
267 :     | FUCOMP of operand
268 : monnier 411 | FUCOMPP
269 : george 545 | FCOMPP
270 : leunga 1156 | FCOMI of operand
271 :     | FCOMIP of operand
272 :     | FUCOMI of operand
273 :     | FUCOMIP of operand
274 : george 889 | FXCH of {opnd:CellsBasis.cell}
275 : george 545 | FSTPL of operand
276 :     | FSTPS of operand
277 : george 555 | FSTPT of operand
278 : leunga 579 | FSTL of operand
279 :     | FSTS of operand
280 : leunga 565 | FLD1
281 :     | FLDL2E
282 :     | FLDL2T
283 :     | FLDLG2
284 :     | FLDLN2
285 :     | FLDPI
286 :     | FLDZ
287 : george 545 | FLDL of operand
288 :     | FLDS of operand
289 : george 555 | FLDT of operand
290 : monnier 411 | FILD of operand
291 : leunga 565 | FILDL of operand
292 :     | FILDLL of operand
293 : monnier 411 | FNSTSW
294 : george 545 | FENV of {fenvOp:fenvOp, opnd:operand}
295 : leunga 731 | FMOVE of {fsize:fsize, src:operand, dst:operand}
296 :     | FILOAD of {isize:isize, ea:operand, dst:operand}
297 : leunga 744 | FBINOP of {fsize:fsize, binOp:fbinOp, lsrc:operand, rsrc:operand, dst:operand}
298 :     | FIBINOP of {isize:isize, binOp:fibinOp, lsrc:operand, rsrc:operand, dst:operand}
299 : leunga 731 | FUNOP of {fsize:fsize, unOp:funOp, src:operand, dst:operand}
300 : leunga 1156 | FCMP of {i:bool, fsize:fsize, lsrc:operand, rsrc:operand}
301 : monnier 411 | SAHF
302 : leunga 815 | LAHF
303 : leunga 624 | SOURCE of {}
304 :     | SINK of {}
305 :     | PHI of {}
306 : george 1003 and instruction =
307 :     LIVE of {regs: C.cellset, spilled: C.cellset}
308 :     | KILL of {regs: C.cellset, spilled: C.cellset}
309 : george 1009 | COPY of {k: CellsBasis.cellkind,
310 :     sz: int, (* in bits *)
311 :     dst: CellsBasis.cell list,
312 :     src: CellsBasis.cell list,
313 :     tmp: ea option (* NONE if |dst| = {src| = 1 *)}
314 : george 1003 | ANNOTATION of {i:instruction, a:Annotations.annotation}
315 :     | INSTR of instr
316 :     val nop : instruction
317 :     val jmp : operand * Label.label list -> instruction
318 :     val jcc : {cond:cond, opnd:operand} -> instruction
319 :     val call : {opnd:operand, defs:C.cellset, uses:C.cellset, return:C.cellset,
320 :     cutsTo:Label.label list, mem:Region.region, pops:Int32.int} -> instruction
321 :     val enter : {src1:operand, src2:operand} -> instruction
322 :     val leave : instruction
323 :     val ret : operand option -> instruction
324 :     val move : {mvOp:move, src:operand, dst:operand} -> instruction
325 :     val lea : {r32:CellsBasis.cell, addr:operand} -> instruction
326 :     val cmpl : {lsrc:operand, rsrc:operand} -> instruction
327 :     val cmpw : {lsrc:operand, rsrc:operand} -> instruction
328 :     val cmpb : {lsrc:operand, rsrc:operand} -> instruction
329 :     val testl : {lsrc:operand, rsrc:operand} -> instruction
330 :     val testw : {lsrc:operand, rsrc:operand} -> instruction
331 :     val testb : {lsrc:operand, rsrc:operand} -> instruction
332 :     val bitop : {bitOp:bitOp, lsrc:operand, rsrc:operand} -> instruction
333 :     val binary : {binOp:binaryOp, src:operand, dst:operand} -> instruction
334 : leunga 1156 val shift : {shiftOp:shiftOp, src:operand, dst:operand, count:operand} -> instruction
335 : george 1003 val cmpxchg : {lock:bool, sz:isize, src:operand, dst:operand} -> instruction
336 :     val multdiv : {multDivOp:multDivOp, src:operand} -> instruction
337 :     val mul3 : {dst:CellsBasis.cell, src2:Int32.int, src1:operand} -> instruction
338 :     val unary : {unOp:unaryOp, opnd:operand} -> instruction
339 :     val set : {cond:cond, opnd:operand} -> instruction
340 :     val cmov : {cond:cond, src:operand, dst:CellsBasis.cell} -> instruction
341 :     val pushl : operand -> instruction
342 :     val pushw : operand -> instruction
343 :     val pushb : operand -> instruction
344 :     val pushfd : instruction
345 :     val popfd : instruction
346 :     val pop : operand -> instruction
347 :     val cdq : instruction
348 :     val into : instruction
349 :     val fbinary : {binOp:fbinOp, src:operand, dst:operand} -> instruction
350 :     val fibinary : {binOp:fibinOp, src:operand} -> instruction
351 :     val funary : funOp -> instruction
352 :     val fucom : operand -> instruction
353 :     val fucomp : operand -> instruction
354 :     val fucompp : instruction
355 :     val fcompp : instruction
356 : leunga 1156 val fcomi : operand -> instruction
357 :     val fcomip : operand -> instruction
358 :     val fucomi : operand -> instruction
359 :     val fucomip : operand -> instruction
360 : george 1003 val fxch : {opnd:CellsBasis.cell} -> instruction
361 :     val fstpl : operand -> instruction
362 :     val fstps : operand -> instruction
363 :     val fstpt : operand -> instruction
364 :     val fstl : operand -> instruction
365 :     val fsts : operand -> instruction
366 :     val fld1 : instruction
367 :     val fldl2e : instruction
368 :     val fldl2t : instruction
369 :     val fldlg2 : instruction
370 :     val fldln2 : instruction
371 :     val fldpi : instruction
372 :     val fldz : instruction
373 :     val fldl : operand -> instruction
374 :     val flds : operand -> instruction
375 :     val fldt : operand -> instruction
376 :     val fild : operand -> instruction
377 :     val fildl : operand -> instruction
378 :     val fildll : operand -> instruction
379 :     val fnstsw : instruction
380 :     val fenv : {fenvOp:fenvOp, opnd:operand} -> instruction
381 :     val fmove : {fsize:fsize, src:operand, dst:operand} -> instruction
382 :     val fiload : {isize:isize, ea:operand, dst:operand} -> instruction
383 :     val fbinop : {fsize:fsize, binOp:fbinOp, lsrc:operand, rsrc:operand, dst:operand} -> instruction
384 :     val fibinop : {isize:isize, binOp:fibinOp, lsrc:operand, rsrc:operand, dst:operand} -> instruction
385 :     val funop : {fsize:fsize, unOp:funOp, src:operand, dst:operand} -> instruction
386 : leunga 1156 val fcmp : {i:bool, fsize:fsize, lsrc:operand, rsrc:operand} -> instruction
387 : george 1003 val sahf : instruction
388 :     val lahf : instruction
389 :     val source : {} -> instruction
390 :     val sink : {} -> instruction
391 :     val phi : {} -> instruction
392 : monnier 411 end
393 : monnier 247
394 : george 984 functor X86Instr(T: MLTREE
395 : monnier 411 ) : X86INSTR =
396 :     struct
397 :     structure C = X86Cells
398 : george 1003 structure CB = CellsBasis
399 : george 984 structure T = T
400 : leunga 775 structure Region = T.Region
401 :     structure Constant = T.Constant
402 : monnier 411 datatype operand =
403 :     Immed of Int32.int
404 : leunga 775 | ImmedLabel of T.labexp
405 : monnier 411 | Relative of int
406 : leunga 775 | LabelEA of T.labexp
407 : george 889 | Direct of CellsBasis.cell
408 :     | FDirect of CellsBasis.cell
409 :     | FPR of CellsBasis.cell
410 :     | ST of CellsBasis.cell
411 :     | MemReg of CellsBasis.cell
412 :     | Displace of {base:CellsBasis.cell, disp:operand, mem:Region.region}
413 : leunga 999 | Indexed of {base:(CellsBasis.cell) option, index:CellsBasis.cell, scale:int,
414 : george 889 disp:operand, mem:Region.region}
415 : george 545 type addressing_mode = operand
416 : monnier 411 type ea = operand
417 :     datatype cond =
418 :     EQ
419 :     | NE
420 :     | LT
421 :     | LE
422 :     | GT
423 :     | GE
424 :     | B
425 :     | BE
426 :     | A
427 :     | AE
428 :     | C
429 :     | NC
430 :     | P
431 :     | NP
432 :     | O
433 :     | NO
434 : george 545 datatype binaryOp =
435 :     ADDL
436 :     | SUBL
437 :     | ANDL
438 :     | ORL
439 :     | XORL
440 :     | SHLL
441 :     | SARL
442 :     | SHRL
443 : leunga 815 | MULL
444 :     | IMULL
445 : george 545 | ADCL
446 :     | SBBL
447 :     | ADDW
448 :     | SUBW
449 :     | ANDW
450 :     | ORW
451 :     | XORW
452 :     | SHLW
453 :     | SARW
454 :     | SHRW
455 : leunga 815 | MULW
456 :     | IMULW
457 : george 545 | ADDB
458 :     | SUBB
459 :     | ANDB
460 :     | ORB
461 :     | XORB
462 :     | SHLB
463 :     | SARB
464 :     | SHRB
465 : leunga 815 | MULB
466 :     | IMULB
467 : leunga 646 | BTSW
468 :     | BTCW
469 :     | BTRW
470 :     | BTSL
471 :     | BTCL
472 :     | BTRL
473 :     | ROLW
474 :     | RORW
475 :     | ROLL
476 :     | RORL
477 :     | XCHGB
478 :     | XCHGW
479 :     | XCHGL
480 :     | LOCK_ADCW
481 :     | LOCK_ADCL
482 :     | LOCK_ADDW
483 :     | LOCK_ADDL
484 :     | LOCK_ANDW
485 :     | LOCK_ANDL
486 :     | LOCK_BTSW
487 :     | LOCK_BTSL
488 :     | LOCK_BTRW
489 :     | LOCK_BTRL
490 :     | LOCK_BTCW
491 :     | LOCK_BTCL
492 :     | LOCK_ORW
493 :     | LOCK_ORL
494 :     | LOCK_SBBW
495 :     | LOCK_SBBL
496 :     | LOCK_SUBW
497 :     | LOCK_SUBL
498 :     | LOCK_XORW
499 :     | LOCK_XORL
500 : leunga 657 | LOCK_XADDB
501 :     | LOCK_XADDW
502 :     | LOCK_XADDL
503 : george 545 datatype multDivOp =
504 : leunga 1156 IMULL1
505 :     | MULL1
506 : leunga 815 | IDIVL1
507 :     | DIVL1
508 : george 545 datatype unaryOp =
509 :     DECL
510 :     | INCL
511 :     | NEGL
512 :     | NOTL
513 : leunga 797 | DECW
514 :     | INCW
515 :     | NEGW
516 : george 545 | NOTW
517 : leunga 797 | DECB
518 :     | INCB
519 :     | NEGB
520 : george 545 | NOTB
521 : leunga 646 | LOCK_DECL
522 :     | LOCK_INCL
523 :     | LOCK_NEGL
524 :     | LOCK_NOTL
525 : leunga 1156 datatype shiftOp =
526 :     SHLDL
527 :     | SHRDL
528 : leunga 646 datatype bitOp =
529 :     BTW
530 :     | BTL
531 :     | LOCK_BTW
532 :     | LOCK_BTL
533 : george 545 datatype move =
534 :     MOVL
535 :     | MOVB
536 :     | MOVW
537 :     | MOVSWL
538 :     | MOVZWL
539 :     | MOVSBL
540 :     | MOVZBL
541 : monnier 411 datatype fbinOp =
542 :     FADDP
543 : george 555 | FADDS
544 : monnier 411 | FMULP
545 : george 555 | FMULS
546 : leunga 565 | FCOMS
547 :     | FCOMPS
548 : monnier 411 | FSUBP
549 : george 555 | FSUBS
550 : monnier 411 | FSUBRP
551 : george 555 | FSUBRS
552 : monnier 411 | FDIVP
553 : george 555 | FDIVS
554 : monnier 411 | FDIVRP
555 : george 555 | FDIVRS
556 : leunga 565 | FADDL
557 :     | FMULL
558 :     | FCOML
559 :     | FCOMPL
560 :     | FSUBL
561 :     | FSUBRL
562 :     | FDIVL
563 :     | FDIVRL
564 :     datatype fibinOp =
565 :     FIADDS
566 :     | FIMULS
567 :     | FICOMS
568 :     | FICOMPS
569 :     | FISUBS
570 :     | FISUBRS
571 :     | FIDIVS
572 : george 555 | FIDIVRS
573 :     | FIADDL
574 :     | FIMULL
575 : leunga 565 | FICOML
576 :     | FICOMPL
577 : george 555 | FISUBL
578 :     | FISUBRL
579 :     | FIDIVL
580 :     | FIDIVRL
581 : monnier 411 datatype funOp =
582 : leunga 744 FCHS
583 :     | FABS
584 :     | FTST
585 :     | FXAM
586 : leunga 731 | FPTAN
587 :     | FPATAN
588 : leunga 744 | FXTRACT
589 :     | FPREM1
590 :     | FDECSTP
591 :     | FINCSTP
592 :     | FPREM
593 :     | FYL2XP1
594 :     | FSQRT
595 :     | FSINCOS
596 :     | FRNDINT
597 : george 545 | FSCALE
598 : leunga 744 | FSIN
599 :     | FCOS
600 : george 545 datatype fenvOp =
601 :     FLDENV
602 :     | FNLDENV
603 :     | FSTENV
604 :     | FNSTENV
605 : leunga 731 datatype fsize =
606 :     FP32
607 :     | FP64
608 :     | FP80
609 :     datatype isize =
610 :     I8
611 :     | I16
612 :     | I32
613 :     | I64
614 : george 1003 datatype instr =
615 : monnier 411 NOP
616 : leunga 999 | JMP of operand * Label.label list
617 : monnier 411 | JCC of {cond:cond, opnd:operand}
618 : leunga 815 | CALL of {opnd:operand, defs:C.cellset, uses:C.cellset, return:C.cellset,
619 : blume 839 cutsTo:Label.label list, mem:Region.region, pops:Int32.int}
620 : leunga 594 | ENTER of {src1:operand, src2:operand}
621 : george 545 | LEAVE
622 : monnier 429 | RET of operand option
623 : monnier 411 | MOVE of {mvOp:move, src:operand, dst:operand}
624 : george 889 | LEA of {r32:CellsBasis.cell, addr:operand}
625 : george 545 | CMPL of {lsrc:operand, rsrc:operand}
626 :     | CMPW of {lsrc:operand, rsrc:operand}
627 :     | CMPB of {lsrc:operand, rsrc:operand}
628 :     | TESTL of {lsrc:operand, rsrc:operand}
629 :     | TESTW of {lsrc:operand, rsrc:operand}
630 :     | TESTB of {lsrc:operand, rsrc:operand}
631 : leunga 646 | BITOP of {bitOp:bitOp, lsrc:operand, rsrc:operand}
632 : monnier 411 | BINARY of {binOp:binaryOp, src:operand, dst:operand}
633 : leunga 1156 | SHIFT of {shiftOp:shiftOp, src:operand, dst:operand, count:operand}
634 : leunga 797 | CMPXCHG of {lock:bool, sz:isize, src:operand, dst:operand}
635 : monnier 411 | MULTDIV of {multDivOp:multDivOp, src:operand}
636 : george 889 | MUL3 of {dst:CellsBasis.cell, src2:Int32.int, src1:operand}
637 : monnier 411 | UNARY of {unOp:unaryOp, opnd:operand}
638 : george 545 | SET of {cond:cond, opnd:operand}
639 : george 889 | CMOV of {cond:cond, src:operand, dst:CellsBasis.cell}
640 : george 545 | PUSHL of operand
641 :     | PUSHW of operand
642 :     | PUSHB of operand
643 : leunga 815 | PUSHFD
644 :     | POPFD
645 : monnier 411 | POP of operand
646 :     | CDQ
647 :     | INTO
648 :     | FBINARY of {binOp:fbinOp, src:operand, dst:operand}
649 : leunga 565 | FIBINARY of {binOp:fibinOp, src:operand}
650 : monnier 411 | FUNARY of funOp
651 : leunga 731 | FUCOM of operand
652 :     | FUCOMP of operand
653 : monnier 411 | FUCOMPP
654 : george 545 | FCOMPP
655 : leunga 1156 | FCOMI of operand
656 :     | FCOMIP of operand
657 :     | FUCOMI of operand
658 :     | FUCOMIP of operand
659 : george 889 | FXCH of {opnd:CellsBasis.cell}
660 : george 545 | FSTPL of operand
661 :     | FSTPS of operand
662 : george 555 | FSTPT of operand
663 : leunga 579 | FSTL of operand
664 :     | FSTS of operand
665 : leunga 565 | FLD1
666 :     | FLDL2E
667 :     | FLDL2T
668 :     | FLDLG2
669 :     | FLDLN2
670 :     | FLDPI
671 :     | FLDZ
672 : george 545 | FLDL of operand
673 :     | FLDS of operand
674 : george 555 | FLDT of operand
675 : monnier 411 | FILD of operand
676 : leunga 565 | FILDL of operand
677 :     | FILDLL of operand
678 : monnier 411 | FNSTSW
679 : george 545 | FENV of {fenvOp:fenvOp, opnd:operand}
680 : leunga 731 | FMOVE of {fsize:fsize, src:operand, dst:operand}
681 :     | FILOAD of {isize:isize, ea:operand, dst:operand}
682 : leunga 744 | FBINOP of {fsize:fsize, binOp:fbinOp, lsrc:operand, rsrc:operand, dst:operand}
683 :     | FIBINOP of {isize:isize, binOp:fibinOp, lsrc:operand, rsrc:operand, dst:operand}
684 : leunga 731 | FUNOP of {fsize:fsize, unOp:funOp, src:operand, dst:operand}
685 : leunga 1156 | FCMP of {i:bool, fsize:fsize, lsrc:operand, rsrc:operand}
686 : monnier 411 | SAHF
687 : leunga 815 | LAHF
688 : leunga 624 | SOURCE of {}
689 :     | SINK of {}
690 :     | PHI of {}
691 : george 1003 and instruction =
692 :     LIVE of {regs: C.cellset, spilled: C.cellset}
693 :     | KILL of {regs: C.cellset, spilled: C.cellset}
694 : george 1009 | COPY of {k: CellsBasis.cellkind,
695 :     sz: int, (* in bits *)
696 :     dst: CellsBasis.cell list,
697 :     src: CellsBasis.cell list,
698 :     tmp: ea option (* NONE if |dst| = {src| = 1 *)}
699 : george 1003 | ANNOTATION of {i:instruction, a:Annotations.annotation}
700 :     | INSTR of instr
701 :     val nop = INSTR NOP
702 :     and jmp = INSTR o JMP
703 :     and jcc = INSTR o JCC
704 :     and call = INSTR o CALL
705 :     and enter = INSTR o ENTER
706 :     and leave = INSTR LEAVE
707 :     and ret = INSTR o RET
708 :     and move = INSTR o MOVE
709 :     and lea = INSTR o LEA
710 :     and cmpl = INSTR o CMPL
711 :     and cmpw = INSTR o CMPW
712 :     and cmpb = INSTR o CMPB
713 :     and testl = INSTR o TESTL
714 :     and testw = INSTR o TESTW
715 :     and testb = INSTR o TESTB
716 :     and bitop = INSTR o BITOP
717 :     and binary = INSTR o BINARY
718 : leunga 1156 and shift = INSTR o SHIFT
719 : george 1003 and cmpxchg = INSTR o CMPXCHG
720 :     and multdiv = INSTR o MULTDIV
721 :     and mul3 = INSTR o MUL3
722 :     and unary = INSTR o UNARY
723 :     and set = INSTR o SET
724 :     and cmov = INSTR o CMOV
725 :     and pushl = INSTR o PUSHL
726 :     and pushw = INSTR o PUSHW
727 :     and pushb = INSTR o PUSHB
728 :     and pushfd = INSTR PUSHFD
729 :     and popfd = INSTR POPFD
730 :     and pop = INSTR o POP
731 :     and cdq = INSTR CDQ
732 :     and into = INSTR INTO
733 :     and fbinary = INSTR o FBINARY
734 :     and fibinary = INSTR o FIBINARY
735 :     and funary = INSTR o FUNARY
736 :     and fucom = INSTR o FUCOM
737 :     and fucomp = INSTR o FUCOMP
738 :     and fucompp = INSTR FUCOMPP
739 :     and fcompp = INSTR FCOMPP
740 : leunga 1156 and fcomi = INSTR o FCOMI
741 :     and fcomip = INSTR o FCOMIP
742 :     and fucomi = INSTR o FUCOMI
743 :     and fucomip = INSTR o FUCOMIP
744 : george 1003 and fxch = INSTR o FXCH
745 :     and fstpl = INSTR o FSTPL
746 :     and fstps = INSTR o FSTPS
747 :     and fstpt = INSTR o FSTPT
748 :     and fstl = INSTR o FSTL
749 :     and fsts = INSTR o FSTS
750 :     and fld1 = INSTR FLD1
751 :     and fldl2e = INSTR FLDL2E
752 :     and fldl2t = INSTR FLDL2T
753 :     and fldlg2 = INSTR FLDLG2
754 :     and fldln2 = INSTR FLDLN2
755 :     and fldpi = INSTR FLDPI
756 :     and fldz = INSTR FLDZ
757 :     and fldl = INSTR o FLDL
758 :     and flds = INSTR o FLDS
759 :     and fldt = INSTR o FLDT
760 :     and fild = INSTR o FILD
761 :     and fildl = INSTR o FILDL
762 :     and fildll = INSTR o FILDLL
763 :     and fnstsw = INSTR FNSTSW
764 :     and fenv = INSTR o FENV
765 :     and fmove = INSTR o FMOVE
766 :     and fiload = INSTR o FILOAD
767 :     and fbinop = INSTR o FBINOP
768 :     and fibinop = INSTR o FIBINOP
769 :     and funop = INSTR o FUNOP
770 :     and fcmp = INSTR o FCMP
771 :     and sahf = INSTR SAHF
772 :     and lahf = INSTR LAHF
773 :     and source = INSTR o SOURCE
774 :     and sink = INSTR o SINK
775 :     and phi = INSTR o PHI
776 : monnier 247 end
777 :    

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