Retro video games delivered to your door every month!
Click above to get retro games delivered to your door ever month!
X-Hacker.org- Watcom C Library Reference - <u>synopsis:</u> http://www.X-Hacker.org [<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
Synopsis:
    #include <mmintrin.h>
    __m64 _m_punpcklwd(__m64 *m1, __m64 *m2);

Description:
    The _m_punpcklwd function performs an interleaved unpack of the
    low-order data elements of m1 and m2.  It ignores the high-order words.
    When unpacking from a memory operand, 32 bits are accessed and all are
    utilized by the instruction.  By choosing m1 or m2 to be zero, an
    unpacking of word elements into double-word elements is performed.


                     m2                         m1
         -------------------------  -------------------------
         |  w3 |  w2 |  w1 |  w0 |  |  w3 |  w2 |  w1 |  w0 |
         -------------------------  -------------------------
                        |     |                     |    |
                        V     V                     V    V
                        w3    w1                   w2    w0

                       -------------------------
                       |  w3 |  w2 |  w1 |  w0 |
                       -------------------------
                             result


Returns:
    The result of the interleaved unpacking of the low-order words of two
    multimedia values is returned.

Example:
    #include <stdio.h>
    #include <mmintrin.h>

    #define AS_WORDS "%4.4x %4.4x %4.4x %4.4x"

    __m64   a;
    __m64   b = { 0x0004000300020001 };
    __m64   c = { 0xff7fff800080007f };

    void main()
      {
        a = _m_punpcklwd( b, c );
        printf( "m2="AS_WORDS" "
                "m1="AS_WORDS"\n"
                "mm="AS_WORDS"\n",
            c._16[3], c._16[2], c._16[1], c._16[0],
            b._16[3], b._16[2], b._16[1], b._16[0],
            a._16[3], a._16[2], a._16[1], a._16[0] );
      }

    produces the following:

    m2=ff7f ff80 0080 007f m1=0004 0003 0002 0001
    mm=0080 0002 007f 0001

Classification:
    Intel

Systems:
    MACRO

See Also:
    _m_empty, _m_punpckhbw, _m_punpckhdq, _m_punpckhwd, _m_punpcklbw,
    _m_punpckldq

See Also: _m_empty _m_punpckhbw

Online resources provided by: http://www.X-Hacker.org --- NG 2 HTML conversion by Dave Pearson