diff options
Diffstat (limited to 'transfer_interp.asm')
-rw-r--r-- | transfer_interp.asm | 24 |
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 |