aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjackbackrack2015-04-23 23:05:14 -0700
committerjackbackrack2015-04-23 23:05:14 -0700
commit32569d0e025824da8a3dbaf736309d09252cd691 (patch)
tree0c7d010be78a6a0c6dc58f17cc7bb58f23487f66 /src
parent511bd8aa815b3d4c1b3359d42d76286774cbd8c2 (diff)
parent6add45d9bb45a179cb7b81f0b4fc3e201019f9cc (diff)
merge
Diffstat (limited to 'src')
-rw-r--r--src/main/stanza/ir-utils.stanza2
-rw-r--r--src/main/stanza/passes.stanza6
2 files changed, 7 insertions, 1 deletions
diff --git a/src/main/stanza/ir-utils.stanza b/src/main/stanza/ir-utils.stanza
index a80c2d7e..91e49123 100644
--- a/src/main/stanza/ir-utils.stanza
+++ b/src/main/stanza/ir-utils.stanza
@@ -300,7 +300,7 @@ defmethod map (f: Type -> Type, c:Stmt) -> Stmt :
match(c) :
(c:DefWire) : DefWire(name(c),f(type(c)))
(c:DefRegister) : DefRegister(name(c),f(type(c)))
- (c:DefMemory) : DefMemory(name(c),f(type(c)))
+ (c:DefMemory) : DefMemory(name(c),f(type(c)) as VectorType)
(c) : c
public defmulti mapr<?T> (f: Width -> Width, t:?T&Type) -> T
diff --git a/src/main/stanza/passes.stanza b/src/main/stanza/passes.stanza
index 9a259d27..9fbda7a5 100644
--- a/src/main/stanza/passes.stanza
+++ b/src/main/stanza/passes.stanza
@@ -789,6 +789,12 @@ defn lower (body:Stmt, table:HashTable<Symbol,List<KeyValue<Expression,Flip>>>)
val exps = expand-expr(exp(e))
val len = num-elems(type(e))
headn(tailn(exps,len * value(e)),len)
+ (e:Pad) :
+ val v = key(expand-expr(value(e))[0])
+ list(KeyValue(Pad(v,width(e),type(e)),DEFAULT))
+ (e:DoPrim) :
+ val args = for x in args(e) map : key(expand-expr(x)[0])
+ list(KeyValue(DoPrim(op(e),args,consts(e),type(e)),DEFAULT))
(e) : list(KeyValue(e, DEFAULT))
;println-debug(table)