Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Annotation of /trunk/src/compiler/codegen/target-sig.sml
ViewVC logotype

Annotation of /trunk/src/compiler/codegen/target-sig.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 451 - (view) (download)

1 : jhr 433 (* target-sig.sml
2 :     *
3 : jhr 435 * COPYRIGHT (c) 2010 The Diderot Project (http://diderot-language.cs.uchicago.edu)
4 : jhr 433 * All rights reserved.
5 :     *
6 :     * Support for generating C-like code (e.g., C, OpenCL, or CUDA)
7 :     *)
8 :    
9 :     signature TARGET =
10 :     sig
11 :    
12 :     type outstream
13 :    
14 : jhr 451 type program
15 :     type actor
16 :     type expr
17 :     type cond
18 :     type stmt
19 :    
20 :     val defineActor : program * ?? -> actor
21 :     val globalVar : program * ?? -> global_var
22 :     val stateVar : actor * ?? -> state_var
23 :    
24 :     (* expression construction *)
25 :     structure Expr : sig
26 :     (* variable references *)
27 :     val global : global_var -> expr
28 :     val getState : state_var -> expr
29 :     val param : param_var -> expr
30 :     val var : local_var -> expr
31 :     (* literals *)
32 :     val ivecLit : IntegerLit.integer list -> expr
33 :     val vecLit : FloatLit.float list -> expr
34 :     val stringLit : string -> expr
35 :     val boolLit : bool -> expr
36 :     (* vector construction *)
37 :     val vector : expr list -> expr
38 :     (* select from a vector *)
39 :     val select : int * vector -> expr
40 :     (* vector (and scalar) arithmetic *)
41 :     val add : expr * expr -> expr
42 :     val mul : expr * expr -> expr
43 :     val sub : expr * expr -> expr
44 :     val divide : expr * expr -> expr
45 :     val neg : expr -> expr
46 :     val abs : expr -> expr
47 :     val dot : exp * exprr -> expr (* dot product *)
48 :     val cross : expr * expr -> expr (* cross product *)
49 :     val length : expr -> expr (* vector length *)
50 :     val normalize : expr -> expr (* normalize vector *)
51 :     (* comparisons *)
52 :     val min : expr * expr -> expr
53 :     val max : expr * expr -> expr
54 :     (* math functions *)
55 :     val pow : expr * expr -> expr
56 :     val sin : expr -> expr
57 :     val cos : expr -> expr
58 :     val sqrt : expr -> expr
59 :     (* conversions *)
60 :     val toReal : expr -> expr (* integer to real *)
61 :     val roundToInt : expr -> expr (* round real to int *)
62 :     val truncToInt : expr -> expr (* truncate real to inte *)
63 :     val ceilToInt : expr -> expr (* ceiling of real to int *)
64 :     val floorToInt : expr -> expr (* floor of real to int *)
65 :     end
66 :    
67 :     (* conditionals *)
68 :     structure Cond : sig
69 :     (* comparisons *)
70 :     val lt : expr * expr -> cond
71 :     val lte : expr * expr -> cond
72 :     val equ : expr * expr -> cond
73 :     val neq : expr * expr -> cond
74 :     val gte : expr * expr -> cond
75 :     val gt : expr * expr -> cond
76 :     (* logical connectives *)
77 :     val not : cond -> cond
78 :     val && : cond * cond -> cond
79 :     val || : cond * cond -> cond
80 :     end
81 :    
82 :     (* statement construction *)
83 :     structure Stmt : sig
84 :     val assignState : state_var * expr -> stmt
85 :     val assign : local_var * expr -> stmt
86 :     val block : stmt list -> stmt
87 :     val ifthen : cond * stmt -> stmt
88 :     val ifthenelse : cond * stmt * stmt -> stmt
89 :     end
90 :    
91 : jhr 433 end

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