module Data.Array.Knead.Code where
import qualified Data.Array.Knead.Shape as Shape
import qualified LLVM.Extra.Multi.Value as MultiValue
import qualified LLVM.Extra.Storable as Storable
import qualified LLVM.Core as LLVM
import Foreign.Ptr (Ptr)
import Prelude2010
import Prelude ()
getElementPtr ::
(Shape.C sh, Shape.Index sh ~ ix, Storable.C a) =>
MultiValue.T sh -> LLVM.Value (Ptr a) ->
MultiValue.T ix ->
LLVM.CodeGenFunction r (LLVM.Value (Ptr a))
getElementPtr sh ptr ix =
flip Storable.advancePtr ptr =<< LLVM.bitcast =<< Shape.offset sh ix