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 454 - (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 : jhr 451 type program
13 :     type actor
14 : jhr 454 type exp
15 : jhr 451 type cond
16 : jhr 454 type stm
17 :     type method
18 : jhr 451
19 :     val defineActor : program * ?? -> actor
20 :     val globalVar : program * ?? -> global_var
21 :     val stateVar : actor * ?? -> state_var
22 :    
23 :     (* expression construction *)
24 :     structure Expr : sig
25 :     (* variable references *)
26 : jhr 454 val global : global_var -> exp
27 :     val getState : state_var -> exp
28 :     val param : param_var -> exp
29 :     val var : local_var -> exp
30 : jhr 451 (* literals *)
31 : jhr 454 val ivecLit : IntegerLit.integer list -> exp
32 :     val vecLit : FloatLit.float list -> exp
33 :     val stringLit : string -> exp
34 :     val boolLit : bool -> exp
35 : jhr 451 (* vector construction *)
36 : jhr 454 val vector : exp list -> exp
37 : jhr 451 (* select from a vector *)
38 : jhr 454 val select : int * vector -> exp
39 : jhr 451 (* vector (and scalar) arithmetic *)
40 : jhr 454 val add : exp * exp -> exp
41 :     val mul : exp * exp -> exp
42 :     val sub : exp * exp -> exp
43 :     val divide : exp * exp -> exp
44 :     val neg : exp -> exp
45 :     val abs : exp -> exp
46 :     val dot : exp * exprr -> exp (* dot product *)
47 :     val cross : exp * exp -> exp (* cross product *)
48 :     val length : exp -> exp (* vector length *)
49 :     val normalize : exp -> exp (* normalize vector *)
50 : jhr 451 (* comparisons *)
51 : jhr 454 val min : exp * exp -> exp
52 :     val max : exp * exp -> exp
53 : jhr 451 (* math functions *)
54 : jhr 454 val pow : exp * exp -> exp
55 :     val sin : exp -> exp
56 :     val cos : exp -> exp
57 :     val sqrt : exp -> exp
58 : jhr 451 (* conversions *)
59 : jhr 454 val toReal : exp -> exp (* integer to real *)
60 :     val roundToInt : exp -> exp (* round real to int *)
61 :     val truncToInt : exp -> exp (* truncate real to inte *)
62 :     val ceilToInt : exp -> exp (* ceiling of real to int *)
63 :     val floorToInt : exp -> exp (* floor of real to int *)
64 : jhr 451 end
65 :    
66 :     (* conditionals *)
67 :     structure Cond : sig
68 :     (* comparisons *)
69 : jhr 454 val lt : exp * exp -> cond
70 :     val lte : exp * exp -> cond
71 :     val equ : exp * exp -> cond
72 :     val neq : exp * exp -> cond
73 :     val gte : exp * exp -> cond
74 :     val gt : exp * exp -> cond
75 : jhr 451 (* logical connectives *)
76 :     val not : cond -> cond
77 :     val && : cond * cond -> cond
78 :     val || : cond * cond -> cond
79 :     end
80 :    
81 :     (* statement construction *)
82 :     structure Stmt : sig
83 : jhr 454 val assignState : state_var * exp -> stm
84 :     val assign : local_var * exp -> stm
85 :     val block : stm list -> stm
86 :     val ifthen : cond * stm -> stm
87 :     val ifthenelse : cond * stm * stm -> stm
88 : jhr 451 end
89 :    
90 : jhr 433 end

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