summaryrefslogtreecommitdiff
path: root/transfer_interp.asm
diff options
context:
space:
mode:
Diffstat (limited to 'transfer_interp.asm')
-rw-r--r--transfer_interp.asm24
1 files changed, 21 insertions, 3 deletions
diff --git a/transfer_interp.asm b/transfer_interp.asm
index 1b1fe7d..982b8aa 100644
--- a/transfer_interp.asm
+++ b/transfer_interp.asm
@@ -73,9 +73,11 @@ cglobal transfer_interp_line_cont_4, 7, 8, 6, dst, dst_len, src, src_stride, idx
RET
-INIT_YMM fma3
-cglobal transfer_interp_line_cont_6, 7, 9, 11, dst, dst_len, src, src_stride, idx_x, fact_x, fact_y,\
- idx_x_val, offset6
+%macro INTERP6 1
+%if %1
+ mova m12, m0
+%endif
+
shl src_strideq, 3
shl dst_lenq, 3
@@ -145,9 +147,25 @@ cglobal transfer_interp_line_cont_6, 7, 9, 11, dst, dst_len, src, src_stride, id
haddpd xm8, xm8
addpd m8, m9
+%if %1
+ movq xm13, [dstq + offsetq]
+ vfmadd213pd xm8, xm12, xm13
+ movq [dstq + offsetq], xm8
+%else
movq [dstq + offsetq], xm8
+%endif
add offsetq, 8
add offset6q, 8 * 6
js .loop
RET
+%endmacro
+
+INIT_YMM fma3
+cglobal transfer_interp_line_cont_6, 7, 9, 11, dst, dst_len, src, src_stride, idx_x, fact_x, fact_y,\
+ idx_x_val, offset6
+INTERP6 0
+
+cglobal transfer_interp_line_add_cont_6, 7, 9, 13, dst, dst_len, src, src_stride, idx_x, fact_x, fact_y,\
+ idx_x_val, offset6
+INTERP6 1