- ir_mode newmode;
- ANNOUNCE();
- /* init flexible array */
-
- obstack_init(&modes);
-
- num_modes = 0;
- /* initialize predefined modes */
-
- /* Internal Modes */
- newmode.arithmetic = irma_none;
- newmode.size = 0;
- newmode.sign = 0;
- newmode.modulo_shift = 0;
- newmode.vector_elem = 0;
- newmode.link = NULL;
- newmode.tv_priv = NULL;
-
- /* Control Flow Modes*/
- newmode.sort = irms_control_flow;
-
- /* Basic Block */
- newmode.name = new_id_from_chars("BB", 2);
- newmode.code = irm_BB;
-
- mode_BB = register_mode(&newmode);
-
-/* eXecution */
- newmode.name = new_id_from_chars("X", 1);
- newmode.code = irm_X;
-
- mode_X = register_mode(&newmode);
-
- /* Memory Modes */
- newmode.sort = irms_memory;
-
- /* Memory */
- newmode.name = new_id_from_chars("M", 1);
- newmode.code = irm_M;
-
- mode_M = register_mode(&newmode);
-
- /* Auxiliary Modes */
- newmode.sort = irms_auxiliary,
-
- /* Tuple */
- newmode.name = new_id_from_chars("T", 1);
- newmode.code = irm_T;
-
- mode_T = register_mode(&newmode);
-
- /* ANY */
- newmode.name = new_id_from_chars("ANY", 3);
- newmode.code = irm_ANY;
-
- mode_ANY = register_mode(&newmode);
-
- /* BAD */
- newmode.name = new_id_from_chars("BAD", 3);
- newmode.code = irm_BAD;
-
- mode_BAD = register_mode(&newmode);
-
- /* Internal Boolean Modes */
- newmode.sort = irms_internal_boolean;
-
- /* boolean */
- newmode.name = new_id_from_chars("b", 1);
- newmode.code = irm_b;
-
- mode_b = register_mode(&newmode);
-
-/* Data Modes */
- newmode.vector_elem = 1;
-
- /* Float Number Modes */
- newmode.sort = irms_float_number;
- newmode.arithmetic = irma_ieee754;
-
- /* float */
- newmode.name = new_id_from_chars("F", 1);
- newmode.code = irm_F;
- newmode.sign = 1;
- newmode.size = 32;
-
- mode_F = register_mode(&newmode);
-
- /* double */
- newmode.name = new_id_from_chars("D", 1);
- newmode.code = irm_D;
- newmode.sign = 1;
- newmode.size = 64;
-
- mode_D = register_mode(&newmode);
-
- /* extended */
- newmode.name = new_id_from_chars("E", 1);
- newmode.code = irm_E;
- newmode.sign = 1;
- newmode.size = 80;
-
- mode_E = register_mode(&newmode);
-
- /* Integer Number Modes */
- newmode.sort = irms_int_number;
- newmode.arithmetic = irma_twos_complement;
-
- /* signed byte */
- newmode.name = new_id_from_chars("Bs", 2);
- newmode.code = irm_Bs;
- newmode.sign = 1;
- newmode.size = 8;
- newmode.modulo_shift = 32;
-
- mode_Bs = register_mode(&newmode);
-
- /* unsigned byte */
- newmode.name = new_id_from_chars("Bu", 2);
- newmode.code = irm_Bu;
- newmode.arithmetic = irma_twos_complement;
- newmode.sign = 0;
- newmode.size = 8;
- newmode.modulo_shift = 32;
-
- mode_Bu = register_mode(&newmode);
-
- /* signed short integer */
- newmode.name = new_id_from_chars("Hs", 2);
- newmode.code = irm_Hs;
- newmode.sign = 1;
- newmode.size = 16;
- newmode.modulo_shift = 32;
-
- mode_Hs = register_mode(&newmode);
-
- /* unsigned short integer */
- newmode.name = new_id_from_chars("Hu", 2);
- newmode.code = irm_Hu;
- newmode.sign = 0;
- newmode.size = 16;
- newmode.modulo_shift = 32;
-
- mode_Hu = register_mode(&newmode);
-
- /* signed integer */
- newmode.name = new_id_from_chars("Is", 2);
- newmode.code = irm_Is;
- newmode.sign = 1;
- newmode.size = 32;
- newmode.modulo_shift = 32;
-
- mode_Is = register_mode(&newmode);
-
- /* unsigned integer */
- newmode.name = new_id_from_chars("Iu", 2);
- newmode.code = irm_Iu;
- newmode.sign = 0;
- newmode.size = 32;
- newmode.modulo_shift = 32;
-
- mode_Iu = register_mode(&newmode);
-
- /* signed long integer */
- newmode.name = new_id_from_chars("Ls", 2);
- newmode.code = irm_Ls;
- newmode.sign = 1;
- newmode.size = 64;
- newmode.modulo_shift = 64;