synthesizer-llvm-1.1.0.1: src/Synthesizer/LLVM/Private.hs
module Synthesizer.LLVM.Private where
import qualified LLVM.Extra.MaybeContinuation as MaybeCont
import qualified LLVM.Extra.Multi.Value as MultiValue
import qualified LLVM.Core as LLVM
import qualified Type.Data.Num.Decimal as TypeNum
import Control.Applicative (liftA2)
unbool :: MultiValue.T Bool -> LLVM.Value Bool
unbool (MultiValue.Cons b) = b
noLocalPtr :: f -> (LLVM.Value (LLVM.Ptr (LLVM.Struct ())) -> f)
noLocalPtr = const
getPairPtrs ::
(LLVM.IsSized a, LLVM.IsSized b) =>
LLVM.Value (LLVM.Ptr (LLVM.Struct (a, (b, ())))) ->
MaybeCont.T r c (LLVM.Value (LLVM.Ptr a), LLVM.Value (LLVM.Ptr b))
getPairPtrs ptr =
MaybeCont.lift $
liftA2 (,)
(LLVM.getElementPtr0 ptr (TypeNum.d0, ()))
(LLVM.getElementPtr0 ptr (TypeNum.d1, ()))