mirror of https://github.com/zachjs/sv2v.git
add simplification assumption for reversed sized ranges
This commit is contained in:
parent
dd951740e7
commit
eda9a34ad5
|
|
@ -193,6 +193,7 @@ rangeSizeHiLo (hi, lo) =
|
||||||
-- range; [hi:lo] chooses the first expression
|
-- range; [hi:lo] chooses the first expression
|
||||||
endianCondExpr :: Range -> Expr -> Expr -> Expr
|
endianCondExpr :: Range -> Expr -> Expr -> Expr
|
||||||
endianCondExpr SizedRange{} e _ = e
|
endianCondExpr SizedRange{} e _ = e
|
||||||
|
endianCondExpr RevSzRange{} _ e = e
|
||||||
endianCondExpr r e1 e2 = simplify $ Mux (uncurry (BinOp Ge) r) e1 e2
|
endianCondExpr r e1 e2 = simplify $ Mux (uncurry (BinOp Ge) r) e1 e2
|
||||||
|
|
||||||
-- chooses one or the other range based on the endianness of the given range,
|
-- chooses one or the other range based on the endianness of the given range,
|
||||||
|
|
@ -218,3 +219,7 @@ dimensionsSize ranges =
|
||||||
-- designs, we can safely assume that E >= 1, allowing for more succinct output
|
-- designs, we can safely assume that E >= 1, allowing for more succinct output
|
||||||
pattern SizedRange :: Expr -> Range
|
pattern SizedRange :: Expr -> Range
|
||||||
pattern SizedRange expr = (BinOp Sub expr (RawNum 1), RawNum 0)
|
pattern SizedRange expr = (BinOp Sub expr (RawNum 1), RawNum 0)
|
||||||
|
|
||||||
|
-- similar to the above pattern, we assume E >= 1 for any range like [0:E-1]
|
||||||
|
pattern RevSzRange :: Expr -> Range
|
||||||
|
pattern RevSzRange expr = (RawNum 0, BinOp Sub expr (RawNum 1))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue