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/ppc/instructions/ppcInstr.sml
ViewVC logotype

Annotation of /sml/trunk/src/MLRISC/ppc/instructions/ppcInstr.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 411 - (view) (download)
Original Path: sml/branches/SMLNJ/src/MLRISC/ppc/instructions/ppcInstr.sml

1 : monnier 411 (*
2 :     * This file was automatically generated by MDGen
3 :     * from the machine description file "ppc/ppc.md".
4 :     *)
5 : monnier 247
6 :    
7 : monnier 411 signature PPCINSTR =
8 :     sig
9 :     structure C : PPCCELLS
10 :     structure Constant: CONSTANT
11 :     structure Region : REGION
12 :     type gpr = int
13 :     type fpr = int
14 :     type ccr = int
15 :     type crf = int
16 :     datatype spr =
17 :     XER
18 :     | LR
19 :     | CTR
20 :     datatype operand =
21 :     RegOp of int
22 :     | ImmedOp of int
23 :     | LabelOp of LabelExp.labexp
24 :     | ConstOp of Constant.const
25 :     datatype ea =
26 :     Direct of int
27 :     | FDirect of int
28 :     | Displace of {base:int, disp:operand}
29 :     datatype load =
30 :     LBZ
31 :     | LBZE
32 :     | LHZ
33 :     | LHZE
34 :     | LHA
35 :     | LHAE
36 :     | LWZ
37 :     | LWZE
38 :     | LDE
39 :     datatype store =
40 :     STB
41 :     | STBE
42 :     | STH
43 :     | STHE
44 :     | STW
45 :     | STWE
46 :     | STDE
47 :     datatype fload =
48 :     LFS
49 :     | LFSE
50 :     | LFD
51 :     | LFDE
52 :     datatype fstore =
53 :     STFS
54 :     | STFSE
55 :     | STFD
56 :     | STFDE
57 :     datatype cmp =
58 :     CMP
59 :     | CMPL
60 :     datatype fcmp =
61 :     FCMPO
62 :     | FCMPU
63 :     datatype unary =
64 :     NEG
65 :     | EXTSB
66 :     | EXTSH
67 :     | EXTSW
68 :     | CNTLZW
69 :     | CNTLZD
70 :     datatype funary =
71 :     FMR
72 :     | FNEG
73 :     | FABS
74 :     | FNABS
75 :     | FSQRT
76 :     | FSQRTS
77 :     | FRSP
78 :     | FCTIW
79 :     | FCTIWZ
80 :     | FCTID
81 :     | FCTIDZ
82 :     | FCFID
83 :     datatype farith =
84 :     FADD
85 :     | FSUB
86 :     | FMUL
87 :     | FDIV
88 :     | FADDS
89 :     | FSUBS
90 :     | FMULS
91 :     | FDIVS
92 :     datatype farith3 =
93 :     FMADD
94 :     | FMADDS
95 :     | FMSUB
96 :     | FMSUBS
97 :     | FNMADD
98 :     | FNMADDS
99 :     | FNMSUB
100 :     | FNMSUBS
101 :     | FSEL
102 :     datatype bo =
103 :     TRUE
104 :     | FALSE
105 :     | ALWAYS
106 :     | COUNTER of {eqZero:bool, cond:bool option}
107 :     datatype arith =
108 :     ADD
109 :     | SUBF
110 :     | MULLW
111 :     | MULLD
112 :     | MULHW
113 :     | MULHWU
114 :     | DIVW
115 :     | DIVD
116 :     | DIVWU
117 :     | DIVDU
118 :     | AND
119 :     | OR
120 :     | XOR
121 :     | NAND
122 :     | NOR
123 :     | EQV
124 :     | ANDC
125 :     | ORC
126 :     | SLW
127 :     | SLD
128 :     | SRW
129 :     | SRD
130 :     | SRAW
131 :     | SRAD
132 :     datatype arithi =
133 :     ADDI
134 :     | ADDIS
135 :     | SUBFIC
136 :     | MULLI
137 :     | ANDI_Rc
138 :     | ANDIS_Rc
139 :     | ORI
140 :     | ORIS
141 :     | XORI
142 :     | XORIS
143 :     | SRAWI
144 :     | SRADI
145 :     datatype rotate =
146 :     RLWNM
147 :     | RLDCL
148 :     | RLDCR
149 :     datatype rotatei =
150 :     RLWINM
151 :     | RLWIMI
152 :     | RLDICL
153 :     | RLDICR
154 :     | RLDIC
155 :     | RLDIMI
156 :     datatype ccarith =
157 :     CRAND
158 :     | CROR
159 :     | CRXOR
160 :     | CRNAND
161 :     | CRNOR
162 :     | CREQV
163 :     | CRANDC
164 :     | CRORC
165 :     datatype bit =
166 :     LT
167 :     | GT
168 :     | EQ
169 :     | SO
170 :     | FL
171 :     | FG
172 :     | FE
173 :     | FU
174 :     | FX
175 :     | FEX
176 :     | VX
177 :     | OX
178 :     datatype xerbit =
179 :     SO64
180 :     | OV64
181 :     | CA64
182 :     | SO32
183 :     | OV32
184 :     | CA32
185 :     type cr_bit = (int * bit)
186 :     datatype instruction =
187 :     L of {ld:load, rt:int, ra:int, d:operand, mem:Region.region}
188 :     | LF of {ld:fload, ft:int, ra:int, d:operand, mem:Region.region}
189 :     | ST of {st:store, rs:int, ra:int, d:operand, mem:Region.region}
190 :     | STF of {st:fstore, fs:int, ra:int, d:operand, mem:Region.region}
191 :     | UNARY of {oper:unary, rt:int, ra:int, Rc:bool, OE:bool}
192 :     | ARITH of {oper:arith, rt:int, ra:int, rb:int, Rc:bool, OE:bool}
193 :     | ARITHI of {oper:arithi, rt:int, ra:int, im:operand}
194 :     | ROTATE of {oper:rotate, ra:int, rs:int, sh:int, mb:int, me:int option
195 :     }
196 :     | ROTATEI of {oper:rotatei, ra:int, rs:int, sh:operand, mb:int, me:int option
197 :     }
198 :     | COMPARE of {cmp:cmp, l:bool, bf:int, ra:int, rb:operand}
199 :     | FCOMPARE of {cmp:fcmp, bf:int, fa:int, fb:int}
200 :     | FUNARY of {oper:funary, ft:int, fb:int, Rc:bool}
201 :     | FARITH of {oper:farith, ft:int, fa:int, fb:int, Rc:bool}
202 :     | FARITH3 of {oper:farith3, ft:int, fa:int, fb:int, fc:int, Rc:bool
203 :     }
204 :     | CCARITH of {oper:ccarith, bt:cr_bit, ba:cr_bit, bb:cr_bit}
205 :     | MCRF of {bf:int, bfa:int}
206 :     | MTSPR of {rs:int, spr:int}
207 :     | MFSPR of {rt:int, spr:int}
208 :     | TW of {to:int, ra:int, si:operand}
209 :     | TD of {to:int, ra:int, si:operand}
210 :     | BC of {bo:bo, bf:int, bit:bit, addr:operand, LK:bool, fall:operand
211 :     }
212 :     | BCLR of {bo:bo, bf:int, bit:bit, LK:bool, labels:Label.label list
213 :     }
214 :     | B of {addr:operand, LK:bool}
215 :     | CALL of {def:C.cellset, use:C.cellset, mem:Region.region}
216 :     | COPY of {dst:int list, src:int list, impl:instruction list option ref
217 :     , tmp:ea option}
218 :     | FCOPY of {dst:int list, src:int list, impl:instruction list option ref
219 :     , tmp:ea option}
220 :     | ANNOTATION of {i:instruction, a:Annotations.annotation}
221 :     | GROUP of Annotations.annotation
222 :     end
223 : monnier 247
224 : monnier 411 functor PPCInstr(structure Const : CONSTANT
225 :     structure Region : REGION
226 :     ) : PPCINSTR =
227 :     struct
228 :     structure C = PPCCells
229 :     structure Region = Region
230 :     structure Constant = Const
231 :     type gpr = int
232 :     type fpr = int
233 :     type ccr = int
234 :     type crf = int
235 :     datatype spr =
236 :     XER
237 :     | LR
238 :     | CTR
239 :     datatype operand =
240 :     RegOp of int
241 :     | ImmedOp of int
242 :     | LabelOp of LabelExp.labexp
243 :     | ConstOp of Constant.const
244 :     datatype ea =
245 :     Direct of int
246 :     | FDirect of int
247 :     | Displace of {base:int, disp:operand}
248 :     datatype load =
249 :     LBZ
250 :     | LBZE
251 :     | LHZ
252 :     | LHZE
253 :     | LHA
254 :     | LHAE
255 :     | LWZ
256 :     | LWZE
257 :     | LDE
258 :     datatype store =
259 :     STB
260 :     | STBE
261 :     | STH
262 :     | STHE
263 :     | STW
264 :     | STWE
265 :     | STDE
266 :     datatype fload =
267 :     LFS
268 :     | LFSE
269 :     | LFD
270 :     | LFDE
271 :     datatype fstore =
272 :     STFS
273 :     | STFSE
274 :     | STFD
275 :     | STFDE
276 :     datatype cmp =
277 :     CMP
278 :     | CMPL
279 :     datatype fcmp =
280 :     FCMPO
281 :     | FCMPU
282 :     datatype unary =
283 :     NEG
284 :     | EXTSB
285 :     | EXTSH
286 :     | EXTSW
287 :     | CNTLZW
288 :     | CNTLZD
289 :     datatype funary =
290 :     FMR
291 :     | FNEG
292 :     | FABS
293 :     | FNABS
294 :     | FSQRT
295 :     | FSQRTS
296 :     | FRSP
297 :     | FCTIW
298 :     | FCTIWZ
299 :     | FCTID
300 :     | FCTIDZ
301 :     | FCFID
302 :     datatype farith =
303 :     FADD
304 :     | FSUB
305 :     | FMUL
306 :     | FDIV
307 :     | FADDS
308 :     | FSUBS
309 :     | FMULS
310 :     | FDIVS
311 :     datatype farith3 =
312 :     FMADD
313 :     | FMADDS
314 :     | FMSUB
315 :     | FMSUBS
316 :     | FNMADD
317 :     | FNMADDS
318 :     | FNMSUB
319 :     | FNMSUBS
320 :     | FSEL
321 :     datatype bo =
322 :     TRUE
323 :     | FALSE
324 :     | ALWAYS
325 :     | COUNTER of {eqZero:bool, cond:bool option}
326 :     datatype arith =
327 :     ADD
328 :     | SUBF
329 :     | MULLW
330 :     | MULLD
331 :     | MULHW
332 :     | MULHWU
333 :     | DIVW
334 :     | DIVD
335 :     | DIVWU
336 :     | DIVDU
337 :     | AND
338 :     | OR
339 :     | XOR
340 :     | NAND
341 :     | NOR
342 :     | EQV
343 :     | ANDC
344 :     | ORC
345 :     | SLW
346 :     | SLD
347 :     | SRW
348 :     | SRD
349 :     | SRAW
350 :     | SRAD
351 :     datatype arithi =
352 :     ADDI
353 :     | ADDIS
354 :     | SUBFIC
355 :     | MULLI
356 :     | ANDI_Rc
357 :     | ANDIS_Rc
358 :     | ORI
359 :     | ORIS
360 :     | XORI
361 :     | XORIS
362 :     | SRAWI
363 :     | SRADI
364 :     datatype rotate =
365 :     RLWNM
366 :     | RLDCL
367 :     | RLDCR
368 :     datatype rotatei =
369 :     RLWINM
370 :     | RLWIMI
371 :     | RLDICL
372 :     | RLDICR
373 :     | RLDIC
374 :     | RLDIMI
375 :     datatype ccarith =
376 :     CRAND
377 :     | CROR
378 :     | CRXOR
379 :     | CRNAND
380 :     | CRNOR
381 :     | CREQV
382 :     | CRANDC
383 :     | CRORC
384 :     datatype bit =
385 :     LT
386 :     | GT
387 :     | EQ
388 :     | SO
389 :     | FL
390 :     | FG
391 :     | FE
392 :     | FU
393 :     | FX
394 :     | FEX
395 :     | VX
396 :     | OX
397 :     datatype xerbit =
398 :     SO64
399 :     | OV64
400 :     | CA64
401 :     | SO32
402 :     | OV32
403 :     | CA32
404 :     type cr_bit = (int * bit)
405 :     datatype instruction =
406 :     L of {ld:load, rt:int, ra:int, d:operand, mem:Region.region}
407 :     | LF of {ld:fload, ft:int, ra:int, d:operand, mem:Region.region}
408 :     | ST of {st:store, rs:int, ra:int, d:operand, mem:Region.region}
409 :     | STF of {st:fstore, fs:int, ra:int, d:operand, mem:Region.region}
410 :     | UNARY of {oper:unary, rt:int, ra:int, Rc:bool, OE:bool}
411 :     | ARITH of {oper:arith, rt:int, ra:int, rb:int, Rc:bool, OE:bool}
412 :     | ARITHI of {oper:arithi, rt:int, ra:int, im:operand}
413 :     | ROTATE of {oper:rotate, ra:int, rs:int, sh:int, mb:int, me:int option
414 :     }
415 :     | ROTATEI of {oper:rotatei, ra:int, rs:int, sh:operand, mb:int, me:int option
416 :     }
417 :     | COMPARE of {cmp:cmp, l:bool, bf:int, ra:int, rb:operand}
418 :     | FCOMPARE of {cmp:fcmp, bf:int, fa:int, fb:int}
419 :     | FUNARY of {oper:funary, ft:int, fb:int, Rc:bool}
420 :     | FARITH of {oper:farith, ft:int, fa:int, fb:int, Rc:bool}
421 :     | FARITH3 of {oper:farith3, ft:int, fa:int, fb:int, fc:int, Rc:bool
422 :     }
423 :     | CCARITH of {oper:ccarith, bt:cr_bit, ba:cr_bit, bb:cr_bit}
424 :     | MCRF of {bf:int, bfa:int}
425 :     | MTSPR of {rs:int, spr:int}
426 :     | MFSPR of {rt:int, spr:int}
427 :     | TW of {to:int, ra:int, si:operand}
428 :     | TD of {to:int, ra:int, si:operand}
429 :     | BC of {bo:bo, bf:int, bit:bit, addr:operand, LK:bool, fall:operand
430 :     }
431 :     | BCLR of {bo:bo, bf:int, bit:bit, LK:bool, labels:Label.label list
432 :     }
433 :     | B of {addr:operand, LK:bool}
434 :     | CALL of {def:C.cellset, use:C.cellset, mem:Region.region}
435 :     | COPY of {dst:int list, src:int list, impl:instruction list option ref
436 :     , tmp:ea option}
437 :     | FCOPY of {dst:int list, src:int list, impl:instruction list option ref
438 :     , tmp:ea option}
439 :     | ANNOTATION of {i:instruction, a:Annotations.annotation}
440 :     | GROUP of Annotations.annotation
441 :     end
442 : monnier 247

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