diff --git a/simX/enc.cpp b/simX/enc.cpp index 16007652..09a3253c 100644 --- a/simX/enc.cpp +++ b/simX/enc.cpp @@ -219,7 +219,13 @@ Instruction *WordDecoder::decode(const std::vector &v, Size &idx, trace_in imeed = 0 | (bits_10_1 << 1) | (bit_11 << 11) | (bits_19_12 << 12) | (bit_20 << 20); - inst.setSrcImm(signExt(imeed, 20, j_immed_mask)); + if (bit_20) + { + imeed |= ~j_immed_mask; + } + + // inst.setSrcImm(signExt(imeed, 20, j_immed_mask)); + inst.setSrcImm(imeed); usedImm = true; trace_inst->valid_inst = true;