# wyvern v1.0.3 - Table of Contents

> Wyvern is an Elixir builder API for constructing LLVM IR

## Modules

- [Wyvern](Wyvern.md): Documentation for `Wyvern`.

- [Wyvern.BasicBlock](Wyvern.BasicBlock.md)
- [Wyvern.Declaration](Wyvern.Declaration.md)
- [Wyvern.Function](Wyvern.Function.md): The %Function{} represents a function defintion in the LLVM IR.
- [Wyvern.GlobalVariable](Wyvern.GlobalVariable.md)
- [Wyvern.IR](Wyvern.IR.md)
- [Wyvern.IR.Context](Wyvern.IR.Context.md): A Context module is threaded through resolve_names()/to_ir() protocol to hold
any state that is modified during the serialisation process.

- [Wyvern.IROperand](Wyvern.IROperand.md)
- [Wyvern.Identifier](Wyvern.Identifier.md)
- [Wyvern.Instruction](Wyvern.Instruction.md): The modules in this namespace represent the LLVM instruction set.

- [Wyvern.Instruction.Add](Wyvern.Instruction.Add.md)
- [Wyvern.Instruction.Alloca](Wyvern.Instruction.Alloca.md)
- [Wyvern.Instruction.And](Wyvern.Instruction.And.md)
- [Wyvern.Instruction.Ashr](Wyvern.Instruction.Ashr.md)
- [Wyvern.Instruction.BR](Wyvern.Instruction.BR.md)
- [Wyvern.Instruction.Call](Wyvern.Instruction.Call.md)
- [Wyvern.Instruction.ExtractValue](Wyvern.Instruction.ExtractValue.md)
- [Wyvern.Instruction.Fadd](Wyvern.Instruction.Fadd.md)
- [Wyvern.Instruction.Fcmp](Wyvern.Instruction.Fcmp.md)
- [Wyvern.Instruction.Fdiv](Wyvern.Instruction.Fdiv.md)
- [Wyvern.Instruction.Fmul](Wyvern.Instruction.Fmul.md)
- [Wyvern.Instruction.Fneg](Wyvern.Instruction.Fneg.md)
- [Wyvern.Instruction.Fpext](Wyvern.Instruction.Fpext.md)
- [Wyvern.Instruction.Fptosi](Wyvern.Instruction.Fptosi.md)
- [Wyvern.Instruction.Fptoui](Wyvern.Instruction.Fptoui.md)
- [Wyvern.Instruction.Fptrunc](Wyvern.Instruction.Fptrunc.md)
- [Wyvern.Instruction.Freeze](Wyvern.Instruction.Freeze.md)
- [Wyvern.Instruction.Frem](Wyvern.Instruction.Frem.md)
- [Wyvern.Instruction.Fsub](Wyvern.Instruction.Fsub.md)
- [Wyvern.Instruction.GetElementPtr](Wyvern.Instruction.GetElementPtr.md)
- [Wyvern.Instruction.Icmp](Wyvern.Instruction.Icmp.md)
- [Wyvern.Instruction.IndirectBr](Wyvern.Instruction.IndirectBr.md)
- [Wyvern.Instruction.InsertValue](Wyvern.Instruction.InsertValue.md)
- [Wyvern.Instruction.IntToPtr](Wyvern.Instruction.IntToPtr.md)
- [Wyvern.Instruction.Load](Wyvern.Instruction.Load.md)
- [Wyvern.Instruction.Lshr](Wyvern.Instruction.Lshr.md)
- [Wyvern.Instruction.Mul](Wyvern.Instruction.Mul.md)
- [Wyvern.Instruction.Or](Wyvern.Instruction.Or.md)
- [Wyvern.Instruction.Phi](Wyvern.Instruction.Phi.md)
- [Wyvern.Instruction.PtrToInt](Wyvern.Instruction.PtrToInt.md)
- [Wyvern.Instruction.Ret](Wyvern.Instruction.Ret.md)
- [Wyvern.Instruction.Sdiv](Wyvern.Instruction.Sdiv.md)
- [Wyvern.Instruction.Select](Wyvern.Instruction.Select.md)
- [Wyvern.Instruction.Sext](Wyvern.Instruction.Sext.md)
- [Wyvern.Instruction.Shl](Wyvern.Instruction.Shl.md)
- [Wyvern.Instruction.Sitofp](Wyvern.Instruction.Sitofp.md)
- [Wyvern.Instruction.Srem](Wyvern.Instruction.Srem.md)
- [Wyvern.Instruction.Store](Wyvern.Instruction.Store.md)
- [Wyvern.Instruction.Sub](Wyvern.Instruction.Sub.md)
- [Wyvern.Instruction.Switch](Wyvern.Instruction.Switch.md)
- [Wyvern.Instruction.Trunc](Wyvern.Instruction.Trunc.md)
- [Wyvern.Instruction.Types](Wyvern.Instruction.Types.md)
- [Wyvern.Instruction.Udiv](Wyvern.Instruction.Udiv.md)
- [Wyvern.Instruction.Uitofp](Wyvern.Instruction.Uitofp.md)
- [Wyvern.Instruction.Unreachable](Wyvern.Instruction.Unreachable.md)
- [Wyvern.Instruction.Urem](Wyvern.Instruction.Urem.md)
- [Wyvern.Instruction.Xor](Wyvern.Instruction.Xor.md)
- [Wyvern.Instruction.Zext](Wyvern.Instruction.Zext.md)
- [Wyvern.Label](Wyvern.Label.md): A Label is an id and an associated name that can be used to mark
things like basic blocks so that they have an id assigned ahead of
time (this makes forward references a possibility).

- [Wyvern.Module](Wyvern.Module.md): The Module structure represents a single LLVM module as a flat namespace of globals and functions.

- [Wyvern.Param](Wyvern.Param.md): A Param represents a parameter to a function that can be named or unnamed.
- [Wyvern.ToHandle](Wyvern.ToHandle.md)
- [Wyvern.Type](Wyvern.Type.md): Represents an LLVM type e.g. :integer, :pointer

- [Wyvern.Type.Array](Wyvern.Type.Array.md)
- [Wyvern.Type.Float](Wyvern.Type.Float.md)
- [Wyvern.Type.Function](Wyvern.Type.Function.md)
- [Wyvern.Type.Guards](Wyvern.Type.Guards.md)
- [Wyvern.Type.Integer](Wyvern.Type.Integer.md)
- [Wyvern.Type.NamedStruct](Wyvern.Type.NamedStruct.md)
- [Wyvern.Type.Pointer](Wyvern.Type.Pointer.md)
- [Wyvern.Type.Struct](Wyvern.Type.Struct.md)
- [Wyvern.Type.Void](Wyvern.Type.Void.md)
- [Wyvern.Value](Wyvern.Value.md): Value represents a typed value, e.g. the integer 42.

- [Wyvern.Value.Array](Wyvern.Value.Array.md)
- [Wyvern.Value.BlockAddress](Wyvern.Value.BlockAddress.md)
- [Wyvern.Value.Float](Wyvern.Value.Float.md)
- [Wyvern.Value.GlobalRef](Wyvern.Value.GlobalRef.md)
- [Wyvern.Value.Guards](Wyvern.Value.Guards.md)
- [Wyvern.Value.Handle](Wyvern.Value.Handle.md): A Handle is used to refer to the value that is returned by
an instruction and allow it to be passed as a value in the
parameter of another instruction.
- [Wyvern.Value.Integer](Wyvern.Value.Integer.md)
- [Wyvern.Value.LocalRef](Wyvern.Value.LocalRef.md)
- [Wyvern.Value.Poison](Wyvern.Value.Poison.md)
- [Wyvern.Value.Struct](Wyvern.Value.Struct.md)
- [Wyvern.Value.Undef](Wyvern.Value.Undef.md)
- [Wyvern.Value.Void](Wyvern.Value.Void.md)

