summaryrefslogtreecommitdiff
path: root/libavcodec/x86/hevc_mc.asm
diff options
context:
space:
mode:
authorChristophe Gisquet <christophe.gisquet@gmail.com>2014-07-28 11:48:21 +0200
committerMichael Niedermayer <michaelni@gmx.at>2014-07-29 22:50:50 +0200
commita507623bad7e88a99464df04f776df3b67cc11e4 (patch)
tree312f2fcc6f7a6c26fdadf241bb63c7269993d57c /libavcodec/x86/hevc_mc.asm
parentd38edeee9b70f8c15ba549a40f8c72595513516e (diff)
x86: hevc_mc: fix register count usage
A macro was using a fixed register, causing too many GPRs to be declared as used. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/x86/hevc_mc.asm')
-rw-r--r--libavcodec/x86/hevc_mc.asm24
1 files changed, 12 insertions, 12 deletions
diff --git a/libavcodec/x86/hevc_mc.asm b/libavcodec/x86/hevc_mc.asm
index 9cfebb89c0..fc78062cef 100644
--- a/libavcodec/x86/hevc_mc.asm
+++ b/libavcodec/x86/hevc_mc.asm
@@ -270,12 +270,12 @@ QPEL_TABLE 12, 4, w, sse4
%endif
%endmacro
-%macro QPEL_V_LOAD 4
- lea r12q, [%2]
- sub r12q, r3srcq
- movdqu m0, [r12 ] ;load x- 3*srcstride
- movdqu m1, [r12+ %3q ] ;load x- 2*srcstride
- movdqu m2, [r12+ 2*%3q ] ;load x-srcstride
+%macro QPEL_V_LOAD 5
+ lea %5q, [%2]
+ sub %5q, r3srcq
+ movdqu m0, [%5q ] ;load x- 3*srcstride
+ movdqu m1, [%5q+ %3q ] ;load x- 2*srcstride
+ movdqu m2, [%5q+ 2*%3q ] ;load x-srcstride
movdqu m3, [%2 ] ;load x
movdqu m4, [%2+ %3q] ;load x+stride
movdqu m5, [%2+ 2*%3q] ;load x+2*stride
@@ -869,11 +869,11 @@ cglobal hevc_put_hevc_bi_qpel_h%1_%2, 8, 9, 16 , dst, dststride, src, srcstride,
; int width, int height, int mx, int my)
; ******************************
-cglobal hevc_put_hevc_qpel_v%1_%2, 7, 14, 15 , dst, dststride, src, srcstride, height, r3src, my, rfilter
+cglobal hevc_put_hevc_qpel_v%1_%2, 7, 9, 15, dst, dststride, src, srcstride, height, r3src, my, rfilter
lea r3srcq, [srcstrideq*3]
QPEL_FILTER %2, my
.loop
- QPEL_V_LOAD %2, srcq, srcstride, %1
+ QPEL_V_LOAD %2, srcq, srcstride, %1, r8
QPEL_COMPUTE %1, %2
%if %2 > 8
packssdw m0, m1
@@ -882,12 +882,12 @@ cglobal hevc_put_hevc_qpel_v%1_%2, 7, 14, 15 , dst, dststride, src, srcstride, h
LOOP_END dst, dststride, src, srcstride
RET
-cglobal hevc_put_hevc_uni_qpel_v%1_%2, 7, 14, 15 , dst, dststride, src, srcstride, height, r3src, my, rfilter
+cglobal hevc_put_hevc_uni_qpel_v%1_%2, 7, 9, 15, dst, dststride, src, srcstride, height, r3src, my, rfilter
movdqa m9, [pw_%2]
lea r3srcq, [srcstrideq*3]
QPEL_FILTER %2, my
.loop
- QPEL_V_LOAD %2, srcq, srcstride, %1
+ QPEL_V_LOAD %2, srcq, srcstride, %1, r8
QPEL_COMPUTE %1, %2
%if %2 > 8
packusdw m0, m1
@@ -900,13 +900,13 @@ cglobal hevc_put_hevc_uni_qpel_v%1_%2, 7, 14, 15 , dst, dststride, src, srcstrid
jnz .loop ; height loop
RET
-cglobal hevc_put_hevc_bi_qpel_v%1_%2, 9, 14, 16 , dst, dststride, src, srcstride, src2, src2stride, height, r3src, my, rfilter
+cglobal hevc_put_hevc_bi_qpel_v%1_%2, 9, 11, 16, dst, dststride, src, srcstride, src2, src2stride, height, r3src, my, rfilter
movdqa m9, [pw_bi_%2]
lea r3srcq, [srcstrideq*3]
QPEL_FILTER %2, my
.loop
SIMPLE_BILOAD %1, src2q, m10, m11
- QPEL_V_LOAD %2, srcq, srcstride, %1
+ QPEL_V_LOAD %2, srcq, srcstride, %1, r10
QPEL_COMPUTE %1, %2
%if %2 > 8
packssdw m0, m1