llvm-extra 0.11 → 0.12
raw patch · 5 files changed
+25/−31 lines, 5 filesdep ~llvm-tf
Dependency ranges changed: llvm-tf
Files
- llvm-extra.cabal +3/−3
- private/LLVM/Extra/ArithmeticPrivate.hs +2/−0
- src/LLVM/Extra/Arithmetic.hs +6/−12
- src/LLVM/Extra/Memory.hs +1/−1
- src/LLVM/Extra/ScalarOrVector.hs +13/−15
llvm-extra.cabal view
@@ -1,6 +1,6 @@ Cabal-Version: 2.2 Name: llvm-extra-Version: 0.11+Version: 0.12 License: BSD-3-Clause License-File: LICENSE Author: Henning Thielemann <haskell@henning-thielemann.de>@@ -61,7 +61,7 @@ default: False Source-Repository this- Tag: 0.11+ Tag: 0.12 Type: darcs Location: http://code.haskell.org/~thielema/llvm-extra/ @@ -72,7 +72,7 @@ Library Build-Depends: private,- llvm-tf >=12.1 && <13.0,+ llvm-tf >=12.1 && <17.1, tfp >=1.0 && <1.1, non-empty >=0.2.1 && <0.4, fixed-length >=0.2.1 && <0.3,
private/LLVM/Extra/ArithmeticPrivate.hs view
@@ -39,12 +39,14 @@ dec x = sub x (valueOf 1) advanceArrayElementPtr ::+ (LLVM.IsType a) => Value (LLVM.Ptr a) -> CodeGenFunction r (Value (LLVM.Ptr a)) advanceArrayElementPtr p = getElementPtr p (valueOf 1 :: Value Word32, ()) decreaseArrayElementPtr ::+ (LLVM.IsType a) => Value (LLVM.Ptr a) -> CodeGenFunction r (Value (LLVM.Ptr a)) decreaseArrayElementPtr p =
src/LLVM/Extra/Arithmetic.hs view
@@ -71,11 +71,11 @@ sub = LLVM.sub neg = LLVM.neg -instance (IsArithmetic a) => Additive (ConstValue a) where+instance (IsInteger a) => Additive (ConstValue a) where zero = LLVM.zero- add = LLVM.add- sub = LLVM.sub- neg = sub LLVM.zero+ add = LLVM.iadd+ sub = LLVM.isub+ neg = LLVM.isub LLVM.zero instance (Additive a, Additive b) => Additive (a,b) where zero = (zero, zero)@@ -102,8 +102,8 @@ instance (IsArithmetic v) => PseudoRing (Value v) where mul = LLVM.mul -instance (IsArithmetic v) => PseudoRing (ConstValue v) where- mul = LLVM.mul+instance (IsInteger v) => PseudoRing (ConstValue v) where+ mul = LLVM.imul type family Scalar vector@@ -116,10 +116,7 @@ instance (SoV.PseudoModule v) => PseudoModule (Value v) where scale = SoV.scale -instance (SoV.PseudoModule v) => PseudoModule (ConstValue v) where- scale = SoV.scaleConst - class IntegerConstant a where fromInteger' :: Integer -> a @@ -159,9 +156,6 @@ fdiv :: a -> a -> CodeGenFunction r a instance (LLVM.IsFloating v) => Field (Value v) where- fdiv = LLVM.fdiv--instance (LLVM.IsFloating v) => Field (ConstValue v) where fdiv = LLVM.fdiv
src/LLVM/Extra/Memory.hs view
@@ -117,7 +117,7 @@ } element ::- (C x,+ (C x, IsType o, LLVM.GetValue o n, LLVM.ValueType o n ~ Struct x, LLVM.GetElementPtr o (n, ()), LLVM.ElementPtrType o (n, ()) ~ Struct x) => (v -> x) -> n -> Element r o v x
src/LLVM/Extra/ScalarOrVector.hs view
@@ -26,7 +26,7 @@ replicateOf, Real (min, max, abs, signum), Saturated(addSat, subSat),- PseudoModule (scale, scaleConst),+ PseudoModule (scale), IntegerConstant(constFromInteger), RationalConstant(constFromRational), TranscendentalConstant(constPi),@@ -307,24 +307,22 @@ (LLVM.IsArithmetic (Scalar v), LLVM.IsArithmetic v) => PseudoModule v where scale :: (a ~ Scalar v) => Value a -> Value v -> CodeGenFunction r (Value v)- scaleConst :: (a ~ Scalar v) => ConstValue a -> ConstValue v -> CodeGenFunction r (ConstValue v) -instance PseudoModule Word where scale = LLVM.mul; scaleConst = LLVM.mul-instance PseudoModule Word8 where scale = LLVM.mul; scaleConst = LLVM.mul-instance PseudoModule Word16 where scale = LLVM.mul; scaleConst = LLVM.mul-instance PseudoModule Word32 where scale = LLVM.mul; scaleConst = LLVM.mul-instance PseudoModule Word64 where scale = LLVM.mul; scaleConst = LLVM.mul-instance PseudoModule Int where scale = LLVM.mul; scaleConst = LLVM.mul-instance PseudoModule Int8 where scale = LLVM.mul; scaleConst = LLVM.mul-instance PseudoModule Int16 where scale = LLVM.mul; scaleConst = LLVM.mul-instance PseudoModule Int32 where scale = LLVM.mul; scaleConst = LLVM.mul-instance PseudoModule Int64 where scale = LLVM.mul; scaleConst = LLVM.mul-instance PseudoModule Float where scale = LLVM.mul; scaleConst = LLVM.mul-instance PseudoModule Double where scale = LLVM.mul; scaleConst = LLVM.mul+instance PseudoModule Word where scale = LLVM.mul+instance PseudoModule Word8 where scale = LLVM.mul+instance PseudoModule Word16 where scale = LLVM.mul+instance PseudoModule Word32 where scale = LLVM.mul+instance PseudoModule Word64 where scale = LLVM.mul+instance PseudoModule Int where scale = LLVM.mul+instance PseudoModule Int8 where scale = LLVM.mul+instance PseudoModule Int16 where scale = LLVM.mul+instance PseudoModule Int32 where scale = LLVM.mul+instance PseudoModule Int64 where scale = LLVM.mul+instance PseudoModule Float where scale = LLVM.mul+instance PseudoModule Double where scale = LLVM.mul instance (LLVM.IsArithmetic a, LLVM.IsPrimitive a, TypeNum.Positive n) => PseudoModule (Vector n a) where scale a v = flip A.mul v =<< replicate a- scaleConst a v = LLVM.mul (replicateConst a `asTypeOf` v) v