synchronized with eccp
[cparser] / driver / firm_opt.h
1 #ifndef FIRM_OPT_H
2 #define FIRM_OPT_H
3
4 #include <libfirm/firm_types.h>
5 #include <libfirm/dbginfo.h>
6
7 /** The floating point immediate mode if set. */
8 extern ir_mode *firm_imm_fp_mode;
9
10 enum rts_names {
11   rts_debugbreak,  /**< the name of the __debugbreak() intrinsic */
12   rts_abort,       /**< the name of the abort() function */
13   rts_abs,         /**< the name of the abs() function */
14   rts_labs,        /**< the name of the labs() function */
15   rts_llabs,       /**< the name of the llabs() function */
16   rts_imaxabs,     /**< the name of the imaxabs() function */
17
18   /* double -> double functions */
19   rts_fabs,        /**< the name of the fabs() function */
20   rts_sqrt,        /**< the name of the sqrt() function */
21   rts_cbrt,        /**< the name of the cbrt() function */
22   rts_pow,         /**< the name of the pow() function */
23   rts_exp,         /**< the name of the exp() function */
24   rts_exp2,        /**< the name of the exp2() function */
25   rts_exp10,       /**< the name of the exp10() function */
26   rts_log,         /**< the name of the log() function */
27   rts_log2,        /**< the name of the log2() function */
28   rts_log10,       /**< the name of the log10() function */
29   rts_sin,         /**< the name of the sin() function */
30   rts_cos,         /**< the name of the cos() function */
31   rts_tan,         /**< the name of the tan() function */
32   rts_asin,        /**< the name of the asin() function */
33   rts_acos,        /**< the name of the acos() function */
34   rts_atan,        /**< the name of the atan() function */
35   rts_sinh,        /**< the name of the sinh() function */
36   rts_cosh,        /**< the name of the cosh() function */
37   rts_tanh,        /**< the name of the tanh() function */
38
39   /* float -> float functions */
40   rts_fabsf,       /**< the name of the fabsf() function */
41   rts_sqrtf,       /**< the name of the sqrtf() function */
42   rts_cbrtf,       /**< the name of the cbrtf() function */
43   rts_powf,        /**< the name of the powf() function */
44   rts_expf,        /**< the name of the expf() function */
45   rts_exp2f,       /**< the name of the exp2f() function */
46   rts_exp10f,      /**< the name of the exp10f() function */
47   rts_logf,        /**< the name of the logf() function */
48   rts_log2f,       /**< the name of the log2f() function */
49   rts_log10f,      /**< the name of the log10f() function */
50   rts_sinf,        /**< the name of the sinf() function */
51   rts_cosf,        /**< the name of the cosf() function */
52   rts_tanf,        /**< the name of the tanf() function */
53   rts_asinf,       /**< the name of the asinf() function */
54   rts_acosf,       /**< the name of the acosf() function */
55   rts_atanf,       /**< the name of the atanf() function */
56   rts_sinhf,       /**< the name of the sinhf() function */
57   rts_coshf,       /**< the name of the coshf() function */
58   rts_tanhf,       /**< the name of the tanhf() function */
59
60   /* long double -> long double functions */
61   rts_fabsl,       /**< the name of the fabsl() function */
62   rts_sqrtl,       /**< the name of the sqrtl() function */
63   rts_cbrtl,       /**< the name of the cbrtl() function */
64   rts_powl,        /**< the name of the powl() function */
65   rts_expl,        /**< the name of the expl() function */
66   rts_exp2l,       /**< the name of the exp2l() function */
67   rts_exp10l,      /**< the name of the exp10l() function */
68   rts_logl,        /**< the name of the log() function */
69   rts_log2l,       /**< the name of the log2() function */
70   rts_log10l,      /**< the name of the log10() function */
71   rts_sinl,        /**< the name of the sinl() function */
72   rts_cosl,        /**< the name of the cosl() function */
73   rts_tanl,        /**< the name of the tanl() function */
74   rts_asinl,       /**< the name of the asinl() function */
75   rts_acosl,       /**< the name of the acosl() function */
76   rts_atanl,       /**< the name of the atanl() function */
77   rts_sinhl,       /**< the name of the sinhl() function */
78   rts_coshl,       /**< the name of the coshl() function */
79   rts_tanhl,       /**< the name of the tanhl() function */
80
81   /* string functions */
82   rts_memcpy,      /**< the name of the memcpy() function */
83   rts_memset,      /**< the name of the memset() function */
84   rts_strcmp,      /**< the name of the strcmp() function */
85   rts_strncmp,     /**< the name of the strncmp() function */
86   rts_strlen,      /**< the name of the strlen() function */
87
88   rts_max
89 };
90
91 extern ir_entity_ptr rts_entities[rts_max];
92
93 /* This function is called, whenever a local variable is used before definition. */
94 extern ir_node *uninitialized_local_var(ir_graph *irg, ir_mode *mode, int pos);
95
96 /* Debug printf implementation. */
97 extern void dbg_printf(const char *fmt, ...);
98
99 /* Convert the debug info into human readable form. */
100 extern unsigned dbg_snprint(char *buf, unsigned len, const dbg_info *dbg);
101
102 /* Convert the debug info back. */
103 extern const char *dbg_retrieve(const dbg_info *dbg, unsigned *line);
104
105 /* Do the necessary lowering for compound parameters. */
106 extern void lower_compound_params(void);
107
108 /* Initialize for the Firm-generating back end. */
109 void gen_firm_init(void);
110
111 /* called, after the Firm generation is completed. */
112 void gen_firm_finish(FILE *out, const char *input_filename, int c_mode, int firm_const_exists);
113
114 void gen_Firm_assembler(const char *input_filename);
115
116 /* early initialization. */
117 void firm_early_init(void);
118
119 #endif /* FIRM_OPT_H */