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/extensions/predicationProps.sig
ViewVC logotype

Annotation of /sml/trunk/src/MLRISC/extensions/predicationProps.sig

Parent Directory Parent Directory | Revision Log Revision Log


Revision 227 - (view) (download) (as text)
Original Path: sml/branches/SMLNJ/src/MLRISC/extensions/predicationProps.sig

1 : monnier 221 signature PREDICATION_PROPERTIES =
2 :     sig
3 :     structure I : PREDICATED_INSTRUCTIONS
4 :    
5 :     (*========================================================================
6 :     * These are the predicate expressions we currently recongize
7 :     *========================================================================*)
8 :     datatype pred_expr =
9 :     CMP of string * pred_opn * pred_opn
10 :     | PREG of I.C.register
11 :     | OR of pred_expr * pred_expr
12 :     | AND of pred_expr * pred_expr
13 :     | NOT of pred_expr
14 :     | FALSE
15 :     | TRUE
16 :    
17 :     and pred_opn = REG of I.C.register
18 :     | IMMED of int
19 :     | OTHER_IMMED of int
20 :    
21 :     datatype predicate_instr =
22 :     DEF of I.C.register * pred_expr
23 :     | OTHER of {defs:I.C.register list,uses:I.C.register list}
24 :    
25 :     (*========================================================================
26 :     * The true predicate
27 :     *========================================================================*)
28 :     val truePredicate : I.predicate
29 :    
30 :     (*========================================================================
31 :     * Update the predicate of an instruction
32 :     *========================================================================*)
33 :     val updatePredicate : I.instruction * I.predicate -> I.instruction
34 :    
35 :     (*========================================================================
36 :     * Lookup the current predicate
37 :     *========================================================================*)
38 :     val lookupPredicate : I.instruction -> I.predicate
39 :    
40 :     (*========================================================================
41 :     * Translate a predicate
42 :     *========================================================================*)
43 :     val info : I.predicate -> {r:I.C.register, neg:bool} option
44 :    
45 :     (*========================================================================
46 :     * Generate code to compute the disjunction of a list of predicates
47 :     *========================================================================*)
48 :     val predicatedOr : I.predicate list
49 :     -> {instrs : I.instruction list,
50 :     p : I.predicate
51 :     }
52 :    
53 :     (*========================================================================
54 :     * Given a branch instruction, the current predicate p,
55 :     * compute the predicate for the true branch and the false branch
56 :     * If the branch condition is c, then we generate c/\p and
57 :     * ~c/\p as the p_T and p_F predicates.
58 :     *========================================================================*)
59 :     val branchToSetPredicate : {instr : I.instruction,
60 :     p : I.predicate,
61 :     trueBranch : bool,
62 :     falseBranch : bool
63 :     } ->
64 :     { instrs : I.instruction list,
65 :     p_T : I.predicate,
66 :     p_F : I.predicate
67 :     }
68 :     (*========================================================================
69 :     * Given a branch instruction, the current predicate p,
70 :     * generate code that branch if both the predicate and the
71 :     * condition is true.
72 :     *========================================================================*)
73 :     val branchToSideExit : {instr:I.instruction, p:I.predicate}
74 :     -> I.instruction list
75 :    
76 :     (*========================================================================
77 :     * Given an instruction, classify it as either a predicate
78 :     * definition instruction or others
79 :     *========================================================================*)
80 :     val predicateInstr : I.instruction -> predicate_instr
81 :    
82 :     end
83 :    
84 :     (*
85 : monnier 227 * $Log$
86 : monnier 221 *)

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