fix address mode calculation: we can not eat immediates for shifted values (well...
[libfirm] / ir / be / bearch.h
index 07c5830..92a86ef 100644 (file)
@@ -44,6 +44,12 @@ typedef struct arch_irn_handler_t        arch_irn_handler_t;
 typedef struct arch_code_generator_t     arch_code_generator_t;
 typedef struct arch_code_generator_if_t  arch_code_generator_if_t;
 
+typedef enum arch_register_class_flags_t {
+       arch_register_class_flag_none      = 0,
+       arch_register_class_flag_manual_ra = 1,  /**< don't do automatic register allocation for this class */
+       arch_register_class_flag_state     = 2
+} arch_register_class_flags_t;
+
 typedef enum arch_register_type_t {
        arch_register_type_none         = 0,
        arch_register_type_caller_save  = 1,  /**< The register must be saved by the caller
@@ -54,8 +60,11 @@ typedef enum arch_register_type_t {
                                              in the called function. */
        arch_register_type_ignore       = 4,  /**< Do not consider this register when allocating. */
        arch_register_type_joker        = 8,  /**< The emitter can choose an arbitrary register */
-       arch_register_type_virtual      = 16, /**< This is just a virtual register  */
-       arch_register_type_state        = 32,
+       arch_register_type_virtual      = 16, /**< This is just a virtual register.Virtual registers have
+                                               nearly no constraints, it is a allowed to have multiple
+                                                                                          definition for the same register at a point) */
+       arch_register_type_state        = 32, /**< The register represents a state that should be handled by
+                                                  bestate code */
 } arch_register_type_t;
 
 /**