From 95c74964b3e7d3efbf49777a8318866a464b4a98 Mon Sep 17 00:00:00 2001 From: Themis Demetriades Date: Thu, 6 Jun 2024 00:35:48 +0100 Subject: [PATCH] Fix movk to not overwrite entire register for large scalars w/ S --- src/execute.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/execute.c b/src/execute.c index dc0d4d8..cc5d0ba 100644 --- a/src/execute.c +++ b/src/execute.c @@ -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;