hLLVM-0.5.0.0: src/Llvm/Data/Shared/AtomicEntity.hs
module Llvm.Data.Shared.AtomicEntity where
import qualified Data.Map as M
import Data.Word(Word32)
-- | Double Quoted String
data DqString = DqString String deriving (Eq, Ord, Show)
data IcmpOp = IcmpEq | IcmpNe | IcmpUgt | IcmpUge | IcmpUlt
| IcmpUle | IcmpSgt | IcmpSge | IcmpSlt | IcmpSle
deriving (Eq,Ord,Show)
icmpOpMap :: M.Map IcmpOp String
icmpOpMap = M.fromList [(IcmpEq, "eq"), (IcmpNe, "ne")
,(IcmpUgt, "ugt"),(IcmpUge, "uge")
,(IcmpUlt, "ult"),(IcmpUle, "ule")
,(IcmpSgt, "sgt"), (IcmpSge, "sge")
,(IcmpSlt, "slt"),(IcmpSle, "sle")
]
data FcmpOp = FcmpTrue | FcmpFalse
| FcmpOeq | FcmpOgt | FcmpOge
| FcmpOlt | FcmpOle | FcmpOne | FcmpOrd
| FcmpUeq | FcmpUgt | FcmpUge | FcmpUlt
| FcmpUle | FcmpUne | FcmpUno
deriving (Eq,Ord,Show)
fcmpOpMap :: M.Map FcmpOp String
fcmpOpMap = M.fromList [(FcmpTrue, "true"), (FcmpFalse, "false")
,(FcmpOeq, "oeq"), (FcmpOgt, "ogt"), (FcmpOge, "oge")
,(FcmpOlt, "olt"), (FcmpOle, "ole"), (FcmpOne, "one"), (FcmpOrd, "ord")
,(FcmpUeq, "ueq"), (FcmpUgt, "ugt"), (FcmpUge, "uge")
,(FcmpUlt, "ult"), (FcmpUle, "ule"), (FcmpUne, "une"), (FcmpUno, "uno")
]
-- | Linkage Types <http://llvm.org/releases/3.5.0/docs/LangRef.html#linkage-types>
data Linkage = LinkagePrivate
| LinkageInternal
| LinkageAvailableExternally
| LinkageLinkonce
| LinkageCommon
| LinkageWeak
| LinkageAppending
| LinkageExternWeak
| LinkageLinkonceOdr
| LinkageWeakOdr
| LinkageExternal
deriving (Eq,Ord,Show)
-- | Calling Conventions <http://llvm.org/releases/3.5.0/docs/LangRef.html#calling-conventions>
data CallConv = Ccc
| CcFast
| CcCold
| CcGhc
| CcHiPe
| Cc String
| CcWebkit_Js
| CcAnyReg
| CcPreserveMost
| CcPreserveAll
| CcFirstTarget
| CcX86_StdCall
| CcX86_FastCall
| CcArm_Apcs
| CcArm_Aapcs
| CcArm_Aapcs_Vfp
| CcMsp430_Intr
| CcX86_ThisCall
| CcPtx_Kernel
| CcPtx_Device
| CcSpir_Func
| CcSpir_Kernel
| CcIntel_Ocl_Bi
| CcX86_64_SysV
| CcX86_64_Win64
| CcX86_VectorCall
deriving (Eq,Ord,Show)
-- | Visibility Styles <http://llvm.org/releases/3.5.0/docs/LangRef.html#visibility-styles>
data Visibility = VisDefault | VisHidden | VisProtected
deriving (Eq,Ord,Show)
-- | DLL Storage Classes <http://llvm.org/releases/3.5.0/docs/LangRef.html#dll-storage-classes>
data DllStorageClass = DscImport
| DscExport deriving (Eq, Ord, Show)
-- | Thread Local Storage Models <http://llvm.org/releases/3.5.0/docs/LangRef.html#thread-local-storage-models>
data ThreadLocalStorage = TlsLocalDynamic
| TlsInitialExec
| TlsLocalExec
| TlsNone
deriving (Eq, Ord, Show)
-- | Parameter Attributes <http://llvm.org/releases/3.5.0/docs/LangRef.html#parameter-attributes>
data ParamAttr = PaZeroExt
| PaSignExt
| PaInReg
| PaByVal
| PaInAlloca
| PaSRet
| PaNoAlias
| PaNoCapture
| PaNest
| PaReturned
| PaNonNull
| PaDereferenceable Word32 -- Integer
| PaReadOnly
| PaReadNone
| PaAlign Word32 -- Integer
deriving (Eq,Ord,Show)
-- | Function Attributes <http://llvm.org/releases/3.5.0/docs/LangRef.html#function-attributes>
data FunAttr = FaAlignStack Word32 -- Integer
| FaAlwaysInline
| FaBuiltin
| FaCold
| FaInlineHint
| FaJumpTable
| FaMinSize
| FaNaked
| FaNoBuiltin
| FaNoDuplicate
| FaNoImplicitFloat
| FaNoInline
| FaNonLazyBind
| FaNoRedZone
| FaNoReturn
| FaNoUnwind
| FaOptNone
| FaOptSize
| FaReadNone
| FaReadOnly
| FaReturnsTwice
| FaSanitizeAddress
| FaSanitizeMemory
| FaSanitizeThread
| FaSsp
| FaSspReq
| FaSspStrong
| FaUwTable
| FaPair DqString (Maybe DqString)
| FaAlign Word32 -- Integer
| FaGroup Word32 -- Integer
deriving (Eq,Ord,Show)
data SelectionKind = Any
| ExactMatch
| Largest
| NoDuplicates
| SameSize
deriving (Eq, Ord, Show)
selectionKindMap :: M.Map SelectionKind String
selectionKindMap = M.fromList [(Any, "any"), (ExactMatch, "exactmatch"), (Largest, "largest"), (NoDuplicates, "noduplicates"), (SameSize, "samesize")]
data Section = Section DqString deriving (Eq,Ord,Show)
data Alignment = Alignment Word32 deriving (Eq,Ord,Show)
type MaybeAlignment = Maybe Alignment
data Gc = Gc DqString deriving (Eq,Ord,Show)
data GlobalType = GlobalType String deriving (Eq,Ord,Show)
data AddrNaming = UnnamedAddr
| NamedAddr deriving (Eq, Ord, Show)
data GlobalOrLocalId = GolG GlobalId
| GolL LocalId
deriving (Eq,Ord,Show)
data LocalId = LocalIdNum Word32 -- Integer
| LocalIdAlphaNum String
| LocalIdDqString String
deriving (Eq,Ord,Show)
data DollarId = DollarIdNum Word32
| DollarIdAlphaNum String
| DollarIdDqString String
deriving (Eq, Ord, Show)
data Comdat = Comdat (Maybe DollarId) deriving (Eq, Ord, Show)
data GlobalId = GlobalIdNum Word32
| GlobalIdAlphaNum String
| GlobalIdDqString String
deriving (Eq,Ord,Show)
-- | Atomic Memory Ordering Constraints <http://llvm.org/releases/3.5.0/docs/LangRef.html#atomic-memory-ordering-constraints>
data AtomicMemoryOrdering = AmoAcquire | AmoRelease | AmoAcqRel
| AmoSeqCst | AmoUnordered | AmoMonotonic
deriving (Eq,Ord,Show)
atomicMemoryOrderingMap :: M.Map AtomicMemoryOrdering String
atomicMemoryOrderingMap = M.fromList [(AmoAcquire, "acquire"), (AmoRelease, "release")
,(AmoAcqRel, "acq_rel"), (AmoSeqCst, "seq_cst")
,(AmoUnordered, "unordered"), (AmoMonotonic, "monotonic")
]
-- | atomicrmw operation <http://llvm.org/releases/3.5.0/docs/LangRef.html#id175>
data AtomicOp = AoXchg | AoAdd | AoSub | AoAnd | AoNand
| AoOr | AoXor
| AoMax | AoMin | AoUmax | AoUmin
deriving (Eq,Ord,Show)
atomicOpMap :: M.Map AtomicOp String
atomicOpMap = M.fromList [(AoXchg, "xchg"), (AoAdd, "add"), (AoSub, "sub")
,(AoAnd, "and"), (AoNand, "nand")
,(AoOr, "or"), (AoXor, "xor")
,(AoMax, "max"), (AoMin, "min"), (AoUmax, "umax"), (AoUmin, "umin")]
{- syntatical representation: c"...." -}
{-- data Cstring = Cstring String deriving (Eq,Ord,Show) -}
data Atomicity = Atomicity (IsOrIsNot SingleThread) AtomicMemoryOrdering
deriving (Eq, Ord, Show)
data Nontemporal = Nontemporal Word32 deriving (Eq, Ord, Show)
type MaybeNontemporal = Maybe Nontemporal
data InvariantLoad = InvariantLoad Word32 deriving (Eq, Ord, Show)
data Nonnull = Nonnull Word32 deriving (Eq, Ord, Show)
data Volatile = Volatile deriving (Eq, Ord, Show)
data SingleThread = SingleThread deriving (Eq, Ord, Show)
data InAllocaAttr = InAllocaAttr deriving (Eq, Ord, Show)
data TailCall = TcNon
| TcTailCall
| TcMustTailCall deriving (Eq, Ord, Show)
data Weak = Weak deriving (Eq, Ord, Show)
data IsOrIsNot a = Is a
| IsNot a
deriving (Eq, Ord, Show)
data InBounds = InBounds deriving (Eq, Ord, Show)
{- short hand notations -}
isInBounds :: IsOrIsNot InBounds
isInBounds = Is InBounds
isNotInBounds :: IsOrIsNot InBounds
isNotInBounds = IsNot InBounds
data FastMathFlag = Fmfnnan
| Fmfninf
| Fmfnsz
| Fmfarcp
| Fmffast
deriving (Eq, Ord, Show)
fastMathFlagMap :: M.Map FastMathFlag String
fastMathFlagMap = M.fromList [(Fmfnnan, "nnan"), (Fmfninf, "ninf"), (Fmfnsz, "nsz"), (Fmfarcp, "arcp"), (Fmffast, "fast")]
data FastMathFlags = FastMathFlags [FastMathFlag] deriving (Eq, Ord, Show)
data ExternallyInitialized = ExternallyInitialized deriving (Eq, Ord, Show)
data AsmDialect = AsmDialectAtt
| AsmDialectIntel
deriving (Eq, Ord, Show)
data SideEffect = SideEffect deriving (Eq, Ord, Show)
data AlignStack = AlignStack deriving (Eq, Ord, Show)
data Cleanup = Cleanup deriving (Eq, Ord, Show)
data Arch = Arch_i386
| Arch_i686
| Arch_x86
| Arch_x86_64
| Arch_PowerPc
| Arch_PowerPc64
| Arch_Arm String
| Arch_ThumbV7
| Arch_Itanium
| Arch_Mips String
| Arch_String String
deriving (Eq, Ord, Show)
data Vendor = Vendor_Pc
| Vendor_Apple
| Vendor_Unknown
| Vendor_String String
deriving (Eq, Ord, Show)
data Os = Os_Linux
| Os_Windows
| Os_Win32
| Os_FreeBsd String
| Os_Darwin String
| Os_Macosx String
| Os_Ios String
| Os_Mingw32
| Os_Unknown
| Os_String String
deriving (Eq, Ord, Show)
data OsEnv = OsEnv_Gnu
| OsEnv_String String
deriving (Eq, Ord, Show)
data TargetTriple = TargetTriple Arch (Maybe Vendor) (Maybe Os) (Maybe OsEnv) deriving (Eq, Ord, Show)
data Fparam = FimplicitParam
| FexplicitParam LocalId
deriving (Eq,Ord,Show)
data Packing = Packed
| Unpacked
deriving (Eq, Ord, Show)
data VarArgParam = VarArgParam deriving (Eq, Ord, Show)