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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3241 - (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 : mrainey 3241 | LFENCE
303 :     | MFENCE
304 :     | SFENCE
305 :     | PAUSE
306 : leunga 815 | LAHF
307 : leunga 624 | SOURCE of {}
308 :     | SINK of {}
309 :     | PHI of {}
310 : george 1003 and instruction =
311 :     LIVE of {regs: C.cellset, spilled: C.cellset}
312 :     | KILL of {regs: C.cellset, spilled: C.cellset}
313 : george 1009 | COPY of {k: CellsBasis.cellkind,
314 :     sz: int, (* in bits *)
315 :     dst: CellsBasis.cell list,
316 :     src: CellsBasis.cell list,
317 :     tmp: ea option (* NONE if |dst| = {src| = 1 *)}
318 : george 1003 | ANNOTATION of {i:instruction, a:Annotations.annotation}
319 :     | INSTR of instr
320 :     val nop : instruction
321 :     val jmp : operand * Label.label list -> instruction
322 :     val jcc : {cond:cond, opnd:operand} -> instruction
323 :     val call : {opnd:operand, defs:C.cellset, uses:C.cellset, return:C.cellset,
324 :     cutsTo:Label.label list, mem:Region.region, pops:Int32.int} -> instruction
325 :     val enter : {src1:operand, src2:operand} -> instruction
326 :     val leave : instruction
327 :     val ret : operand option -> instruction
328 :     val move : {mvOp:move, src:operand, dst:operand} -> instruction
329 :     val lea : {r32:CellsBasis.cell, addr:operand} -> instruction
330 :     val cmpl : {lsrc:operand, rsrc:operand} -> instruction
331 :     val cmpw : {lsrc:operand, rsrc:operand} -> instruction
332 :     val cmpb : {lsrc:operand, rsrc:operand} -> instruction
333 :     val testl : {lsrc:operand, rsrc:operand} -> instruction
334 :     val testw : {lsrc:operand, rsrc:operand} -> instruction
335 :     val testb : {lsrc:operand, rsrc:operand} -> instruction
336 :     val bitop : {bitOp:bitOp, lsrc:operand, rsrc:operand} -> instruction
337 :     val binary : {binOp:binaryOp, src:operand, dst:operand} -> instruction
338 : leunga 1156 val shift : {shiftOp:shiftOp, src:operand, dst:operand, count:operand} -> instruction
339 : george 1003 val cmpxchg : {lock:bool, sz:isize, src:operand, dst:operand} -> instruction
340 :     val multdiv : {multDivOp:multDivOp, src:operand} -> instruction
341 :     val mul3 : {dst:CellsBasis.cell, src2:Int32.int, src1:operand} -> instruction
342 :     val unary : {unOp:unaryOp, opnd:operand} -> instruction
343 :     val set : {cond:cond, opnd:operand} -> instruction
344 :     val cmov : {cond:cond, src:operand, dst:CellsBasis.cell} -> instruction
345 :     val pushl : operand -> instruction
346 :     val pushw : operand -> instruction
347 :     val pushb : operand -> instruction
348 :     val pushfd : instruction
349 :     val popfd : instruction
350 :     val pop : operand -> instruction
351 :     val cdq : instruction
352 :     val into : instruction
353 :     val fbinary : {binOp:fbinOp, src:operand, dst:operand} -> instruction
354 :     val fibinary : {binOp:fibinOp, src:operand} -> instruction
355 :     val funary : funOp -> instruction
356 :     val fucom : operand -> instruction
357 :     val fucomp : operand -> instruction
358 :     val fucompp : instruction
359 :     val fcompp : instruction
360 : leunga 1156 val fcomi : operand -> instruction
361 :     val fcomip : operand -> instruction
362 :     val fucomi : operand -> instruction
363 :     val fucomip : operand -> instruction
364 : george 1003 val fxch : {opnd:CellsBasis.cell} -> instruction
365 :     val fstpl : operand -> instruction
366 :     val fstps : operand -> instruction
367 :     val fstpt : operand -> instruction
368 :     val fstl : operand -> instruction
369 :     val fsts : operand -> instruction
370 :     val fld1 : instruction
371 :     val fldl2e : instruction
372 :     val fldl2t : instruction
373 :     val fldlg2 : instruction
374 :     val fldln2 : instruction
375 :     val fldpi : instruction
376 :     val fldz : instruction
377 :     val fldl : operand -> instruction
378 :     val flds : operand -> instruction
379 :     val fldt : operand -> instruction
380 :     val fild : operand -> instruction
381 :     val fildl : operand -> instruction
382 :     val fildll : operand -> instruction
383 :     val fnstsw : instruction
384 :     val fenv : {fenvOp:fenvOp, opnd:operand} -> instruction
385 :     val fmove : {fsize:fsize, src:operand, dst:operand} -> instruction
386 :     val fiload : {isize:isize, ea:operand, dst:operand} -> instruction
387 :     val fbinop : {fsize:fsize, binOp:fbinOp, lsrc:operand, rsrc:operand, dst:operand} -> instruction
388 :     val fibinop : {isize:isize, binOp:fibinOp, lsrc:operand, rsrc:operand, dst:operand} -> instruction
389 :     val funop : {fsize:fsize, unOp:funOp, src:operand, dst:operand} -> instruction
390 : leunga 1156 val fcmp : {i:bool, fsize:fsize, lsrc:operand, rsrc:operand} -> instruction
391 : george 1003 val sahf : instruction
392 : mrainey 3241 val lfence : instruction
393 :     val mfence : instruction
394 :     val sfence : instruction
395 :     val pause : instruction
396 : george 1003 val lahf : instruction
397 :     val source : {} -> instruction
398 :     val sink : {} -> instruction
399 :     val phi : {} -> instruction
400 : monnier 411 end
401 : monnier 247
402 : george 984 functor X86Instr(T: MLTREE
403 : monnier 411 ) : X86INSTR =
404 :     struct
405 :     structure C = X86Cells
406 : george 1003 structure CB = CellsBasis
407 : george 984 structure T = T
408 : leunga 775 structure Region = T.Region
409 :     structure Constant = T.Constant
410 : monnier 411 datatype operand =
411 :     Immed of Int32.int
412 : leunga 775 | ImmedLabel of T.labexp
413 : monnier 411 | Relative of int
414 : leunga 775 | LabelEA of T.labexp
415 : george 889 | Direct of CellsBasis.cell
416 :     | FDirect of CellsBasis.cell
417 :     | FPR of CellsBasis.cell
418 :     | ST of CellsBasis.cell
419 :     | MemReg of CellsBasis.cell
420 :     | Displace of {base:CellsBasis.cell, disp:operand, mem:Region.region}
421 : leunga 999 | Indexed of {base:(CellsBasis.cell) option, index:CellsBasis.cell, scale:int,
422 : george 889 disp:operand, mem:Region.region}
423 : george 545 type addressing_mode = operand
424 : monnier 411 type ea = operand
425 :     datatype cond =
426 :     EQ
427 :     | NE
428 :     | LT
429 :     | LE
430 :     | GT
431 :     | GE
432 :     | B
433 :     | BE
434 :     | A
435 :     | AE
436 :     | C
437 :     | NC
438 :     | P
439 :     | NP
440 :     | O
441 :     | NO
442 : george 545 datatype binaryOp =
443 :     ADDL
444 :     | SUBL
445 :     | ANDL
446 :     | ORL
447 :     | XORL
448 :     | SHLL
449 :     | SARL
450 :     | SHRL
451 : leunga 815 | MULL
452 :     | IMULL
453 : george 545 | ADCL
454 :     | SBBL
455 :     | ADDW
456 :     | SUBW
457 :     | ANDW
458 :     | ORW
459 :     | XORW
460 :     | SHLW
461 :     | SARW
462 :     | SHRW
463 : leunga 815 | MULW
464 :     | IMULW
465 : george 545 | ADDB
466 :     | SUBB
467 :     | ANDB
468 :     | ORB
469 :     | XORB
470 :     | SHLB
471 :     | SARB
472 :     | SHRB
473 : leunga 815 | MULB
474 :     | IMULB
475 : leunga 646 | BTSW
476 :     | BTCW
477 :     | BTRW
478 :     | BTSL
479 :     | BTCL
480 :     | BTRL
481 :     | ROLW
482 :     | RORW
483 :     | ROLL
484 :     | RORL
485 :     | XCHGB
486 :     | XCHGW
487 :     | XCHGL
488 :     | LOCK_ADCW
489 :     | LOCK_ADCL
490 :     | LOCK_ADDW
491 :     | LOCK_ADDL
492 :     | LOCK_ANDW
493 :     | LOCK_ANDL
494 :     | LOCK_BTSW
495 :     | LOCK_BTSL
496 :     | LOCK_BTRW
497 :     | LOCK_BTRL
498 :     | LOCK_BTCW
499 :     | LOCK_BTCL
500 :     | LOCK_ORW
501 :     | LOCK_ORL
502 :     | LOCK_SBBW
503 :     | LOCK_SBBL
504 :     | LOCK_SUBW
505 :     | LOCK_SUBL
506 :     | LOCK_XORW
507 :     | LOCK_XORL
508 : leunga 657 | LOCK_XADDB
509 :     | LOCK_XADDW
510 :     | LOCK_XADDL
511 : george 545 datatype multDivOp =
512 : leunga 1156 IMULL1
513 :     | MULL1
514 : leunga 815 | IDIVL1
515 :     | DIVL1
516 : george 545 datatype unaryOp =
517 :     DECL
518 :     | INCL
519 :     | NEGL
520 :     | NOTL
521 : leunga 797 | DECW
522 :     | INCW
523 :     | NEGW
524 : george 545 | NOTW
525 : leunga 797 | DECB
526 :     | INCB
527 :     | NEGB
528 : george 545 | NOTB
529 : leunga 646 | LOCK_DECL
530 :     | LOCK_INCL
531 :     | LOCK_NEGL
532 :     | LOCK_NOTL
533 : leunga 1156 datatype shiftOp =
534 :     SHLDL
535 :     | SHRDL
536 : leunga 646 datatype bitOp =
537 :     BTW
538 :     | BTL
539 :     | LOCK_BTW
540 :     | LOCK_BTL
541 : george 545 datatype move =
542 :     MOVL
543 :     | MOVB
544 :     | MOVW
545 :     | MOVSWL
546 :     | MOVZWL
547 :     | MOVSBL
548 :     | MOVZBL
549 : monnier 411 datatype fbinOp =
550 :     FADDP
551 : george 555 | FADDS
552 : monnier 411 | FMULP
553 : george 555 | FMULS
554 : leunga 565 | FCOMS
555 :     | FCOMPS
556 : monnier 411 | FSUBP
557 : george 555 | FSUBS
558 : monnier 411 | FSUBRP
559 : george 555 | FSUBRS
560 : monnier 411 | FDIVP
561 : george 555 | FDIVS
562 : monnier 411 | FDIVRP
563 : george 555 | FDIVRS
564 : leunga 565 | FADDL
565 :     | FMULL
566 :     | FCOML
567 :     | FCOMPL
568 :     | FSUBL
569 :     | FSUBRL
570 :     | FDIVL
571 :     | FDIVRL
572 :     datatype fibinOp =
573 :     FIADDS
574 :     | FIMULS
575 :     | FICOMS
576 :     | FICOMPS
577 :     | FISUBS
578 :     | FISUBRS
579 :     | FIDIVS
580 : george 555 | FIDIVRS
581 :     | FIADDL
582 :     | FIMULL
583 : leunga 565 | FICOML
584 :     | FICOMPL
585 : george 555 | FISUBL
586 :     | FISUBRL
587 :     | FIDIVL
588 :     | FIDIVRL
589 : monnier 411 datatype funOp =
590 : leunga 744 FCHS
591 :     | FABS
592 :     | FTST
593 :     | FXAM
594 : leunga 731 | FPTAN
595 :     | FPATAN
596 : leunga 744 | FXTRACT
597 :     | FPREM1
598 :     | FDECSTP
599 :     | FINCSTP
600 :     | FPREM
601 :     | FYL2XP1
602 :     | FSQRT
603 :     | FSINCOS
604 :     | FRNDINT
605 : george 545 | FSCALE
606 : leunga 744 | FSIN
607 :     | FCOS
608 : george 545 datatype fenvOp =
609 :     FLDENV
610 :     | FNLDENV
611 :     | FSTENV
612 :     | FNSTENV
613 : leunga 731 datatype fsize =
614 :     FP32
615 :     | FP64
616 :     | FP80
617 :     datatype isize =
618 :     I8
619 :     | I16
620 :     | I32
621 :     | I64
622 : george 1003 datatype instr =
623 : monnier 411 NOP
624 : leunga 999 | JMP of operand * Label.label list
625 : monnier 411 | JCC of {cond:cond, opnd:operand}
626 : leunga 815 | CALL of {opnd:operand, defs:C.cellset, uses:C.cellset, return:C.cellset,
627 : blume 839 cutsTo:Label.label list, mem:Region.region, pops:Int32.int}
628 : leunga 594 | ENTER of {src1:operand, src2:operand}
629 : george 545 | LEAVE
630 : monnier 429 | RET of operand option
631 : monnier 411 | MOVE of {mvOp:move, src:operand, dst:operand}
632 : george 889 | LEA of {r32:CellsBasis.cell, addr:operand}
633 : george 545 | CMPL of {lsrc:operand, rsrc:operand}
634 :     | CMPW of {lsrc:operand, rsrc:operand}
635 :     | CMPB of {lsrc:operand, rsrc:operand}
636 :     | TESTL of {lsrc:operand, rsrc:operand}
637 :     | TESTW of {lsrc:operand, rsrc:operand}
638 :     | TESTB of {lsrc:operand, rsrc:operand}
639 : leunga 646 | BITOP of {bitOp:bitOp, lsrc:operand, rsrc:operand}
640 : monnier 411 | BINARY of {binOp:binaryOp, src:operand, dst:operand}
641 : leunga 1156 | SHIFT of {shiftOp:shiftOp, src:operand, dst:operand, count:operand}
642 : leunga 797 | CMPXCHG of {lock:bool, sz:isize, src:operand, dst:operand}
643 : monnier 411 | MULTDIV of {multDivOp:multDivOp, src:operand}
644 : george 889 | MUL3 of {dst:CellsBasis.cell, src2:Int32.int, src1:operand}
645 : monnier 411 | UNARY of {unOp:unaryOp, opnd:operand}
646 : george 545 | SET of {cond:cond, opnd:operand}
647 : george 889 | CMOV of {cond:cond, src:operand, dst:CellsBasis.cell}
648 : george 545 | PUSHL of operand
649 :     | PUSHW of operand
650 :     | PUSHB of operand
651 : leunga 815 | PUSHFD
652 :     | POPFD
653 : monnier 411 | POP of operand
654 :     | CDQ
655 :     | INTO
656 :     | FBINARY of {binOp:fbinOp, src:operand, dst:operand}
657 : leunga 565 | FIBINARY of {binOp:fibinOp, src:operand}
658 : monnier 411 | FUNARY of funOp
659 : leunga 731 | FUCOM of operand
660 :     | FUCOMP of operand
661 : monnier 411 | FUCOMPP
662 : george 545 | FCOMPP
663 : leunga 1156 | FCOMI of operand
664 :     | FCOMIP of operand
665 :     | FUCOMI of operand
666 :     | FUCOMIP of operand
667 : george 889 | FXCH of {opnd:CellsBasis.cell}
668 : george 545 | FSTPL of operand
669 :     | FSTPS of operand
670 : george 555 | FSTPT of operand
671 : leunga 579 | FSTL of operand
672 :     | FSTS of operand
673 : leunga 565 | FLD1
674 :     | FLDL2E
675 :     | FLDL2T
676 :     | FLDLG2
677 :     | FLDLN2
678 :     | FLDPI
679 :     | FLDZ
680 : george 545 | FLDL of operand
681 :     | FLDS of operand
682 : george 555 | FLDT of operand
683 : monnier 411 | FILD of operand
684 : leunga 565 | FILDL of operand
685 :     | FILDLL of operand
686 : monnier 411 | FNSTSW
687 : george 545 | FENV of {fenvOp:fenvOp, opnd:operand}
688 : leunga 731 | FMOVE of {fsize:fsize, src:operand, dst:operand}
689 :     | FILOAD of {isize:isize, ea:operand, dst:operand}
690 : leunga 744 | FBINOP of {fsize:fsize, binOp:fbinOp, lsrc:operand, rsrc:operand, dst:operand}
691 :     | FIBINOP of {isize:isize, binOp:fibinOp, lsrc:operand, rsrc:operand, dst:operand}
692 : leunga 731 | FUNOP of {fsize:fsize, unOp:funOp, src:operand, dst:operand}
693 : leunga 1156 | FCMP of {i:bool, fsize:fsize, lsrc:operand, rsrc:operand}
694 : monnier 411 | SAHF
695 : mrainey 3241 | LFENCE
696 :     | MFENCE
697 :     | SFENCE
698 :     | PAUSE
699 : leunga 815 | LAHF
700 : leunga 624 | SOURCE of {}
701 :     | SINK of {}
702 :     | PHI of {}
703 : george 1003 and instruction =
704 :     LIVE of {regs: C.cellset, spilled: C.cellset}
705 :     | KILL of {regs: C.cellset, spilled: C.cellset}
706 : george 1009 | COPY of {k: CellsBasis.cellkind,
707 :     sz: int, (* in bits *)
708 :     dst: CellsBasis.cell list,
709 :     src: CellsBasis.cell list,
710 :     tmp: ea option (* NONE if |dst| = {src| = 1 *)}
711 : george 1003 | ANNOTATION of {i:instruction, a:Annotations.annotation}
712 :     | INSTR of instr
713 :     val nop = INSTR NOP
714 :     and jmp = INSTR o JMP
715 :     and jcc = INSTR o JCC
716 :     and call = INSTR o CALL
717 :     and enter = INSTR o ENTER
718 :     and leave = INSTR LEAVE
719 :     and ret = INSTR o RET
720 :     and move = INSTR o MOVE
721 :     and lea = INSTR o LEA
722 :     and cmpl = INSTR o CMPL
723 :     and cmpw = INSTR o CMPW
724 :     and cmpb = INSTR o CMPB
725 :     and testl = INSTR o TESTL
726 :     and testw = INSTR o TESTW
727 :     and testb = INSTR o TESTB
728 :     and bitop = INSTR o BITOP
729 :     and binary = INSTR o BINARY
730 : leunga 1156 and shift = INSTR o SHIFT
731 : george 1003 and cmpxchg = INSTR o CMPXCHG
732 :     and multdiv = INSTR o MULTDIV
733 :     and mul3 = INSTR o MUL3
734 :     and unary = INSTR o UNARY
735 :     and set = INSTR o SET
736 :     and cmov = INSTR o CMOV
737 :     and pushl = INSTR o PUSHL
738 :     and pushw = INSTR o PUSHW
739 :     and pushb = INSTR o PUSHB
740 :     and pushfd = INSTR PUSHFD
741 :     and popfd = INSTR POPFD
742 :     and pop = INSTR o POP
743 :     and cdq = INSTR CDQ
744 :     and into = INSTR INTO
745 :     and fbinary = INSTR o FBINARY
746 :     and fibinary = INSTR o FIBINARY
747 :     and funary = INSTR o FUNARY
748 :     and fucom = INSTR o FUCOM
749 :     and fucomp = INSTR o FUCOMP
750 :     and fucompp = INSTR FUCOMPP
751 :     and fcompp = INSTR FCOMPP
752 : leunga 1156 and fcomi = INSTR o FCOMI
753 :     and fcomip = INSTR o FCOMIP
754 :     and fucomi = INSTR o FUCOMI
755 :     and fucomip = INSTR o FUCOMIP
756 : george 1003 and fxch = INSTR o FXCH
757 :     and fstpl = INSTR o FSTPL
758 :     and fstps = INSTR o FSTPS
759 :     and fstpt = INSTR o FSTPT
760 :     and fstl = INSTR o FSTL
761 :     and fsts = INSTR o FSTS
762 :     and fld1 = INSTR FLD1
763 :     and fldl2e = INSTR FLDL2E
764 :     and fldl2t = INSTR FLDL2T
765 :     and fldlg2 = INSTR FLDLG2
766 :     and fldln2 = INSTR FLDLN2
767 :     and fldpi = INSTR FLDPI
768 :     and fldz = INSTR FLDZ
769 :     and fldl = INSTR o FLDL
770 :     and flds = INSTR o FLDS
771 :     and fldt = INSTR o FLDT
772 :     and fild = INSTR o FILD
773 :     and fildl = INSTR o FILDL
774 :     and fildll = INSTR o FILDLL
775 :     and fnstsw = INSTR FNSTSW
776 :     and fenv = INSTR o FENV
777 :     and fmove = INSTR o FMOVE
778 :     and fiload = INSTR o FILOAD
779 :     and fbinop = INSTR o FBINOP
780 :     and fibinop = INSTR o FIBINOP
781 :     and funop = INSTR o FUNOP
782 :     and fcmp = INSTR o FCMP
783 :     and sahf = INSTR SAHF
784 : mrainey 3241 and lfence = INSTR LFENCE
785 :     and mfence = INSTR MFENCE
786 :     and sfence = INSTR SFENCE
787 :     and pause = INSTR PAUSE
788 : george 1003 and lahf = INSTR LAHF
789 :     and source = INSTR o SOURCE
790 :     and sink = INSTR o SINK
791 :     and phi = INSTR o PHI
792 : monnier 247 end
793 :    

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