util: make macros MIN3, MAX3, MIN4, MAX4 little more efficient
authorMarek Olšák <maraeo@gmail.com>
Wed, 27 Apr 2011 10:54:24 +0000 (12:54 +0200)
committerMarek Olšák <maraeo@gmail.com>
Wed, 27 Apr 2011 11:16:35 +0000 (13:16 +0200)
src/gallium/auxiliary/util/u_math.h

index e3d4c06b6f9828058ec18f3804fb99462c348545..dad6a101fd7d23a6e3746e8a9f62b842adf2d310 100644 (file)
@@ -581,11 +581,11 @@ util_bswap16(uint16_t n)
 #define MIN2( A, B )   ( (A)<(B) ? (A) : (B) )
 #define MAX2( A, B )   ( (A)>(B) ? (A) : (B) )
 
-#define MIN3( A, B, C ) MIN2( MIN2( A, B ), C )
-#define MAX3( A, B, C ) MAX2( MAX2( A, B ), C )
+#define MIN3( A, B, C ) ((A) < (B) ? MIN2(A, C) : MIN2(B, C))
+#define MAX3( A, B, C ) ((A) > (B) ? MAX2(A, C) : MAX2(B, C))
 
-#define MIN4( A, B, C, D ) MIN2( MIN2( A, B ), MIN2(C, D) )
-#define MAX4( A, B, C, D ) MAX2( MAX2( A, B ), MAX2(C, D) )
+#define MIN4( A, B, C, D ) ((A) < (B) ? MIN3(A, C, D) : MIN3(B, C, D))
+#define MAX4( A, B, C, D ) ((A) > (B) ? MAX3(A, C, D) : MAX3(B, C, D))
 
 
 /**