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

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