~ubuntu-branches/debian/experimental/cuneiform/experimental

« back to all changes in this revision

Viewing changes to cuneiform_src/Kern/mmx/src/mmx_gra.c

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Baumann
  • Date: 2009-07-10 17:58:10 UTC
  • Revision ID: james.westby@ubuntu.com-20090710175810-rqc89d2i3tki9m89
Tags: upstream-0.7.0+dfsg
ImportĀ upstreamĀ versionĀ 0.7.0+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
Copyright (c) 1993-2008, Cognitive Technologies
 
3
All rights reserved.
 
4
 
 
5
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½,
 
6
ļæ½ļæ½ļæ½ ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½:
 
7
 
 
8
      * ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
9
        ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
10
        ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½.
 
11
      * ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½
 
12
        ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
13
        ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½
 
14
        ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½.
 
15
      * ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ Cognitive Technologies, ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½
 
16
        ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
17
        ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½, ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
18
        ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½.
 
19
 
 
20
ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ "ļæ½ļæ½ļæ½
 
21
ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½" ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½-ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½,
 
22
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ ļæ½ļæ½
 
23
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½. ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
24
ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½
 
25
ļæ½ļæ½ŃØļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½
 
26
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
27
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ (ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½,
 
28
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½-ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
29
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½,
 
30
ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½), ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½
 
31
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½.
 
32
 
 
33
Redistribution and use in source and binary forms, with or without modification,
 
34
are permitted provided that the following conditions are met:
 
35
 
 
36
    * Redistributions of source code must retain the above copyright notice,
 
37
      this list of conditions and the following disclaimer.
 
38
    * Redistributions in binary form must reproduce the above copyright notice,
 
39
      this list of conditions and the following disclaimer in the documentation
 
40
      and/or other materials provided with the distribution.
 
41
    * Neither the name of the Cognitive Technologies nor the names of its
 
42
      contributors may be used to endorse or promote products derived from this
 
43
      software without specific prior written permission.
 
44
 
 
45
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 
46
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 
47
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 
48
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
 
49
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 
50
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 
51
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 
52
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 
53
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 
54
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
55
*/
 
56
 
 
57
#include"mmx.h"
 
58
 
 
59
MMX_FUNC(void) MMX_addshab_cykl(int * src, int cg, signed char * dst, int num)
 
60
{
 
61
#ifdef _MSC_VER
 
62
_asm    {
 
63
                mov         edx,        cg
 
64
                movd        mm6,        edx
 
65
                mov         eax,        src
 
66
                psllq       mm6,        32
 
67
                movd        mm7,        edx
 
68
                mov         ecx,        dst
 
69
                paddd       mm7,        mm6         ;;  mm7=((Int32)cg,(Int32)cg)
 
70
        mov         edx,        num
 
71
                pxor        mm6,        mm6
 
72
        mov         ebx,        edx
 
73
                movq        mm0,        [ecx]
 
74
        shr         edx,        3
 
75
        and         ebx,        7
 
76
        }
 
77
 
 
78
 
 
79
label0:; // process 8 elems
 
80
_asm{
 
81
        movq        mm1,        mm0
 
82
                pcmpgtb     mm6,        mm0         ;;  signums
 
83
                punpckHbw   mm1,        mm6         ;;  a7,a6,a5,a4
 
84
                punpckLbw   mm0,        mm6         ;;  a3,a2,a1,a0
 
85
                movq        mm3,        mm1
 
86
                movq        mm2,        mm0
 
87
                punpckHwd   mm0,        mm6         ;;  a3,a2
 
88
                punpckLwd   mm2,        mm6         ;;  a1,a0
 
89
                movq        mm4,        [eax]
 
90
                pmaddwd     mm2,        mm7         ;;  (a1,a0)*cg
 
91
                movq        mm5,        [eax+8]
 
92
                pmaddwd     mm0,        mm7             ;;  (a3,a2)*cg
 
93
                punpckHwd   mm1,        mm6             ;;      a7,a6
 
94
                punpckLwd   mm3,        mm6             ;;      a5,a4
 
95
                paddd       mm4,        mm2         ;;  (g1,g0)+=(a1,a0)*cg
 
96
                paddd       mm5,        mm0         ;;  (g3,g2)+=(a3,a2)*cg
 
97
                movq        [eax],              mm4
 
98
                movq        [eax+8],    mm5
 
99
                movq        mm4,            [eax+16]
 
100
                pmaddwd     mm3,        mm7         ;;  (a5,a4)*cg
 
101
                movq        mm5,            [eax+24]
 
102
                pmaddwd     mm1,            mm7         ;;  (a7,a6)*cg
 
103
                add                 ecx,            8
 
104
                add                 eax,            32
 
105
        dec         edx
 
106
                paddd       mm4,            mm3         ;;  (g5,g4)+=(a5,a4)*cg
 
107
                paddd       mm5,            mm1         ;;  (g7,g6)+=(a7,a6)*cg
 
108
        pxor        mm6,        mm6         ;;  mm6 = 0
 
109
        movq        [eax-16],   mm4
 
110
        movq        [eax-8],    mm5
 
111
        movq        mm0,            [ecx]
 
112
        jnz         label0
 
113
}
 
114
 
 
115
_asm{
 
116
    EMMS
 
117
    }
 
118
return;
 
119
#endif
 
120
}
 
121
 
 
122
MMX_FUNC(void) MMX_addshab(int * src, int cg, signed char * dst)
 
123
{
 
124
#ifdef _MSC_VER
 
125
_asm    {
 
126
                mov             edx,    cg
 
127
                movd    mm6,    edx
 
128
                mov     eax,    src
 
129
                psllq   mm6,    32
 
130
                movd    mm7,    edx
 
131
                mov     ecx,    dst
 
132
                paddd   mm7,    mm6   // mm7=((Int32)cg,(Int32)cg)
 
133
                pxor    mm6,    mm6
 
134
        }
 
135
 
 
136
 
 
137
// 4*0
 
138
_asm{
 
139
                movq    mm0,    [ecx]
 
140
                movq    mm1,    mm0
 
141
                pcmpgtb mm6,    mm0
 
142
                punpckHbw       mm1,    mm6                     ;;      a7,a6,a5,a4
 
143
                punpckLbw       mm0,    mm6                     ;;      a3,a2,a1,a0
 
144
                movq    mm3,    mm1
 
145
                movq    mm2,    mm0
 
146
                punpckHwd       mm0,    mm6                     ;;      a3,a2
 
147
                punpckLwd       mm2,    mm6                     ;;      a1,a0
 
148
                movq    mm4,    [eax]
 
149
                pmaddwd mm2,    mm7                             ;;  (a1,a0)*cg
 
150
                movq    mm5,    [eax+8]
 
151
                pmaddwd mm0,    mm7                             ;;  (a3,a2)*cg
 
152
                punpckHwd       mm1,    mm6                     ;;      a7,a6
 
153
                punpckLwd       mm3,    mm6                     ;;      a5,a4
 
154
                paddd   mm4,    mm2                             ;;  (g1,g0)+=(a1,a0)*cg
 
155
                paddd   mm5,    mm0                             ;;  (g3,g2)+=(a3,a2)*cg
 
156
                movq    [eax],          mm4
 
157
                movq    [eax+8],        mm5
 
158
                movq    mm4,    [eax+16]
 
159
                pmaddwd mm3,    mm7                     ;;  (a5,a4)*cg
 
160
                movq    mm5,    [eax+24]
 
161
                pmaddwd mm1,    mm7                     ;;  (a7,a6)*cg
 
162
                mov             edx,    eax
 
163
                add             ecx,    8
 
164
                add             eax,    32
 
165
                paddd   mm4,    mm3                     ;;  (g5,g4)+=(a5,a4)*cg
 
166
                paddd   mm5,    mm1                     ;;  (g7,g6)+=(a7,a6)*cg
 
167
    pxor  mm6,  mm6
 
168
                movq    [edx+16],       mm4
 
169
                movq    [edx+24],       mm5
 
170
}
 
171
// 4*1
 
172
_asm{
 
173
                movq    mm0,    [ecx]
 
174
                movq    mm1,    mm0
 
175
                pcmpgtb mm6,    mm0
 
176
                punpckHbw       mm1,    mm6                     ;;      a7,a6,a5,a4
 
177
                punpckLbw       mm0,    mm6                     ;;      a3,a2,a1,a0
 
178
                movq    mm3,    mm1
 
179
                movq    mm2,    mm0
 
180
                punpckHwd       mm0,    mm6                     ;;      a3,a2
 
181
                punpckLwd       mm2,    mm6                     ;;      a1,a0
 
182
                movq    mm4,    [eax]
 
183
                pmaddwd mm2,    mm7                             ;;  (a1,a0)*cg
 
184
                movq    mm5,    [eax+8]
 
185
                pmaddwd mm0,    mm7                             ;;  (a3,a2)*cg
 
186
                punpckHwd       mm1,    mm6                     ;;      a7,a6
 
187
                punpckLwd       mm3,    mm6                     ;;      a5,a4
 
188
                paddd   mm4,    mm2                             ;;  (g1,g0)+=(a1,a0)*cg
 
189
                paddd   mm5,    mm0                             ;;  (g3,g2)+=(a3,a2)*cg
 
190
                movq    [eax],          mm4
 
191
                movq    [eax+8],        mm5
 
192
                movq    mm4,    [eax+16]
 
193
                pmaddwd mm3,    mm7                     ;;  (a5,a4)*cg
 
194
                movq    mm5,    [eax+24]
 
195
                pmaddwd mm1,    mm7                     ;;  (a7,a6)*cg
 
196
                mov             edx,    eax
 
197
                add             ecx,    8
 
198
                add             eax,    32
 
199
                paddd   mm4,    mm3                     ;;  (g5,g4)+=(a5,a4)*cg
 
200
                paddd   mm5,    mm1                     ;;  (g7,g6)+=(a7,a6)*cg
 
201
    pxor  mm6,  mm6
 
202
                movq    [edx+16],       mm4
 
203
                movq    [edx+24],       mm5
 
204
}
 
205
// 4*2
 
206
_asm{
 
207
                movq    mm0,    [ecx]
 
208
                movq    mm1,    mm0
 
209
                pcmpgtb mm6,    mm0
 
210
                punpckHbw       mm1,    mm6                     ;;      a7,a6,a5,a4
 
211
                punpckLbw       mm0,    mm6                     ;;      a3,a2,a1,a0
 
212
                movq    mm3,    mm1
 
213
                movq    mm2,    mm0
 
214
                punpckHwd       mm0,    mm6                     ;;      a3,a2
 
215
                punpckLwd       mm2,    mm6                     ;;      a1,a0
 
216
                movq    mm4,    [eax]
 
217
                pmaddwd mm2,    mm7                             ;;  (a1,a0)*cg
 
218
                movq    mm5,    [eax+8]
 
219
                pmaddwd mm0,    mm7                             ;;  (a3,a2)*cg
 
220
                punpckHwd       mm1,    mm6                     ;;      a7,a6
 
221
                punpckLwd       mm3,    mm6                     ;;      a5,a4
 
222
                paddd   mm4,    mm2                             ;;  (g1,g0)+=(a1,a0)*cg
 
223
                paddd   mm5,    mm0                             ;;  (g3,g2)+=(a3,a2)*cg
 
224
                movq    [eax],          mm4
 
225
                movq    [eax+8],        mm5
 
226
                movq    mm4,    [eax+16]
 
227
                pmaddwd mm3,    mm7                     ;;  (a5,a4)*cg
 
228
                movq    mm5,    [eax+24]
 
229
                pmaddwd mm1,    mm7                     ;;  (a7,a6)*cg
 
230
                mov             edx,    eax
 
231
                add             ecx,    8
 
232
                add             eax,    32
 
233
                paddd   mm4,    mm3                     ;;  (g5,g4)+=(a5,a4)*cg
 
234
                paddd   mm5,    mm1                     ;;  (g7,g6)+=(a7,a6)*cg
 
235
    pxor  mm6,  mm6
 
236
                movq    [edx+16],       mm4
 
237
                movq    [edx+24],       mm5
 
238
}
 
239
// 4*3
 
240
_asm{
 
241
                movq    mm0,    [ecx]
 
242
                movq    mm1,    mm0
 
243
                pcmpgtb mm6,    mm0
 
244
                punpckHbw       mm1,    mm6                     ;;      a7,a6,a5,a4
 
245
                punpckLbw       mm0,    mm6                     ;;      a3,a2,a1,a0
 
246
                movq    mm3,    mm1
 
247
                movq    mm2,    mm0
 
248
                punpckHwd       mm0,    mm6                     ;;      a3,a2
 
249
                punpckLwd       mm2,    mm6                     ;;      a1,a0
 
250
                movq    mm4,    [eax]
 
251
                pmaddwd mm2,    mm7                             ;;  (a1,a0)*cg
 
252
                movq    mm5,    [eax+8]
 
253
                pmaddwd mm0,    mm7                             ;;  (a3,a2)*cg
 
254
                punpckHwd       mm1,    mm6                     ;;      a7,a6
 
255
                punpckLwd       mm3,    mm6                     ;;      a5,a4
 
256
                paddd   mm4,    mm2                             ;;  (g1,g0)+=(a1,a0)*cg
 
257
                paddd   mm5,    mm0                             ;;  (g3,g2)+=(a3,a2)*cg
 
258
                movq    [eax],          mm4
 
259
                movq    [eax+8],        mm5
 
260
                movq    mm4,    [eax+16]
 
261
                pmaddwd mm3,    mm7                     ;;  (a5,a4)*cg
 
262
                movq    mm5,    [eax+24]
 
263
                pmaddwd mm1,    mm7                     ;;  (a7,a6)*cg
 
264
                mov             edx,    eax
 
265
                add             ecx,    8
 
266
                add             eax,    32
 
267
                paddd   mm4,    mm3                     ;;  (g5,g4)+=(a5,a4)*cg
 
268
                paddd   mm5,    mm1                     ;;  (g7,g6)+=(a7,a6)*cg
 
269
    pxor  mm6,  mm6
 
270
                movq    [edx+16],       mm4
 
271
                movq    [edx+24],       mm5
 
272
}
 
273
 
 
274
// 4*4
 
275
_asm{
 
276
                movq    mm0,    [ecx]
 
277
                movq    mm1,    mm0
 
278
                pcmpgtb mm6,    mm0
 
279
                punpckHbw       mm1,    mm6                     ;;      a7,a6,a5,a4
 
280
                punpckLbw       mm0,    mm6                     ;;      a3,a2,a1,a0
 
281
                movq    mm3,    mm1
 
282
                movq    mm2,    mm0
 
283
                punpckHwd       mm0,    mm6                     ;;      a3,a2
 
284
                punpckLwd       mm2,    mm6                     ;;      a1,a0
 
285
                movq    mm4,    [eax]
 
286
                pmaddwd mm2,    mm7                             ;;  (a1,a0)*cg
 
287
                movq    mm5,    [eax+8]
 
288
                pmaddwd mm0,    mm7                             ;;  (a3,a2)*cg
 
289
                punpckHwd       mm1,    mm6                     ;;      a7,a6
 
290
                punpckLwd       mm3,    mm6                     ;;      a5,a4
 
291
                paddd   mm4,    mm2                             ;;  (g1,g0)+=(a1,a0)*cg
 
292
                paddd   mm5,    mm0                             ;;  (g3,g2)+=(a3,a2)*cg
 
293
                movq    [eax],          mm4
 
294
                movq    [eax+8],        mm5
 
295
                movq    mm4,    [eax+16]
 
296
                pmaddwd mm3,    mm7                     ;;  (a5,a4)*cg
 
297
                movq    mm5,    [eax+24]
 
298
                pmaddwd mm1,    mm7                     ;;  (a7,a6)*cg
 
299
                mov             edx,    eax
 
300
                add             ecx,    8
 
301
                add             eax,    32
 
302
                paddd   mm4,    mm3                     ;;  (g5,g4)+=(a5,a4)*cg
 
303
                paddd   mm5,    mm1                     ;;  (g7,g6)+=(a7,a6)*cg
 
304
    pxor  mm6,  mm6
 
305
                movq    [edx+16],       mm4
 
306
                movq    [edx+24],       mm5
 
307
}
 
308
// 4*5
 
309
_asm{
 
310
                movq    mm0,    [ecx]
 
311
                movq    mm1,    mm0
 
312
                pcmpgtb mm6,    mm0
 
313
                punpckHbw       mm1,    mm6                     ;;      a7,a6,a5,a4
 
314
                punpckLbw       mm0,    mm6                     ;;      a3,a2,a1,a0
 
315
                movq    mm3,    mm1
 
316
                movq    mm2,    mm0
 
317
                punpckHwd       mm0,    mm6                     ;;      a3,a2
 
318
                punpckLwd       mm2,    mm6                     ;;      a1,a0
 
319
                movq    mm4,    [eax]
 
320
                pmaddwd mm2,    mm7                             ;;  (a1,a0)*cg
 
321
                movq    mm5,    [eax+8]
 
322
                pmaddwd mm0,    mm7                             ;;  (a3,a2)*cg
 
323
                punpckHwd       mm1,    mm6                     ;;      a7,a6
 
324
                punpckLwd       mm3,    mm6                     ;;      a5,a4
 
325
                paddd   mm4,    mm2                             ;;  (g1,g0)+=(a1,a0)*cg
 
326
                paddd   mm5,    mm0                             ;;  (g3,g2)+=(a3,a2)*cg
 
327
                movq    [eax],          mm4
 
328
                movq    [eax+8],        mm5
 
329
                movq    mm4,    [eax+16]
 
330
                pmaddwd mm3,    mm7                     ;;  (a5,a4)*cg
 
331
                movq    mm5,    [eax+24]
 
332
                pmaddwd mm1,    mm7                     ;;  (a7,a6)*cg
 
333
                mov             edx,    eax
 
334
                add             ecx,    8
 
335
                add             eax,    32
 
336
                paddd   mm4,    mm3                     ;;  (g5,g4)+=(a5,a4)*cg
 
337
                paddd   mm5,    mm1                     ;;  (g7,g6)+=(a7,a6)*cg
 
338
    pxor  mm6,  mm6
 
339
                movq    [edx+16],       mm4
 
340
                movq    [edx+24],       mm5
 
341
}
 
342
// 4*6
 
343
_asm{
 
344
                movq    mm0,    [ecx]
 
345
                movq    mm1,    mm0
 
346
                pcmpgtb mm6,    mm0
 
347
                punpckHbw       mm1,    mm6                     ;;      a7,a6,a5,a4
 
348
                punpckLbw       mm0,    mm6                     ;;      a3,a2,a1,a0
 
349
                movq    mm3,    mm1
 
350
                movq    mm2,    mm0
 
351
                punpckHwd       mm0,    mm6                     ;;      a3,a2
 
352
                punpckLwd       mm2,    mm6                     ;;      a1,a0
 
353
                movq    mm4,    [eax]
 
354
                pmaddwd mm2,    mm7                             ;;  (a1,a0)*cg
 
355
                movq    mm5,    [eax+8]
 
356
                pmaddwd mm0,    mm7                             ;;  (a3,a2)*cg
 
357
                punpckHwd       mm1,    mm6                     ;;      a7,a6
 
358
                punpckLwd       mm3,    mm6                     ;;      a5,a4
 
359
                paddd   mm4,    mm2                             ;;  (g1,g0)+=(a1,a0)*cg
 
360
                paddd   mm5,    mm0                             ;;  (g3,g2)+=(a3,a2)*cg
 
361
                movq    [eax],          mm4
 
362
                movq    [eax+8],        mm5
 
363
                movq    mm4,    [eax+16]
 
364
                pmaddwd mm3,    mm7                     ;;  (a5,a4)*cg
 
365
                movq    mm5,    [eax+24]
 
366
                pmaddwd mm1,    mm7                     ;;  (a7,a6)*cg
 
367
                mov             edx,    eax
 
368
                add             ecx,    8
 
369
                add             eax,    32
 
370
                paddd   mm4,    mm3                     ;;  (g5,g4)+=(a5,a4)*cg
 
371
                paddd   mm5,    mm1                     ;;  (g7,g6)+=(a7,a6)*cg
 
372
    pxor  mm6,  mm6
 
373
                movq    [edx+16],       mm4
 
374
                movq    [edx+24],       mm5
 
375
}
 
376
// 4*7
 
377
_asm{
 
378
                movq    mm0,    [ecx]
 
379
                movq    mm1,    mm0
 
380
                pcmpgtb mm6,    mm0
 
381
                punpckHbw       mm1,    mm6                     ;;      a7,a6,a5,a4
 
382
                punpckLbw       mm0,    mm6                     ;;      a3,a2,a1,a0
 
383
                movq    mm3,    mm1
 
384
                movq    mm2,    mm0
 
385
                punpckHwd       mm0,    mm6                     ;;      a3,a2
 
386
                punpckLwd       mm2,    mm6                     ;;      a1,a0
 
387
                movq    mm4,    [eax]
 
388
                pmaddwd mm2,    mm7                             ;;  (a1,a0)*cg
 
389
                movq    mm5,    [eax+8]
 
390
                pmaddwd mm0,    mm7                             ;;  (a3,a2)*cg
 
391
                punpckHwd       mm1,    mm6                     ;;      a7,a6
 
392
                punpckLwd       mm3,    mm6                     ;;      a5,a4
 
393
                paddd   mm4,    mm2                             ;;  (g1,g0)+=(a1,a0)*cg
 
394
                paddd   mm5,    mm0                             ;;  (g3,g2)+=(a3,a2)*cg
 
395
                movq    [eax],          mm4
 
396
                movq    [eax+8],        mm5
 
397
                movq    mm4,    [eax+16]
 
398
                pmaddwd mm3,    mm7                     ;;  (a5,a4)*cg
 
399
                movq    mm5,    [eax+24]
 
400
                pmaddwd mm1,    mm7                     ;;  (a7,a6)*cg
 
401
                mov             edx,    eax
 
402
                add             ecx,    8
 
403
                add             eax,    32
 
404
                paddd   mm4,    mm3                     ;;  (g5,g4)+=(a5,a4)*cg
 
405
                paddd   mm5,    mm1                     ;;  (g7,g6)+=(a7,a6)*cg
 
406
    pxor  mm6,  mm6
 
407
                movq    [edx+16],       mm4
 
408
                movq    [edx+24],       mm5
 
409
}
 
410
 
 
411
// 4*8
 
412
_asm{
 
413
                movq    mm0,    [ecx]
 
414
                movq    mm1,    mm0
 
415
                pcmpgtb mm6,    mm0
 
416
                punpckHbw       mm1,    mm6                     ;;      a7,a6,a5,a4
 
417
                punpckLbw       mm0,    mm6                     ;;      a3,a2,a1,a0
 
418
                movq    mm3,    mm1
 
419
                movq    mm2,    mm0
 
420
                punpckHwd       mm0,    mm6                     ;;      a3,a2
 
421
                punpckLwd       mm2,    mm6                     ;;      a1,a0
 
422
                movq    mm4,    [eax]
 
423
                pmaddwd mm2,    mm7                             ;;  (a1,a0)*cg
 
424
                movq    mm5,    [eax+8]
 
425
                pmaddwd mm0,    mm7                             ;;  (a3,a2)*cg
 
426
                punpckHwd       mm1,    mm6                     ;;      a7,a6
 
427
                punpckLwd       mm3,    mm6                     ;;      a5,a4
 
428
                paddd   mm4,    mm2                             ;;  (g1,g0)+=(a1,a0)*cg
 
429
                paddd   mm5,    mm0                             ;;  (g3,g2)+=(a3,a2)*cg
 
430
                movq    [eax],          mm4
 
431
                movq    [eax+8],        mm5
 
432
                movq    mm4,    [eax+16]
 
433
                pmaddwd mm3,    mm7                     ;;  (a5,a4)*cg
 
434
                movq    mm5,    [eax+24]
 
435
                pmaddwd mm1,    mm7                     ;;  (a7,a6)*cg
 
436
                mov             edx,    eax
 
437
                add             ecx,    8
 
438
                add             eax,    32
 
439
                paddd   mm4,    mm3                     ;;  (g5,g4)+=(a5,a4)*cg
 
440
                paddd   mm5,    mm1                     ;;  (g7,g6)+=(a7,a6)*cg
 
441
    pxor  mm6,  mm6
 
442
                movq    [edx+16],       mm4
 
443
                movq    [edx+24],       mm5
 
444
}
 
445
// 4*9
 
446
_asm{
 
447
                movq    mm0,    [ecx]
 
448
                movq    mm1,    mm0
 
449
                pcmpgtb mm6,    mm0
 
450
                punpckHbw       mm1,    mm6                     ;;      a7,a6,a5,a4
 
451
                punpckLbw       mm0,    mm6                     ;;      a3,a2,a1,a0
 
452
                movq    mm3,    mm1
 
453
                movq    mm2,    mm0
 
454
                punpckHwd       mm0,    mm6                     ;;      a3,a2
 
455
                punpckLwd       mm2,    mm6                     ;;      a1,a0
 
456
                movq    mm4,    [eax]
 
457
                pmaddwd mm2,    mm7                             ;;  (a1,a0)*cg
 
458
                movq    mm5,    [eax+8]
 
459
                pmaddwd mm0,    mm7                             ;;  (a3,a2)*cg
 
460
                punpckHwd       mm1,    mm6                     ;;      a7,a6
 
461
                punpckLwd       mm3,    mm6                     ;;      a5,a4
 
462
                paddd   mm4,    mm2                             ;;  (g1,g0)+=(a1,a0)*cg
 
463
                paddd   mm5,    mm0                             ;;  (g3,g2)+=(a3,a2)*cg
 
464
                movq    [eax],          mm4
 
465
                movq    [eax+8],        mm5
 
466
                movq    mm4,    [eax+16]
 
467
                pmaddwd mm3,    mm7                     ;;  (a5,a4)*cg
 
468
                movq    mm5,    [eax+24]
 
469
                pmaddwd mm1,    mm7                     ;;  (a7,a6)*cg
 
470
                mov             edx,    eax
 
471
                add             ecx,    8
 
472
                add             eax,    32
 
473
                paddd   mm4,    mm3                     ;;  (g5,g4)+=(a5,a4)*cg
 
474
                paddd   mm5,    mm1                     ;;  (g7,g6)+=(a7,a6)*cg
 
475
    pxor  mm6,  mm6
 
476
                movq    [edx+16],       mm4
 
477
                movq    [edx+24],       mm5
 
478
}
 
479
// 4*10
 
480
_asm{
 
481
                movq    mm0,    [ecx]
 
482
                movq    mm1,    mm0
 
483
                pcmpgtb mm6,    mm0
 
484
                punpckHbw       mm1,    mm6                     ;;      a7,a6,a5,a4
 
485
                punpckLbw       mm0,    mm6                     ;;      a3,a2,a1,a0
 
486
                movq    mm3,    mm1
 
487
                movq    mm2,    mm0
 
488
                punpckHwd       mm0,    mm6                     ;;      a3,a2
 
489
                punpckLwd       mm2,    mm6                     ;;      a1,a0
 
490
                movq    mm4,    [eax]
 
491
                pmaddwd mm2,    mm7                             ;;  (a1,a0)*cg
 
492
                movq    mm5,    [eax+8]
 
493
                pmaddwd mm0,    mm7                             ;;  (a3,a2)*cg
 
494
                punpckHwd       mm1,    mm6                     ;;      a7,a6
 
495
                punpckLwd       mm3,    mm6                     ;;      a5,a4
 
496
                paddd   mm4,    mm2                             ;;  (g1,g0)+=(a1,a0)*cg
 
497
                paddd   mm5,    mm0                             ;;  (g3,g2)+=(a3,a2)*cg
 
498
                movq    [eax],          mm4
 
499
                movq    [eax+8],        mm5
 
500
                movq    mm4,    [eax+16]
 
501
                pmaddwd mm3,    mm7                     ;;  (a5,a4)*cg
 
502
                movq    mm5,    [eax+24]
 
503
                pmaddwd mm1,    mm7                     ;;  (a7,a6)*cg
 
504
                mov             edx,    eax
 
505
    add   ecx,  8
 
506
                add             eax,    32
 
507
                paddd   mm4,    mm3                     ;;  (g5,g4)+=(a5,a4)*cg
 
508
                paddd   mm5,    mm1                     ;;  (g7,g6)+=(a7,a6)*cg
 
509
    pxor  mm6,  mm6
 
510
                movq    [edx+16],       mm4
 
511
                movq    [edx+24],       mm5
 
512
}
 
513
// 4*11
 
514
_asm{
 
515
                movq    mm0,    [ecx]
 
516
                movq    mm1,    mm0
 
517
                pcmpgtb mm6,    mm0
 
518
                punpckHbw       mm1,    mm6                     ;;      a7,a6,a5,a4
 
519
                punpckLbw       mm0,    mm6                     ;;      a3,a2,a1,a0
 
520
                movq    mm3,    mm1
 
521
                movq    mm2,    mm0
 
522
                punpckHwd       mm0,    mm6                     ;;      a3,a2
 
523
                punpckLwd       mm2,    mm6                     ;;      a1,a0
 
524
                movq    mm4,    [eax]
 
525
                pmaddwd mm2,    mm7                             ;;  (a1,a0)*cg
 
526
                movq    mm5,    [eax+8]
 
527
                pmaddwd mm0,    mm7                             ;;  (a3,a2)*cg
 
528
                punpckHwd       mm1,    mm6                     ;;      a7,a6
 
529
                punpckLwd       mm3,    mm6                     ;;      a5,a4
 
530
                paddd   mm4,    mm2                             ;;  (g1,g0)+=(a1,a0)*cg
 
531
                paddd   mm5,    mm0                             ;;  (g3,g2)+=(a3,a2)*cg
 
532
                movq    [eax],          mm4
 
533
                movq    [eax+8],        mm5
 
534
                movq    mm4,    [eax+16]
 
535
                pmaddwd mm3,    mm7                     ;;  (a5,a4)*cg
 
536
                movq    mm5,    [eax+24]
 
537
                pmaddwd mm1,    mm7                     ;;  (a7,a6)*cg
 
538
                mov             edx,    eax
 
539
                add             ecx,    8
 
540
                add             eax,    32
 
541
                paddd   mm4,    mm3                     ;;  (g5,g4)+=(a5,a4)*cg
 
542
                paddd   mm5,    mm1                     ;;  (g7,g6)+=(a7,a6)*cg
 
543
    pxor  mm6,  mm6
 
544
                movq    [edx+16],       mm4
 
545
                movq    [edx+24],       mm5
 
546
}
 
547
 
 
548
// last portion 48 = 4*12
 
549
_asm{
 
550
    movq        mm0,    [ecx]
 
551
    movq        mm1,    mm0
 
552
    pcmpgtb     MM6,    MM0
 
553
    punpckHbw   mm1,    mm6
 
554
    punpckLbw   mm0,    mm6
 
555
    movq        mm3,    mm1
 
556
    movq        mm2,    mm0
 
557
    punpckHwd   mm0,    mm6
 
558
    punpckLwd   mm2,    mm6
 
559
    movq        mm4,    [eax]
 
560
    pmaddwd     mm2,    mm7
 
561
    movq        mm5,    [eax+8]
 
562
    pmaddwd     mm0,    mm7
 
563
    punpckHwd   mm1,    mm6
 
564
    punpckLwd   mm3,    mm6
 
565
    paddd       mm4,    mm2
 
566
    paddd       mm5,    mm0
 
567
    movq        [eax],          mm4
 
568
    movq        [eax+8],        mm5
 
569
 
 
570
    EMMS
 
571
    }
 
572
#endif
 
573
}