Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell98 |
Synopsis
- newtype T n a = Cons (Repr n a)
- consPrim :: Repr n a ~ Value n ar => Value n ar -> T n a
- deconsPrim :: Repr n a ~ Value n ar => T n a -> Value n ar
- class C a => C a where
- type Repr n a
- cons :: Positive n => Vector n a -> T n a
- undef :: Positive n => T n a
- zero :: Positive n => T n a
- phi :: Positive n => BasicBlock -> T n a -> CodeGenFunction r (T n a)
- addPhi :: Positive n => BasicBlock -> T n a -> T n a -> CodeGenFunction r ()
- shuffle :: (Positive n, Positive m) => ConstValue (Vector m Word32) -> T n a -> T n a -> CodeGenFunction r (T m a)
- extract :: Positive n => Value Word32 -> T n a -> CodeGenFunction r (T a)
- insert :: Positive n => Value Word32 -> T a -> T n a -> CodeGenFunction r (T n a)
- type Value n a = Value (Vector n a)
- map :: (Positive n, C a, C b) => (T a -> CodeGenFunction r (T b)) -> T n a -> CodeGenFunction r (T n b)
- zip :: T n a -> T n b -> T n (a, b)
- zip3 :: T n a -> T n b -> T n c -> T n (a, b, c)
- unzip :: T n (a, b) -> (T n a, T n b)
- unzip3 :: T n (a, b, c) -> (T n a, T n b, T n c)
- replicate :: (Positive n, C a) => T a -> CodeGenFunction r (T n a)
- iterate :: (Positive n, C a) => (T a -> CodeGenFunction r (T a)) -> T a -> CodeGenFunction r (T n a)
- take :: (Positive n, Positive m, C a) => T n a -> CodeGenFunction r (T m a)
- takeRev :: (Positive n, Positive m, C a) => T n a -> CodeGenFunction r (T m a)
- sum :: (Positive n, Additive a) => T n a -> CodeGenFunction r (T a)
- dotProduct :: (Positive n, PseudoRing a) => T n a -> T n a -> CodeGenFunction r (T a)
- cumulate :: (Positive n, Additive a) => T a -> T n a -> CodeGenFunction r (T a, T n a)
- cumulate1 :: (Positive n, Additive a) => T n a -> CodeGenFunction r (T n a)
- lift1 :: (Repr n a -> Repr n b) -> T n a -> T n b
- modify :: (Positive n, C a) => Value Word32 -> (T a -> CodeGenFunction r (T a)) -> T n a -> CodeGenFunction r (T n a)
- assemble :: (Positive n, C a) => [T a] -> CodeGenFunction r (T n a)
- dissect :: (Positive n, C a) => T n a -> CodeGenFunction r [T a]
- dissectList :: (Positive n, C a) => T n a -> [CodeGenFunction r (T a)]
- assemble1 :: (Positive n, C a) => T [] (T a) -> CodeGenFunction r (T n a)
- dissect1 :: (Positive n, C a) => T n a -> CodeGenFunction r (T [] (T a))
- dissectList1 :: (Positive n, C a) => T n a -> T [] (CodeGenFunction r (T a))
- assembleFromVector :: (Positive n, C a) => Vector n (T a) -> CodeGenFunction r (T n a)
- reverse :: (Positive n, C a) => T n a -> CodeGenFunction r (T n a)
- rotateUp :: (Positive n, C a) => T n a -> CodeGenFunction r (T n a)
- rotateDown :: (Positive n, C a) => T n a -> CodeGenFunction r (T n a)
- shiftUp :: (Positive n, C a) => T a -> T n a -> CodeGenFunction r (T a, T n a)
- shiftDown :: (Positive n, C a) => T a -> T n a -> CodeGenFunction r (T a, T n a)
- shiftUpMultiZero :: (Positive n, C a) => Int -> T n a -> CodeGenFunction r (T n a)
- shiftDownMultiZero :: (Positive n, C a) => Int -> T n a -> CodeGenFunction r (T n a)
- shiftUpMultiUndef :: (Positive n, C a) => Int -> T n a -> CodeGenFunction r (T n a)
- shiftDownMultiUndef :: (Positive n, C a) => Int -> T n a -> CodeGenFunction r (T n a)
- undefPrimitive :: (Positive n, IsPrimitive al, Repr n a ~ Value n al) => T n a
- shufflePrimitive :: (Positive n, Positive m, IsPrimitive al, Repr a ~ Value al, Repr n a ~ Value n al, Repr m a ~ Value m al) => ConstValue (Vector m Word32) -> T n a -> T n a -> CodeGenFunction r (T m a)
- extractPrimitive :: (Positive n, IsPrimitive al, Repr a ~ Value al, Repr n a ~ Value n al) => Value Word32 -> T n a -> CodeGenFunction r (T a)
- insertPrimitive :: (Positive n, IsPrimitive al, Repr a ~ Value al, Repr n a ~ Value n al) => Value Word32 -> T a -> T n a -> CodeGenFunction r (T n a)
- shuffleMatchTraversable :: (Positive n, C a, Traversable f) => ConstValue (Vector n Word32) -> f (T n a) -> CodeGenFunction r (f (T n a))
- insertTraversable :: (Positive n, C a, Traversable f, Applicative f) => Value Word32 -> f (T a) -> f (T n a) -> CodeGenFunction r (f (T n a))
- extractTraversable :: (Positive n, C a, Traversable f) => Value Word32 -> f (T n a) -> CodeGenFunction r (f (T a))
- class (IntegerConstant a, C a) => IntegerConstant a where
- fromInteger' :: Positive n => Integer -> T n a
- class (RationalConstant a, IntegerConstant a) => RationalConstant a where
- fromRational' :: Positive n => Rational -> T n a
- class (Additive a, C a) => Additive a where
- class (PseudoRing a, Additive a) => PseudoRing a where
- class (Field a, PseudoRing a) => Field a where
- scale :: (Positive n, PseudoRing a) => T a -> T n a -> CodeGenFunction r (T n a)
- class (PseudoModule v, PseudoRing (Scalar v), Additive v) => PseudoModule v where
- scaleMulti :: Positive n => T n (Scalar v) -> T n v -> CodeGenFunction r (T n v)
- class (Real a, Additive a) => Real a where
- class (Fraction a, Real a) => Fraction a where
- truncate :: Positive n => T n a -> CodeGenFunction r (T n a)
- fraction :: Positive n => T n a -> CodeGenFunction r (T n a)
- class (Positive n, Repr n i ~ Value n ir, NativeInteger i ir, IsPrimitive ir, IsInteger ir) => NativeInteger n i ir
- class (Positive n, Repr n a ~ Value n ar, NativeFloating a ar, IsPrimitive ar, IsFloating ar) => NativeFloating n a ar
- fromIntegral :: (NativeInteger n i ir, NativeFloating n a ar) => T n i -> CodeGenFunction r (T n a)
- class (Algebraic a, Field a) => Algebraic a where
- sqrt :: Positive n => T n a -> CodeGenFunction r (T n a)
- class (Transcendental a, Algebraic a) => Transcendental a where
- class (FloatingComparison a, Comparison a) => FloatingComparison a where
- fcmp :: Positive n => FPPredicate -> T n a -> T n a -> CodeGenFunction r (T n Bool)
- class (Select a, C a) => Select a where
- class (Comparison a, Real a) => Comparison a where
- cmp :: Positive n => CmpPredicate -> T n a -> T n a -> CodeGenFunction r (T n Bool)
- class (Logic a, C a) => Logic a where
- class (BitShift a, C a) => BitShift a where
Documentation
Instances
class C a => C a where Source #
cons :: Positive n => Vector n a -> T n a Source #
undef :: Positive n => T n a Source #
zero :: Positive n => T n a Source #
phi :: Positive n => BasicBlock -> T n a -> CodeGenFunction r (T n a) Source #
addPhi :: Positive n => BasicBlock -> T n a -> T n a -> CodeGenFunction r () Source #
shuffle :: (Positive n, Positive m) => ConstValue (Vector m Word32) -> T n a -> T n a -> CodeGenFunction r (T m a) Source #
extract :: Positive n => Value Word32 -> T n a -> CodeGenFunction r (T a) Source #
insert :: Positive n => Value Word32 -> T a -> T n a -> CodeGenFunction r (T n a) Source #
Instances
map :: (Positive n, C a, C b) => (T a -> CodeGenFunction r (T b)) -> T n a -> CodeGenFunction r (T n b) Source #
iterate :: (Positive n, C a) => (T a -> CodeGenFunction r (T a)) -> T a -> CodeGenFunction r (T n a) Source #
dotProduct :: (Positive n, PseudoRing a) => T n a -> T n a -> CodeGenFunction r (T a) Source #
cumulate1 :: (Positive n, Additive a) => T n a -> CodeGenFunction r (T n a) Source #
Needs (log n) vector additions
modify :: (Positive n, C a) => Value Word32 -> (T a -> CodeGenFunction r (T a)) -> T n a -> CodeGenFunction r (T n a) Source #
dissectList :: (Positive n, C a) => T n a -> [CodeGenFunction r (T a)] Source #
dissectList1 :: (Positive n, C a) => T n a -> T [] (CodeGenFunction r (T a)) Source #
assembleFromVector :: (Positive n, C a) => Vector n (T a) -> CodeGenFunction r (T n a) Source #
rotateUp :: (Positive n, C a) => T n a -> CodeGenFunction r (T n a) Source #
Rotate one element towards the higher elements.
I don't want to call it rotateLeft or rotateRight, because there is no prefered layout for the vector elements. In Intel's instruction manual vector elements are indexed like the bits, that is from right to left. However, when working with Haskell list and enumeration syntax, the start index is left.
rotateDown :: (Positive n, C a) => T n a -> CodeGenFunction r (T n a) Source #
shiftUpMultiZero :: (Positive n, C a) => Int -> T n a -> CodeGenFunction r (T n a) Source #
shiftDownMultiZero :: (Positive n, C a) => Int -> T n a -> CodeGenFunction r (T n a) Source #
shiftUpMultiUndef :: (Positive n, C a) => Int -> T n a -> CodeGenFunction r (T n a) Source #
shiftDownMultiUndef :: (Positive n, C a) => Int -> T n a -> CodeGenFunction r (T n a) Source #
shufflePrimitive :: (Positive n, Positive m, IsPrimitive al, Repr a ~ Value al, Repr n a ~ Value n al, Repr m a ~ Value m al) => ConstValue (Vector m Word32) -> T n a -> T n a -> CodeGenFunction r (T m a) Source #
extractPrimitive :: (Positive n, IsPrimitive al, Repr a ~ Value al, Repr n a ~ Value n al) => Value Word32 -> T n a -> CodeGenFunction r (T a) Source #
insertPrimitive :: (Positive n, IsPrimitive al, Repr a ~ Value al, Repr n a ~ Value n al) => Value Word32 -> T a -> T n a -> CodeGenFunction r (T n a) Source #
shuffleMatchTraversable :: (Positive n, C a, Traversable f) => ConstValue (Vector n Word32) -> f (T n a) -> CodeGenFunction r (f (T n a)) Source #
insertTraversable :: (Positive n, C a, Traversable f, Applicative f) => Value Word32 -> f (T a) -> f (T n a) -> CodeGenFunction r (f (T n a)) Source #
extractTraversable :: (Positive n, C a, Traversable f) => Value Word32 -> f (T n a) -> CodeGenFunction r (f (T a)) Source #
class (IntegerConstant a, C a) => IntegerConstant a where Source #
Instances
IntegerConstant Int16 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
IntegerConstant Int32 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
IntegerConstant Int64 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
IntegerConstant Int8 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
IntegerConstant Word16 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
IntegerConstant Word32 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
IntegerConstant Word64 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
IntegerConstant Word8 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
IntegerConstant Double Source # | |
Defined in LLVM.Extra.Multi.Vector | |
IntegerConstant Float Source # | |
Defined in LLVM.Extra.Multi.Vector | |
IntegerConstant Int Source # | |
Defined in LLVM.Extra.Multi.Vector | |
IntegerConstant Word Source # | |
Defined in LLVM.Extra.Multi.Vector | |
(Flags flags, MultiVector a, IntegerConstant a) => IntegerConstant (Number flags a) Source # | |
Defined in LLVM.Extra.FastMath |
class (RationalConstant a, IntegerConstant a) => RationalConstant a where Source #
Instances
RationalConstant Double Source # | |
Defined in LLVM.Extra.Multi.Vector | |
RationalConstant Float Source # | |
Defined in LLVM.Extra.Multi.Vector | |
(Flags flags, MultiVector a, RationalConstant a) => RationalConstant (Number flags a) Source # | |
Defined in LLVM.Extra.FastMath |
class (Additive a, C a) => Additive a where Source #
add :: Positive n => T n a -> T n a -> CodeGenFunction r (T n a) Source #
sub :: Positive n => T n a -> T n a -> CodeGenFunction r (T n a) Source #
neg :: Positive n => T n a -> CodeGenFunction r (T n a) Source #
Instances
Additive Int16 Source # | |
Additive Int32 Source # | |
Additive Int64 Source # | |
Additive Int8 Source # | |
Additive Word16 Source # | |
Additive Word32 Source # | |
Additive Word64 Source # | |
Additive Word8 Source # | |
Additive Double Source # | |
Additive Float Source # | |
Additive Int Source # | |
Additive Word Source # | |
(Flags flags, MultiVector a, Additive a) => Additive (Number flags a) Source # | |
Defined in LLVM.Extra.FastMath add :: Positive n => T n (Number flags a) -> T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source # sub :: Positive n => T n (Number flags a) -> T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source # neg :: Positive n => T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source # |
class (PseudoRing a, Additive a) => PseudoRing a where Source #
Instances
PseudoRing Double Source # | |
PseudoRing Float Source # | |
(Flags flags, MultiVector a, PseudoRing a) => PseudoRing (Number flags a) Source # | |
class (Field a, PseudoRing a) => Field a where Source #
scale :: (Positive n, PseudoRing a) => T a -> T n a -> CodeGenFunction r (T n a) Source #
class (PseudoModule v, PseudoRing (Scalar v), Additive v) => PseudoModule v where Source #
scaleMulti :: Positive n => T n (Scalar v) -> T n v -> CodeGenFunction r (T n v) Source #
Instances
PseudoModule Double Source # | |
Defined in LLVM.Extra.Multi.Vector | |
PseudoModule Float Source # | |
Defined in LLVM.Extra.Multi.Vector |
class (Real a, Additive a) => Real a where Source #
min :: Positive n => T n a -> T n a -> CodeGenFunction r (T n a) Source #
max :: Positive n => T n a -> T n a -> CodeGenFunction r (T n a) Source #
abs :: Positive n => T n a -> CodeGenFunction r (T n a) Source #
signum :: Positive n => T n a -> CodeGenFunction r (T n a) Source #
Instances
class (Fraction a, Real a) => Fraction a where Source #
truncate :: Positive n => T n a -> CodeGenFunction r (T n a) Source #
fraction :: Positive n => T n a -> CodeGenFunction r (T n a) Source #
class (Positive n, Repr n i ~ Value n ir, NativeInteger i ir, IsPrimitive ir, IsInteger ir) => NativeInteger n i ir Source #
Instances
Positive n => NativeInteger n Int16 Int16 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Positive n => NativeInteger n Int32 Int32 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Positive n => NativeInteger n Int64 Int64 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Positive n => NativeInteger n Int8 Int8 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Positive n => NativeInteger n Word16 Word16 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Positive n => NativeInteger n Word32 Word32 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Positive n => NativeInteger n Word64 Word64 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Positive n => NativeInteger n Word8 Word8 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Positive n => NativeInteger n Int Int Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Positive n => NativeInteger n Word Word Source # | |
Defined in LLVM.Extra.Multi.Vector |
class (Positive n, Repr n a ~ Value n ar, NativeFloating a ar, IsPrimitive ar, IsFloating ar) => NativeFloating n a ar Source #
Instances
Positive n => NativeFloating n Double Double Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Positive n => NativeFloating n Float Float Source # | |
Defined in LLVM.Extra.Multi.Vector |
fromIntegral :: (NativeInteger n i ir, NativeFloating n a ar) => T n i -> CodeGenFunction r (T n a) Source #
class (Algebraic a, Field a) => Algebraic a where Source #
Instances
Algebraic Double Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Algebraic Float Source # | |
Defined in LLVM.Extra.Multi.Vector | |
(Flags flags, MultiVector a, Algebraic a) => Algebraic (Number flags a) Source # | |
Defined in LLVM.Extra.FastMath |
class (Transcendental a, Algebraic a) => Transcendental a where Source #
pi :: Positive n => CodeGenFunction r (T n a) Source #
sin :: Positive n => T n a -> CodeGenFunction r (T n a) Source #
cos :: Positive n => T n a -> CodeGenFunction r (T n a) Source #
exp :: Positive n => T n a -> CodeGenFunction r (T n a) Source #
log :: Positive n => T n a -> CodeGenFunction r (T n a) Source #
pow :: Positive n => T n a -> T n a -> CodeGenFunction r (T n a) Source #
Instances
class (FloatingComparison a, Comparison a) => FloatingComparison a where Source #
fcmp :: Positive n => FPPredicate -> T n a -> T n a -> CodeGenFunction r (T n Bool) Source #
Instances
FloatingComparison Float Source # | |
Defined in LLVM.Extra.Multi.Vector | |
(Flags flags, MultiVector a, FloatingComparison a) => FloatingComparison (Number flags a) Source # | |
Defined in LLVM.Extra.FastMath |
class (Select a, C a) => Select a where Source #
Instances
Select Int16 Source # | |
Select Int32 Source # | |
Select Int64 Source # | |
Select Int8 Source # | |
Select Word16 Source # | |
Select Word32 Source # | |
Select Word64 Source # | |
Select Word8 Source # | |
Select Bool Source # | |
Select Double Source # | |
Select Float Source # | |
Select Int Source # | |
Select Word Source # | |
(Flags flags, MultiVector a, Select a) => Select (Number flags a) Source # | |
(Select a, Select b) => Select (a, b) Source # | |
(Select a, Select b, Select c) => Select (a, b, c) Source # | |
class (Comparison a, Real a) => Comparison a where Source #
cmp :: Positive n => CmpPredicate -> T n a -> T n a -> CodeGenFunction r (T n Bool) Source #
Instances
Comparison Int16 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Comparison Int32 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Comparison Int64 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Comparison Int8 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Comparison Word16 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Comparison Word32 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Comparison Word64 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Comparison Word8 Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Comparison Double Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Comparison Float Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Comparison Int Source # | |
Defined in LLVM.Extra.Multi.Vector | |
Comparison Word Source # | |
Defined in LLVM.Extra.Multi.Vector | |
(Flags flags, MultiVector a, Comparison a) => Comparison (Number flags a) Source # | |
Defined in LLVM.Extra.FastMath |
class (Logic a, C a) => Logic a where Source #
and :: Positive n => T n a -> T n a -> CodeGenFunction r (T n a) Source #
or :: Positive n => T n a -> T n a -> CodeGenFunction r (T n a) Source #
xor :: Positive n => T n a -> T n a -> CodeGenFunction r (T n a) Source #
inv :: Positive n => T n a -> CodeGenFunction r (T n a) Source #
Instances
class (BitShift a, C a) => BitShift a where Source #
shl :: Positive n => T n a -> T n a -> CodeGenFunction r (T n a) Source #
shr :: Positive n => T n a -> T n a -> CodeGenFunction r (T n a) Source #