Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/src/MLRISC/x86/instructions/x86Instr.sml
ViewVC logotype

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 499, Tue Dec 7 15:44:50 1999 UTC revision 545, Thu Feb 24 13:56:44 2000 UTC
# Line 1  Line 1 
1  (*  (*
2   * This file was automatically generated by MDGen   * This file was automatically generated by MDGen (v2.0)
3   * from the machine description file "x86/x86.md".   * from the machine description file "x86/x86.md".
4   *)   *)
5    
# Line 8  Line 8 
8  sig  sig
9     structure C : X86CELLS     structure C : X86CELLS
10     structure Constant: CONSTANT     structure Constant: CONSTANT
11       structure LabelExp: LABELEXP
12     structure Region : REGION     structure Region : REGION
13          sharing Constant = LabelExp.Constant
14     datatype operand =     datatype operand =
15       Immed of Int32.int       Immed of Int32.int
    | Const of Constant.const  
16     | ImmedLabel of LabelExp.labexp     | ImmedLabel of LabelExp.labexp
17     | Relative of int     | Relative of int
18     | LabelEA of LabelExp.labexp     | LabelEA of LabelExp.labexp
# Line 21  Line 22 
22     | Displace of {base:int, disp:operand, mem:Region.region}     | Displace of {base:int, disp:operand, mem:Region.region}
23     | Indexed of {base:int option, index:int, scale:int, disp:operand, mem:Region.region     | Indexed of {base:int option, index:int, scale:int, disp:operand, mem:Region.region
24       }       }
25       type addressing_mode = operand
26     type ea = operand     type ea = operand
    datatype binaryOp =  
      ADD  
    | SUB  
    | AND  
    | OR  
    | XOR  
    | SHL  
    | SAR  
    | SHR  
    datatype multDivOp =  
      UMUL  
    | IDIV  
    | UDIV  
    datatype unaryOp =  
      DEC  
    | INC  
    | NEG  
    | NOT  
    datatype move =  
      MOVL  
    | MOVZX  
    | MOVB  
27     datatype cond =     datatype cond =
28       EQ       EQ
29     | NE     | NE
# Line 61  Line 41 
41     | NP     | NP
42     | O     | O
43     | NO     | NO
44       datatype binaryOp =
45         ADDL
46       | SUBL
47       | ANDL
48       | ORL
49       | XORL
50       | SHLL
51       | SARL
52       | SHRL
53       | ADCL
54       | SBBL
55       | ADDW
56       | SUBW
57       | ANDW
58       | ORW
59       | XORW
60       | SHLW
61       | SARW
62       | SHRW
63       | ADDB
64       | SUBB
65       | ANDB
66       | ORB
67       | XORB
68       | SHLB
69       | SARB
70       | SHRB
71       datatype multDivOp =
72         UMUL
73       | IDIV
74       | UDIV
75       datatype unaryOp =
76         DECL
77       | INCL
78       | NEGL
79       | NOTL
80       | NOTW
81       | NOTB
82       datatype move =
83         MOVL
84       | MOVB
85       | MOVW
86       | MOVSWL
87       | MOVZWL
88       | MOVSBL
89       | MOVZBL
90     datatype fbinOp =     datatype fbinOp =
91       FADDP       FADDP
92     | FADD     | FADD
93       | FIADD
94     | FMULP     | FMULP
95     | FMUL     | FMUL
96       | FIMUL
97     | FSUBP     | FSUBP
98     | FSUB     | FSUB
99       | FISUB
100     | FSUBRP     | FSUBRP
101     | FSUBR     | FSUBR
102       | FISUBR
103     | FDIVP     | FDIVP
104     | FDIV     | FDIV
105       | FIDIV
106     | FDIVRP     | FDIVRP
107     | FDIVR     | FDIVR
108       | FIDIVR
109     datatype funOp =     datatype funOp =
110       FABS       FABS
111     | FCHS     | FCHS
112       | FSIN
113       | FCOS
114       | FTAN
115       | FSCALE
116       | FRNDINT
117       | FSQRT
118       | FTST
119       | FXAM
120       | FINCSTP
121       | FDECSTP
122       datatype fenvOp =
123         FLDENV
124       | FNLDENV
125       | FSTENV
126       | FNSTENV
127     datatype instruction =     datatype instruction =
128       NOP       NOP
129     | JMP of (operand * Label.label list)     | JMP of (operand * Label.label list)
130     | JCC of {cond:cond, opnd:operand}     | JCC of {cond:cond, opnd:operand}
131     | CALL of (operand * C.cellset * C.cellset * Region.region)     | CALL of (operand * C.cellset * C.cellset * Region.region)
132       | LEAVE
133     | RET of operand option     | RET of operand option
134     | MOVE of {mvOp:move, src:operand, dst:operand}     | MOVE of {mvOp:move, src:operand, dst:operand}
135     | LEA of {r32:int, addr:operand}     | LEA of {r32:int, addr:operand}
136     | CMP of {lsrc:operand, rsrc:operand}     | CMPL of {lsrc:operand, rsrc:operand}
137       | CMPW of {lsrc:operand, rsrc:operand}
138       | CMPB of {lsrc:operand, rsrc:operand}
139       | TESTL of {lsrc:operand, rsrc:operand}
140       | TESTW of {lsrc:operand, rsrc:operand}
141       | TESTB of {lsrc:operand, rsrc:operand}
142     | BINARY of {binOp:binaryOp, src:operand, dst:operand}     | BINARY of {binOp:binaryOp, src:operand, dst:operand}
143     | MULTDIV of {multDivOp:multDivOp, src:operand}     | MULTDIV of {multDivOp:multDivOp, src:operand}
144     | MUL3 of {dst:int, src1:operand, src2:Int32.int option}     | MUL3 of {dst:int, src2:Int32.int option, src1:operand}
145     | UNARY of {unOp:unaryOp, opnd:operand}     | UNARY of {unOp:unaryOp, opnd:operand}
146     | PUSH of operand     | SET of {cond:cond, opnd:operand}
147       | CMOV of {cond:cond, src:operand, dst:int}
148       | PUSHL of operand
149       | PUSHW of operand
150       | PUSHB of operand
151     | POP of operand     | POP of operand
152     | CDQ     | CDQ
153     | INTO     | INTO
# Line 99  Line 156 
156     | FBINARY of {binOp:fbinOp, src:operand, dst:operand}     | FBINARY of {binOp:fbinOp, src:operand, dst:operand}
157     | FUNARY of funOp     | FUNARY of funOp
158     | FUCOMPP     | FUCOMPP
159     | FXCH     | FCOM
160     | FSTP of operand     | FCOMPP
161     | FLD of operand     | FXCH of {opnd:int}
162       | FSTPL of operand
163       | FSTPS of operand
164       | FLDL of operand
165       | FLDS of operand
166     | FILD of operand     | FILD of operand
167     | FNSTSW     | FNSTSW
168       | FENV of {fenvOp:fenvOp, opnd:operand}
169     | SAHF     | SAHF
170     | ANNOTATION of {i:instruction, a:Annotations.annotation}     | ANNOTATION of {i:instruction, a:Annotations.annotation}
    | GROUP of Annotations.annotation  
171  end  end
172    
173  functor X86Instr(structure Const : CONSTANT  functor X86Instr(structure LabelExp : LABELEXP
174                   structure Region : REGION                   structure Region : REGION
175                  ) : X86INSTR =                  ) : X86INSTR =
176  struct  struct
177     structure C = X86Cells     structure C = X86Cells
178     structure Region = Region     structure Region = Region
179     structure Constant = Const     structure LabelExp = LabelExp
180       structure Constant = LabelExp.Constant
181     datatype operand =     datatype operand =
182       Immed of Int32.int       Immed of Int32.int
    | Const of Constant.const  
183     | ImmedLabel of LabelExp.labexp     | ImmedLabel of LabelExp.labexp
184     | Relative of int     | Relative of int
185     | LabelEA of LabelExp.labexp     | LabelEA of LabelExp.labexp
# Line 128  Line 189 
189     | Displace of {base:int, disp:operand, mem:Region.region}     | Displace of {base:int, disp:operand, mem:Region.region}
190     | Indexed of {base:int option, index:int, scale:int, disp:operand, mem:Region.region     | Indexed of {base:int option, index:int, scale:int, disp:operand, mem:Region.region
191       }       }
192       type addressing_mode = operand
193     type ea = operand     type ea = operand
    datatype binaryOp =  
      ADD  
    | SUB  
    | AND  
    | OR  
    | XOR  
    | SHL  
    | SAR  
    | SHR  
    datatype multDivOp =  
      UMUL  
    | IDIV  
    | UDIV  
    datatype unaryOp =  
      DEC  
    | INC  
    | NEG  
    | NOT  
    datatype move =  
      MOVL  
    | MOVZX  
    | MOVB  
194     datatype cond =     datatype cond =
195       EQ       EQ
196     | NE     | NE
# Line 168  Line 208 
208     | NP     | NP
209     | O     | O
210     | NO     | NO
211       datatype binaryOp =
212         ADDL
213       | SUBL
214       | ANDL
215       | ORL
216       | XORL
217       | SHLL
218       | SARL
219       | SHRL
220       | ADCL
221       | SBBL
222       | ADDW
223       | SUBW
224       | ANDW
225       | ORW
226       | XORW
227       | SHLW
228       | SARW
229       | SHRW
230       | ADDB
231       | SUBB
232       | ANDB
233       | ORB
234       | XORB
235       | SHLB
236       | SARB
237       | SHRB
238       datatype multDivOp =
239         UMUL
240       | IDIV
241       | UDIV
242       datatype unaryOp =
243         DECL
244       | INCL
245       | NEGL
246       | NOTL
247       | NOTW
248       | NOTB
249       datatype move =
250         MOVL
251       | MOVB
252       | MOVW
253       | MOVSWL
254       | MOVZWL
255       | MOVSBL
256       | MOVZBL
257     datatype fbinOp =     datatype fbinOp =
258       FADDP       FADDP
259     | FADD     | FADD
260       | FIADD
261     | FMULP     | FMULP
262     | FMUL     | FMUL
263       | FIMUL
264     | FSUBP     | FSUBP
265     | FSUB     | FSUB
266       | FISUB
267     | FSUBRP     | FSUBRP
268     | FSUBR     | FSUBR
269       | FISUBR
270     | FDIVP     | FDIVP
271     | FDIV     | FDIV
272       | FIDIV
273     | FDIVRP     | FDIVRP
274     | FDIVR     | FDIVR
275       | FIDIVR
276     datatype funOp =     datatype funOp =
277       FABS       FABS
278     | FCHS     | FCHS
279       | FSIN
280       | FCOS
281       | FTAN
282       | FSCALE
283       | FRNDINT
284       | FSQRT
285       | FTST
286       | FXAM
287       | FINCSTP
288       | FDECSTP
289       datatype fenvOp =
290         FLDENV
291       | FNLDENV
292       | FSTENV
293       | FNSTENV
294     datatype instruction =     datatype instruction =
295       NOP       NOP
296     | JMP of (operand * Label.label list)     | JMP of (operand * Label.label list)
297     | JCC of {cond:cond, opnd:operand}     | JCC of {cond:cond, opnd:operand}
298     | CALL of (operand * C.cellset * C.cellset * Region.region)     | CALL of (operand * C.cellset * C.cellset * Region.region)
299       | LEAVE
300     | RET of operand option     | RET of operand option
301     | MOVE of {mvOp:move, src:operand, dst:operand}     | MOVE of {mvOp:move, src:operand, dst:operand}
302     | LEA of {r32:int, addr:operand}     | LEA of {r32:int, addr:operand}
303     | CMP of {lsrc:operand, rsrc:operand}     | CMPL of {lsrc:operand, rsrc:operand}
304       | CMPW of {lsrc:operand, rsrc:operand}
305       | CMPB of {lsrc:operand, rsrc:operand}
306       | TESTL of {lsrc:operand, rsrc:operand}
307       | TESTW of {lsrc:operand, rsrc:operand}
308       | TESTB of {lsrc:operand, rsrc:operand}
309     | BINARY of {binOp:binaryOp, src:operand, dst:operand}     | BINARY of {binOp:binaryOp, src:operand, dst:operand}
310     | MULTDIV of {multDivOp:multDivOp, src:operand}     | MULTDIV of {multDivOp:multDivOp, src:operand}
311     | MUL3 of {dst:int, src1:operand, src2:Int32.int option}     | MUL3 of {dst:int, src2:Int32.int option, src1:operand}
312     | UNARY of {unOp:unaryOp, opnd:operand}     | UNARY of {unOp:unaryOp, opnd:operand}
313     | PUSH of operand     | SET of {cond:cond, opnd:operand}
314       | CMOV of {cond:cond, src:operand, dst:int}
315       | PUSHL of operand
316       | PUSHW of operand
317       | PUSHB of operand
318     | POP of operand     | POP of operand
319     | CDQ     | CDQ
320     | INTO     | INTO
# Line 206  Line 323 
323     | FBINARY of {binOp:fbinOp, src:operand, dst:operand}     | FBINARY of {binOp:fbinOp, src:operand, dst:operand}
324     | FUNARY of funOp     | FUNARY of funOp
325     | FUCOMPP     | FUCOMPP
326     | FXCH     | FCOM
327     | FSTP of operand     | FCOMPP
328     | FLD of operand     | FXCH of {opnd:int}
329       | FSTPL of operand
330       | FSTPS of operand
331       | FLDL of operand
332       | FLDS of operand
333     | FILD of operand     | FILD of operand
334     | FNSTSW     | FNSTSW
335       | FENV of {fenvOp:fenvOp, opnd:operand}
336     | SAHF     | SAHF
337     | ANNOTATION of {i:instruction, a:Annotations.annotation}     | ANNOTATION of {i:instruction, a:Annotations.annotation}
    | GROUP of Annotations.annotation  
338  end  end
339    

Legend:
Removed from v.499  
changed lines
  Added in v.545

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