Fix bug with execute immediate value not being shifted w/ S

This commit is contained in:
Themis Demetriades 2024-06-03 20:49:21 +01:00
parent 5afcb8ef63
commit b19649192a

View File

@ -140,7 +140,7 @@ static void executeDPImmediate(Machine *state, a64inst_instruction *inst) {
uint16_t wideMovImm = inst->data.DPImmediateData.processOpData.wideMovData.immediate; uint16_t wideMovImm = inst->data.DPImmediateData.processOpData.wideMovData.immediate;
// NOTE: Not checking that shiftScalar has valid value for 32bit registers. Possibly add explicit error. // NOTE: Not checking that shiftScalar has valid value for 32bit registers. Possibly add explicit error.
wideMovImm = truncateValue(shiftScalar * DPI_WIDEMOV_SHIFT, regType); wideMovImm = truncateValue(wideMovImm << (shiftScalar * DPI_WIDEMOV_SHIFT), regType);
switch(inst->data.DPImmediateData.processOp) { switch(inst->data.DPImmediateData.processOp) {
case(a64inst_MOVN): case(a64inst_MOVN):