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/sparc/instructions/sparcInstr.sml
ViewVC logotype

Diff of /sml/trunk/src/MLRISC/sparc/instructions/sparcInstr.sml

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

revision 1002, Fri Nov 30 17:11:33 2001 UTC revision 1003, Fri Dec 7 02:45:32 2001 UTC
# Line 8  Line 8 
8  signature SPARCINSTR =  signature SPARCINSTR =
9  sig  sig
10     structure C : SPARCCELLS     structure C : SPARCCELLS
11       structure CB : CELLS_BASIS
12     structure T : MLTREE     structure T : MLTREE
13     structure Constant: CONSTANT     structure Constant: CONSTANT
14     structure Region : REGION     structure Region : REGION
# Line 189  Line 190 
190     | LO of T.labexp     | LO of T.labexp
191     | HI of T.labexp     | HI of T.labexp
192     type addressing_mode = CellsBasis.cell * operand     type addressing_mode = CellsBasis.cell * operand
193     datatype instruction =     datatype instr =
194       LOAD of {l:load, d:CellsBasis.cell, r:CellsBasis.cell, i:operand, mem:Region.region}       LOAD of {l:load, d:CellsBasis.cell, r:CellsBasis.cell, i:operand, mem:Region.region}
195     | STORE of {s:store, d:CellsBasis.cell, r:CellsBasis.cell, i:operand, mem:Region.region}     | STORE of {s:store, d:CellsBasis.cell, r:CellsBasis.cell, i:operand, mem:Region.region}
196     | FLOAD of {l:fload, r:CellsBasis.cell, i:operand, d:CellsBasis.cell, mem:Region.region}     | FLOAD of {l:fload, r:CellsBasis.cell, i:operand, d:CellsBasis.cell, mem:Region.region}
# Line 227  Line 228 
228     | RDY of {d:CellsBasis.cell}     | RDY of {d:CellsBasis.cell}
229     | WRY of {r:CellsBasis.cell, i:operand}     | WRY of {r:CellsBasis.cell, i:operand}
230     | RET of {leaf:bool, nop:bool}     | RET of {leaf:bool, nop:bool}
    | ANNOTATION of {i:instruction, a:Annotations.annotation}  
231     | SOURCE of {}     | SOURCE of {}
232     | SINK of {}     | SINK of {}
233     | PHI of {}     | PHI of {}
234       and instruction =
235         LIVE of {regs: C.cellset, spilled: C.cellset}
236       | KILL of {regs: C.cellset, spilled: C.cellset}
237       | COPYXXX of {k: CB.cellkind, dst: CB.cell list, src: CB.cell list}
238       | ANNOTATION of {i:instruction, a:Annotations.annotation}
239       | INSTR of instr
240       val load : {l:load, d:CellsBasis.cell, r:CellsBasis.cell, i:operand, mem:Region.region} -> instruction
241       val store : {s:store, d:CellsBasis.cell, r:CellsBasis.cell, i:operand, mem:Region.region} -> instruction
242       val fload : {l:fload, r:CellsBasis.cell, i:operand, d:CellsBasis.cell, mem:Region.region} -> instruction
243       val fstore : {s:fstore, d:CellsBasis.cell, r:CellsBasis.cell, i:operand,
244          mem:Region.region} -> instruction
245       val unimp : {const22:int} -> instruction
246       val sethi : {i:int, d:CellsBasis.cell} -> instruction
247       val arith : {a:arith, r:CellsBasis.cell, i:operand, d:CellsBasis.cell} -> instruction
248       val shift : {s:shift, r:CellsBasis.cell, i:operand, d:CellsBasis.cell} -> instruction
249       val movicc : {b:branch, i:operand, d:CellsBasis.cell} -> instruction
250       val movfcc : {b:fbranch, i:operand, d:CellsBasis.cell} -> instruction
251       val movr : {rcond:rcond, r:CellsBasis.cell, i:operand, d:CellsBasis.cell} -> instruction
252       val fmovicc : {sz:fsize, b:branch, r:CellsBasis.cell, d:CellsBasis.cell} -> instruction
253       val fmovfcc : {sz:fsize, b:fbranch, r:CellsBasis.cell, d:CellsBasis.cell} -> instruction
254       val bicc : {b:branch, a:bool, label:Label.label, nop:bool} -> instruction
255       val fbfcc : {b:fbranch, a:bool, label:Label.label, nop:bool} -> instruction
256       val br : {rcond:rcond, p:prediction, r:CellsBasis.cell, a:bool, label:Label.label,
257          nop:bool} -> instruction
258       val bp : {b:branch, p:prediction, cc:cc, a:bool, label:Label.label, nop:bool} -> instruction
259       val jmp : {r:CellsBasis.cell, i:operand, labs:Label.label list, nop:bool} -> instruction
260       val jmpl : {r:CellsBasis.cell, i:operand, d:CellsBasis.cell, defs:C.cellset,
261          uses:C.cellset, cutsTo:Label.label list, nop:bool, mem:Region.region} -> instruction
262       val call : {defs:C.cellset, uses:C.cellset, label:Label.label, cutsTo:Label.label list,
263          nop:bool, mem:Region.region} -> instruction
264       val ticc : {t:branch, cc:cc, r:CellsBasis.cell, i:operand} -> instruction
265       val fpop1 : {a:farith1, r:CellsBasis.cell, d:CellsBasis.cell} -> instruction
266       val fpop2 : {a:farith2, r1:CellsBasis.cell, r2:CellsBasis.cell, d:CellsBasis.cell} -> instruction
267       val fcmp : {cmp:fcmp, r1:CellsBasis.cell, r2:CellsBasis.cell, nop:bool} -> instruction
268       val copy : {dst:(CellsBasis.cell) list, src:(CellsBasis.cell) list, impl:instruction list option ref,
269          tmp:ea option} -> instruction
270       val fcopy : {dst:(CellsBasis.cell) list, src:(CellsBasis.cell) list, impl:instruction list option ref,
271          tmp:ea option} -> instruction
272       val save : {r:CellsBasis.cell, i:operand, d:CellsBasis.cell} -> instruction
273       val restore : {r:CellsBasis.cell, i:operand, d:CellsBasis.cell} -> instruction
274       val rdy : {d:CellsBasis.cell} -> instruction
275       val wry : {r:CellsBasis.cell, i:operand} -> instruction
276       val ret : {leaf:bool, nop:bool} -> instruction
277       val source : {} -> instruction
278       val sink : {} -> instruction
279       val phi : {} -> instruction
280  end  end
281    
282  functor SparcInstr(T: MLTREE  functor SparcInstr(T: MLTREE
283                    ) : SPARCINSTR =                    ) : SPARCINSTR =
284  struct  struct
285     structure C = SparcCells     structure C = SparcCells
286       structure CB = CellsBasis
287     structure T = T     structure T = T
288     structure Region = T.Region     structure Region = T.Region
289     structure Constant = T.Constant     structure Constant = T.Constant
# Line 416  Line 463 
463     | LO of T.labexp     | LO of T.labexp
464     | HI of T.labexp     | HI of T.labexp
465     type addressing_mode = CellsBasis.cell * operand     type addressing_mode = CellsBasis.cell * operand
466     datatype instruction =     datatype instr =
467       LOAD of {l:load, d:CellsBasis.cell, r:CellsBasis.cell, i:operand, mem:Region.region}       LOAD of {l:load, d:CellsBasis.cell, r:CellsBasis.cell, i:operand, mem:Region.region}
468     | STORE of {s:store, d:CellsBasis.cell, r:CellsBasis.cell, i:operand, mem:Region.region}     | STORE of {s:store, d:CellsBasis.cell, r:CellsBasis.cell, i:operand, mem:Region.region}
469     | FLOAD of {l:fload, r:CellsBasis.cell, i:operand, d:CellsBasis.cell, mem:Region.region}     | FLOAD of {l:fload, r:CellsBasis.cell, i:operand, d:CellsBasis.cell, mem:Region.region}
# Line 454  Line 501 
501     | RDY of {d:CellsBasis.cell}     | RDY of {d:CellsBasis.cell}
502     | WRY of {r:CellsBasis.cell, i:operand}     | WRY of {r:CellsBasis.cell, i:operand}
503     | RET of {leaf:bool, nop:bool}     | RET of {leaf:bool, nop:bool}
    | ANNOTATION of {i:instruction, a:Annotations.annotation}  
504     | SOURCE of {}     | SOURCE of {}
505     | SINK of {}     | SINK of {}
506     | PHI of {}     | PHI of {}
507       and instruction =
508         LIVE of {regs: C.cellset, spilled: C.cellset}
509       | KILL of {regs: C.cellset, spilled: C.cellset}
510       | COPYXXX of {k: CB.cellkind, dst: CB.cell list, src: CB.cell list}
511       | ANNOTATION of {i:instruction, a:Annotations.annotation}
512       | INSTR of instr
513       val load = INSTR o LOAD
514       and store = INSTR o STORE
515       and fload = INSTR o FLOAD
516       and fstore = INSTR o FSTORE
517       and unimp = INSTR o UNIMP
518       and sethi = INSTR o SETHI
519       and arith = INSTR o ARITH
520       and shift = INSTR o SHIFT
521       and movicc = INSTR o MOVicc
522       and movfcc = INSTR o MOVfcc
523       and movr = INSTR o MOVR
524       and fmovicc = INSTR o FMOVicc
525       and fmovfcc = INSTR o FMOVfcc
526       and bicc = INSTR o Bicc
527       and fbfcc = INSTR o FBfcc
528       and br = INSTR o BR
529       and bp = INSTR o BP
530       and jmp = INSTR o JMP
531       and jmpl = INSTR o JMPL
532       and call = INSTR o CALL
533       and ticc = INSTR o Ticc
534       and fpop1 = INSTR o FPop1
535       and fpop2 = INSTR o FPop2
536       and fcmp = INSTR o FCMP
537       and copy = INSTR o COPY
538       and fcopy = INSTR o FCOPY
539       and save = INSTR o SAVE
540       and restore = INSTR o RESTORE
541       and rdy = INSTR o RDY
542       and wry = INSTR o WRY
543       and ret = INSTR o RET
544       and source = INSTR o SOURCE
545       and sink = INSTR o SINK
546       and phi = INSTR o PHI
547  end  end
548    

Legend:
Removed from v.1002  
changed lines
  Added in v.1003

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