sig
  type t =
      Invalid
    | Ret
    | Br
    | Switch
    | IndirectBr
    | Invoke
    | Invalid2
    | Unreachable
    | Add
    | FAdd
    | Sub
    | FSub
    | Mul
    | FMul
    | UDiv
    | SDiv
    | FDiv
    | URem
    | SRem
    | FRem
    | Shl
    | LShr
    | AShr
    | And
    | Or
    | Xor
    | Alloca
    | Load
    | Store
    | GetElementPtr
    | Trunc
    | ZExt
    | SExt
    | FPToUI
    | FPToSI
    | UIToFP
    | SIToFP
    | FPTrunc
    | FPExt
    | PtrToInt
    | IntToPtr
    | BitCast
    | ICmp
    | FCmp
    | PHI
    | Call
    | Select
    | UserOp1
    | UserOp2
    | VAArg
    | ExtractElement
    | InsertElement
    | ShuffleVector
    | ExtractValue
    | InsertValue
    | Fence
    | AtomicCmpXchg
    | AtomicRMW
    | Resume
    | LandingPad
end