+/**
+ * @defgroup be Code Generation
+ *
+ * Code Generation (backend) produces machine-code.
+ * @{
+ */
+
+/**
+ * flags categorizing assembler constraint specifications
+ */
+typedef enum asm_constraint_flags_t {
+ ASM_CONSTRAINT_FLAG_NONE = 0, /**< no constraints */
+ /** input/output can be in a register */
+ ASM_CONSTRAINT_FLAG_SUPPORTS_REGISTER = 1u << 0,
+ /** input/output can be read/written to/from a memory address */
+ ASM_CONSTRAINT_FLAG_SUPPORTS_MEMOP = 1u << 1,
+ /** input can be encoded as an immediate number */
+ ASM_CONSTRAINT_FLAG_SUPPORTS_IMMEDIATE = 1u << 2,
+ /** the constraint is not supported yet by libFirm */
+ ASM_CONSTRAINT_FLAG_NO_SUPPORT = 1u << 3,
+ /** The input is also written to */
+ ASM_CONSTRAINT_FLAG_MODIFIER_WRITE = 1u << 4,
+ /** the input is not written to */
+ ASM_CONSTRAINT_FLAG_MODIFIER_NO_WRITE = 1u << 5,
+ /** the input is read */
+ ASM_CONSTRAINT_FLAG_MODIFIER_READ = 1u << 6,
+ /** the input is not read */
+ ASM_CONSTRAINT_FLAG_MODIFIER_NO_READ = 1u << 7,
+ /** the value is modified before all inputs to the asm block
+ * are handled. */
+ ASM_CONSTRAINT_FLAG_MODIFIER_EARLYCLOBBER = 1u << 8,
+ /** This operand and the following operand are commutative */
+ ASM_CONSTRAINT_FLAG_MODIFIER_COMMUTATIVE = 1u << 9,
+ /** invalid constraint (due to parse error) */
+ ASM_CONSTRAINT_FLAG_INVALID = 1u << 10
+} asm_constraint_flags_t;
+ENUM_BITSET(asm_constraint_flags_t)
+
+/** Dwarf source language codes. */
+typedef enum {
+ DW_LANG_C89 = 0x0001,
+ DW_LANG_C = 0x0002,
+ DW_LANG_Ada83 = 0x0003,
+ DW_LANG_C_plus_plus = 0x0004,
+ DW_LANG_Cobol74 = 0x0005,
+ DW_LANG_Cobol85 = 0x0006,
+ DW_LANG_Fortran77 = 0x0007,
+ DW_LANG_Fortran90 = 0x0008,
+ DW_LANG_Pascal83 = 0x0009,
+ DW_LANG_Modula2 = 0x000a,
+ DW_LANG_Java = 0x000b,
+ DW_LANG_C99 = 0x000c,
+ DW_LANG_Ada95 = 0x000d,
+ DW_LANG_Fortran95 = 0x000e,
+ DW_LANG_PLI = 0x000f,
+ DW_LANG_ObjC = 0x0010,
+ DW_LANG_ObjC_plus_plus = 0x0011,
+ DW_LANG_UPC = 0x0012,
+ DW_LANG_D = 0x0013,
+ DW_LANG_Python = 0x0014,
+ DW_LANG_Go = 0x0016,
+} dwarf_source_language;