summaryrefslogtreecommitdiff
path: root/src/atiutil.c
diff options
context:
space:
mode:
authorEric Anholt <anholt@freebsd.org>2004-07-22 06:58:15 +0000
committerEric Anholt <anholt@freebsd.org>2004-07-22 06:58:15 +0000
commitd78bd665b20eb68e74b9b4c2d04fa177cc4447c6 (patch)
tree4ab0eac8a0344d2cdcbe0e41d257238f0e1def94 /src/atiutil.c
parentbea8085e04136b0ef513c17bb65c54069ec531e1 (diff)
Diffstat (limited to 'src/atiutil.c')
-rw-r--r--src/atiutil.c114
1 files changed, 0 insertions, 114 deletions
diff --git a/src/atiutil.c b/src/atiutil.c
deleted file mode 100644
index e7bb412..0000000
--- a/src/atiutil.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atiutil.c,v 1.8 2003/01/01 19:16:34 tsi Exp $ */
-/*
- * Copyright 1997 through 2003 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting documentation, and
- * that the name of Marc Aurele La France not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. Marc Aurele La France makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as-is" without express or implied warranty.
- *
- * MARC AURELE LA FRANCE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
- * EVENT SHALL MARC AURELE LA FRANCE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include "atiutil.h"
-
-/*
- * ATIReduceRatio --
- *
- * Reduce a fraction by factoring out the largest common divider of the
- * fraction's numerator and denominator.
- */
-void
-ATIReduceRatio
-(
- int *Numerator,
- int *Denominator
-)
-{
- int Multiplier, Divider, Remainder;
-
- Multiplier = *Numerator;
- Divider = *Denominator;
-
- while ((Remainder = Multiplier % Divider))
- {
- Multiplier = Divider;
- Divider = Remainder;
- }
-
- *Numerator /= Divider;
- *Denominator /= Divider;
-}
-
-/*
- * ATIDivide --
- *
- * Using integer arithmetic and avoiding overflows, this function finds the
- * rounded integer that best approximates
- *
- * Numerator Shift
- * ----------- * 2
- * Denominator
- *
- * using the specified rounding (floor (<0), nearest (=0) or ceiling (>0)).
- */
-int
-ATIDivide
-(
- int Numerator,
- int Denominator,
- int Shift,
- const int RoundingKind
-)
-{
- int Rounding = 0; /* Default to floor */
-
-#define MaxInt ((int)((unsigned int)(-1) >> 2))
-
- ATIReduceRatio(&Numerator, &Denominator);
-
- /* Deal with left shifts but try to keep the denominator even */
- if (Denominator & 1)
- {
- if (Denominator <= MaxInt)
- {
- Denominator <<= 1;
- Shift++;
- }
- }
- else while ((Shift > 0) && !(Denominator & 3))
- {
- Denominator >>= 1;
- Shift--;
- }
-
- /* Deal with right shifts */
- while (Shift < 0)
- {
- if ((Numerator & 1) && (Denominator <= MaxInt))
- Denominator <<= 1;
- else
- Numerator >>= 1;
-
- Shift++;
- }
-
- if (!RoundingKind) /* Nearest */
- Rounding = Denominator >> 1;
- else if (RoundingKind > 0) /* Ceiling */
- Rounding = Denominator - 1;
-
- return ((Numerator / Denominator) << Shift) +
- ((((Numerator % Denominator) << Shift) + Rounding) / Denominator);
-}