# Mesa (master): gallium/docs: Explain DFRACEXP/DLDEXP.

Corbin Simpson csimpson at kemper.freedesktop.org
Wed Jun 16 18:59:03 PDT 2010

Module: Mesa
Branch: master

Author: Corbin Simpson <MostAwesomeDude at gmail.com>
Date:   Wed Jun 16 18:45:50 2010 -0700

gallium/docs: Explain DFRACEXP/DLDEXP.

---

src/gallium/docs/source/tgsi.rst |   20 +++++++++++++++-----
1 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/src/gallium/docs/source/tgsi.rst b/src/gallium/docs/source/tgsi.rst
index ba844a2..ecab7cb 100644
--- a/src/gallium/docs/source/tgsi.rst
+++ b/src/gallium/docs/source/tgsi.rst
@@ -1125,19 +1125,29 @@ Support for these opcodes is XXX undecided. :T

.. opcode:: DFRACEXP - Convert Number to Fractional and Integral Components

+Like the frexp() routine in many math libraries, this opcode stores the
+exponent of its source to dst0, and the significand to dst1, such that
+:math:dst1 \times 2^{dst0} = src .
+
.. math::

-  dst0.xy = frexp(src.xy, dst1.xy)
+  dst0.xy = exp(src.xy)
+
+  dst1.xy = frac(src.xy)
+
+  dst0.zw = exp(src.zw)
+
+  dst1.zw = frac(src.zw)

-  dst0.zw = frexp(src.zw, dst1.zw)
+.. opcode:: DLDEXP - Multiply Number by Integral Power of 2

-.. opcode:: DLDEXP - Multiple Number by Integral Power of 2
+This opcode is the inverse of :opcode:DFRACEXP.

.. math::

-  dst.xy = ldexp(src0.xy, src1.xy)
+  dst.xy = src0.xy \times 2^{src1.xy}

-  dst.zw = ldexp(src0.zw, src1.zw)
+  dst.zw = src0.zw \times 2^{src1.zw}

.. opcode:: DMIN - Minimum