initialize s16/s8 types

This commit is contained in:
Frodo Baggins 2025-07-11 13:43:04 -07:00
parent d7a45554ad
commit efc6262c9e
2 changed files with 4 additions and 0 deletions

View File

@ -272,12 +272,14 @@ Id EmitConvertU32U8(EmitContext& ctx, Id value) {
}
Id EmitConvertS32S8(EmitContext& ctx, Id value) {
ASSERT(ctx.profile.support_int8); // TODO
const Id as_s8 = ctx.OpBitcast(ctx.S8, value);
const Id as_s32 = ctx.OpSConvert(ctx.S32[1], as_s8);
return ctx.OpBitcast(ctx.U32[1], as_s32);
}
Id EmitConvertS32S16(EmitContext& ctx, Id value) {
ASSERT(ctx.profile.support_int16); // TODO
const Id as_s16 = ctx.OpBitcast(ctx.S16, value);
const Id as_s32 = ctx.OpSConvert(ctx.S32[1], as_s16);
return ctx.OpBitcast(ctx.U32[1], as_s32);

View File

@ -117,7 +117,9 @@ void EmitContext::DefineArithmeticTypes() {
void_id = Name(TypeVoid(), "void_id");
U1[1] = Name(TypeBool(), "bool_id");
U8 = Name(TypeUInt(8), "u8_id");
S8 = Name(TypeSInt(8), "i8_id");
U16 = Name(TypeUInt(16), "u16_id");
S16 = Name(TypeSInt(16), "i16_id");
if (info.uses_fp16) {
F16[1] = Name(TypeFloat(16), "f16_id");
U16 = Name(TypeUInt(16), "u16_id");