packages feed

llvm-base-types-0.3.0: src/c++/llvm-base-enums.h

#include <stdint.h>

/*!
  Arithmetic flags
 */
typedef enum {
  ArithNone,
  ArithNUW,
  ArithNSW,
  ArithBoth
} ArithFlags;

/*!
  Possible predicates for the icmp and fcmp instructions
 */
typedef enum {
  F_CMP_FALSE,
  F_CMP_OEQ,
  F_CMP_OGT,
  F_CMP_OGE,
  F_CMP_OLT,
  F_CMP_OLE,
  F_CMP_ONE,
  F_CMP_ORD,
  F_CMP_UNO,
  F_CMP_UEQ,
  F_CMP_UGT,
  F_CMP_UGE,
  F_CMP_ULT,
  F_CMP_ULE,
  F_CMP_UNE,
  F_CMP_TRUE,
  I_CMP_EQ,
  I_CMP_NE,
  I_CMP_UGT,
  I_CMP_UGE,
  I_CMP_ULT,
  I_CMP_ULE,
  I_CMP_SGT,
  I_CMP_SGE,
  I_CMP_SLT,
  I_CMP_SLE
} CmpPredicate;

/*!
  Function calling conventions
 */
typedef enum {
  CC_C,
  CC_FAST,
  CC_COLD,
  CC_GHC,
  CC_X86_STDCALL,
  CC_X86_FASTCALL,
  CC_ARM_APCS,
  CC_ARM_AAPCS,
  CC_ARM_AAPCS_VFP,
  CC_MSP430_INTR,
  CC_X86_THISCALL,
  CC_PTX_KERNEL,
  CC_PTX_DEVICE,
  CC_MBLAZE_INTR,
  CC_MBLAZE_SVOL
} CallingConvention;

/*!
  Type tags
 */
typedef enum {
  TYPE_VOID,
  TYPE_FLOAT,
  TYPE_DOUBLE,
  TYPE_X86_FP80,
  TYPE_FP128,
  TYPE_PPC_FP128,
  TYPE_LABEL,
  TYPE_METADATA,
  TYPE_X86_MMX,
  TYPE_INTEGER,
  TYPE_FUNCTION,
  TYPE_STRUCT,
  TYPE_ARRAY,
  TYPE_POINTER,
  TYPE_VECTOR
} TypeTag;

/*!
  Metadata tags
*/
typedef enum {
  META_LOCATION,
  META_DERIVEDTYPE,
  META_COMPOSITETYPE,
  META_BASICTYPE,
  META_VARIABLE,
  META_SUBPROGRAM,
  META_GLOBALVARIABLE,
  META_FILE,
  META_COMPILEUNIT,
  META_NAMESPACE,
  META_LEXICALBLOCK,
  META_SUBRANGE,
  META_ENUMERATOR,
  META_ARRAY,
  META_TEMPLATETYPEPARAMETER,
  META_TEMPLATEVALUEPARAMETER,
  META_UNKNOWN /* For unknown pieces of metadata */
} MetaTag;

/*!
  Value tags
 */
typedef enum {
  VAL_ARGUMENT,
  VAL_BASICBLOCK,
  // Constants
  VAL_INLINEASM,
  VAL_BLOCKADDRESS,
  VAL_CONSTANTAGGREGATEZERO,
  VAL_CONSTANTARRAY,
  VAL_CONSTANTFP,
  VAL_CONSTANTINT,
  VAL_CONSTANTPOINTERNULL,
  VAL_CONSTANTSTRUCT,
  VAL_CONSTANTVECTOR,
  VAL_UNDEFVALUE,
  VAL_CONSTANTEXPR,
  // Insts
  VAL_RETINST,     // 0 or 1 operand
  VAL_BRANCHINST, // 1 or 3 operands
  VAL_SWITCHINST,  // op[0] = switchval, op[1] = default dest, op[2n]
                   // = value to match, op[2n+1] = dest for match
  VAL_INDIRECTBRINST, // op[0] = address, rest are possible dests
  VAL_INVOKEINST,
  VAL_RESUMEINST,
  VAL_UNREACHABLEINST,
  VAL_ADDINST,
  VAL_FADDINST,
  VAL_SUBINST,
  VAL_FSUBINST,
  VAL_MULINST,
  VAL_FMULINST,
  VAL_UDIVINST,
  VAL_SDIVINST,
  VAL_FDIVINST,
  VAL_UREMINST,
  VAL_SREMINST,
  VAL_FREMINST,
  VAL_SHLINST,
  VAL_LSHRINST,
  VAL_ASHRINST,
  VAL_ANDINST,
  VAL_ORINST,
  VAL_XORINST,
  VAL_ALLOCAINST,
  VAL_LOADINST,
  VAL_STOREINST,
  VAL_GETELEMENTPTRINST,
  VAL_FENCEINST,
  VAL_ATOMICCMPXCHGINST,
  VAL_ATOMICRMWINST,
  VAL_TRUNCINST,
  VAL_ZEXTINST,
  VAL_SEXTINST,
  VAL_FPTOUIINST,
  VAL_FPTOSIINST,
  VAL_UITOFPINST,
  VAL_SITOFPINST,
  VAL_FPTRUNCINST,
  VAL_FPEXTINST,
  VAL_PTRTOINTINST,
  VAL_INTTOPTRINST,
  VAL_BITCASTINST,
  VAL_ICMPINST,
  VAL_FCMPINST,
  VAL_PHINODE,
  VAL_CALLINST,
  VAL_SELECTINST, // 0 = condition, 1 = trueval, 2 = falseval
  VAL_VAARGINST,
  VAL_EXTRACTELEMENTINST, // 0 = vector, 1 = index
  VAL_INSERTELEMENTINST, // 0 = vector, 1 = value, 2 = index
  VAL_SHUFFLEVECTORINST, // 0 = v1, 1 = v2, v3 = mask
  VAL_EXTRACTVALUEINST,
  VAL_INSERTVALUEINST,
  VAL_LANDINGPADINST,
  // Globals
  VAL_FUNCTION,
  VAL_GLOBALVARIABLE,
  VAL_ALIAS
} ValueTag;


typedef enum {
  LTExternal,
  LTAvailableExternally,
  LTLinkOnceAny,
  LTLinkOnceODR,
  LTWeakAny,
  LTWeakODR,
  LTAppending,
  LTInternal,
  LTPrivate,
  LTLinkerPrivate,
  LTLinkerPrivateWeak,
  LTLinkerPrivateWeakDefAuto,
  LTDLLImport,
  LTDLLExport,
  LTExternalWeak,
  LTCommon
} LinkageType;

typedef enum {
  VisibilityDefault,
  VisibilityHidden,
  VisibilityProtected
} VisibilityStyle;

typedef enum {
  OrderNotAtomic,
  OrderUnordered,
  OrderMonotonic,
  OrderAcquire,
  OrderRelease,
  OrderAcquireRelease,
  OrderSequentiallyConsistent
} CAtomicOrdering;

typedef enum {
  SSSingleThread,
  SSCrossThread
} CSynchronizationScope;

typedef enum {
  AOXchg,
  AOAdd,
  AOSub,
  AOAnd,
  AONand,
  AOOr,
  AOXor,
  AOMax,
  AOMin,
  AOUMax,
  AOUMin
} AtomicOperation;

typedef enum {
  LPCatch,
  LPFilter
} LandingPadClause;