1 /* Copyright (C) 1998 - 2000 by Universitaet Karlsruhe
2 ** All rights reserved.
4 ** Authors: Christian Schaefer
13 # define target_bits 8
17 typedef enum { /* irm is short for `ir mode' */
18 irm_T, // former irm_N
19 irm_f, irm_d, /* irm_e, */
20 irm_c, irm_C, irm_h, irm_H, irm_i, irm_I, irm_l, irm_L,
24 irm_X, irm_M, irm_R, irm_Z,
26 /* according to tech report 1999-44:
27 irm_BB, irm_X, // basic block, execution
28 irm_F, irm_D, irm_E, // float, double, extended
29 irm_B, irm_Bu, irm_H, irm_Hu, irm_I, irm_Iu, irm_L, irm_Lu,
30 // byte, short, int, long
33 irm_b, // internal boolean
43 int ld_align; /* ld means log2 */
51 extern ir_mode *mode_T; /* tuple (none) */
52 extern ir_mode *mode_f; /* signed float */
53 extern ir_mode *mode_d; /* signed double */
54 /* extern ir_mode *mode_e; * signed extended */
55 extern ir_mode *mode_c; /* signed byte (former char) */
56 extern ir_mode *mode_C; /* unsigned byte (former char) */
57 extern ir_mode *mode_h; /* signed short integer */
58 extern ir_mode *mode_H; /* unsigened short integer */
59 extern ir_mode *mode_i; /* signed integer */
60 extern ir_mode *mode_I; /* unsigned integer */
61 extern ir_mode *mode_l; /* signed long integer */
62 extern ir_mode *mode_L; /* unsigned long integer */
63 extern ir_mode *mode_B; /* bits */ // oblivious
64 /* extern ir_mode *mode_c; * char */
65 extern ir_mode *mode_p; /* pointer */
66 extern ir_mode *mode_b; /* internal boolean */
67 extern ir_mode *mode_s; // oblivious
68 extern ir_mode *mode_S; // oblivious
69 extern ir_mode *mode_X; /* execution */
70 extern ir_mode *mode_M; /* memory */
71 extern ir_mode *mode_R; /* block */
72 extern ir_mode *mode_Z; /* infinit integers */ // oblivious
73 extern ir_mode *mode_T; /* tuple (none) */
75 void init_mode (void);
77 modecode get_modecode_of_mode (ir_mode *mode);
78 // void set_modecode_of_mode (ir_mode *mode, modecode code);
79 ident *get_ident_of_mode (ir_mode *mode);
80 ident *get_mode_ident (ir_mode *mode);
82 // void set_ident_of_mode (ir_mode *mode, ident *name);
83 int get_size_of_mode (ir_mode *mode);
84 // void set_size_of_mode (ir_mode *mode, int size);
85 int get_ld_align_of_mode (ir_mode *mode);
86 // void set_ld_align_of_mode (ir_mode *mode, int ld_align);
87 struct tarval *get_min_of_mode (ir_mode *mode);
88 // void set_min_of_mode (ir_mode *mode, struct tarval *min);
89 struct tarval *get_max_of_mode (ir_mode *mode);
90 // void set_max_of_mode (ir_mode *mode, struct tarval *max);
91 struct tarval *get_null_of_mode (ir_mode *mode);
92 // void set_null_of_mode (ir_mode *mode, struct tarval *null);
93 unsigned get_fsigned_of_mode (ir_mode *mode);
94 // void set_fsigned_of_mode (ir_mode *mode, unsigned fsigned);
95 unsigned get_ffloat_of_mode (ir_mode *mode);
96 // void set_ffloat_of_mode (ir_mode *mode, unsigned ffloat);
98 int mode_is_signed (ir_mode *mode);
99 int mode_is_float (ir_mode *mode);
100 int mode_is_int (ir_mode *mode);
101 # define is_chilCHIL(m) ((m) <= irm_L && (m) >= irm_c) // old
102 int mode_is_num (ir_mode *mode);
103 int mode_is_data (ir_mode *mode);
104 int mode_is_datab (ir_mode *mode);
105 int mode_is_dataM (ir_mode *mode);
107 # endif /* _IRMODE_H_ */