Fix movk to not overwrite entire register for large scalars w/ S

This commit is contained in:
Themis Demetriades 2024-06-06 00:35:48 +01:00
parent 7b1e6314a7
commit 95c74964b3

View File

@ -169,7 +169,7 @@ static void executeDPImmediate(Machine *state, a64inst_instruction *inst) {
case(a64inst_MOVK):;
dword result = readRegister(state, dest, regType);
result = (result & ~(((1 << DPI_WIDEMOV_SHIFT) - 1) << shiftScalar * DPI_WIDEMOV_SHIFT)) | wideMovImm;
result = (result & ~(((1lu << DPI_WIDEMOV_SHIFT) - 1) << shiftScalar * DPI_WIDEMOV_SHIFT)) | wideMovImm;
writeRegister(state, dest, regType, result);
break;