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