# Module Llvm.Opcode

    module Opcode: sig .. end

The opcodes for LLVM instructions and constant expressions.

    type t =

`|` | `Invalid` | `(*` | Not an instruction | `*)`
`|` | `Ret` | `(*` | Terminator Instructions | `*)`
`|` | `Br`
`|` | `Switch`
`|` | `IndirectBr`
`|` | `Invoke`
`|` | `Invalid2`
`|` | `Unreachable`
`|` | `Add` | `(*` | Standard Binary Operators | `*)`
`|` | `FAdd`
`|` | `Sub`
`|` | `FSub`
`|` | `Mul`
`|` | `FMul`
`|` | `UDiv`
`|` | `SDiv`
`|` | `FDiv`
`|` | `URem`
`|` | `SRem`
`|` | `FRem`
`|` | `Shl` | `(*` | Logical Operators | `*)`
`|` | `LShr`
`|` | `AShr`
`|` | `And`
`|` | `Or`
`|` | `Xor`
`|` | `Alloca` | `(*` | Memory Operators | `*)`
`|` | `Load`
`|` | `Store`
`|` | `GetElementPtr`
`|` | `Trunc` | `(*` | Cast Operators | `*)`
`|` | `ZExt`
`|` | `SExt`
`|` | `FPToUI`
`|` | `FPToSI`
`|` | `UIToFP`
`|` | `SIToFP`
`|` | `FPTrunc`
`|` | `FPExt`
`|` | `PtrToInt`
`|` | `IntToPtr`
`|` | `BitCast`
`|` | `ICmp` | `(*` | Other Operators | `*)`
`|` | `FCmp`
`|` | `PHI`
`|` | `Call`
`|` | `Select`
`|` | `UserOp1`
`|` | `UserOp2`
`|` | `VAArg`
`|` | `ExtractElement`
`|` | `InsertElement`
`|` | `ShuffleVector`
`|` | `ExtractValue`
`|` | `InsertValue`
`|` | `Fence`
`|` | `AtomicCmpXchg`
`|` | `AtomicRMW`
`|` | `Resume`
`|` | `LandingPad`
`|` | `AddrSpaceCast`
`|` | `CleanupRet`
`|` | `CatchRet`
`|` | `CatchPad`
`|` | `CleanupPad`
`|` | `CatchSwitch`
`|` | `FNeg`
`|` | `CallBr`
`|` | `Freeze`