diff --git a/core/rounder.h b/core/rounder.h index 99749fa..1eeefd4 100644 --- a/core/rounder.h +++ b/core/rounder.h @@ -223,8 +223,13 @@ namespace symfpu { ubv roundedSignificand(conditionalIncrement(roundUp, extractedSignificand)); ubv overflowBit(roundedSignificand.extract(targetWidth, targetWidth) & ubv(roundUp)); - ubv carryUpMask((overflowBit | ubv(knownLeadingOne)).append(ubv::zero(targetWidth - 1))); // Cheaper than conditional shift - + // Cheaper than conditional shift + ubv carryUpMask(overflowBit | ubv(knownLeadingOne)); + if (targetWidth > 1) + { + carryUpMask = carryUpMask.append(ubv::zero(targetWidth - 1)); + } + // Build result significandRounderResult result(roundedSignificand.extract(targetWidth-1,0) | carryUpMask, overflowBit.isAllOnes());