diff --git a/src/execute.c b/src/execute.c index 31d31aa..f82b97f 100644 --- a/src/execute.c +++ b/src/execute.c @@ -140,7 +140,7 @@ static void executeDPImmediate(Machine *state, a64inst_instruction *inst) { uint16_t wideMovImm = inst->data.DPImmediateData.processOpData.wideMovData.immediate; // 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) { case(a64inst_MOVN):