Safe Haskell | Safe |
---|---|
Language | Haskell98 |
LLVM.AST.Instruction
Description
LLVM instructions http://llvm.org/docs/LangRef.html#instruction-reference
- type InstructionMetadata = [(ShortByteString, MetadataNode)]
- data Terminator
- = Ret { }
- | CondBr { }
- | Br { }
- | Switch {
- operand0' :: Operand
- defaultDest :: Name
- dests :: [(Constant, Name)]
- metadata' :: InstructionMetadata
- | IndirectBr { }
- | Invoke { }
- | Resume { }
- | Unreachable { }
- | CleanupRet { }
- | CatchRet { }
- | CatchSwitch { }
- data FastMathFlags
- = NoFastMathFlags
- | UnsafeAlgebra
- | FastMathFlags {
- noNaNs :: Bool
- noInfs :: Bool
- noSignedZeros :: Bool
- allowReciprocal :: Bool
- data MemoryOrdering
- data SynchronizationScope
- type Atomicity = (SynchronizationScope, MemoryOrdering)
- data LandingPadClause
- data TailCallKind
- data Instruction
- = Add { }
- | FAdd { }
- | Sub { }
- | FSub { }
- | Mul { }
- | FMul { }
- | UDiv { }
- | SDiv { }
- | FDiv { }
- | URem { }
- | SRem { }
- | FRem { }
- | Shl { }
- | LShr { }
- | AShr { }
- | And { }
- | Or { }
- | Xor { }
- | Alloca { }
- | Load { }
- | Store { }
- | GetElementPtr { }
- | Fence { }
- | CmpXchg { }
- | AtomicRMW { }
- | Trunc { }
- | ZExt { }
- | SExt { }
- | FPToUI { }
- | FPToSI { }
- | UIToFP { }
- | SIToFP { }
- | FPTrunc { }
- | FPExt { }
- | PtrToInt { }
- | IntToPtr { }
- | BitCast { }
- | AddrSpaceCast { }
- | ICmp { }
- | FCmp { }
- | Phi {
- type' :: Type
- incomingValues :: [(Operand, Name)]
- metadata :: InstructionMetadata
- | Call { }
- | Select { }
- | VAArg { }
- | ExtractElement { }
- | InsertElement { }
- | ShuffleVector { }
- | ExtractValue { }
- | InsertValue { }
- | LandingPad {
- type' :: Type
- cleanup :: Bool
- clauses :: [LandingPadClause]
- metadata :: InstructionMetadata
- | CatchPad {
- catchSwitch :: Operand
- args :: [Operand]
- metadata :: InstructionMetadata
- | CleanupPad { }
- data Named a
Documentation
type InstructionMetadata = [(ShortByteString, MetadataNode)] Source #
http://llvm.org/docs/LangRef.html#metadata-nodes-and-metadata-strings Metadata can be attached to an instruction
data Terminator Source #
Constructors
Ret | |
Fields | |
CondBr | |
Br | |
Fields
| |
Switch | |
Fields
| |
IndirectBr | |
Fields
| |
Invoke | |
Resume | |
Fields | |
Unreachable | |
Fields | |
CleanupRet | |
Fields | |
CatchRet | |
CatchSwitch | |
Fields |
Instances
data FastMathFlags Source #
Constructors
NoFastMathFlags | |
UnsafeAlgebra | |
FastMathFlags | |
Fields
|
Instances
data MemoryOrdering Source #
http://llvm.org/docs/LangRef.html#atomic-memory-ordering-constraints http://llvm.org/docs/Atomics.html
Constructors
Unordered | |
Monotonic | |
Acquire | |
Release | |
AcquireRelease | |
SequentiallyConsistent |
data SynchronizationScope Source #
Constructors
SingleThread | |
CrossThread |
type Atomicity = (SynchronizationScope, MemoryOrdering) Source #
An Atomicity
describes constraints on the visibility of effects of an atomic instruction
data LandingPadClause Source #
For the redoubtably complex LandingPad
instruction
data TailCallKind Source #
For the call instruction http://llvm.org/docs/LangRef.html#call-instruction
Instances
data Instruction Source #
non-terminator instructions: http://llvm.org/docs/LangRef.html#binaryops http://llvm.org/docs/LangRef.html#bitwiseops http://llvm.org/docs/LangRef.html#memoryops http://llvm.org/docs/LangRef.html#otherops
Constructors
Add | |
FAdd | |
Fields | |
Sub | |
FSub | |
Fields | |
Mul | |
FMul | |
Fields | |
UDiv | |
SDiv | |
FDiv | |
Fields | |
URem | |
SRem | |
FRem | |
Fields | |
Shl | |
LShr | |
AShr | |
And | |
Or | |
Xor | |
Alloca | |
Fields | |
Load | |
Store | |
GetElementPtr | |
Fence | |
Fields | |
CmpXchg | |
Fields | |
AtomicRMW | |
Fields
| |
Trunc | |
ZExt | |
SExt | |
FPToUI | |
FPToSI | |
UIToFP | |
SIToFP | |
FPTrunc | |
FPExt | |
PtrToInt | |
IntToPtr | |
BitCast | |
AddrSpaceCast | |
ICmp | |
Fields | |
FCmp | |
Fields | |
Phi | |
Fields
| |
Call | |
Select | |
Fields | |
VAArg | |
ExtractElement | |
InsertElement | |
ShuffleVector | |
ExtractValue | |
InsertValue | |
LandingPad | |
Fields
| |
CatchPad | |
Fields
| |
CleanupPad | |
Instances
Instances of instructions may be given a name, allowing their results to be referenced as Operand
s.
Sometimes instructions - e.g. a call to a function returning void - don't need names.