futhark-0.25.32: An optimising compiler for a functional, array-oriented language.

Safe Haskell | None
Language | GHC2021

Futhark.IR.SOACS

Contents

- Module re-exports

Description

A simple representation with SOACs and nested parallelism.

Synopsis

- data SOACS
- usesAD :: Prog SOACS -> Bool
- module Futhark.IR.Prop
- module Futhark.IR.Traversals
- module Futhark.IR.Pretty
- module Futhark.IR.Syntax
- module Futhark.IR.SOACS.SOAC

# Documentation

data SOACS Source #

The rep for the basic representation.

#### Instances

Instances details

Analyse SOACS Source # |
Instance details Defined in Futhark.Analysis.AccessPattern Methods analyseOp :: Op SOACS -> Context SOACS -> [VName] -> (Context SOACS, IndexTable SOACS)
BuilderOps SOACS Source # |
Instance details Defined in Futhark.IR.SOACS Methods mkExpDecB :: (MonadBuilder m, Rep m ~ SOACS) => Pat (LetDec SOACS) -> Exp SOACS -> m (ExpDec SOACS) Source # mkBodyB :: (MonadBuilder m, Rep m ~ SOACS) => Stms SOACS -> Result -> m (Body SOACS) Source # mkLetNamesB :: (MonadBuilder m, Rep m ~ SOACS) => [VName] -> Exp SOACS -> m (Stm SOACS) Source #
Buildable SOACS Source # |
Instance details Defined in Futhark.IR.SOACS Methods mkExpPat :: [Ident] -> Exp SOACS -> Pat (LetDec SOACS) Source # mkExpDec :: Pat (LetDec SOACS) -> Exp SOACS -> ExpDec SOACS Source # mkBody :: Stms SOACS -> Result -> Body SOACS Source # mkLetNames :: (MonadFreshNames m, HasScope SOACS m) => [VName] -> Exp SOACS -> m (Stm SOACS) Source #
PrettyRep SOACS Source # |
Instance details Defined in Futhark.IR.SOACS Methods ppExpDec :: ExpDec SOACS -> Exp SOACS -> Maybe (Doc a) Source #
ASTRep SOACS Source # |
Instance details Defined in Futhark.IR.SOACS Methods expTypesFromPat :: (HasScope SOACS m, Monad m) => Pat (LetDec SOACS) -> m [BranchType SOACS] Source #
RepTypes SOACS Source # |

Instance details

Defined in Futhark.IR.SOACS

Associated Types

type LetDec SOACS |
Instance details Defined in Futhark.IR.SOACS type LetDec SOACS = Type
type ExpDec SOACS |
Instance details Defined in Futhark.IR.SOACS type ExpDec SOACS = ()
type BodyDec SOACS |
Instance details Defined in Futhark.IR.SOACS type BodyDec SOACS = ()
type FParamInfo SOACS |
Instance details Defined in Futhark.IR.SOACS type FParamInfo SOACS = DeclType
type LParamInfo SOACS |
Instance details Defined in Futhark.IR.SOACS type LParamInfo SOACS = Type
type RetType SOACS |
Instance details Defined in Futhark.IR.SOACS type RetType SOACS = DeclExtType
type BranchType SOACS |
Instance details Defined in Futhark.IR.SOACS type BranchType SOACS = ExtType
type OpC SOACS |
Instance details Defined in Futhark.IR.SOACS type OpC SOACS = SOAC

Checkable SOACS Source # |

Instance details

Defined in Futhark.IR.SOACS

Methods

checkExpDec :: ExpDec SOACS -> TypeM SOACS () Source #

checkBodyDec :: BodyDec SOACS -> TypeM SOACS () Source #

checkFParamDec :: VName -> FParamInfo SOACS -> TypeM SOACS () Source #

checkLParamDec :: VName -> LParamInfo SOACS -> TypeM SOACS () Source #

checkLetBoundDec :: VName -> LetDec SOACS -> TypeM SOACS () Source #

checkRetType :: [RetType SOACS] -> TypeM SOACS () Source #

matchPat :: Pat (LetDec (Aliases SOACS)) -> Exp (Aliases SOACS) -> TypeM SOACS () Source #

primFParam :: VName -> PrimType -> TypeM SOACS (FParam (Aliases SOACS)) Source #

matchReturnType :: [RetType SOACS] -> Result -> TypeM SOACS () Source #

matchBranchType :: [BranchType SOACS] -> Body (Aliases SOACS) -> TypeM SOACS () Source #

matchLoopResult :: [FParam (Aliases SOACS)] -> Result -> TypeM SOACS () Source #

checkOp :: Op (Aliases SOACS) -> TypeM SOACS () Source #

HasScope SOACS ADM Source # |
Instance details Defined in Futhark.AD.Rev.Monad Methods lookupType :: VName -> ADM Type Source # lookupInfo :: VName -> ADM (NameInfo SOACS) Source # askScope :: ADM (Scope SOACS) Source # asksScope :: (Scope SOACS -> a) -> ADM a Source #
HasScope SOACS InternaliseM Source # |
Instance details Defined in Futhark.Internalise.Monad Methods lookupType :: VName -> InternaliseM Type Source # lookupInfo :: VName -> InternaliseM (NameInfo SOACS) Source # askScope :: InternaliseM (Scope SOACS) Source # asksScope :: (Scope SOACS -> a) -> InternaliseM a Source #
LocalScope SOACS ADM Source # |
Instance details Defined in Futhark.AD.Rev.Monad Methods localScope :: Scope SOACS -> ADM a -> ADM a Source #
LocalScope SOACS InternaliseM Source # |
Instance details Defined in Futhark.Internalise.Monad Methods localScope :: Scope SOACS -> InternaliseM a -> InternaliseM a Source #
HasScope SOACS (ImpM rep r op) Source # |
Instance details Defined in Futhark.CodeGen.ImpGen Methods lookupType :: VName -> ImpM rep r op Type Source # lookupInfo :: VName -> ImpM rep r op (NameInfo SOACS) Source # askScope :: ImpM rep r op (Scope SOACS) Source # asksScope :: (Scope SOACS -> a) -> ImpM rep r op a Source #
BuilderOps (Wise SOACS) Source # |

Instance details

Defined in Futhark.IR.SOACS.Simplify

Methods

mkExpDecB :: (MonadBuilder m, Rep m ~ Wise SOACS) => Pat (LetDec (Wise SOACS)) -> Exp (Wise SOACS) -> m (ExpDec (Wise SOACS)) Source #

mkBodyB :: (MonadBuilder m, Rep m ~ Wise SOACS) => Stms (Wise SOACS) -> Result -> m (Body (Wise SOACS)) Source #

mkLetNamesB :: (MonadBuilder m, Rep m ~ Wise SOACS) => [VName] -> Exp (Wise SOACS) -> m (Stm (Wise SOACS)) Source #

HasSOAC (Wise SOACS) Source # |
Instance details Defined in Futhark.IR.SOACS.Simplify Methods asSOAC :: Op (Wise SOACS) -> Maybe (SOAC (Wise SOACS)) Source # soacOp :: SOAC (Wise SOACS) -> Op (Wise SOACS) Source #
TraverseOpStms (Wise SOACS) Source # |
Instance details Defined in Futhark.IR.SOACS.Simplify Methods traverseOpStms :: Monad m => OpStmsTraverser m (Op (Wise SOACS)) (Wise SOACS) Source #
type BodyDec SOACS Source # |
Instance details Defined in Futhark.IR.SOACS type BodyDec SOACS = ()
type BranchType SOACS Source # |
Instance details Defined in Futhark.IR.SOACS type BranchType SOACS = ExtType
type ExpDec SOACS Source # |
Instance details Defined in Futhark.IR.SOACS type ExpDec SOACS = ()
type FParamInfo SOACS Source # |
Instance details Defined in Futhark.IR.SOACS type FParamInfo SOACS = DeclType
type LParamInfo SOACS Source # |
Instance details Defined in Futhark.IR.SOACS type LParamInfo SOACS = Type
type LetDec SOACS Source # |
Instance details Defined in Futhark.IR.SOACS type LetDec SOACS = Type
type OpC SOACS Source # |
Instance details Defined in Futhark.IR.SOACS type OpC SOACS = SOAC
type RetType SOACS Source # |
Instance details Defined in Futhark.IR.SOACS type RetType SOACS = DeclExtType

usesAD :: Prog SOACS -> Bool Source #

# Module re-exports

module Futhark.IR.Prop

module Futhark.IR.Traversals

module Futhark.IR.Pretty

module Futhark.IR.Syntax

module Futhark.IR.SOACS.SOAC