eval type group for F80 and F128

This commit is contained in:
Nikita Smith
2026-02-05 17:43:20 -08:00
parent 7d4a64aae6
commit 5986e595ce
3 changed files with 18 additions and 10 deletions
+4 -2
View File
@@ -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}},
};
+5 -1
View File
@@ -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)\
+9 -7
View File
@@ -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)