UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
syms_eval.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2/* date = December 8th 2021 11:42 am */
3
4#ifndef SYMS_EVAL_H
5#define SYMS_EVAL_H
6
8//~ allen: Syms Eval Meta Code
9
11
13//~ allen: Syms Eval Bytecode Helper Types
14
21
22enum{
23 // apears in IR tree
25
26 // apears in IR graph
28
30};
31
39
40typedef struct SYMS_EvalIRTree{
42 union{
43 struct{
46 };
47 };
49
55
61
67
69//~ allen: Syms Eval Nil Values
70
72
74//~ allen: Syms Eval Functions
75
76//- bytecode helper functions
77
81
83 SYMS_EvalOpParams params);
86
89
92 SYMS_RegID reg_id);
93
94//- bytecode analysis functions
95
97
98//- bytecode encoder
99
101
102//- ir tree helpers functions
103
111 SYMS_EvalIRTree *r);
115
116#endif //SYMS_EVAL_H
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define op
float v
Definition radaudio_mdct.cpp:62
Definition syms_eval.h:40
struct SYMS_EvalIRTree * children[3]
Definition syms_eval.h:44
SYMS_EvalOpParams params
Definition syms_eval.h:45
SYMS_U32 op
Definition syms_eval.h:41
Definition syms_eval.h:56
SYMS_EvalOpNode * first
Definition syms_eval.h:57
SYMS_EvalOpNode * last
Definition syms_eval.h:58
SYMS_U64 byte_count
Definition syms_eval.h:59
Definition syms_eval.h:50
SYMS_U8 op
Definition syms_eval.h:52
SYMS_EvalOpParams params
Definition syms_eval.h:53
struct SYMS_EvalOpNode * next
Definition syms_eval.h:51
Definition syms_eval.h:62
SYMS_EvalOpList op_list
Definition syms_eval.h:63
SYMS_EvalMode mode
Definition syms_eval.h:64
SYMS_B32 is_parameter
Definition syms_eval.h:65
Definition syms_regs.h:49
Definition syms_base.h:296
#define SYMS_READ_ONLY
Definition syms_base.h:57
#define SYMS_API
Definition syms_base.h:29
SYMS_U32 SYMS_RegID
Definition syms_base.h:107
SYMS_S32 SYMS_B32
Definition syms_base.h:99
#define SYMS_GLOBAL
Definition syms_base.h:42
uint32_t SYMS_U32
Definition syms_crt_overrides.h:38
uint64_t SYMS_U64
Definition syms_crt_overrides.h:39
uint16_t SYMS_U16
Definition syms_crt_overrides.h:37
int64_t SYMS_S64
Definition syms_crt_overrides.h:35
uint8_t SYMS_U8
Definition syms_crt_overrides.h:36
#define SYMS_Arena
Definition syms_default_arena.h:61
SYMS_API SYMS_String8 syms_eval_bytecode_from_op_list(SYMS_Arena *arena, SYMS_EvalOpList *list)
Definition syms_eval.c:167
SYMS_API void syms_eval_op_push_bytecode(SYMS_Arena *arena, SYMS_EvalOpList *list, SYMS_String8 bytecode)
Definition syms_eval.c:61
SYMS_API SYMS_EvalIRTree * syms_eval_ir_tree_binary_op_u(SYMS_Arena *arena, SYMS_EvalOp op, SYMS_EvalIRTree *l, SYMS_EvalIRTree *r)
Definition syms_eval.c:262
SYMS_API SYMS_EvalIRTree * syms_eval_ir_tree_conditional(SYMS_Arena *arena, SYMS_EvalIRTree *c, SYMS_EvalIRTree *l, SYMS_EvalIRTree *r)
Definition syms_eval.c:268
SYMS_API void syms_eval_op_encode_reg_section(SYMS_Arena *arena, SYMS_EvalOpList *list, SYMS_RegSection sec)
Definition syms_eval.c:126
SYMS_API SYMS_EvalOpParams syms_eval_op_params_2u8(SYMS_U8 p1, SYMS_U8 p2)
Definition syms_eval.c:25
SYMS_READ_ONLY SYMS_GLOBAL SYMS_EvalIRTree syms_eval_ir_tree_nil
Definition syms_eval.h:71
SYMS_API SYMS_EvalIRTree * syms_eval_ir_tree_const_u(SYMS_Arena *arena, SYMS_U64 v)
Definition syms_eval.c:221
SYMS_EvalMode
Definition syms_eval.h:15
@ SYMS_EvalMode_Register
Definition syms_eval.h:19
@ SYMS_EvalMode_Address
Definition syms_eval.h:18
@ SYMS_EvalMode_Nil
Definition syms_eval.h:16
@ SYMS_EvalMode_Value
Definition syms_eval.h:17
SYMS_API void syms_eval_op_encode_s(SYMS_Arena *arena, SYMS_EvalOpList *list, SYMS_S64 s)
Definition syms_eval.c:104
SYMS_API void syms_eval_op_encode_reg(SYMS_Arena *arena, SYMS_EvalOpList *list, SYMS_Arch arch, SYMS_RegID reg_id)
Definition syms_eval.c:132
@ SYMS_EvalIRExtKind_COUNT
Definition syms_eval.h:29
@ SYMS_EvalIRExtKind_Noop
Definition syms_eval.h:27
@ SYMS_EvalIRExtKind_Bytecode
Definition syms_eval.h:24
SYMS_API void syms_eval_op_push(SYMS_Arena *arena, SYMS_EvalOpList *list, SYMS_EvalOp op, SYMS_EvalOpParams params)
Definition syms_eval.c:41
SYMS_API void syms_eval_op_list_concat_in_place(SYMS_EvalOpList *left_dst, SYMS_EvalOpList *right_destroyed)
Definition syms_eval.c:73
SYMS_API SYMS_EvalOpParams syms_eval_op_params(SYMS_U64 p)
Definition syms_eval.c:18
SYMS_API void syms_eval_op_encode_u(SYMS_Arena *arena, SYMS_EvalOpList *list, SYMS_U64 u)
Definition syms_eval.c:89
SYMS_API SYMS_EvalIRTree * syms_eval_ir_tree_unary_op(SYMS_Arena *arena, SYMS_EvalOp op, SYMS_EvalTypeGroup group, SYMS_EvalIRTree *c)
Definition syms_eval.c:242
SYMS_API SYMS_EvalIRTree * syms_eval_ir_tree_binary_op(SYMS_Arena *arena, SYMS_EvalOp op, SYMS_EvalTypeGroup group, SYMS_EvalIRTree *l, SYMS_EvalIRTree *r)
Definition syms_eval.c:251
SYMS_API SYMS_EvalIRTree * syms_eval_ir_tree_bytecode_no_copy(SYMS_Arena *arena, SYMS_String8 bytecode)
Definition syms_eval.c:278
SYMS_API SYMS_EvalOpParams syms_eval_op_params_2u16(SYMS_U16 p1, SYMS_U16 p2)
Definition syms_eval.c:33
SYMS_API SYMS_B32 syms_eval_opcode_type_compatible(SYMS_EvalOp op, SYMS_EvalTypeGroup group)
Definition syms_eval.c:140
SYMS_Arch
Definition syms_meta_base.h:6
SYMS_EvalOp
Definition syms_meta_eval.h:6
@ SYMS_EvalOp_COUNT
Definition syms_meta_eval.h:50
SYMS_EvalTypeGroup
Definition syms_meta_eval.h:62
Definition syms_eval.h:32
SYMS_U8 u8[8]
Definition syms_eval.h:33
SYMS_U64 u64[1]
Definition syms_eval.h:36
SYMS_U16 u16[4]
Definition syms_eval.h:34
SYMS_String8 data
Definition syms_eval.h:37
SYMS_U32 u32[2]
Definition syms_eval.h:35