Add sign extension to 32-bit for unaligned OS_8 and OS_16 types (to try to solve #40102)

This commit is contained in:
Pierre Muller 2023-01-10 23:53:31 +01:00 committed by FPK
parent f9b1a5acfb
commit 4793447be1

View File

@ -1003,6 +1003,10 @@ implementation
a_load_ref_reg(list,OS_8,OS_32,href,tmpreg2);
list.concat(taicpu.op_reg_reg_const_const(A_BFI,tmpreg,tmpreg2,i*8,8));
end;
if (tosize in [OS_S8,OS_S16]) then
list.concat(taicpu.op_reg_reg(A_SXTH,tmpreg,tmpreg))
else if (tosize in [OS_8,OS_16]) then
list.concat(taicpu.op_reg_reg(A_UXTH,tmpreg,tmpreg));
a_load_reg_reg(list,fromsize,tosize,tmpreg,register);
end;
end;