futhark-0.21.12: An optimising compiler for a functional, array-oriented language.
Safe HaskellNone
LanguageHaskell2010

Futhark.IR.Prop.TypeOf

Description

This module provides facilities for obtaining the types of various Futhark constructs. Typically, you will need to execute these in a context where type information is available as a Scope; usually by using a monad that is an instance of HasScope. The information is returned as a list of ExtType values - one for each of the values the Futhark construct returns. Some constructs (such as subexpressions) can produce only a single value, and their typing functions hence do not return a list.

Some representations may have more specialised facilities enabling even more information - for example, Futhark.IR.Mem exposes functionality for also obtaining information about the storage location of results.

Synopsis

Documentation

expExtType :: (HasScope rep m, TypedOp (Op rep)) => Exp rep -> m [ExtType] Source #

The type of an expression.

expExtTypeSize :: (RepTypes rep, TypedOp (Op rep)) => Exp rep -> Int Source #

The number of values returned by an expression.

subExpType :: HasScope t m => SubExp -> m Type Source #

The type of a subexpression.

subExpResType :: HasScope t m => SubExpRes -> m Type Source #

Type type of a SubExpRes - not that this might refer to names bound in the body containing the result.

basicOpType :: HasScope rep m => BasicOp -> m [Type] Source #

The type of a primitive operation.

mapType :: SubExp -> Lambda rep -> [Type] Source #

mapType f arrts wraps each element in the return type of f in an array with size equal to the outermost dimension of the first element of arrts.

Return type

Type environment

Extensibility

class TypedOp op where Source #

Any operation must define an instance of this class, which describes the type of the operation (at the value level).

Methods

opType :: HasScope t m => op -> m [ExtType] Source #

Instances

Instances details
TypedOp () Source # 
Instance details

Defined in Futhark.IR.Prop.TypeOf

Methods

opType :: HasScope t m => () -> m [ExtType] Source #

TypedOp SizeOp Source # 
Instance details

Defined in Futhark.IR.GPU.Op

Methods

opType :: HasScope t m => SizeOp -> m [ExtType] Source #

ASTRep rep => TypedOp (SOAC rep) Source # 
Instance details

Defined in Futhark.IR.SOACS.SOAC

Methods

opType :: HasScope t m => SOAC rep -> m [ExtType] Source #

TypedOp inner => TypedOp (MemOp inner) Source # 
Instance details

Defined in Futhark.IR.Mem

Methods

opType :: HasScope t m => MemOp inner -> m [ExtType] Source #

TypedOp (SegOp lvl rep) Source # 
Instance details

Defined in Futhark.IR.SegOp

Methods

opType :: HasScope t m => SegOp lvl rep -> m [ExtType] Source #

TypedOp op => TypedOp (MCOp rep op) Source # 
Instance details

Defined in Futhark.IR.MC.Op

Methods

opType :: HasScope t m => MCOp rep op -> m [ExtType] Source #

TypedOp op => TypedOp (HostOp rep op) Source # 
Instance details

Defined in Futhark.IR.GPU.Op

Methods

opType :: HasScope t m => HostOp rep op -> m [ExtType] Source #