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/branches/SMLNJ/src/MLRISC/instructions/insnProps.sig
ViewVC logotype

Annotation of /sml/branches/SMLNJ/src/MLRISC/instructions/insnProps.sig

Parent Directory Parent Directory | Revision Log Revision Log


Revision 245 - (view) (download) (as text)

1 : monnier 245 (* insnProps.sig --- instruction set properties
2 :     *
3 :     * COPYRIGHT (c) 1996 AT&T Bell Laboratories.
4 :     *
5 :     *)
6 :     signature INSN_PROPERTIES = sig
7 :     structure C : CELLS
8 :     structure I : INSTRUCTIONS
9 :    
10 :     sharing I.C = C
11 :    
12 :     exception NegateConditional
13 :    
14 :     datatype kind = IK_JUMP | IK_NOP | IK_INSTR
15 :     datatype target = LABELLED of Label.label | FALLTHROUGH | ESCAPES
16 :    
17 :     (*========================================================================
18 :     * Instruction Kinds
19 :     *========================================================================*)
20 :     val instrKind : I.instruction -> kind
21 :     (* kind of instruction *)
22 :    
23 :     val moveInstr : I.instruction -> bool
24 :     (* is the instruction a move? Assumed to have exactly one
25 :     * source and one destination
26 :     *)
27 :     val nop : unit -> I.instruction
28 :     (* generate a nop *)
29 :    
30 :     (*========================================================================
31 :     * Parallel Move
32 :     *========================================================================*)
33 :     val moveTmpR : I.instruction -> int option
34 :     (* temporary register associated with parallel move
35 :     * instructions if any.
36 :     *)
37 :    
38 :     val moveDstSrc : I.instruction -> int list * int list
39 :     (* source and destinations associated with a parallel move *)
40 :    
41 :     val copy : { src : int list, dst : int list } -> I.instruction
42 :     (* create a parallel move *)
43 :    
44 :     val fcopy : { src : int list, dst : int list } -> I.instruction
45 :     (* create a floating point parallel move *)
46 :    
47 :     val splitCopies:{regmap:int->int, insns:I.instruction list} -> I.instruction list
48 :     (* split all parallel moves in the instruction stream into individual moves *)
49 :    
50 :     (*========================================================================
51 :     * Branches and Calls/Returns
52 :     *========================================================================*)
53 :     val branchTargets : I.instruction -> target list
54 :     (* targets of an instruction. The instruction kind must be IK_JUMP *)
55 :    
56 :     val jump : Label.label -> I.instruction
57 :     (* create a jump instruction *)
58 :    
59 :     val setTargets : I.instruction * Label.label list -> I.instruction
60 :     (* set the targets of a branch/jump instruction.
61 :     * do nothing if the instruction is not a branch/jump instruction
62 :     *)
63 :    
64 :     val negateConditional : I.instruction -> I.instruction
65 :     (* negate a conditional branch.
66 :     * raise NegateConditional if the instruction is not a conditional
67 :     * or if it cannot be negated.
68 :     *)
69 :    
70 :     (*========================================================================
71 :     * Definition and use (for register allocation mainly)
72 :     *========================================================================*)
73 :     val defUse : C.cellclass -> I.instruction -> (int list * int list)
74 :     (* def/use lists *)
75 :     end
76 :    
77 :    
78 :    
79 :     (*
80 :     * $Log: insnProps.sig,v $
81 :     * Revision 1.3 1998/05/25 15:11:04 george
82 :     * Fixed RCS keywords
83 :     *
84 :     *)

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