From 3b388fc2dfc375b25dc2d263237d2c895e433a6e Mon Sep 17 00:00:00 2001 From: Luke Lau Date: Sun, 10 Mar 2019 01:36:05 +0000 Subject: [PATCH] Begin IR building --- Main.hs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Main.hs diff --git a/Main.hs b/Main.hs new file mode 100644 index 0000000..7a26601 --- /dev/null +++ b/Main.hs @@ -0,0 +1,28 @@ +{-# LANGUAGE OverloadedStrings #-} + +module Main where + +import qualified AST +import qualified Data.Text.Lazy.IO as Text +import LLVM.IRBuilder +import LLVM.AST.Constant +import LLVM.AST.Float +import LLVM.AST.Operand +import LLVM.AST.Type +import LLVM.Pretty + +main :: IO () +main = do + ast <- read <$> getContents + let mdl = buildModule "main" $ + function "expr" [] float $ \_ -> do + build ast + return () + Text.putStrLn (ppllvm mdl) + +build :: AST.Expr -> IRBuilderT ModuleBuilder Operand +build (AST.Num a) = pure $ ConstantOperand (Float (Single a)) +build (AST.Add a b) = do + va <- build a + vb <- build b + fadd va vb -- 2.30.2