1 #ifndef GMQCC_INTRIN_HDR
2 #define GMQCC_INTRIN_HDR
14 struct intrin_func_t {
15 ast_expression *(intrin::*function)();
23 intrin(parser_t *parser);
25 ast_expression *debug_typestring();
26 ast_expression *do_fold(ast_value *val, ast_expression **exprs);
27 ast_expression *func_try(size_t offset, const char *compare);
28 ast_expression *func_self(const char *name, const char *from);
29 ast_expression *func(const char *name);
32 lex_ctx_t ctx() const;
33 ast_function *value(ast_value **out, const char *name, qcint_t vtype);
34 void reg(ast_value *const value, ast_function *const func);
36 ast_expression *nullfunc();
37 ast_expression *isfinite_();
38 ast_expression *isinf_();
39 ast_expression *isnan_();
40 ast_expression *isnormal_();
41 ast_expression *signbit_();
42 ast_expression *acosh_();
43 ast_expression *asinh_();
44 ast_expression *atanh_();
45 ast_expression *exp_();
46 ast_expression *exp2_();
47 ast_expression *expm1_();
48 ast_expression *pow_();
49 ast_expression *mod_();
50 ast_expression *fabs_();
51 ast_expression *epsilon_();
52 ast_expression *nan_();
53 ast_expression *inf_();
54 ast_expression *ln_();
55 ast_expression *log_variant(const char *name, float base);
56 ast_expression *log_();
57 ast_expression *log10_();
58 ast_expression *log2_();
59 ast_expression *logb_();
60 ast_expression *shift_variant(const char *name, size_t instr);
61 ast_expression *lshift();
62 ast_expression *rshift();
64 void error(const char *fmt, ...);
69 std::vector<intrin_func_t> m_intrinsics;
70 std::vector<ast_expression*> m_generated;