llvm-0.0.2: LLVM/Core/Instruction.hs
module LLVM.Core.Instruction
(
IntPredicate(..)
, RealPredicate(..)
, fromIP
, fromRP
) where
import Foreign.C.Types (CInt)
data IntPredicate =
IntEQ -- ^ equal
| IntNE -- ^ not equal
| IntUGT -- ^ unsigned greater than
| IntUGE -- ^ unsigned greater or equal
| IntULT -- ^ unsigned less than
| IntULE -- ^ unsigned less or equal
| IntSGT -- ^ signed greater than
| IntSGE -- ^ signed greater or equal
| IntSLT -- ^ signed less than
| IntSLE -- ^ signed less or equal
deriving (Eq, Ord, Enum, Show)
fromIP :: IntPredicate -> CInt
fromIP ip = fromIntegral (fromEnum ip + 32)
data RealPredicate =
RealFalse -- ^ Always false (always folded)
| RealOEQ -- ^ True if ordered and equal
| RealOGT -- ^ True if ordered and greater than
| RealOGE -- ^ True if ordered and greater than or equal
| RealOLT -- ^ True if ordered and less than
| RealOLE -- ^ True if ordered and less than or equal
| RealONE -- ^ True if ordered and operands are unequal
| RealORD -- ^ True if ordered (no nans)
| RealUNO -- ^ True if unordered: isnan(X) | isnan(Y)
| RealUEQ -- ^ True if unordered or equal
| RealUGT -- ^ True if unordered or greater than
| RealUGE -- ^ True if unordered, greater than, or equal
| RealULT -- ^ True if unordered or less than
| RealULE -- ^ True if unordered, less than, or equal
| RealUNE -- ^ True if unordered or not equal
| RealT -- ^ Always true (always folded)
deriving (Eq, Ord, Enum, Show)
fromRP :: RealPredicate -> CInt
fromRP = fromIntegral . fromEnum