]> granicus.if.org Git - postgresql/blobdiff - src/port/qsort_arg.c
Optimize pg_comp_crc32c_sse42 routine slightly, and also use it on x86.
[postgresql] / src / port / qsort_arg.c
index 9e69462f0ad4791780727e69bac62e1d8b354afc..c0aee733be5f6f14971c6f7d309d529bb809d8c0 100644 (file)
@@ -7,9 +7,9 @@
  *       Remove ill-considered "swap_cnt" switch to insertion sort,
  *       in favor of a simple check for presorted input.
  *
- *     CAUTION: if you change this file, see also qsort.c
+ *     CAUTION: if you change this file, see also qsort.c, gen_qsort_tuple.pl
  *
- *     $PostgreSQL: pgsql/src/port/qsort_arg.c,v 1.2 2006/10/04 00:30:14 momjian Exp $
+ *     src/port/qsort_arg.c
  */
 
 /*     $NetBSD: qsort.c,v 1.13 2003/08/07 16:43:42 agc Exp $   */
@@ -33,7 +33,7 @@
  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.     IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
@@ -50,8 +50,6 @@ static char *med3(char *a, char *b, char *c,
         qsort_arg_comparator cmp, void *arg);
 static void swapfunc(char *, char *, size_t, int);
 
-#define min(a, b)      ((a) < (b) ? (a) : (b))
-
 /*
  * Qsort routine based on J. L. Bentley and M. D. McIlroy,
  * "Engineering a sort function",
@@ -75,11 +73,7 @@ do {         \
        (es) % sizeof(long) ? 2 : (es) == sizeof(long)? 0 : 1;
 
 static void
-swapfunc(a, b, n, swaptype)
-char      *a,
-                  *b;
-size_t         n;
-int                    swaptype;
+swapfunc(char *a, char *b, size_t n, int swaptype)
 {
        if (swaptype <= 1)
                swapcode(long, a, b, n);
@@ -184,9 +178,9 @@ loop:SWAPINIT(a, es);
                pc -= es;
        }
        pn = (char *) a + n * es;
-       r = min(pa - (char *) a, pb - pa);
+       r = Min(pa - (char *) a, pb - pa);
        vecswap(a, pb - r, r);
-       r = min(pd - pc, pn - pd - es);
+       r = Min(pd - pc, pn - pd - es);
        vecswap(pb, pn - r, r);
        if ((r = pb - pa) > es)
                qsort_arg(a, r / es, es, cmp, arg);