Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
Commits
f90ff772
Commit
f90ff772
authored
Jan 25, 2013
by
Ronald S. Bultje
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move H264/QPEL specific asm from dsputil.asm to h264_qpel_*.asm.
parent
fe1057e0
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
169 additions
and
188 deletions
+169
-188
dsputil.asm
libavcodec/x86/dsputil.asm
+0
-188
h264_qpel_8bit.asm
libavcodec/x86/h264_qpel_8bit.asm
+169
-0
No files found.
libavcodec/x86/dsputil.asm
View file @
f90ff772
...
...
@@ -649,194 +649,6 @@ BSWAP32_BUF
INIT_XMM
ssse3
BSWAP32_BUF
%macro
op_avgh
3
movh
%3
,
%2
pavgb
%1
,
%3
movh
%2
,
%1
%endmacro
%macro
op_avg
2
pavgb
%1
,
%2
mova
%2
,
%1
%endmacro
%macro
op_puth
2
-
3
movh
%2
,
%1
%endmacro
%macro
op_put
2
mova
%2
,
%1
%endmacro
; void pixels4_l2_mmxext(uint8_t *dst, uint8_t *src1, uint8_t *src2, int dstStride, int src1Stride, int h)
%macro
PIXELS4_L2
1
%define
OP
op_
%1
h
cglobal
%1
_pixels4_l2
,
6
,
6
movsxdifnidn
r3
,
r3d
movsxdifnidn
r4
,
r4d
test
r5d
,
1
je
.
loop
movd
m0
,
[r1]
movd
m1
,
[r2]
add
r1
,
r4
add
r2
,
4
pavgb
m0
,
m1
OP
m0
,
[r0],
m3
add
r0
,
r3
dec
r5d
.
loop
:
mova
m0
,
[r1]
mova
m1
,
[
r1
+
r4
]
lea
r1
,
[
r1
+
2
*
r4
]
pavgb
m0
,
[r2]
pavgb
m1
,
[
r2
+
4
]
OP
m0
,
[r0],
m3
OP
m1
,
[
r0
+
r3
]
,
m3
lea
r0
,
[
r0
+
2
*
r3
]
mova
m0
,
[r1]
mova
m1
,
[
r1
+
r4
]
lea
r1
,
[
r1
+
2
*
r4
]
pavgb
m0
,
[
r2
+
8
]
pavgb
m1
,
[
r2
+
12
]
OP
m0
,
[r0],
m3
OP
m1
,
[
r0
+
r3
]
,
m3
lea
r0
,
[
r0
+
2
*
r3
]
add
r2
,
16
sub
r5d
,
4
jne
.
loop
REP_RET
%endmacro
INIT_MMX
mmxext
PIXELS4_L2
put
PIXELS4_L2
avg
; void pixels8_l2_mmxext(uint8_t *dst, uint8_t *src1, uint8_t *src2, int dstStride, int src1Stride, int h)
%macro
PIXELS8_L2
1
%define
OP
op_
%1
cglobal
%1
_pixels8_l2
,
6
,
6
movsxdifnidn
r3
,
r3d
movsxdifnidn
r4
,
r4d
test
r5d
,
1
je
.
loop
mova
m0
,
[r1]
mova
m1
,
[r2]
add
r1
,
r4
add
r2
,
8
pavgb
m0
,
m1
OP
m0
,
[r0]
add
r0
,
r3
dec
r5d
.
loop
:
mova
m0
,
[r1]
mova
m1
,
[
r1
+
r4
]
lea
r1
,
[
r1
+
2
*
r4
]
pavgb
m0
,
[r2]
pavgb
m1
,
[
r2
+
8
]
OP
m0
,
[r0]
OP
m1
,
[
r0
+
r3
]
lea
r0
,
[
r0
+
2
*
r3
]
mova
m0
,
[r1]
mova
m1
,
[
r1
+
r4
]
lea
r1
,
[
r1
+
2
*
r4
]
pavgb
m0
,
[
r2
+
16
]
pavgb
m1
,
[
r2
+
24
]
OP
m0
,
[r0]
OP
m1
,
[
r0
+
r3
]
lea
r0
,
[
r0
+
2
*
r3
]
add
r2
,
32
sub
r5d
,
4
jne
.
loop
REP_RET
%endmacro
INIT_MMX
mmxext
PIXELS8_L2
put
PIXELS8_L2
avg
; void pixels16_l2_mmxext(uint8_t *dst, uint8_t *src1, uint8_t *src2, int dstStride, int src1Stride, int h)
%macro
PIXELS16_L2
1
%define
OP
op_
%1
cglobal
%1
_pixels16_l2
,
6
,
6
movsxdifnidn
r3
,
r3d
movsxdifnidn
r4
,
r4d
test
r5d
,
1
je
.
loop
mova
m0
,
[r1]
mova
m1
,
[
r1
+
8
]
pavgb
m0
,
[r2]
pavgb
m1
,
[
r2
+
8
]
add
r1
,
r4
add
r2
,
16
OP
m0
,
[r0]
OP
m1
,
[
r0
+
8
]
add
r0
,
r3
dec
r5d
.
loop
:
mova
m0
,
[r1]
mova
m1
,
[
r1
+
8
]
add
r1
,
r4
pavgb
m0
,
[r2]
pavgb
m1
,
[
r2
+
8
]
OP
m0
,
[r0]
OP
m1
,
[
r0
+
8
]
add
r0
,
r3
mova
m0
,
[r1]
mova
m1
,
[
r1
+
8
]
add
r1
,
r4
pavgb
m0
,
[
r2
+
16
]
pavgb
m1
,
[
r2
+
24
]
OP
m0
,
[r0]
OP
m1
,
[
r0
+
8
]
add
r0
,
r3
add
r2
,
32
sub
r5d
,
2
jne
.
loop
REP_RET
%endmacro
INIT_MMX
mmxext
PIXELS16_L2
put
PIXELS16_L2
avg
INIT_MMX
mmxext
; void pixels(uint8_t *block, const uint8_t *pixels, int line_size, int h)
%macro
PIXELS48
2
%if
%2
==
4
%define
OP
movh
%else
%define
OP
mova
%endif
cglobal
%1
_pixels
%2
,
4
,
5
movsxdifnidn
r2
,
r2d
lea
r4
,
[
r2
*
3
]
.
loop
:
OP
m0
,
[r1]
OP
m1
,
[
r1
+
r2
]
OP
m2
,
[
r1
+
r2
*
2
]
OP
m3
,
[
r1
+
r4
]
lea
r1
,
[
r1
+
r2
*
4
]
%ifidn
%1
,
avg
pavgb
m0
,
[r0]
pavgb
m1
,
[
r0
+
r2
]
pavgb
m2
,
[
r0
+
r2
*
2
]
pavgb
m3
,
[
r0
+
r4
]
%endif
OP
[r0],
m0
OP
[
r0
+
r2
]
,
m1
OP
[
r0
+
r2
*
2
]
,
m2
OP
[
r0
+
r4
]
,
m3
sub
r3d
,
4
lea
r0
,
[
r0
+
r2
*
4
]
jne
.
loop
RET
%endmacro
PIXELS48
put
,
4
PIXELS48
avg
,
4
PIXELS48
put
,
8
PIXELS48
avg
,
8
INIT_XMM
sse2
; void put_pixels16_sse2(uint8_t *block, const uint8_t *pixels, int line_size, int h)
cglobal
put_pixels16
,
4
,
5
,
4
...
...
libavcodec/x86/h264_qpel_8bit.asm
View file @
f90ff772
...
...
@@ -860,3 +860,172 @@ INIT_XMM ssse3
QPEL16_H_LOWPASS_L2_OP
put
QPEL16_H_LOWPASS_L2_OP
avg
%endif
; void pixels4_l2_mmxext(uint8_t *dst, uint8_t *src1, uint8_t *src2, int dstStride, int src1Stride, int h)
%macro
PIXELS4_L2
1
%define
OP
op_
%1
h
cglobal
%1
_pixels4_l2
,
6
,
6
movsxdifnidn
r3
,
r3d
movsxdifnidn
r4
,
r4d
test
r5d
,
1
je
.
loop
movd
m0
,
[r1]
movd
m1
,
[r2]
add
r1
,
r4
add
r2
,
4
pavgb
m0
,
m1
OP
m0
,
[r0],
m3
add
r0
,
r3
dec
r5d
.
loop
:
mova
m0
,
[r1]
mova
m1
,
[
r1
+
r4
]
lea
r1
,
[
r1
+
2
*
r4
]
pavgb
m0
,
[r2]
pavgb
m1
,
[
r2
+
4
]
OP
m0
,
[r0],
m3
OP
m1
,
[
r0
+
r3
]
,
m3
lea
r0
,
[
r0
+
2
*
r3
]
mova
m0
,
[r1]
mova
m1
,
[
r1
+
r4
]
lea
r1
,
[
r1
+
2
*
r4
]
pavgb
m0
,
[
r2
+
8
]
pavgb
m1
,
[
r2
+
12
]
OP
m0
,
[r0],
m3
OP
m1
,
[
r0
+
r3
]
,
m3
lea
r0
,
[
r0
+
2
*
r3
]
add
r2
,
16
sub
r5d
,
4
jne
.
loop
REP_RET
%endmacro
INIT_MMX
mmxext
PIXELS4_L2
put
PIXELS4_L2
avg
; void pixels8_l2_mmxext(uint8_t *dst, uint8_t *src1, uint8_t *src2, int dstStride, int src1Stride, int h)
%macro
PIXELS8_L2
1
%define
OP
op_
%1
cglobal
%1
_pixels8_l2
,
6
,
6
movsxdifnidn
r3
,
r3d
movsxdifnidn
r4
,
r4d
test
r5d
,
1
je
.
loop
mova
m0
,
[r1]
mova
m1
,
[r2]
add
r1
,
r4
add
r2
,
8
pavgb
m0
,
m1
OP
m0
,
[r0]
add
r0
,
r3
dec
r5d
.
loop
:
mova
m0
,
[r1]
mova
m1
,
[
r1
+
r4
]
lea
r1
,
[
r1
+
2
*
r4
]
pavgb
m0
,
[r2]
pavgb
m1
,
[
r2
+
8
]
OP
m0
,
[r0]
OP
m1
,
[
r0
+
r3
]
lea
r0
,
[
r0
+
2
*
r3
]
mova
m0
,
[r1]
mova
m1
,
[
r1
+
r4
]
lea
r1
,
[
r1
+
2
*
r4
]
pavgb
m0
,
[
r2
+
16
]
pavgb
m1
,
[
r2
+
24
]
OP
m0
,
[r0]
OP
m1
,
[
r0
+
r3
]
lea
r0
,
[
r0
+
2
*
r3
]
add
r2
,
32
sub
r5d
,
4
jne
.
loop
REP_RET
%endmacro
INIT_MMX
mmxext
PIXELS8_L2
put
PIXELS8_L2
avg
; void pixels16_l2_mmxext(uint8_t *dst, uint8_t *src1, uint8_t *src2, int dstStride, int src1Stride, int h)
%macro
PIXELS16_L2
1
%define
OP
op_
%1
cglobal
%1
_pixels16_l2
,
6
,
6
movsxdifnidn
r3
,
r3d
movsxdifnidn
r4
,
r4d
test
r5d
,
1
je
.
loop
mova
m0
,
[r1]
mova
m1
,
[
r1
+
8
]
pavgb
m0
,
[r2]
pavgb
m1
,
[
r2
+
8
]
add
r1
,
r4
add
r2
,
16
OP
m0
,
[r0]
OP
m1
,
[
r0
+
8
]
add
r0
,
r3
dec
r5d
.
loop
:
mova
m0
,
[r1]
mova
m1
,
[
r1
+
8
]
add
r1
,
r4
pavgb
m0
,
[r2]
pavgb
m1
,
[
r2
+
8
]
OP
m0
,
[r0]
OP
m1
,
[
r0
+
8
]
add
r0
,
r3
mova
m0
,
[r1]
mova
m1
,
[
r1
+
8
]
add
r1
,
r4
pavgb
m0
,
[
r2
+
16
]
pavgb
m1
,
[
r2
+
24
]
OP
m0
,
[r0]
OP
m1
,
[
r0
+
8
]
add
r0
,
r3
add
r2
,
32
sub
r5d
,
2
jne
.
loop
REP_RET
%endmacro
INIT_MMX
mmxext
PIXELS16_L2
put
PIXELS16_L2
avg
INIT_MMX
mmxext
; void pixels(uint8_t *block, const uint8_t *pixels, int line_size, int h)
%macro
PIXELS48
2
%if
%2
==
4
%define
OP
movh
%else
%define
OP
mova
%endif
cglobal
%1
_pixels
%2
,
4
,
5
movsxdifnidn
r2
,
r2d
lea
r4
,
[
r2
*
3
]
.
loop
:
OP
m0
,
[r1]
OP
m1
,
[
r1
+
r2
]
OP
m2
,
[
r1
+
r2
*
2
]
OP
m3
,
[
r1
+
r4
]
lea
r1
,
[
r1
+
r2
*
4
]
%ifidn
%1
,
avg
pavgb
m0
,
[r0]
pavgb
m1
,
[
r0
+
r2
]
pavgb
m2
,
[
r0
+
r2
*
2
]
pavgb
m3
,
[
r0
+
r4
]
%endif
OP
[r0],
m0
OP
[
r0
+
r2
]
,
m1
OP
[
r0
+
r2
*
2
]
,
m2
OP
[
r0
+
r4
]
,
m3
sub
r3d
,
4
lea
r0
,
[
r0
+
r2
*
4
]
jne
.
loop
RET
%endmacro
PIXELS48
put
,
4
PIXELS48
avg
,
4
PIXELS48
put
,
8
PIXELS48
avg
,
8
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment