fixed some depencies between irdump.c and irdumptxt.c
[libfirm] / ir / ir / irmode.c
index 4bfb961..de7ed63 100644 (file)
@@ -59,7 +59,6 @@ INLINE static int modes_are_equal(const ir_mode *m, const ir_mode *n)
   if (m->sort         == n->sort &&
       m->arithmetic   == n->arithmetic &&
       m->size         == n->size &&
-      m->align        == n->align &&
       m->sign         == n->sign  &&
       m->modulo_shift == n->modulo_shift &&
       m->vector_elem  == n->vector_elem)
@@ -261,7 +260,7 @@ static ir_mode *register_mode(const ir_mode* new_mode)
 /*
  * Creates a new mode.
  */
-ir_mode *new_ir_mode(const char *name, mode_sort sort, int bit_size, int bit_align, int sign,
+ir_mode *new_ir_mode(const char *name, mode_sort sort, int bit_size, int sign,
                     mode_arithmetic arithmetic, unsigned int modulo_shift )
 {
   ir_mode mode_tmpl;
@@ -270,7 +269,6 @@ ir_mode *new_ir_mode(const char *name, mode_sort sort, int bit_size, int bit_ali
   mode_tmpl.name         = new_id_from_str(name);
   mode_tmpl.sort         = sort;
   mode_tmpl.size         = bit_size;
-  mode_tmpl.align        = bit_align;
   mode_tmpl.sign         = sign ? 1 : 0;
   mode_tmpl.modulo_shift = (mode_tmpl.sort == irms_int_number) ? modulo_shift : 0;
   mode_tmpl.vector_elem  = 1;
@@ -306,7 +304,7 @@ ir_mode *new_ir_mode(const char *name, mode_sort sort, int bit_size, int bit_ali
 /*
  * Creates a new vector mode.
  */
-ir_mode *new_ir_vector_mode(const char *name, mode_sort sort, int bit_size, unsigned num_of_elem, int bit_align, int sign,
+ir_mode *new_ir_vector_mode(const char *name, mode_sort sort, int bit_size, unsigned num_of_elem, int sign,
                     mode_arithmetic arithmetic, unsigned int modulo_shift )
 {
   ir_mode mode_tmpl;
@@ -315,7 +313,6 @@ ir_mode *new_ir_vector_mode(const char *name, mode_sort sort, int bit_size, unsi
   mode_tmpl.name         = new_id_from_str(name);
   mode_tmpl.sort         = sort;
   mode_tmpl.size         = bit_size * num_of_elem;
-  mode_tmpl.align        = bit_align;
   mode_tmpl.sign         = sign ? 1 : 0;
   mode_tmpl.modulo_shift = (mode_tmpl.sort == irms_int_number) ? modulo_shift : 0;
   mode_tmpl.vector_elem  = num_of_elem;
@@ -399,20 +396,6 @@ int
   return __get_mode_size_bytes(mode);
 }
 
-int
-(get_mode_align_bits)(const ir_mode *mode)
-{
-  ANNOUNCE();
-  return __get_mode_align_bits(mode);
-}
-
-int
-(get_mode_align_bytes)(const ir_mode *mode)
-{
-  ANNOUNCE();
-  return __get_mode_align_bytes(mode);
-}
-
 int
 (get_mode_sign)(const ir_mode *mode)
 {
@@ -693,7 +676,6 @@ init_mode (void)
   /* Internal Modes */
   newmode.arithmetic   = irma_none;
   newmode.size         = 0;
-  newmode.align        = 0;
   newmode.sign         = 0;
   newmode.modulo_shift = 0;
   newmode.vector_elem  = 0;
@@ -765,7 +747,6 @@ init_mode (void)
   newmode.name    = new_id_from_chars("F", 1);
   newmode.code    = irm_F;
   newmode.sign    = 1;
-  newmode.align   = 32;
   newmode.size    = 32;
 
   mode_F = register_mode(&newmode);
@@ -774,7 +755,6 @@ init_mode (void)
   newmode.name    = new_id_from_chars("D", 1);
   newmode.code    = irm_D;
   newmode.sign    = 1;
-  newmode.align   = 64;
   newmode.size    = 64;
 
   mode_D = register_mode(&newmode);
@@ -783,7 +763,6 @@ init_mode (void)
   newmode.name    = new_id_from_chars("E", 1);
   newmode.code    = irm_E;
   newmode.sign    = 1;
-  newmode.align   = 128;
   newmode.size    = 80;
 
   mode_E = register_mode(&newmode);
@@ -796,7 +775,6 @@ init_mode (void)
   newmode.name         = new_id_from_chars("Bs", 2);
   newmode.code         = irm_Bs;
   newmode.sign         = 1;
-  newmode.align        = 8;
   newmode.size         = 8;
   newmode.modulo_shift = 32;
 
@@ -807,7 +785,6 @@ init_mode (void)
   newmode.code         = irm_Bu;
   newmode.arithmetic   = irma_twos_complement;
   newmode.sign         = 0;
-  newmode.align        = 8;
   newmode.size         = 8;
   newmode.modulo_shift = 32;
 
@@ -817,7 +794,6 @@ init_mode (void)
   newmode.name         = new_id_from_chars("Hs", 2);
   newmode.code         = irm_Hs;
   newmode.sign         = 1;
-  newmode.align        = 16;
   newmode.size         = 16;
   newmode.modulo_shift = 32;
 
@@ -827,7 +803,6 @@ init_mode (void)
   newmode.name         = new_id_from_chars("Hu", 2);
   newmode.code         = irm_Hu;
   newmode.sign         = 0;
-  newmode.align        = 16;
   newmode.size         = 16;
   newmode.modulo_shift = 32;
 
@@ -837,7 +812,6 @@ init_mode (void)
   newmode.name         = new_id_from_chars("Is", 2);
   newmode.code         = irm_Is;
   newmode.sign         = 1;
-  newmode.align        = 32;
   newmode.size         = 32;
   newmode.modulo_shift = 32;
 
@@ -847,7 +821,6 @@ init_mode (void)
   newmode.name         = new_id_from_chars("Iu", 2);
   newmode.code         = irm_Iu;
   newmode.sign         = 0;
-  newmode.align        = 32;
   newmode.size         = 32;
   newmode.modulo_shift = 32;
 
@@ -857,7 +830,6 @@ init_mode (void)
   newmode.name         = new_id_from_chars("Ls", 2);
   newmode.code         = irm_Ls;
   newmode.sign         = 1;
-  newmode.align        = 32;
   newmode.size         = 64;
   newmode.modulo_shift = 64;
 
@@ -867,7 +839,6 @@ init_mode (void)
   newmode.name         = new_id_from_chars("Lu", 2);
   newmode.code         = irm_Lu;
   newmode.sign         = 0;
-  newmode.align        = 32;
   newmode.size         = 64;
   newmode.modulo_shift = 64;
 
@@ -881,7 +852,6 @@ init_mode (void)
   newmode.name         = new_id_from_chars("C", 1);
   newmode.code         = irm_C;
   newmode.sign         = 0;
-  newmode.align        = 8;
   newmode.size         = 8;
   newmode.modulo_shift = 32;
 
@@ -891,7 +861,6 @@ init_mode (void)
   newmode.name         = new_id_from_chars("U", 1);
   newmode.code         = irm_U;
   newmode.sign         = 0;
-  newmode.align        = 16;
   newmode.size         = 16;
   newmode.modulo_shift = 32;
 
@@ -905,7 +874,6 @@ init_mode (void)
   newmode.name         = new_id_from_chars("P", 1);
   newmode.code         = irm_P;
   newmode.sign         = 0;
-  newmode.align        = 32;
   newmode.size         = 32;
   newmode.modulo_shift = 0;
 
@@ -915,6 +883,33 @@ init_mode (void)
   mode_P_mach = mode_P;
 }
 
+/* find a signed mode for an unsigned integer mode */
+ir_mode *find_unsigned_mode(const ir_mode *mode) {
+  ir_mode n = *mode;
+
+  if (mode->sort != irms_int_number);
+  n.sign = 0;
+  return find_mode(&n);
+}
+
+/* find an unsigned mode for a signed integer mode */
+ir_mode *find_signed_mode(const ir_mode *mode) {
+  ir_mode n = *mode;
+
+  assert(mode->sort == irms_int_number);
+  n.sign = 1;
+  return find_mode(&n);
+}
+
+/* finds a integer mode with 2*n bits for an integer mode with n bits. */
+ir_mode *find_double_bits_int_mode(const ir_mode *mode) {
+  ir_mode n = *mode;
+
+  assert(mode->sort == irms_int_number && mode->arithmetic == irma_twos_complement);
+
+  n.size = 2*mode->size;
+  return find_mode(&n);
+}
 
 void finish_mode(void) {
   obstack_free(&modes, 0);