From 5986e595ce287dda982042b32d79aeb8b4630e25 Mon Sep 17 00:00:00 2001 From: Nikita Smith Date: Thu, 5 Feb 2026 13:42:45 -0800 Subject: [PATCH] eval type group for F80 and F128 --- src/lib_rdi/rdi.c | 6 ++++-- src/lib_rdi/rdi.h | 6 +++++- src/rdi/rdi.mdesk | 16 +++++++++------- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/lib_rdi/rdi.c b/src/lib_rdi/rdi.c index 78681bbf..ee71d957 100644 --- a/src/lib_rdi/rdi.c +++ b/src/lib_rdi/rdi.c @@ -62,7 +62,7 @@ RDI_U16 rdi_eval_op_ctrlbits_table[54] = { RDI_EVAL_CTRLBITS(0, 0, 0), RDI_EVAL_CTRLBITS(0, 0, 0), -RDI_EVAL_CTRLBITS(1, 1, 0), +RDI_EVAL_CTRLBITS(2, 1, 0), RDI_EVAL_CTRLBITS(2, 0, 0), RDI_EVAL_CTRLBITS(1, 1, 1), RDI_EVAL_CTRLBITS(4, 0, 1), @@ -116,13 +116,15 @@ RDI_EVAL_CTRLBITS(0, 0, 1), RDI_EVAL_CTRLBITS(0, 0, 0), }; -struct {RDI_EvalConversionKind dst_typegroups[RDI_EvalTypeGroup_COUNT];} rdi_eval_typegroup_conversion_kind_matrix[6] = +struct {RDI_EvalConversionKind dst_typegroups[RDI_EvalTypeGroup_COUNT];} rdi_eval_typegroup_conversion_kind_matrix[8] = { {{RDI_EvalConversionKind_OtherToOther, RDI_EvalConversionKind_FromOther, RDI_EvalConversionKind_FromOther, RDI_EvalConversionKind_FromOther, RDI_EvalConversionKind_FromOther}}, {{RDI_EvalConversionKind_ToOther, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal}}, {{RDI_EvalConversionKind_ToOther, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal}}, {{RDI_EvalConversionKind_ToOther, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Legal}}, {{RDI_EvalConversionKind_ToOther, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Noop}}, +{{RDI_EvalConversionKind_ToOther, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal}}, +{{RDI_EvalConversionKind_ToOther, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal}}, {{RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Noop}}, }; diff --git a/src/lib_rdi/rdi.h b/src/lib_rdi/rdi.h index b72a7af9..2fba3f42 100644 --- a/src/lib_rdi/rdi.h +++ b/src/lib_rdi/rdi.h @@ -464,7 +464,9 @@ RDI_EvalTypeGroup_U = 1, RDI_EvalTypeGroup_S = 2, RDI_EvalTypeGroup_F32 = 3, RDI_EvalTypeGroup_F64 = 4, -RDI_EvalTypeGroup_COUNT = 5, +RDI_EvalTypeGroup_F80 = 5, +RDI_EvalTypeGroup_F128 = 6, +RDI_EvalTypeGroup_COUNT = 7, } RDI_EvalTypeGroupEnum; typedef RDI_U8 RDI_EvalConversionKind; @@ -990,6 +992,8 @@ X(U)\ X(S)\ X(F32)\ X(F64)\ +X(F80)\ +X(F128)\ #define RDI_EvalConversionKind_XList \ X(Noop)\ diff --git a/src/rdi/rdi.mdesk b/src/rdi/rdi.mdesk index ba82843e..fb0cf030 100644 --- a/src/rdi/rdi.mdesk +++ b/src/rdi/rdi.mdesk @@ -1275,15 +1275,17 @@ RDI_EvalOpTable: // NOTE(rjf): "ck" -> "conversion kind, when converted to type group", used in square matrix form // e.g. x:0, y:0 means other -> other, x:3, y:1 means uint -> f32, etc. -@table(name value ck0 ck1 ck2 ck3 ck4) +@table(name value ck0 ck1 ck2 ck3 ck4 ck5 ck6) RDI_EvalTypeGroupTable: { - {Other 0 OtherToOther FromOther FromOther FromOther FromOther } - {U 1 ToOther Noop Noop Legal Legal } - {S 2 ToOther Noop Noop Legal Legal } - {F32 3 ToOther Legal Legal Noop Legal } - {F64 4 ToOther Legal Legal Legal Noop } - {COUNT 5 Noop Noop Noop Noop Noop } + {Other 0 OtherToOther FromOther FromOther FromOther FromOther FromOther FromOther} + {U 1 ToOther Noop Noop Legal Legal Legal Legal } + {S 2 ToOther Noop Noop Legal Legal Legal Legal } + {F32 3 ToOther Legal Legal Noop Legal Legal Legal } + {F64 4 ToOther Legal Legal Legal Noop Legal Legal } + {F80 5 ToOther Legal Legal Legal Legal Noop Legal } + {F128 6 ToOther Legal Legal Legal Legal Legal Noop } + {COUNT 7 Noop Noop Noop Noop Noop Noop Noop } } @table(name value error_string)