|
|
@ -124,7 +124,7 @@ void EmitWriteGlobal128(EmitContext& ctx, Id address, Id value) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
Id EmitLoadStorageU8(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset) { |
|
|
Id EmitLoadStorageU8(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset) { |
|
|
if (ctx.profile.support_descriptor_aliasing) { |
|
|
|
|
|
|
|
|
if (ctx.profile.support_int8 && ctx.profile.support_descriptor_aliasing) { |
|
|
return ctx.OpUConvert(ctx.U32[1], |
|
|
return ctx.OpUConvert(ctx.U32[1], |
|
|
LoadStorage(ctx, binding, offset, ctx.U8, ctx.storage_types.U8, |
|
|
LoadStorage(ctx, binding, offset, ctx.U8, ctx.storage_types.U8, |
|
|
sizeof(u8), &StorageDefinitions::U8)); |
|
|
sizeof(u8), &StorageDefinitions::U8)); |
|
|
@ -135,7 +135,7 @@ Id EmitLoadStorageU8(EmitContext& ctx, const IR::Value& binding, const IR::Value |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
Id EmitLoadStorageS8(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset) { |
|
|
Id EmitLoadStorageS8(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset) { |
|
|
if (ctx.profile.support_descriptor_aliasing) { |
|
|
|
|
|
|
|
|
if (ctx.profile.support_int8 && ctx.profile.support_descriptor_aliasing) { |
|
|
return ctx.OpSConvert(ctx.U32[1], |
|
|
return ctx.OpSConvert(ctx.U32[1], |
|
|
LoadStorage(ctx, binding, offset, ctx.S8, ctx.storage_types.S8, |
|
|
LoadStorage(ctx, binding, offset, ctx.S8, ctx.storage_types.S8, |
|
|
sizeof(s8), &StorageDefinitions::S8)); |
|
|
sizeof(s8), &StorageDefinitions::S8)); |
|
|
@ -146,7 +146,7 @@ Id EmitLoadStorageS8(EmitContext& ctx, const IR::Value& binding, const IR::Value |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
Id EmitLoadStorageU16(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset) { |
|
|
Id EmitLoadStorageU16(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset) { |
|
|
if (ctx.profile.support_descriptor_aliasing) { |
|
|
|
|
|
|
|
|
if (ctx.profile.support_int16 && ctx.profile.support_descriptor_aliasing) { |
|
|
return ctx.OpUConvert(ctx.U32[1], |
|
|
return ctx.OpUConvert(ctx.U32[1], |
|
|
LoadStorage(ctx, binding, offset, ctx.U16, ctx.storage_types.U16, |
|
|
LoadStorage(ctx, binding, offset, ctx.U16, ctx.storage_types.U16, |
|
|
sizeof(u16), &StorageDefinitions::U16)); |
|
|
sizeof(u16), &StorageDefinitions::U16)); |
|
|
@ -157,7 +157,7 @@ Id EmitLoadStorageU16(EmitContext& ctx, const IR::Value& binding, const IR::Valu |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
Id EmitLoadStorageS16(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset) { |
|
|
Id EmitLoadStorageS16(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset) { |
|
|
if (ctx.profile.support_descriptor_aliasing) { |
|
|
|
|
|
|
|
|
if (ctx.profile.support_int16 && ctx.profile.support_descriptor_aliasing) { |
|
|
return ctx.OpSConvert(ctx.U32[1], |
|
|
return ctx.OpSConvert(ctx.U32[1], |
|
|
LoadStorage(ctx, binding, offset, ctx.S16, ctx.storage_types.S16, |
|
|
LoadStorage(ctx, binding, offset, ctx.S16, ctx.storage_types.S16, |
|
|
sizeof(s16), &StorageDefinitions::S16)); |
|
|
sizeof(s16), &StorageDefinitions::S16)); |
|
|
|