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/instructions/insnProps.sig
ViewVC logotype

Annotation of /sml/trunk/src/MLRISC/instructions/insnProps.sig

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : monnier 411 (*
2 :     * Basic Instruction properties that must be supported on all architectures.
3 : monnier 245 *
4 : monnier 411 * -- Allen
5 : monnier 245 *)
6 : monnier 411 signature INSN_PROPERTIES =
7 :     sig
8 : monnier 245 structure C : CELLS
9 :     structure I : INSTRUCTIONS
10 :    
11 :     sharing I.C = C
12 :    
13 : monnier 411 (* classify instructions *)
14 :     datatype kind = IK_JUMP (* branches, including returns *)
15 :     | IK_NOP (* no ops *)
16 :     | IK_INSTR (* normal instructions *)
17 :     | IK_COPY (* parallel copy *)
18 :     | IK_CALL (* call instructions *)
19 :     | IK_PHI (* A phi node (SSA) *)
20 : leunga 641 | IK_SINK (* A sink node (SSA) *)
21 :     | IK_SOURCE (* A source node (SSA) *)
22 : monnier 245
23 : monnier 411 val instrKind : I.instruction -> kind
24 : monnier 245
25 : monnier 411 (* parallel moves *)
26 :     val moveInstr : I.instruction -> bool
27 : monnier 429 val moveTmpR : I.instruction -> C.cell option
28 :     val moveDstSrc : I.instruction -> C.cell list * C.cell list
29 : monnier 245
30 : monnier 411 (* no op *)
31 :     val nop : unit -> I.instruction
32 : monnier 245
33 : monnier 411 (* jump instruction *)
34 :     val jump : Label.label -> I.instruction
35 : monnier 245
36 : monnier 411 (* load immediate; must be within immedRange *)
37 : leunga 657 val immedRange : {lo:int, hi:int}
38 :     val loadImmed : {immed:int, t:C.cell} -> I.instruction
39 :     val loadOperand : {opn:I.operand, t:C.cell} -> I.instruction
40 : monnier 245
41 : monnier 411 (*
42 :     * Targets of a branch instruction
43 :     * precondition: instruction must be of type IK_JUMP.
44 :     *)
45 :     datatype target = LABELLED of Label.label | FALLTHROUGH | ESCAPES
46 : monnier 245 val branchTargets : I.instruction -> target list
47 :    
48 : monnier 411 (* Set the branch target; no effect if not a branch instruction *)
49 : monnier 245 val setTargets : I.instruction * Label.label list -> I.instruction
50 : monnier 411
51 :     (* equality and hashing on operands *)
52 :     val eqOpn : I.operand * I.operand -> bool
53 :     val hashOpn : I.operand -> word
54 : monnier 245
55 : monnier 411 (* Negate the branching condition; raises NegateConditional
56 :     * if it is impossible to negate
57 :     *)
58 :     exception NegateConditional
59 : monnier 245 val negateConditional : I.instruction -> I.instruction
60 :    
61 : monnier 411 (* definition/use for the RA *)
62 :     val defUse : C.cellkind ->
63 : monnier 429 I.instruction -> (C.cell list * C.cell list)
64 : monnier 245
65 : monnier 411 (* annotations *)
66 : monnier 469 val getAnnotations : I.instruction ->
67 :     I.instruction * Annotations.annotation list
68 : monnier 411 val annotate : I.instruction * Annotations.annotation -> I.instruction
69 : leunga 657
70 :     val replicate : I.instruction -> I.instruction
71 : monnier 411 end
72 : monnier 245

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