From b19649192ae7f9a14658369b017dd2e5d23d6fac Mon Sep 17 00:00:00 2001 From: Themis Demetriades Date: Mon, 3 Jun 2024 20:49:21 +0100 Subject: [PATCH] Fix bug with execute immediate value not being shifted w/ S --- src/execute.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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):