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

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