From 84e085e5d5c704fb4cdd687d1dc562b98c49e70e Mon Sep 17 00:00:00 2001 From: jackbackrack Date: Fri, 24 Apr 2015 13:17:18 -0700 Subject: improve flo output --- src/main/stanza/passes.stanza | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/stanza/passes.stanza b/src/main/stanza/passes.stanza index 9fbda7a5..41a8dca3 100644 --- a/src/main/stanza/passes.stanza +++ b/src/main/stanza/passes.stanza @@ -1980,7 +1980,7 @@ defn emit-s (s:Stmt, v:List, top:Symbol) : if value(s) typeof WritePort : val e = value(s) as WritePort val n = gensym(`F) - emit-all([top "::" n " = wr'" prim-width(type(e)) " " enable(e) " " mem(e) " " index(e) " " name(s) "\n"], top) + emit-all([top "::" n " = wr'" prim-width(type(e)) " " enable(e) " " mem(e) " " index(e) " " top "::" name(s) "\n"], top) else : emit-all([top "::" name(s) " = " maybe-mov(value(s)) value(s) "\n"], top) (s:Begin) : do(emit-s{_, v, top}, body(s)) -- cgit v1.2.3 From 52de683632b6216094e2e36360b2954e39da673d Mon Sep 17 00:00:00 2001 From: jackbackrack Date: Fri, 24 Apr 2015 14:47:04 -0700 Subject: flo backend consts get widths and read enable goes to one --- src/main/stanza/passes.stanza | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/main/stanza/passes.stanza b/src/main/stanza/passes.stanza index 924780d8..8697c867 100644 --- a/src/main/stanza/passes.stanza +++ b/src/main/stanza/passes.stanza @@ -1938,7 +1938,7 @@ defn emit! (e:Expression,top:Symbol) : (e:Register) : emit-all(["reg'" prim-width(type(e)) " 1 " value(e)], top) ;; enable(e) (e:ReadPort) : - emit-all(["rd'" prim-width(type(e)) " " enable(e) " " mem(e) " " index(e)], top) + emit-all(["rd'" prim-width(type(e)) " " "1" " " mem(e) " " index(e)], top) ;; enable(e) (e:DoPrim) : if cmp-op?(op(e)) : emit-all([flo-op-name(op(e)) "'" prim-width(type(args(e)[0]))], top) @@ -1963,8 +1963,7 @@ defn emit! (e:Expression,top:Symbol) : print(" ") emit!(arg, top) for const in consts(e) do : - print(" ") - print(const) + print-all([" " const "'" sizeof(const)]) (e) : error("SHOULDN'T EMIT THIS") ;; print-all(["EMIT(" e ")"]) ;(e) : emit-all(["mov'" prim-width(type(e)) " " e], top) ;TODO, not sure which one is right -- cgit v1.2.3 From a94d9405a2cce13a809a9590345a75136db98108 Mon Sep 17 00:00:00 2001 From: jackbackrack Date: Sun, 26 Apr 2015 14:42:44 -0700 Subject: pad uses rsh with zero shift --- src/main/stanza/passes.stanza | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/stanza/passes.stanza b/src/main/stanza/passes.stanza index 8697c867..2cd884b8 100644 --- a/src/main/stanza/passes.stanza +++ b/src/main/stanza/passes.stanza @@ -1934,7 +1934,7 @@ defn emit! (e:Expression,top:Symbol) : (e:Subfield) : emit-all([exp(e) "/" name(e)], top) (e:Index) : emit-all([exp(e) "/" value(e)], top) (e:Pad) : - emit-all(["rsh'" prim-width(type(e)) " " value(e) " " width(e)], top) + emit-all(["rsh'" prim-width(type(e)) " " value(e) " 0"], top) (e:Register) : emit-all(["reg'" prim-width(type(e)) " 1 " value(e)], top) ;; enable(e) (e:ReadPort) : -- cgit v1.2.3 From cbc928e5e80898163871b8be1b34106e5275af58 Mon Sep 17 00:00:00 2001 From: jackbackrack Date: Mon, 27 Apr 2015 17:37:32 -0700 Subject: fix ops to get tests passing through flo-llvm --- src/main/stanza/passes.stanza | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/main/stanza/passes.stanza b/src/main/stanza/passes.stanza index 2cd884b8..1267d5f3 100644 --- a/src/main/stanza/passes.stanza +++ b/src/main/stanza/passes.stanza @@ -1853,14 +1853,14 @@ defn flo-op-name (op:PrimOp) -> String : LESS-EQ-US-OP : "lte" ;; todo: swap args LESS-EQ-SU-OP : "lte" ;; todo: swap args LESS-EQ-SS-OP : "lte" ;; todo: swap args - GREATER-UU-OP : "lte" ;; todo: swap args BROKEN - GREATER-US-OP : "lte" ;; todo: swap args BROKEN - GREATER-SU-OP : "lte" ;; todo: swap args BROKEN - GREATER-SS-OP : "lte" ;; todo: swap args BROKEN - GREATER-EQ-UU-OP : "lt" ;; todo: signed version - GREATER-EQ-US-OP : "lt" ;; todo: signed version - GREATER-EQ-SU-OP : "lt" ;; todo: signed version - GREATER-EQ-SS-OP : "lt" ;; todo: signed version + GREATER-UU-OP : "lt" ;; todo: swap args + GREATER-US-OP : "lt" ;; todo: swap args + GREATER-SU-OP : "lt" ;; todo: swap args + GREATER-SS-OP : "lt" ;; todo: swap args + GREATER-EQ-UU-OP : "lte" ;; todo: signed version + GREATER-EQ-US-OP : "lte" ;; todo: signed version + GREATER-EQ-SU-OP : "lte" ;; todo: signed version + GREATER-EQ-SS-OP : "lte" ;; todo: signed version NEQUAL-UU-OP : "neq" NEQUAL-SS-OP : "neq" EQUAL-UU-OP : "eq" @@ -1936,13 +1936,13 @@ defn emit! (e:Expression,top:Symbol) : (e:Pad) : emit-all(["rsh'" prim-width(type(e)) " " value(e) " 0"], top) (e:Register) : - emit-all(["reg'" prim-width(type(e)) " 1 " value(e)], top) ;; enable(e) + emit-all(["reg'" prim-width(type(e)) " " enable(e) " " value(e)], top) (e:ReadPort) : emit-all(["rd'" prim-width(type(e)) " " "1" " " mem(e) " " index(e)], top) ;; enable(e) (e:DoPrim) : if cmp-op?(op(e)) : emit-all([flo-op-name(op(e)) "'" prim-width(type(args(e)[0]))], top) - if greater-op?(op(e)) or less-eq-op?(op(e)) : + if greater-op?(op(e)) or greater-eq-op?(op(e)) : emit-all([" " args(e)[1] " " args(e)[0]], top) else : emit-all([" " args(e)[0] " " args(e)[1]], top) -- cgit v1.2.3 From 69b1c5592ca3423d6bc96a26d0968ff3951b1e63 Mon Sep 17 00:00:00 2001 From: jackbackrack Date: Wed, 29 Apr 2015 13:52:55 -0700 Subject: turn off printing --- src/main/stanza/passes.stanza | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/stanza/passes.stanza b/src/main/stanza/passes.stanza index 7950a131..89131a94 100644 --- a/src/main/stanza/passes.stanza +++ b/src/main/stanza/passes.stanza @@ -761,7 +761,7 @@ defn lower (body:Stmt) -> Stmt : (e:WIndex) : gender(e) (e) : g - println(s) + ;; println(s) match(s) : (s:DefWire) : Begin $ for x in generate-entry(name(s),type(s)) map : -- cgit v1.2.3 From 492fd458acf504c1db46b5ef75bd08dca42b3367 Mon Sep 17 00:00:00 2001 From: jackbackrack Date: Wed, 29 Apr 2015 20:55:16 -0700 Subject: add dyn shifts to flo backend --- src/main/stanza/passes.stanza | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/main/stanza/passes.stanza b/src/main/stanza/passes.stanza index db1ae336..906f2d69 100644 --- a/src/main/stanza/passes.stanza +++ b/src/main/stanza/passes.stanza @@ -1807,6 +1807,10 @@ defn flo-op-name (op:PrimOp) -> String : SHIFT-LEFT-S-OP : "lsh" ;; todo: signed version SHIFT-RIGHT-U-OP : "rsh" SHIFT-RIGHT-S-OP : "rsh" + DYN-SHIFT-LEFT-U-OP : "lsh" ;; todo: signed version + DYN-SHIFT-LEFT-S-OP : "lsh" ;; todo: signed version + DYN-SHIFT-RIGHT-U-OP : "rsh" + DYN-SHIFT-RIGHT-S-OP : "rsh" ;CONVERT-U-OP : ;CONVERT-S-OP : BIT-AND-OP : "and" -- cgit v1.2.3 From 4efcba3c46c4f1a138e5f3e8861734e084b07fb5 Mon Sep 17 00:00:00 2001 From: jackbackrack Date: Wed, 29 Apr 2015 20:59:03 -0700 Subject: merge --- src/main/stanza/passes.stanza | 5 ----- 1 file changed, 5 deletions(-) (limited to 'src') diff --git a/src/main/stanza/passes.stanza b/src/main/stanza/passes.stanza index e26c82be..81ddc7f9 100644 --- a/src/main/stanza/passes.stanza +++ b/src/main/stanza/passes.stanza @@ -1935,13 +1935,8 @@ defn emit-s (s:Stmt, v:List, top:Symbol) : (s:DefNode) : if value(s) typeof WritePort : val e = value(s) as WritePort -<<<<<<< HEAD - val n = gensym(`F) - emit-all([top "::" n " = wr'" prim-width(type(e)) " " enable(e) " " mem(e) " " index(e) " " top "::" name(s) "\n"], top) -======= val n = firrtl-gensym(`F) emit-all([top "::" n " = wr'" prim-width(type(e)) " " enable(e) " " mem(e) " " index(e) " " name(s) "\n"], top) ->>>>>>> upstream/master else : emit-all([top "::" name(s) " = " maybe-mov(value(s)) value(s) "\n"], top) (s:Begin) : do(emit-s{_, v, top}, body(s)) -- cgit v1.2.3 From c3029680c2e1c7d61586240257da8b672c123c01 Mon Sep 17 00:00:00 2001 From: jackbackrack Date: Thu, 30 Apr 2015 10:42:50 -0700 Subject: turn off printing --- src/main/stanza/passes.stanza | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/stanza/passes.stanza b/src/main/stanza/passes.stanza index 81ddc7f9..496ed8b0 100644 --- a/src/main/stanza/passes.stanza +++ b/src/main/stanza/passes.stanza @@ -1936,7 +1936,7 @@ defn emit-s (s:Stmt, v:List, top:Symbol) : if value(s) typeof WritePort : val e = value(s) as WritePort val n = firrtl-gensym(`F) - emit-all([top "::" n " = wr'" prim-width(type(e)) " " enable(e) " " mem(e) " " index(e) " " name(s) "\n"], top) + emit-all([top "::" n " = wr'" prim-width(type(e)) " " enable(e) " " mem(e) " " index(e) " " top "::" name(s) "\n"], top) else : emit-all([top "::" name(s) " = " maybe-mov(value(s)) value(s) "\n"], top) (s:Begin) : do(emit-s{_, v, top}, body(s)) -- cgit v1.2.3 From e3bf1ddc8491557e9cff90a6d85725765e733c35 Mon Sep 17 00:00:00 2001 From: jackbackrack Date: Fri, 1 May 2015 12:13:24 -0700 Subject: adjust sizeof to be correct --- src/main/stanza/passes.stanza | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src') diff --git a/src/main/stanza/passes.stanza b/src/main/stanza/passes.stanza index 652bb735..133f96c0 100644 --- a/src/main/stanza/passes.stanza +++ b/src/main/stanza/passes.stanza @@ -1860,8 +1860,7 @@ defn prim-width (type:Type) -> Int : (t) : error("Bad prim width type") defn sizeof (in: Int) -> Int : - ;; if in == 1: 1 else: to-int(ceil(log(in)/log(2))) - max(1, ceil-log2(in)) + max(1, ceil-log2(in + 1)) defn emit-all (es:Streamable, top:Symbol) : for e in es do : -- cgit v1.2.3 From 07dd1e577a5f605388bc18c37802c8c9a00801a6 Mon Sep 17 00:00:00 2001 From: jackbackrack Date: Fri, 1 May 2015 23:16:00 -0700 Subject: add arsh refs --- src/main/stanza/passes.stanza | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/main/stanza/passes.stanza b/src/main/stanza/passes.stanza index 5f01f996..b14a96e3 100644 --- a/src/main/stanza/passes.stanza +++ b/src/main/stanza/passes.stanza @@ -1821,14 +1821,14 @@ defn flo-op-name (op:PrimOp) -> String : ;AS-UINT-S-OP : ;AS-SINT-U-OP : ;AS-SINT-S-OP : - SHIFT-LEFT-U-OP : "lsh" ;; todo: signed version - SHIFT-LEFT-S-OP : "lsh" ;; todo: signed version + SHIFT-LEFT-U-OP : "lsh" + SHIFT-LEFT-S-OP : "lsh" SHIFT-RIGHT-U-OP : "rsh" - SHIFT-RIGHT-S-OP : "rsh" - DYN-SHIFT-LEFT-U-OP : "lsh" ;; todo: signed version - DYN-SHIFT-LEFT-S-OP : "lsh" ;; todo: signed version - DYN-SHIFT-RIGHT-U-OP : "rsh" - DYN-SHIFT-RIGHT-S-OP : "rsh" + SHIFT-RIGHT-S-OP : "arsh" + DYN-SHIFT-LEFT-U-OP : "lsh" + DYN-SHIFT-LEFT-S-OP : "lsh" + DYN-SHIFT-RIGHT-U-OP : "rsh" + DYN-SHIFT-RIGHT-S-OP : "arsh" ;CONVERT-U-OP : ;CONVERT-S-OP : BIT-AND-OP : "and" -- cgit v1.2.3