mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 19:48:20 +02:00
Float to uint conversion in consteval
This commit is contained in:
parent
75333a0928
commit
3f9c2fd3f7
2 changed files with 74 additions and 0 deletions
|
@ -176,11 +176,19 @@ static CeOpInfo gOpInfo[] =
|
|||
{"CeOp_Conv_F32_I16", CEOI_FrameRef16, CEOI_FrameRefF32},
|
||||
{"CeOp_Conv_F32_I32", CEOI_FrameRef32, CEOI_FrameRefF32},
|
||||
{"CeOp_Conv_F32_I64", CEOI_FrameRef64, CEOI_FrameRefF32},
|
||||
{"CeOp_Conv_F32_U8", CEOI_FrameRef8, CEOI_FrameRefF32},
|
||||
{"CeOp_Conv_F32_U16", CEOI_FrameRef16, CEOI_FrameRefF32},
|
||||
{"CeOp_Conv_F32_U32", CEOI_FrameRef32, CEOI_FrameRefF32},
|
||||
{"CeOp_Conv_F32_U64", CEOI_FrameRef64, CEOI_FrameRefF32},
|
||||
{"CeOp_Conv_F32_F64", CEOI_FrameRefF32, CEOI_FrameRefF32},
|
||||
{"CeOp_Conv_F64_I8", CEOI_FrameRef8, CEOI_FrameRefF64},
|
||||
{"CeOp_Conv_F64_I16", CEOI_FrameRef16, CEOI_FrameRefF64},
|
||||
{"CeOp_Conv_F64_I32", CEOI_FrameRef32, CEOI_FrameRefF64},
|
||||
{"CeOp_Conv_F64_I64", CEOI_FrameRef64, CEOI_FrameRefF64},
|
||||
{"CeOp_Conv_F64_U8", CEOI_FrameRef8, CEOI_FrameRefF64},
|
||||
{"CeOp_Conv_F64_U16", CEOI_FrameRef16, CEOI_FrameRefF64},
|
||||
{"CeOp_Conv_F64_U32", CEOI_FrameRef32, CEOI_FrameRefF64},
|
||||
{"CeOp_Conv_F64_U64", CEOI_FrameRef64, CEOI_FrameRefF64},
|
||||
{"CeOp_Conv_F64_F32", CEOI_FrameRefF32, CEOI_FrameRefF64},
|
||||
|
||||
CEOPINFO_SIZED_NUMERIC_PLUSF_2("Abs", CEOI_FrameRef, CEOI_FrameRef),
|
||||
|
@ -2266,6 +2274,40 @@ void CeBuilder::Build()
|
|||
break;
|
||||
}
|
||||
break;
|
||||
case BeTypeCode_Float:
|
||||
switch (toTypeCode)
|
||||
{
|
||||
case BeTypeCode_Int8:
|
||||
op = CeOp_Conv_F32_U8;
|
||||
break;
|
||||
case BeTypeCode_Int16:
|
||||
op = CeOp_Conv_F32_U16;
|
||||
break;
|
||||
case BeTypeCode_Int32:
|
||||
op = CeOp_Conv_F32_U32;
|
||||
break;
|
||||
case BeTypeCode_Int64:
|
||||
op = CeOp_Conv_F32_U64;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case BeTypeCode_Double:
|
||||
switch (toTypeCode)
|
||||
{
|
||||
case BeTypeCode_Int8:
|
||||
op = CeOp_Conv_F64_U8;
|
||||
break;
|
||||
case BeTypeCode_Int16:
|
||||
op = CeOp_Conv_F64_U16;
|
||||
break;
|
||||
case BeTypeCode_Int32:
|
||||
op = CeOp_Conv_F64_U32;
|
||||
break;
|
||||
case BeTypeCode_Int64:
|
||||
op = CeOp_Conv_F64_U64;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -7937,6 +7979,30 @@ bool CeContext::Execute(CeFunction* startFunction, uint8* startStackPtr, uint8*
|
|||
case CeOp_Conv_F64_F32:
|
||||
CE_CAST(double, float);
|
||||
break;
|
||||
case CeOp_Conv_F32_U8:
|
||||
CE_CAST(float, uint8);
|
||||
break;
|
||||
case CeOp_Conv_F32_U16:
|
||||
CE_CAST(float, uint16);
|
||||
break;
|
||||
case CeOp_Conv_F32_U32:
|
||||
CE_CAST(float, uint32);
|
||||
break;
|
||||
case CeOp_Conv_F32_U64:
|
||||
CE_CAST(float, uint64);
|
||||
break;
|
||||
case CeOp_Conv_F64_U8:
|
||||
CE_CAST(float, uint8);
|
||||
break;
|
||||
case CeOp_Conv_F64_U16:
|
||||
CE_CAST(float, uint16);
|
||||
break;
|
||||
case CeOp_Conv_F64_U32:
|
||||
CE_CAST(float, uint32);
|
||||
break;
|
||||
case CeOp_Conv_F64_U64:
|
||||
CE_CAST(float, uint64);
|
||||
break;
|
||||
|
||||
case CeOp_Abs_I8:
|
||||
{
|
||||
|
|
|
@ -149,11 +149,19 @@ enum CeOp : int16
|
|||
CeOp_Conv_F32_I16,
|
||||
CeOp_Conv_F32_I32,
|
||||
CeOp_Conv_F32_I64,
|
||||
CeOp_Conv_F32_U8,
|
||||
CeOp_Conv_F32_U16,
|
||||
CeOp_Conv_F32_U32,
|
||||
CeOp_Conv_F32_U64,
|
||||
CeOp_Conv_F32_F64,
|
||||
CeOp_Conv_F64_I8,
|
||||
CeOp_Conv_F64_I16,
|
||||
CeOp_Conv_F64_I32,
|
||||
CeOp_Conv_F64_I64,
|
||||
CeOp_Conv_F64_U8,
|
||||
CeOp_Conv_F64_U16,
|
||||
CeOp_Conv_F64_U32,
|
||||
CeOp_Conv_F64_U64,
|
||||
CeOp_Conv_F64_F32,
|
||||
|
||||
CEOP_SIZED_NUMERIC_PLUSF(Abs),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue