Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
3a094949
F
Ffmpeg
项目概览
小白菜888
/
Ffmpeg
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
Ffmpeg
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3a094949
编写于
12月 24, 2013
作者:
R
Ronald S. Bultje
提交者:
Anton Khirnov
8月 03, 2016
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
vp9mc/x86: add 16px functions (64bit only).
Signed-off-by:
N
Anton Khirnov
<
anton@khirnov.net
>
上级
89466de4
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
127 addition
and
0 deletion
+127
-0
libavcodec/x86/vp9dsp_init.c
libavcodec/x86/vp9dsp_init.c
+5
-0
libavcodec/x86/vp9mc.asm
libavcodec/x86/vp9mc.asm
+122
-0
未找到文件。
libavcodec/x86/vp9dsp_init.c
浏览文件 @
3a094949
...
...
@@ -64,6 +64,9 @@ ff_ ## avg ## _8tap_1d_ ## dir ## _ ## sz ## _ ## opt(uint8_t *dst, \
mc_funcs
(
4
);
mc_funcs
(
8
);
#if ARCH_X86_64
mc_funcs
(
16
);
#endif
#undef mc_funcs
#undef mc_func
...
...
@@ -95,7 +98,9 @@ ff_ ## avg ## _8tap_1d_ ## dir ## _ ## sz ## _ ## opt(uint8_t *dst, \
mc_rep_func(put, sz, hsz, v, ssse3); \
mc_rep_func(avg, sz, hsz, v, ssse3)
#if ARCH_X86_32
mc_rep_funcs
(
16
,
8
);
#endif
mc_rep_funcs
(
32
,
16
);
mc_rep_funcs
(
64
,
32
);
...
...
libavcodec/x86/vp9mc.asm
浏览文件 @
3a094949
...
...
@@ -144,6 +144,62 @@ INIT_XMM ssse3
filter_h_fn
put
filter_h_fn
avg
%if ARCH_X86_64
%macro filter_hx2_fn 1
%assign %%px mmsize
cglobal
%
1
_8tap_1d_h_
%+
%%
px
,
6
,
6
,
14
,
ds
t
,
src
,
ds
tride
,
ss
tride
,
h
,
filtery
mova
m13
,
[
pw_256
]
mova
m8
,
[
filteryq
+
0
]
mova
m9
,
[
filteryq
+
16
]
mova
m10
,
[
filteryq
+
32
]
mova
m11
,
[
filteryq
+
48
]
.loop:
movu
m0
,
[
srcq
-
3
]
movu
m1
,
[
srcq
-
2
]
movu
m2
,
[
srcq
-
1
]
movu
m3
,
[
srcq
+
0
]
movu
m4
,
[
srcq
+
1
]
movu
m5
,
[
srcq
+
2
]
movu
m6
,
[
srcq
+
3
]
movu
m7
,
[
srcq
+
4
]
add
srcq
,
ss
trideq
SBUTTERFLY
bw
,
0
,
1
,
12
SBUTTERFLY
bw
,
2
,
3
,
12
SBUTTERFLY
bw
,
4
,
5
,
12
SBUTTERFLY
bw
,
6
,
7
,
12
pmaddubsw
m0
,
m8
pmaddubsw
m1
,
m8
pmaddubsw
m2
,
m9
pmaddubsw
m3
,
m9
pmaddubsw
m4
,
m10
pmaddubsw
m5
,
m10
pmaddubsw
m6
,
m11
pmaddubsw
m7
,
m11
paddw
m0
,
m2
paddw
m1
,
m3
paddw
m4
,
m6
paddw
m5
,
m7
paddsw
m0
,
m4
paddsw
m1
,
m5
pmulhrsw
m0
,
m13
pmulhrsw
m1
,
m13
packuswb
m0
,
m1
%ifidn %1, avg
pavgb
m0
,
[
ds
tq
]
%endif
mova
[
ds
tq
],
m0
add
ds
tq
,
ds
trideq
dec
hd
jg
.loop
RET
%endmacro
INIT_XMM
ss
se3
filter_hx2_fn
put
filter_hx2_fn
avg
%endif
; ARCH_X86_64
%macro filter_v_fn 1
%assign %%px mmsize/2
%if ARCH_X86_64
...
...
@@ -218,6 +274,72 @@ INIT_XMM ssse3
filter_v_fn
put
filter_v_fn
avg
%if ARCH_X86_64
%macro filter_vx2_fn 1
%assign %%px mmsize
cglobal
%
1
_8tap_1d_v_
%+
%%
px
,
6
,
8
,
14
,
ds
t
,
src
,
ds
tride
,
ss
tride
,
h
,
filtery
,
src4
,
ss
tride3
sub
srcq
,
ss
trideq
lea
ss
tride3q
,
[
ss
trideq
*
3
]
sub
srcq
,
ss
trideq
mova
m13
,
[
pw_256
]
sub
srcq
,
ss
trideq
mova
m8
,
[
filteryq
+
0
]
lea
src4q
,
[
srcq
+
ss
trideq
*
4
]
mova
m9
,
[
filteryq
+
16
]
mova
m10
,
[
filteryq
+
32
]
mova
m11
,
[
filteryq
+
48
]
.loop:
; FIXME maybe reuse loads from previous rows, or just
; more generally unroll this to prevent multiple loads of
; the same data?
movu
m0
,
[
srcq
]
movu
m1
,
[
srcq
+
ss
trideq
]
movu
m2
,
[
srcq
+
ss
trideq
*
2
]
movu
m3
,
[
srcq
+
ss
tride3q
]
movu
m4
,
[
src4q
]
movu
m5
,
[
src4q
+
ss
trideq
]
movu
m6
,
[
src4q
+
ss
trideq
*
2
]
movu
m7
,
[
src4q
+
ss
tride3q
]
add
srcq
,
ss
trideq
add
src4q
,
ss
trideq
SBUTTERFLY
bw
,
0
,
1
,
12
SBUTTERFLY
bw
,
2
,
3
,
12
SBUTTERFLY
bw
,
4
,
5
,
12
SBUTTERFLY
bw
,
6
,
7
,
12
pmaddubsw
m0
,
m8
pmaddubsw
m1
,
m8
pmaddubsw
m2
,
m9
pmaddubsw
m3
,
m9
pmaddubsw
m4
,
m10
pmaddubsw
m5
,
m10
pmaddubsw
m6
,
m11
pmaddubsw
m7
,
m11
paddw
m0
,
m2
paddw
m1
,
m3
paddw
m4
,
m6
paddw
m5
,
m7
paddsw
m0
,
m4
paddsw
m1
,
m5
pmulhrsw
m0
,
m13
pmulhrsw
m1
,
m13
packuswb
m0
,
m1
%ifidn %1, avg
pavgb
m0
,
[
ds
tq
]
%endif
mova
[
ds
tq
],
m0
add
ds
tq
,
ds
trideq
dec
hd
jg
.loop
RET
%endmacro
INIT_XMM
ss
se3
filter_vx2_fn
put
filter_vx2_fn
avg
%endif
; ARCH_X86_64
%macro fpel_fn 6
%if %2 == 4
%define %%srcfn movh
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录