module LLVM.IRBuilder.Constant where
import           Data.Word
import           LLVM.Prelude
import           LLVM.AST             hiding (args, dests)
import           LLVM.AST.Typed

import           LLVM.AST.Constant
import           LLVM.AST.Float

int64 :: Integer -> Operand
int64 :: Integer -> Operand
int64 = Constant -> Operand
ConstantOperand (Constant -> Operand)
-> (Integer -> Constant) -> Integer -> Operand
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word32 -> Integer -> Constant
Int 64
int32 :: Integer -> Operand
int32 :: Integer -> Operand
int32 = Constant -> Operand
ConstantOperand (Constant -> Operand)
-> (Integer -> Constant) -> Integer -> Operand
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word32 -> Integer -> Constant
Int 32
int8 :: Integer -> Operand
int8 :: Integer -> Operand
int8  = Constant -> Operand
ConstantOperand (Constant -> Operand)
-> (Integer -> Constant) -> Integer -> Operand
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word32 -> Integer -> Constant
Int 8
bit :: Integer -> Operand
bit :: Integer -> Operand
bit   = Constant -> Operand
ConstantOperand (Constant -> Operand)
-> (Integer -> Constant) -> Integer -> Operand
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word32 -> Integer -> Constant
Int 1

double :: Double -> Operand
double :: Double -> Operand
double = Constant -> Operand
ConstantOperand (Constant -> Operand) -> (Double -> Constant) -> Double -> Operand
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SomeFloat -> Constant
Float (SomeFloat -> Constant)
-> (Double -> SomeFloat) -> Double -> Constant
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Double -> SomeFloat
Double

single :: Float -> Operand
single :: Float -> Operand
single = Constant -> Operand
ConstantOperand (Constant -> Operand) -> (Float -> Constant) -> Float -> Operand
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SomeFloat -> Constant
Float (SomeFloat -> Constant)
-> (Float -> SomeFloat) -> Float -> Constant
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Float -> SomeFloat
Single

half :: Word16 -> Operand
half :: Word16 -> Operand
half = Constant -> Operand
ConstantOperand (Constant -> Operand) -> (Word16 -> Constant) -> Word16 -> Operand
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SomeFloat -> Constant
Float (SomeFloat -> Constant)
-> (Word16 -> SomeFloat) -> Word16 -> Constant
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word16 -> SomeFloat
Half

struct :: Maybe Name -> Bool -> [Constant] -> Operand
struct :: Maybe Name -> Bool -> [Constant] -> Operand
struct nm :: Maybe Name
nm packing :: Bool
packing members :: [Constant]
members = Constant -> Operand
ConstantOperand (Constant -> Operand) -> Constant -> Operand
forall a b. (a -> b) -> a -> b
$ Maybe Name -> Bool -> [Constant] -> Constant
Struct Maybe Name
nm Bool
packing [Constant]
members

array :: [Constant] -> Operand
array :: [Constant] -> Operand
array members :: [Constant]
members = Constant -> Operand
ConstantOperand (Constant -> Operand) -> Constant -> Operand
forall a b. (a -> b) -> a -> b
$ Type -> [Constant] -> Constant
Array (Constant -> Type
forall a. Typed a => a -> Type
typeOf (Constant -> Type) -> Constant -> Type
forall a b. (a -> b) -> a -> b
$ [Constant] -> Constant
forall a. [a] -> a
head [Constant]
members) [Constant]
members