diff --git a/src/lib_rdi_format/rdi_format.c b/src/lib_rdi_format/rdi_format.c index 0427a302..563e4b42 100644 --- a/src/lib_rdi_format/rdi_format.c +++ b/src/lib_rdi_format/rdi_format.c @@ -92,7 +92,7 @@ RDI_U8 rdi_section_is_required_table[37] = 0, }; -RDI_U16 rdi_eval_op_ctrlbits_table[50] = +RDI_U16 rdi_eval_op_ctrlbits_table[52] = { RDI_EVAL_CTRLBITS(0, 0, 0), RDI_EVAL_CTRLBITS(0, 0, 0), @@ -143,6 +143,8 @@ RDI_EVAL_CTRLBITS(1, 0, 0), RDI_EVAL_CTRLBITS(1, 2, 1), RDI_EVAL_CTRLBITS(1, 1, 1), RDI_EVAL_CTRLBITS(4, 0, 0), +RDI_EVAL_CTRLBITS(4, 0, 0), +RDI_EVAL_CTRLBITS(8, 0, 0), RDI_EVAL_CTRLBITS(0, 0, 0), }; diff --git a/src/lib_rdi_format/rdi_format.h b/src/lib_rdi_format/rdi_format.h index d16d7924..e985b125 100644 --- a/src/lib_rdi_format/rdi_format.h +++ b/src/lib_rdi_format/rdi_format.h @@ -489,7 +489,9 @@ RDI_EvalOp_Insert = 45, RDI_EvalOp_ValueRead = 46, RDI_EvalOp_ByteSwap = 47, RDI_EvalOp_CallSiteValue = 48, -RDI_EvalOp_COUNT = 49, +RDI_EvalOp_PartialValue = 49, +RDI_EvalOp_PartialValueBit = 50, +RDI_EvalOp_COUNT = 51, } RDI_EvalOpEnum; typedef RDI_U8 RDI_EvalTypeGroup; @@ -1068,6 +1070,8 @@ X(Insert)\ X(ValueRead)\ X(ByteSwap)\ X(CallSiteValue)\ +X(PartialValue)\ +X(PartialValueBit)\ #define RDI_EvalTypeGroup_XList \ X(Other)\ @@ -1539,6 +1543,6 @@ RDI_PROC RDI_U8 *rdi_explanation_string_from_eval_conversion_kind(RDI_EvalConver extern RDI_U16 rdi_section_element_size_table[37]; extern RDI_U8 rdi_section_is_required_table[37]; -extern RDI_U16 rdi_eval_op_ctrlbits_table[50]; +extern RDI_U16 rdi_eval_op_ctrlbits_table[52]; #endif // RDI_FORMAT_H diff --git a/src/rdi_format/rdi_format.mdesk b/src/rdi_format/rdi_format.mdesk index 9816f254..4fadfabd 100644 --- a/src/rdi_format/rdi_format.mdesk +++ b/src/rdi_format/rdi_format.mdesk @@ -1245,56 +1245,58 @@ RDI_LocationRegMemberTable: @table(name value num_decodes num_pops num_pushes) RDI_EvalOpTable: { - {Stop 0 0 0 0} - {Noop 1 0 0 0} - {Cond 2 1 1 0} - {Skip 3 2 0 0} - {MemRead 4 1 1 1} - {RegRead 5 4 0 1} - {RegReadDyn 6 0 1 1} - {FrameOff 7 8 0 1} - {ModuleOff 8 4 0 1} - {TLSOff 9 4 0 1} - {ObjectOff 10 0 0 0} - {CFA 11 0 0 0} - {ConstU8 12 1 0 1} - {ConstU16 13 2 0 1} - {ConstU32 14 4 0 1} - {ConstU64 15 8 0 1} - {ConstU128 16 16 0 1} - {ConstString 17 1 0 1} - {Abs 18 1 1 1} - {Neg 19 1 1 1} - {Add 20 1 2 1} - {Sub 21 1 2 1} - {Mul 22 1 2 1} - {Div 23 1 2 1} - {Mod 24 1 2 1} - {LShift 25 1 2 1} - {RShift 26 1 2 1} - {BitAnd 27 1 2 1} - {BitOr 28 1 2 1} - {BitXor 29 1 2 1} - {BitNot 30 1 1 1} - {LogAnd 31 1 2 1} - {LogOr 32 1 2 1} - {LogNot 33 1 1 1} - {EqEq 34 1 2 1} - {NtEq 35 1 2 1} - {LsEq 36 1 2 1} - {GrEq 37 1 2 1} - {Less 38 1 2 1} - {Grtr 39 1 2 1} - {Trunc 40 1 1 1} - {TruncSigned 41 1 1 1} - {Convert 42 2 1 1} - {Pick 43 1 0 1} - {Pop 44 0 1 0} - {Insert 45 1 0 0} - {ValueRead 46 1 2 1} - {ByteSwap 47 1 1 1} - {CallSiteValue 48 4 0 0} - {COUNT 49 0 0 0} + {Stop 0 0 0 0} + {Noop 1 0 0 0} + {Cond 2 1 1 0} + {Skip 3 2 0 0} + {MemRead 4 1 1 1} + {RegRead 5 4 0 1} + {RegReadDyn 6 0 1 1} + {FrameOff 7 8 0 1} + {ModuleOff 8 4 0 1} + {TLSOff 9 4 0 1} + {ObjectOff 10 0 0 0} + {CFA 11 0 0 0} + {ConstU8 12 1 0 1} + {ConstU16 13 2 0 1} + {ConstU32 14 4 0 1} + {ConstU64 15 8 0 1} + {ConstU128 16 16 0 1} + {ConstString 17 1 0 1} + {Abs 18 1 1 1} + {Neg 19 1 1 1} + {Add 20 1 2 1} + {Sub 21 1 2 1} + {Mul 22 1 2 1} + {Div 23 1 2 1} + {Mod 24 1 2 1} + {LShift 25 1 2 1} + {RShift 26 1 2 1} + {BitAnd 27 1 2 1} + {BitOr 28 1 2 1} + {BitXor 29 1 2 1} + {BitNot 30 1 1 1} + {LogAnd 31 1 2 1} + {LogOr 32 1 2 1} + {LogNot 33 1 1 1} + {EqEq 34 1 2 1} + {NtEq 35 1 2 1} + {LsEq 36 1 2 1} + {GrEq 37 1 2 1} + {Less 38 1 2 1} + {Grtr 39 1 2 1} + {Trunc 40 1 1 1} + {TruncSigned 41 1 1 1} + {Convert 42 2 1 1} + {Pick 43 1 0 1} + {Pop 44 0 1 0} + {Insert 45 1 0 0} + {ValueRead 46 1 2 1} + {ByteSwap 47 1 1 1} + {CallSiteValue 48 4 0 0} + {PartialValue 49 4 0 0} + {PartialValueBit 50 8 0 0} + {COUNT 51 0 0 0} } // NOTE(rjf): "ck" -> "conversion kind, when converted to type group", used in square matrix form