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 839 - (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 : leunga 775 structure T : MLTREE
12 :     structure LabelExp : LABELEXP
13 : monnier 411 structure Constant: CONSTANT
14 :     structure Region : REGION
15 : leunga 775 sharing LabelExp.T = T
16 :     sharing Constant = T.Constant
17 :     sharing Region = T.Region
18 : monnier 411 datatype operand =
19 :     Immed of Int32.int
20 : leunga 775 | ImmedLabel of T.labexp
21 : monnier 411 | Relative of int
22 : leunga 775 | LabelEA of T.labexp
23 : leunga 744 | Direct of C.cell
24 :     | FDirect of C.cell
25 :     | FPR of C.cell
26 :     | ST of C.cell
27 :     | MemReg of C.cell
28 :     | Displace of {base:C.cell, disp:operand, mem:Region.region}
29 :     | Indexed of {base:C.cell option, index:C.cell, scale:int, disp:operand,
30 :     mem:Region.region}
31 : george 545 type addressing_mode = operand
32 : monnier 411 type ea = operand
33 :     datatype cond =
34 :     EQ
35 :     | NE
36 :     | LT
37 :     | LE
38 :     | GT
39 :     | GE
40 :     | B
41 :     | BE
42 :     | A
43 :     | AE
44 :     | C
45 :     | NC
46 :     | P
47 :     | NP
48 :     | O
49 :     | NO
50 : george 545 datatype binaryOp =
51 :     ADDL
52 :     | SUBL
53 :     | ANDL
54 :     | ORL
55 :     | XORL
56 :     | SHLL
57 :     | SARL
58 :     | SHRL
59 : leunga 815 | MULL
60 :     | IMULL
61 : george 545 | ADCL
62 :     | SBBL
63 :     | ADDW
64 :     | SUBW
65 :     | ANDW
66 :     | ORW
67 :     | XORW
68 :     | SHLW
69 :     | SARW
70 :     | SHRW
71 : leunga 815 | MULW
72 :     | IMULW
73 : george 545 | ADDB
74 :     | SUBB
75 :     | ANDB
76 :     | ORB
77 :     | XORB
78 :     | SHLB
79 :     | SARB
80 :     | SHRB
81 : leunga 815 | MULB
82 :     | IMULB
83 : leunga 646 | BTSW
84 :     | BTCW
85 :     | BTRW
86 :     | BTSL
87 :     | BTCL
88 :     | BTRL
89 :     | ROLW
90 :     | RORW
91 :     | ROLL
92 :     | RORL
93 :     | XCHGB
94 :     | XCHGW
95 :     | XCHGL
96 :     | LOCK_ADCW
97 :     | LOCK_ADCL
98 :     | LOCK_ADDW
99 :     | LOCK_ADDL
100 :     | LOCK_ANDW
101 :     | LOCK_ANDL
102 :     | LOCK_BTSW
103 :     | LOCK_BTSL
104 :     | LOCK_BTRW
105 :     | LOCK_BTRL
106 :     | LOCK_BTCW
107 :     | LOCK_BTCL
108 :     | LOCK_ORW
109 :     | LOCK_ORL
110 :     | LOCK_SBBW
111 :     | LOCK_SBBL
112 :     | LOCK_SUBW
113 :     | LOCK_SUBL
114 :     | LOCK_XORW
115 :     | LOCK_XORL
116 : leunga 657 | LOCK_XADDB
117 :     | LOCK_XADDW
118 :     | LOCK_XADDL
119 : george 545 datatype multDivOp =
120 : leunga 815 MULL1
121 :     | 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 :     datatype bitOp =
141 :     BTW
142 :     | BTL
143 :     | LOCK_BTW
144 :     | LOCK_BTL
145 : george 545 datatype move =
146 :     MOVL
147 :     | MOVB
148 :     | MOVW
149 :     | MOVSWL
150 :     | MOVZWL
151 :     | MOVSBL
152 :     | MOVZBL
153 : monnier 411 datatype fbinOp =
154 :     FADDP
155 : george 555 | FADDS
156 : monnier 411 | FMULP
157 : george 555 | FMULS
158 : leunga 565 | FCOMS
159 :     | FCOMPS
160 : monnier 411 | FSUBP
161 : george 555 | FSUBS
162 : monnier 411 | FSUBRP
163 : george 555 | FSUBRS
164 : monnier 411 | FDIVP
165 : george 555 | FDIVS
166 : monnier 411 | FDIVRP
167 : george 555 | FDIVRS
168 : leunga 565 | FADDL
169 :     | FMULL
170 :     | FCOML
171 :     | FCOMPL
172 :     | FSUBL
173 :     | FSUBRL
174 :     | FDIVL
175 :     | FDIVRL
176 :     datatype fibinOp =
177 :     FIADDS
178 :     | FIMULS
179 :     | FICOMS
180 :     | FICOMPS
181 :     | FISUBS
182 :     | FISUBRS
183 :     | FIDIVS
184 : george 555 | FIDIVRS
185 :     | FIADDL
186 :     | FIMULL
187 : leunga 565 | FICOML
188 :     | FICOMPL
189 : george 555 | FISUBL
190 :     | FISUBRL
191 :     | FIDIVL
192 :     | FIDIVRL
193 : monnier 411 datatype funOp =
194 : leunga 744 FCHS
195 :     | FABS
196 :     | FTST
197 :     | FXAM
198 : leunga 731 | FPTAN
199 :     | FPATAN
200 : leunga 744 | FXTRACT
201 :     | FPREM1
202 :     | FDECSTP
203 :     | FINCSTP
204 :     | FPREM
205 :     | FYL2XP1
206 :     | FSQRT
207 :     | FSINCOS
208 :     | FRNDINT
209 : george 545 | FSCALE
210 : leunga 744 | FSIN
211 :     | FCOS
212 : george 545 datatype fenvOp =
213 :     FLDENV
214 :     | FNLDENV
215 :     | FSTENV
216 :     | FNSTENV
217 : leunga 731 datatype fsize =
218 :     FP32
219 :     | FP64
220 :     | FP80
221 :     datatype isize =
222 :     I8
223 :     | I16
224 :     | I32
225 :     | I64
226 : monnier 411 datatype instruction =
227 :     NOP
228 :     | JMP of (operand * Label.label list)
229 :     | JCC of {cond:cond, opnd:operand}
230 : leunga 815 | CALL of {opnd:operand, defs:C.cellset, uses:C.cellset, return:C.cellset,
231 : blume 839 cutsTo:Label.label list, mem:Region.region, pops:Int32.int}
232 : leunga 594 | ENTER of {src1:operand, src2:operand}
233 : george 545 | LEAVE
234 : monnier 429 | RET of operand option
235 : monnier 411 | MOVE of {mvOp:move, src:operand, dst:operand}
236 : leunga 744 | LEA of {r32:C.cell, addr:operand}
237 : george 545 | CMPL of {lsrc:operand, rsrc:operand}
238 :     | CMPW of {lsrc:operand, rsrc:operand}
239 :     | CMPB of {lsrc:operand, rsrc:operand}
240 :     | TESTL of {lsrc:operand, rsrc:operand}
241 :     | TESTW of {lsrc:operand, rsrc:operand}
242 :     | TESTB of {lsrc:operand, rsrc:operand}
243 : leunga 646 | BITOP of {bitOp:bitOp, lsrc:operand, rsrc:operand}
244 : monnier 411 | BINARY of {binOp:binaryOp, src:operand, dst:operand}
245 : leunga 797 | CMPXCHG of {lock:bool, sz:isize, src:operand, dst:operand}
246 : monnier 411 | MULTDIV of {multDivOp:multDivOp, src:operand}
247 : leunga 815 | MUL3 of {dst:C.cell, src2:Int32.int, src1:operand}
248 : monnier 411 | UNARY of {unOp:unaryOp, opnd:operand}
249 : george 545 | SET of {cond:cond, opnd:operand}
250 : leunga 744 | CMOV of {cond:cond, src:operand, dst:C.cell}
251 : george 545 | PUSHL of operand
252 :     | PUSHW of operand
253 :     | PUSHB of operand
254 : leunga 815 | PUSHFD
255 :     | POPFD
256 : monnier 411 | POP of operand
257 :     | CDQ
258 :     | INTO
259 : leunga 744 | COPY of {dst:C.cell list, src:C.cell list, tmp:operand option}
260 :     | FCOPY of {dst:C.cell list, src:C.cell list, tmp:operand option}
261 : monnier 411 | FBINARY of {binOp:fbinOp, src:operand, dst:operand}
262 : leunga 565 | FIBINARY of {binOp:fibinOp, src:operand}
263 : monnier 411 | FUNARY of funOp
264 : leunga 731 | FUCOM of operand
265 :     | FUCOMP of operand
266 : monnier 411 | FUCOMPP
267 : george 545 | FCOMPP
268 : leunga 744 | FXCH of {opnd:C.cell}
269 : george 545 | FSTPL of operand
270 :     | FSTPS of operand
271 : george 555 | FSTPT of operand
272 : leunga 579 | FSTL of operand
273 :     | FSTS of operand
274 : leunga 565 | FLD1
275 :     | FLDL2E
276 :     | FLDL2T
277 :     | FLDLG2
278 :     | FLDLN2
279 :     | FLDPI
280 :     | FLDZ
281 : george 545 | FLDL of operand
282 :     | FLDS of operand
283 : george 555 | FLDT of operand
284 : monnier 411 | FILD of operand
285 : leunga 565 | FILDL of operand
286 :     | FILDLL of operand
287 : monnier 411 | FNSTSW
288 : george 545 | FENV of {fenvOp:fenvOp, opnd:operand}
289 : leunga 731 | FMOVE of {fsize:fsize, src:operand, dst:operand}
290 :     | FILOAD of {isize:isize, ea:operand, dst:operand}
291 : leunga 744 | FBINOP of {fsize:fsize, binOp:fbinOp, lsrc:operand, rsrc:operand, dst:operand}
292 :     | FIBINOP of {isize:isize, binOp:fibinOp, lsrc:operand, rsrc:operand, dst:operand}
293 : leunga 731 | FUNOP of {fsize:fsize, unOp:funOp, src:operand, dst:operand}
294 :     | FCMP of {fsize:fsize, lsrc:operand, rsrc:operand}
295 : monnier 411 | SAHF
296 : leunga 815 | LAHF
297 : monnier 411 | ANNOTATION of {i:instruction, a:Annotations.annotation}
298 : leunga 624 | SOURCE of {}
299 :     | SINK of {}
300 :     | PHI of {}
301 : monnier 411 end
302 : monnier 247
303 : leunga 775 functor X86Instr(LabelExp : LABELEXP
304 : monnier 411 ) : X86INSTR =
305 :     struct
306 :     structure C = X86Cells
307 : george 545 structure LabelExp = LabelExp
308 : leunga 775 structure T = LabelExp.T
309 :     structure Region = T.Region
310 :     structure Constant = T.Constant
311 : monnier 411 datatype operand =
312 :     Immed of Int32.int
313 : leunga 775 | ImmedLabel of T.labexp
314 : monnier 411 | Relative of int
315 : leunga 775 | LabelEA of T.labexp
316 : leunga 744 | Direct of C.cell
317 :     | FDirect of C.cell
318 :     | FPR of C.cell
319 :     | ST of C.cell
320 :     | MemReg of C.cell
321 :     | Displace of {base:C.cell, disp:operand, mem:Region.region}
322 :     | Indexed of {base:C.cell option, index:C.cell, scale:int, disp:operand,
323 :     mem:Region.region}
324 : george 545 type addressing_mode = operand
325 : monnier 411 type ea = operand
326 :     datatype cond =
327 :     EQ
328 :     | NE
329 :     | LT
330 :     | LE
331 :     | GT
332 :     | GE
333 :     | B
334 :     | BE
335 :     | A
336 :     | AE
337 :     | C
338 :     | NC
339 :     | P
340 :     | NP
341 :     | O
342 :     | NO
343 : george 545 datatype binaryOp =
344 :     ADDL
345 :     | SUBL
346 :     | ANDL
347 :     | ORL
348 :     | XORL
349 :     | SHLL
350 :     | SARL
351 :     | SHRL
352 : leunga 815 | MULL
353 :     | IMULL
354 : george 545 | ADCL
355 :     | SBBL
356 :     | ADDW
357 :     | SUBW
358 :     | ANDW
359 :     | ORW
360 :     | XORW
361 :     | SHLW
362 :     | SARW
363 :     | SHRW
364 : leunga 815 | MULW
365 :     | IMULW
366 : george 545 | ADDB
367 :     | SUBB
368 :     | ANDB
369 :     | ORB
370 :     | XORB
371 :     | SHLB
372 :     | SARB
373 :     | SHRB
374 : leunga 815 | MULB
375 :     | IMULB
376 : leunga 646 | BTSW
377 :     | BTCW
378 :     | BTRW
379 :     | BTSL
380 :     | BTCL
381 :     | BTRL
382 :     | ROLW
383 :     | RORW
384 :     | ROLL
385 :     | RORL
386 :     | XCHGB
387 :     | XCHGW
388 :     | XCHGL
389 :     | LOCK_ADCW
390 :     | LOCK_ADCL
391 :     | LOCK_ADDW
392 :     | LOCK_ADDL
393 :     | LOCK_ANDW
394 :     | LOCK_ANDL
395 :     | LOCK_BTSW
396 :     | LOCK_BTSL
397 :     | LOCK_BTRW
398 :     | LOCK_BTRL
399 :     | LOCK_BTCW
400 :     | LOCK_BTCL
401 :     | LOCK_ORW
402 :     | LOCK_ORL
403 :     | LOCK_SBBW
404 :     | LOCK_SBBL
405 :     | LOCK_SUBW
406 :     | LOCK_SUBL
407 :     | LOCK_XORW
408 :     | LOCK_XORL
409 : leunga 657 | LOCK_XADDB
410 :     | LOCK_XADDW
411 :     | LOCK_XADDL
412 : george 545 datatype multDivOp =
413 : leunga 815 MULL1
414 :     | IDIVL1
415 :     | DIVL1
416 : george 545 datatype unaryOp =
417 :     DECL
418 :     | INCL
419 :     | NEGL
420 :     | NOTL
421 : leunga 797 | DECW
422 :     | INCW
423 :     | NEGW
424 : george 545 | NOTW
425 : leunga 797 | DECB
426 :     | INCB
427 :     | NEGB
428 : george 545 | NOTB
429 : leunga 646 | LOCK_DECL
430 :     | LOCK_INCL
431 :     | LOCK_NEGL
432 :     | LOCK_NOTL
433 :     datatype bitOp =
434 :     BTW
435 :     | BTL
436 :     | LOCK_BTW
437 :     | LOCK_BTL
438 : george 545 datatype move =
439 :     MOVL
440 :     | MOVB
441 :     | MOVW
442 :     | MOVSWL
443 :     | MOVZWL
444 :     | MOVSBL
445 :     | MOVZBL
446 : monnier 411 datatype fbinOp =
447 :     FADDP
448 : george 555 | FADDS
449 : monnier 411 | FMULP
450 : george 555 | FMULS
451 : leunga 565 | FCOMS
452 :     | FCOMPS
453 : monnier 411 | FSUBP
454 : george 555 | FSUBS
455 : monnier 411 | FSUBRP
456 : george 555 | FSUBRS
457 : monnier 411 | FDIVP
458 : george 555 | FDIVS
459 : monnier 411 | FDIVRP
460 : george 555 | FDIVRS
461 : leunga 565 | FADDL
462 :     | FMULL
463 :     | FCOML
464 :     | FCOMPL
465 :     | FSUBL
466 :     | FSUBRL
467 :     | FDIVL
468 :     | FDIVRL
469 :     datatype fibinOp =
470 :     FIADDS
471 :     | FIMULS
472 :     | FICOMS
473 :     | FICOMPS
474 :     | FISUBS
475 :     | FISUBRS
476 :     | FIDIVS
477 : george 555 | FIDIVRS
478 :     | FIADDL
479 :     | FIMULL
480 : leunga 565 | FICOML
481 :     | FICOMPL
482 : george 555 | FISUBL
483 :     | FISUBRL
484 :     | FIDIVL
485 :     | FIDIVRL
486 : monnier 411 datatype funOp =
487 : leunga 744 FCHS
488 :     | FABS
489 :     | FTST
490 :     | FXAM
491 : leunga 731 | FPTAN
492 :     | FPATAN
493 : leunga 744 | FXTRACT
494 :     | FPREM1
495 :     | FDECSTP
496 :     | FINCSTP
497 :     | FPREM
498 :     | FYL2XP1
499 :     | FSQRT
500 :     | FSINCOS
501 :     | FRNDINT
502 : george 545 | FSCALE
503 : leunga 744 | FSIN
504 :     | FCOS
505 : george 545 datatype fenvOp =
506 :     FLDENV
507 :     | FNLDENV
508 :     | FSTENV
509 :     | FNSTENV
510 : leunga 731 datatype fsize =
511 :     FP32
512 :     | FP64
513 :     | FP80
514 :     datatype isize =
515 :     I8
516 :     | I16
517 :     | I32
518 :     | I64
519 : monnier 411 datatype instruction =
520 :     NOP
521 :     | JMP of (operand * Label.label list)
522 :     | JCC of {cond:cond, opnd:operand}
523 : leunga 815 | CALL of {opnd:operand, defs:C.cellset, uses:C.cellset, return:C.cellset,
524 : blume 839 cutsTo:Label.label list, mem:Region.region, pops:Int32.int}
525 : leunga 594 | ENTER of {src1:operand, src2:operand}
526 : george 545 | LEAVE
527 : monnier 429 | RET of operand option
528 : monnier 411 | MOVE of {mvOp:move, src:operand, dst:operand}
529 : leunga 744 | LEA of {r32:C.cell, addr:operand}
530 : george 545 | CMPL of {lsrc:operand, rsrc:operand}
531 :     | CMPW of {lsrc:operand, rsrc:operand}
532 :     | CMPB of {lsrc:operand, rsrc:operand}
533 :     | TESTL of {lsrc:operand, rsrc:operand}
534 :     | TESTW of {lsrc:operand, rsrc:operand}
535 :     | TESTB of {lsrc:operand, rsrc:operand}
536 : leunga 646 | BITOP of {bitOp:bitOp, lsrc:operand, rsrc:operand}
537 : monnier 411 | BINARY of {binOp:binaryOp, src:operand, dst:operand}
538 : leunga 797 | CMPXCHG of {lock:bool, sz:isize, src:operand, dst:operand}
539 : monnier 411 | MULTDIV of {multDivOp:multDivOp, src:operand}
540 : leunga 815 | MUL3 of {dst:C.cell, src2:Int32.int, src1:operand}
541 : monnier 411 | UNARY of {unOp:unaryOp, opnd:operand}
542 : george 545 | SET of {cond:cond, opnd:operand}
543 : leunga 744 | CMOV of {cond:cond, src:operand, dst:C.cell}
544 : george 545 | PUSHL of operand
545 :     | PUSHW of operand
546 :     | PUSHB of operand
547 : leunga 815 | PUSHFD
548 :     | POPFD
549 : monnier 411 | POP of operand
550 :     | CDQ
551 :     | INTO
552 : leunga 744 | COPY of {dst:C.cell list, src:C.cell list, tmp:operand option}
553 :     | FCOPY of {dst:C.cell list, src:C.cell list, tmp:operand option}
554 : monnier 411 | FBINARY of {binOp:fbinOp, src:operand, dst:operand}
555 : leunga 565 | FIBINARY of {binOp:fibinOp, src:operand}
556 : monnier 411 | FUNARY of funOp
557 : leunga 731 | FUCOM of operand
558 :     | FUCOMP of operand
559 : monnier 411 | FUCOMPP
560 : george 545 | FCOMPP
561 : leunga 744 | FXCH of {opnd:C.cell}
562 : george 545 | FSTPL of operand
563 :     | FSTPS of operand
564 : george 555 | FSTPT of operand
565 : leunga 579 | FSTL of operand
566 :     | FSTS of operand
567 : leunga 565 | FLD1
568 :     | FLDL2E
569 :     | FLDL2T
570 :     | FLDLG2
571 :     | FLDLN2
572 :     | FLDPI
573 :     | FLDZ
574 : george 545 | FLDL of operand
575 :     | FLDS of operand
576 : george 555 | FLDT of operand
577 : monnier 411 | FILD of operand
578 : leunga 565 | FILDL of operand
579 :     | FILDLL of operand
580 : monnier 411 | FNSTSW
581 : george 545 | FENV of {fenvOp:fenvOp, opnd:operand}
582 : leunga 731 | FMOVE of {fsize:fsize, src:operand, dst:operand}
583 :     | FILOAD of {isize:isize, ea:operand, dst:operand}
584 : leunga 744 | FBINOP of {fsize:fsize, binOp:fbinOp, lsrc:operand, rsrc:operand, dst:operand}
585 :     | FIBINOP of {isize:isize, binOp:fibinOp, lsrc:operand, rsrc:operand, dst:operand}
586 : leunga 731 | FUNOP of {fsize:fsize, unOp:funOp, src:operand, dst:operand}
587 :     | FCMP of {fsize:fsize, lsrc:operand, rsrc:operand}
588 : monnier 411 | SAHF
589 : leunga 815 | LAHF
590 : monnier 411 | ANNOTATION of {i:instruction, a:Annotations.annotation}
591 : leunga 624 | SOURCE of {}
592 :     | SINK of {}
593 :     | PHI of {}
594 : monnier 247 end
595 :    

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