Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
be2c456e
Commit
be2c456e
authored
Jul 15, 2012
by
Diego Biurrun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
x86: fmtconvert: Refactor cvtps2pi emulation through cpuflags
parent
be923ed6
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
26 additions
and
26 deletions
+26
-26
fmtconvert.asm
libavcodec/x86/fmtconvert.asm
+26
-26
No files found.
libavcodec/x86/fmtconvert.asm
View file @
be2c456e
...
...
@@ -23,6 +23,14 @@
SECTION_TEXT
%macro
CVTPS2PI
2
%if
cpuflag
(
sse
)
cvtps2pi
%1
,
%2
%elif
cpuflag
(
3
dnow
)
pf2id
%1
,
%2
%endif
%endmacro
;---------------------------------------------------------------------------------
; void int32_to_float_fmul_scalar(float *dst, const int *src, float mul, int len);
;---------------------------------------------------------------------------------
...
...
@@ -88,10 +96,10 @@ cglobal float_to_int16, 3, 3, %1, dst, src, len
packssdw
m0
,
m1
mova
[
dstq
+
lenq
]
,
m0
%else
cvtps2pi
m0
,
[
srcq
+
2
*
lenq
]
cvtps2pi
m1
,
[
srcq
+
2
*
lenq
+
8
]
cvtps2pi
m2
,
[
srcq
+
2
*
lenq
+
16
]
cvtps2pi
m3
,
[
srcq
+
2
*
lenq
+
24
]
CVTPS2PI
m0
,
[
srcq
+
2
*
lenq
]
CVTPS2PI
m1
,
[
srcq
+
2
*
lenq
+
8
]
CVTPS2PI
m2
,
[
srcq
+
2
*
lenq
+
16
]
CVTPS2PI
m3
,
[
srcq
+
2
*
lenq
+
24
]
packssdw
m0
,
m1
packssdw
m2
,
m3
mova
[
dstq
+
lenq
]
,
m0
...
...
@@ -109,10 +117,8 @@ INIT_XMM sse2
FLOAT_TO_INT16
2
INIT_MMX
sse
FLOAT_TO_INT16
0
%define
cvtps2pi
pf2id
INIT_MMX
3
dnow
FLOAT_TO_INT16
0
%undef
cvtps2pi
;------------------------------------------------------------------------------
; void ff_float_to_int16_step(int16_t *dst, const float *src, long len, long step);
...
...
@@ -150,10 +156,10 @@ cglobal float_to_int16_step, 4, 7, %1, dst, src, len, step, step3, v1, v2
mov
[
dstq
+
step3q
*
2
]
,
v2w
lea
dstq
,
[
dstq
+
stepq
*
8
]
%else
cvtps2pi
m0
,
[
srcq
+
2
*
lenq
]
cvtps2pi
m1
,
[
srcq
+
2
*
lenq
+
8
]
cvtps2pi
m2
,
[
srcq
+
2
*
lenq
+
16
]
cvtps2pi
m3
,
[
srcq
+
2
*
lenq
+
24
]
CVTPS2PI
m0
,
[
srcq
+
2
*
lenq
]
CVTPS2PI
m1
,
[
srcq
+
2
*
lenq
+
8
]
CVTPS2PI
m2
,
[
srcq
+
2
*
lenq
+
16
]
CVTPS2PI
m3
,
[
srcq
+
2
*
lenq
+
24
]
packssdw
m0
,
m1
packssdw
m2
,
m3
movd
v1d
,
m0
...
...
@@ -189,10 +195,8 @@ INIT_XMM sse2
FLOAT_TO_INT16_STEP
2
INIT_MMX
sse
FLOAT_TO_INT16_STEP
0
%define
cvtps2pi
pf2id
INIT_MMX
3
dnow
FLOAT_TO_INT16_STEP
0
%undef
cvtps2pi
;-------------------------------------------------------------------------------
; void ff_float_to_int16_interleave2(int16_t *dst, const float **src, long len);
...
...
@@ -215,10 +219,10 @@ cglobal float_to_int16_interleave2, 3, 4, 2, dst, src0, src1, len
punpcklwd
m0
,
m1
mova
[
dstq
+
lenq
]
,
m0
%else
cvtps2pi
m0
,
[
src0q
+
lenq
]
cvtps2pi
m1
,
[
src0q
+
lenq
+
8
]
cvtps2pi
m2
,
[
src1q
+
lenq
]
cvtps2pi
m3
,
[
src1q
+
lenq
+
8
]
CVTPS2PI
m0
,
[
src0q
+
lenq
]
CVTPS2PI
m1
,
[
src0q
+
lenq
+
8
]
CVTPS2PI
m2
,
[
src1q
+
lenq
]
CVTPS2PI
m3
,
[
src1q
+
lenq
+
8
]
packssdw
m0
,
m1
packssdw
m2
,
m3
mova
m1
,
m0
...
...
@@ -236,9 +240,7 @@ cglobal float_to_int16_interleave2, 3, 4, 2, dst, src0, src1, len
%endmacro
INIT_MMX
3
dnow
%define
cvtps2pi
pf2id
FLOAT_TO_INT16_INTERLEAVE2
%undef
cvtps2pi
INIT_MMX
sse
FLOAT_TO_INT16_INTERLEAVE2
INIT_XMM
sse2
...
...
@@ -274,12 +276,12 @@ cglobal float_to_int16_interleave6, 2, 8, 0, dst, src, src1, src2, src3, src4, s
sub
src4q
,
srcq
sub
src5q
,
srcq
.
loop
:
cvtps2pi
mm0
,
[srcq]
cvtps2pi
mm1
,
[
srcq
+
src1q
]
cvtps2pi
mm2
,
[
srcq
+
src2q
]
cvtps2pi
mm3
,
[
srcq
+
src3q
]
cvtps2pi
mm4
,
[
srcq
+
src4q
]
cvtps2pi
mm5
,
[
srcq
+
src5q
]
CVTPS2PI
mm0
,
[srcq]
CVTPS2PI
mm1
,
[
srcq
+
src1q
]
CVTPS2PI
mm2
,
[
srcq
+
src2q
]
CVTPS2PI
mm3
,
[
srcq
+
src3q
]
CVTPS2PI
mm4
,
[
srcq
+
src4q
]
CVTPS2PI
mm5
,
[
srcq
+
src5q
]
packssdw
mm0
,
mm3
packssdw
mm1
,
mm4
packssdw
mm2
,
mm5
...
...
@@ -306,13 +308,11 @@ INIT_MMX sse
%define
pswapd
PSWAPD_SSE
FLOAT_TO_INT16_INTERLEAVE6
INIT_MMX
3
dnow
%define
cvtps2pi
pf2id
%define
pswapd
PSWAPD_3DNOW
FLOAT_TO_INT16_INTERLEAVE6
%undef
pswapd
INIT_MMX
3
dnowext
FLOAT_TO_INT16_INTERLEAVE6
%undef
cvtps2pi
;-----------------------------------------------------------------------------
; void ff_float_interleave6(float *dst, const float **src, unsigned int len);
...
...
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