From fa184730af2f2be094aa9f37cd3abf58d10f79ea Mon Sep 17 00:00:00 2001 From: Bertrand Augereau Date: Sun, 22 Jun 2003 11:52:40 +0000 Subject: Reduced the number of shifts in highly used functions in Super2xSaI and SuperEagle svn-id: r8604 --- common/scaler.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'common/scaler.cpp') diff --git a/common/scaler.cpp b/common/scaler.cpp index c10bcccfab..1607fef214 100644 --- a/common/scaler.cpp +++ b/common/scaler.cpp @@ -90,17 +90,19 @@ static inline int GetResult(uint32 A, uint32 B, uint32 C, uint32 D) { } static inline uint32 INTERPOLATE(uint32 A, uint32 B) { - if (A != B) { - return (((A & colorMask) >> 1) + ((B & colorMask) >> 1) + (A & B & lowPixelMask)); + if (A != B) { + // Non regression test + assert ((((A & colorMask) + (B & colorMask)) >> 1) + (A & B & lowPixelMask)==(((A & colorMask) >> 1) + ((B & colorMask) >> 1) + (A & B & lowPixelMask))); + return (((A & colorMask) + (B & colorMask)) >> 1) + (A & B & lowPixelMask); } else return A; } static inline uint32 Q_INTERPOLATE(uint32 A, uint32 B, uint32 C, uint32 D) { - register uint32 x = ((A & qcolorMask) >> 2) + - ((B & qcolorMask) >> 2) + ((C & qcolorMask) >> 2) + ((D & qcolorMask) >> 2); - register uint32 y = (A & qlowpixelMask) + - (B & qlowpixelMask) + (C & qlowpixelMask) + (D & qlowpixelMask); + register uint32 x = ((A & qcolorMask) + (B & qcolorMask) + (C & qcolorMask) + (D & qcolorMask))>>2; + // Non regression test + assert (x==((A & qcolorMask) >> 2) + ((B & qcolorMask) >> 2) + ((C & qcolorMask) >> 2) + ((D & qcolorMask) >> 2)); + register uint32 y = (A & qlowpixelMask) + (B & qlowpixelMask) + (C & qlowpixelMask) + (D & qlowpixelMask); y = (y >> 2) & qlowpixelMask; return x + y; -- cgit v1.2.3