vp9_intrapred_ssse3.asm revision 91037db265ecdd914a26e056cf69207b4f50924e
1;
2;  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3;
4;  Use of this source code is governed by a BSD-style license
5;  that can be found in the LICENSE file in the root of the source
6;  tree. An additional intellectual property rights grant can be found
7;  in the file PATENTS.  All contributing project authors may
8;  be found in the AUTHORS file in the root of the source tree.
9;
10
11%include "third_party/x86inc/x86inc.asm"
12
13SECTION .text
14
15INIT_MMX ssse3
16cglobal h_predictor_4x4, 2, 4, 3, dst, stride, line, left
17  movifnidn          leftq, leftmp
18  add                leftq, 4
19  mov                lineq, -2
20  pxor                  m0, m0
21.loop:
22  movd                  m1, [leftq+lineq*2  ]
23  movd                  m2, [leftq+lineq*2+1]
24  pshufb                m1, m0
25  pshufb                m2, m0
26  movd      [dstq        ], m1
27  movd      [dstq+strideq], m2
28  lea                 dstq, [dstq+strideq*2]
29  inc                lineq
30  jnz .loop
31  REP_RET
32
33INIT_MMX ssse3
34cglobal h_predictor_8x8, 2, 4, 3, dst, stride, line, left
35  movifnidn          leftq, leftmp
36  add                leftq, 8
37  mov                lineq, -4
38  pxor                  m0, m0
39.loop:
40  movd                  m1, [leftq+lineq*2  ]
41  movd                  m2, [leftq+lineq*2+1]
42  pshufb                m1, m0
43  pshufb                m2, m0
44  movq      [dstq        ], m1
45  movq      [dstq+strideq], m2
46  lea                 dstq, [dstq+strideq*2]
47  inc                lineq
48  jnz .loop
49  REP_RET
50
51INIT_XMM ssse3
52cglobal h_predictor_16x16, 2, 4, 3, dst, stride, line, left
53  movifnidn          leftq, leftmp
54  add                leftq, 16
55  mov                lineq, -8
56  pxor                  m0, m0
57.loop:
58  movd                  m1, [leftq+lineq*2  ]
59  movd                  m2, [leftq+lineq*2+1]
60  pshufb                m1, m0
61  pshufb                m2, m0
62  mova      [dstq        ], m1
63  mova      [dstq+strideq], m2
64  lea                 dstq, [dstq+strideq*2]
65  inc                lineq
66  jnz .loop
67  REP_RET
68
69INIT_XMM ssse3
70cglobal h_predictor_32x32, 2, 4, 3, dst, stride, line, left
71  movifnidn          leftq, leftmp
72  add                leftq, 32
73  mov                lineq, -16
74  pxor                  m0, m0
75.loop:
76  movd                  m1, [leftq+lineq*2  ]
77  movd                  m2, [leftq+lineq*2+1]
78  pshufb                m1, m0
79  pshufb                m2, m0
80  mova   [dstq           ], m1
81  mova   [dstq        +16], m1
82  mova   [dstq+strideq   ], m2
83  mova   [dstq+strideq+16], m2
84  lea                 dstq, [dstq+strideq*2]
85  inc                lineq
86  jnz .loop
87  REP_RET
88