X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=blobdiff_plain;f=fold.h;h=693231f2ec6c9448bbb5f217cd86439775dde63d;hp=b29d42275421f00343805ecf900dd9b5e38380ab;hb=031f827da5457ed969bbf66e520105f9600a1229;hpb=db9c37d18bcced1c3b0f1421044155b1d88f0b25 diff --git a/fold.h b/fold.h index b29d422..693231f 100644 --- a/fold.h +++ b/fold.h @@ -21,7 +21,7 @@ struct fold { bool generate(ir_builder *ir); ast_expression *op(const oper_info *info, ast_expression **opexprs); - ast_expression *intrinsic(const char *intrinsic, ast_expression **arg); + ast_expression *intrinsic(const char *intrinsic, size_t n_args, ast_expression **args); static int cond_ternary(ir_value *condval, ast_function *func, ast_ternary *branch); static int cond_ifthen(ir_value *condval, ast_function *func, ast_ifthen *branch); @@ -32,6 +32,7 @@ struct fold { ast_expression *constgen_float(qcfloat_t value, bool inexact); ast_expression *constgen_vector(vec3_t value); ast_expression *constgen_string(const char *str, bool translate); + ast_expression *constgen_string(const std::string &str, bool translate); ast_value *imm_float(size_t index) const { return m_imm_float[index]; } ast_value *imm_vector(size_t index) const { return m_imm_vector[index]; } @@ -82,10 +83,14 @@ protected: ast_expression *intrinsic_exp(ast_value *a); ast_expression *intrinsic_exp2(ast_value *a); ast_expression *intrinsic_expm1(ast_value *a); - ast_expression *intrinsic_mod(ast_value *lhs, ast_value *rhs); ast_expression *intrinsic_pow(ast_value *lhs, ast_value *rhs); + ast_expression *intrinsic_mod(ast_value *lhs, ast_value *rhs); ast_expression *intrinsic_fabs(ast_value *a); + ast_expression* intrinsic_nan(void); + ast_expression* intrinsic_epsilon(void); + ast_expression* intrinsic_inf(void); + static qcfloat_t immvalue_float(ir_value *value); static vec3_t immvalue_vector(ir_value *value);