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
95d01c3f
Commit
95d01c3f
authored
Jan 02, 2013
by
Justin Ruggles
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
x86: lavr: use the x86inc.asm automatic stack alignment in mixing functions
CC:libav-stable@libav.org
parent
f73f76fd
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
9 additions
and
26 deletions
+9
-26
audio_mix.asm
libavresample/x86/audio_mix.asm
+9
-26
No files found.
libavresample/x86/audio_mix.asm
View file @
95d01c3f
...
...
@@ -260,29 +260,20 @@ MIX_1_TO_2_S16P_FLT
%else
%
assign
matrix_elements_stack
0
%endif
%assign
matrix_stack_size
matrix_elements_stack
*
mmsize
cglobal
mix_
%1
_to_
%2
_
%3
_flt
,
3
,
in_channels
+
2
,
needed_mmregs
+
matrix_elements_mm
,
src0
,
src1
,
len
,
src2
,
src3
,
src4
,
src5
,
src6
,
src7
%assign
needed_stack_size
-
1
*
matrix_stack_size
%if
ARCH_X86_32
&&
in_channels
>=
7
%assign
needed_stack_size
needed_stack_size
-
16
%endif
; get aligned stack space if needed
%if
matrix_elements_stack
>
0
%
if
mmsize
==
32
%
assign
bkpreg
%1
+
1
%
define
bkpq
r
%
+
bkpreg
%
+
q
mov
bkpq
,
rsp
and
rsp
,
~
(
mmsize
-
1
)
sub
rsp
,
matrix_elements_stack
*
mmsize
%
else
%
assign
matrix_stack_size
matrix_elements_stack
*
mmsize
%
assign
pad
matrix_stack_size
+
(
mmsize
-
gprsize
)
-
(
stack_offset
&
(
mmsize
-
gprsize
))
; on x86-32 for 7 and 8 channels we need more stack space for src pointers
%
if
ARCH_X86_32
&&
in_channels
>=
7
%
assign
pad
pad
+
0x10
cglobal
mix_
%1
_to_
%2
_
%3
_flt
,
3
,
in_channels
+
2
,
needed_mmregs
+
matrix_elements_mm
,
needed_stack_size
,
src0
,
src1
,
len
,
src2
,
src3
,
src4
,
src5
,
src6
,
src7
; define src pointers on stack if needed
%if
matrix_elements_stack
>
0
&&
ARCH_X86_32
&&
in_channels
>=
7
%
define
src5m
[
rsp
+
matrix_stack_size
+
0
]
%
define
src6m
[
rsp
+
matrix_stack_size
+
4
]
%
define
src7m
[
rsp
+
matrix_stack_size
+
8
]
%
endif
SUB
rsp
,
pad
%
endif
%endif
; load matrix pointers
...
...
@@ -463,14 +454,6 @@ cglobal mix_%1_to_%2_%3_flt, 3,in_channels+2,needed_mmregs+matrix_elements_mm, s
add
lenq
,
mmsize
jl
.
loop
; restore stack pointer
%if
matrix_elements_stack
>
0
%
if
mmsize
==
32
mov
rsp
,
bkpq
%
else
ADD
rsp
,
pad
%
endif
%endif
; zero ymm high halves
%if
mmsize
==
32
vzeroupper
...
...
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