mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-07-22 10:04:39 +00:00
also need to zero extend u8/u16 to u32 result
This commit is contained in:
parent
97f7043330
commit
5b6f9f7820
@ -272,14 +272,12 @@ 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);
|
||||
|
@ -258,18 +258,16 @@ void Translator::BUFFER_LOAD(u32 num_dwords, bool is_inst_typed, bool is_buffer_
|
||||
} else {
|
||||
IR::Value value;
|
||||
switch (scalar_width) {
|
||||
case 8:
|
||||
value = ir.LoadBufferU8(handle, address, buffer_info);
|
||||
if (is_signed) {
|
||||
value = ir.SConvert(32, IR::U8{value});
|
||||
}
|
||||
case 8: {
|
||||
IR::U8 byte_val = ir.LoadBufferU8(handle, address, buffer_info);
|
||||
value = is_signed ? ir.SConvert(32, byte_val) : ir.UConvert(32, byte_val);
|
||||
break;
|
||||
case 16:
|
||||
value = ir.LoadBufferU16(handle, address, buffer_info);
|
||||
if (is_signed) {
|
||||
value = ir.SConvert(32, IR::U16{value});
|
||||
}
|
||||
}
|
||||
case 16: {
|
||||
IR::U16 short_val = ir.LoadBufferU16(handle, address, buffer_info);
|
||||
value = is_signed ? ir.SConvert(32, short_val) : ir.UConvert(32, short_val);
|
||||
break;
|
||||
}
|
||||
case 32:
|
||||
value = ir.LoadBufferU32(num_dwords, handle, address, buffer_info);
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user