// The only top-level block type defined is for a module.
enum BlockIDs {
// Blocks
- MODULE_BLOCK_ID = 0,
+ MODULE_BLOCK_ID = FIRST_APPLICATION_BLOCKID,
- // Module sub-block id's
- TYPE_BLOCK_ID = 1,
- CONSTANTS_BLOCK_ID = 2,
- FUNCTION_BLOCK_ID = 3,
- TYPE_SYMTAB_BLOCK_ID = 4,
- VALUE_SYMTAB_BLOCK_ID = 5
+ // Module sub-block id's.
+ PARAMATTR_BLOCK_ID,
+ TYPE_BLOCK_ID,
+ CONSTANTS_BLOCK_ID,
+ FUNCTION_BLOCK_ID,
+ TYPE_SYMTAB_BLOCK_ID,
+ VALUE_SYMTAB_BLOCK_ID
};
MODULE_CODE_PURGEVALS = 10
};
+ /// PARAMATTR blocks have code for defining a parameter attribute set.
+ enum ParamAttrCodes {
+ PARAMATTR_CODE_ENTRY = 1 // ENTRY: [paramidx0, attr0, paramidx1, attr1...]
+ };
+
/// TYPE blocks have codes for each type primitive they use.
enum TypeCodes {
- TYPE_CODE_NUMENTRY = 1, // TYPE_CODE_NUMENTRY: [numentries]
- TYPE_CODE_META = 2, // TYPE_CODE_META: [metacode]... - Future use
+ TYPE_CODE_NUMENTRY = 1, // NUMENTRY: [numentries]
// Type Codes
- TYPE_CODE_VOID = 3, // VOID
- TYPE_CODE_FLOAT = 4, // FLOAT
- TYPE_CODE_DOUBLE = 5, // DOUBLE
- TYPE_CODE_LABEL = 6, // LABEL
- TYPE_CODE_OPAQUE = 7, // OPAQUE
- TYPE_CODE_INTEGER = 8, // INTEGER: [width]
- TYPE_CODE_POINTER = 9, // POINTER: [pointee type]
- TYPE_CODE_FUNCTION = 10, // FUNCTION: [vararg, retty, #pararms, paramty N]
- TYPE_CODE_STRUCT = 11, // STRUCT: [ispacked, #elts, eltty x N]
- TYPE_CODE_ARRAY = 12, // ARRAY: [numelts, eltty]
- TYPE_CODE_VECTOR = 13 // VECTOR: [numelts, eltty]
+ TYPE_CODE_VOID = 2, // VOID
+ TYPE_CODE_FLOAT = 3, // FLOAT
+ TYPE_CODE_DOUBLE = 4, // DOUBLE
+ TYPE_CODE_LABEL = 5, // LABEL
+ TYPE_CODE_OPAQUE = 6, // OPAQUE
+ TYPE_CODE_INTEGER = 7, // INTEGER: [width]
+ TYPE_CODE_POINTER = 8, // POINTER: [pointee type]
+ TYPE_CODE_FUNCTION = 9, // FUNCTION: [vararg, retty, #pararms, paramty N]
+ TYPE_CODE_STRUCT = 10, // STRUCT: [ispacked, #elts, eltty x N]
+ TYPE_CODE_ARRAY = 11, // ARRAY: [numelts, eltty]
+ TYPE_CODE_VECTOR = 12 // VECTOR: [numelts, eltty]
// Any other type code is assumed to be an unknown type.
};
// The value symbol table only has one code (VST_ENTRY_CODE).
enum ValueSymtabCodes {
- VST_CODE_ENTRY = 1 // VST_ENTRY: [valid, namelen, namechar x N]
+ VST_CODE_ENTRY = 1, // VST_ENTRY: [valid, namelen, namechar x N]
+ VST_CODE_BBENTRY = 2 // VST_BBENTRY: [bbid, namelen, namechar x N]
};
// The constants block (CONSTANTS_BLOCK_ID) describes emission for each
// constant and maintains an implicit current type value.
- enum ConstantsSymtabCodes {
+ enum ConstantsCodes {
CST_CODE_SETTYPE = 1, // SETTYPE: [typeid]
CST_CODE_NULL = 2, // NULL
CST_CODE_UNDEF = 3, // UNDEF
FUNC_CODE_INST_SHUFFLEVEC = 8, // SHUFFLEVEC: [ty, opval, opval, opval]
FUNC_CODE_INST_CMP = 9, // CMP: [opty, opval, opval, pred]
- FUNC_CODE_INST_RET = 10, // RET: [opval<optional>]
- FUNC_CODE_INST_BR = 11, // BR: [opval, bb#, bb#] or [bb#]
+ FUNC_CODE_INST_RET = 10, // RET: [opty,opval<optional>]
+ FUNC_CODE_INST_BR = 11, // BR: [bb#, bb#, cond] or [bb#]
FUNC_CODE_INST_SWITCH = 12, // SWITCH: [opty, opval, n, n x ops]
- FUNC_CODE_INST_INVOKE = 13, // INVOKE:
+ FUNC_CODE_INST_INVOKE = 13, // INVOKE: [fnty, op0,op1,op2, ...]
FUNC_CODE_INST_UNWIND = 14, // UNWIND
FUNC_CODE_INST_UNREACHABLE = 15, // UNREACHABLE
- FUNC_CODE_INST_MALLOC = 16, // MALLOC: ..
- FUNC_CODE_INST_FREE = 17, // FREE: ..
- FUNC_CODE_INST_ALLOCA = 18, // ALLOCA: ..
- FUNC_CODE_INST_LOAD = 19, // LOAD: ..
- FUNC_CODE_INST_STORE = 20, // STORE: ..
- FUNC_CODE_INST_CALL = 21, // CALL: ..
- FUNC_CODE_INST_VAARG = 22 // VAARG: ..
+ FUNC_CODE_INST_PHI = 16, // PHI: [ty, #ops, val0,bb0, ...]
+ FUNC_CODE_INST_MALLOC = 17, // MALLOC: [instty, op, align]
+ FUNC_CODE_INST_FREE = 18, // FREE: [opty, op]
+ FUNC_CODE_INST_ALLOCA = 19, // ALLOCA: [instty, op, align]
+ FUNC_CODE_INST_LOAD = 20, // LOAD: [opty, op, align, vol]
+ FUNC_CODE_INST_STORE = 21, // STORE: [ptrty,val,ptr, align, vol]
+ FUNC_CODE_INST_CALL = 22, // CALL: [fnty, fnid, arg0, arg1...]
+ FUNC_CODE_INST_VAARG = 23 // VAARG: [valistty, valist, instty]
};
} // End bitc namespace
} // End llvm namespace