Really revert all of the recent rotating changes.
[matthijs/master-project/cλash.git] / clash / CLasH / VHDL / Generate.hs
index 191ae9cf5a6e9242b54d6bbcec17047ac3c3bbfb..c56bdbe462e1e085354b9042e9d0f48fd83a3300 100644 (file)
@@ -301,7 +301,7 @@ mkConcSm (bndr, expr@(CoreSyn.Case (CoreSyn.Var scrut) _ _ alts)) = do
       let enums = [AST.PrimLit "'1'", AST.PrimLit "'0'"]
       return (enums, scrut_expr)
     (BuiltinType "Bool") -> do
-      let enums = [AST.PrimLit "true", AST.PrimLit "false"]
+      let enums = [AST.PrimLit "false", AST.PrimLit "true"]
       return (enums, scrut_expr)
     _ -> error $ "\nSelector case on weird scrutinee: " ++ pprString scrut ++ " scrutinee type: " ++ pprString (Id.idType scrut)
   -- Omit first condition, which is the default. Look up each altcon in
@@ -496,7 +496,7 @@ genFromInteger' (Left res) f args = do
     "Unsigned" -> MonadState.lift tsType $ tfp_to_int (sized_word_len_ty ty)
     "Index" -> do
       bound <- MonadState.lift tsType $ tfp_to_int (ranged_word_bound_ty ty)
-      return $ floor (logBase 2 (fromInteger (toInteger (bound)))) + 1
+      return $ (ceiling (logBase 2 (fromInteger (toInteger (bound)))))
   let fname = case name of "Signed" -> toSignedId ; "Unsigned" -> toUnsignedId ; "Index" -> toUnsignedId
   case args of
     [integer] -> do -- The type and dictionary arguments are removed by genApplication