accelerate-llvm-1.2.0.0: src/LLVM/AST/Type/Global.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE TypeOperators #-}
{-# OPTIONS_HADDOCK hide #-}
-- |
-- Module : LLVM.AST.Type.Global
-- Copyright : [2015..2017] Trevor L. McDonell
-- License : BSD3
--
-- Maintainer : Trevor L. McDonell <tmcdonell@cse.unsw.edu.au>
-- Stability : experimental
-- Portability : non-portable (GHC extensions)
--
module LLVM.AST.Type.Global
where
import LLVM.AST.Type.Name
import LLVM.AST.Type.Operand
import LLVM.AST.Type.Representation
-- | Parameters for functions
--
data Parameter a where
Parameter :: PrimType a -> Name a -> Parameter a
-- | Attributes for the function call instruction
--
data FunctionAttribute
= NoReturn
| NoUnwind
| ReadOnly
| ReadNone
| AlwaysInline
| NoDuplicate
| Convergent
-- | Attribute groups are groups of attributes that are referenced by
-- objects within the IR. To use an attribute group, an object must
-- reference its GroupID.
--
data GroupID = GroupID !Word
-- | A global function definition.
--
data GlobalFunction args t where
Body :: Type r -> Label -> GlobalFunction '[] r
Lam :: PrimType a -> Operand a -> GlobalFunction args t -> GlobalFunction (a ': args) t
data HList (l :: [*]) where
HNil :: HList '[]
HCons :: e -> HList l -> HList (e ': l)