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
eb5f063e
Commit
eb5f063e
authored
Jan 06, 2018
by
Henrik Gramner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
x86inc: Correctly set mmreg variables
parent
6b6edd12
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
36 additions
and
51 deletions
+36
-51
x86inc.asm
libavutil/x86/x86inc.asm
+36
-51
No files found.
libavutil/x86/x86inc.asm
View file @
eb5f063e
;*****************************************************************************
;* x86inc.asm: x264asm abstraction layer
;*****************************************************************************
;* Copyright (C) 2005-201
7
x264 project
;* Copyright (C) 2005-201
8
x264 project
;*
;* Authors: Loren Merritt <lorenm@u.washington.edu>
;* Henrik Gramner <henrik@gramner.com>
...
...
@@ -892,6 +892,36 @@ BRANCH_INSTR jz, je, jnz, jne, jl, jle, jnl, jnle, jg, jge, jng, jnge, ja, jae,
%
undef
%1%2
%endmacro
%macro
DEFINE_MMREGS
1
; mmtype
%
assign
%%
prev_mmregs
0
%
ifdef
num_mmregs
%
assign
%%
prev_mmregs
num_mmregs
%
endif
%
assign
num_mmregs
8
%
if
ARCH_X86_64
&&
mmsize
>=
16
%
assign
num_mmregs
16
%
if
cpuflag
(
avx512
)
||
mmsize
==
64
%
assign
num_mmregs
32
%
endif
%
endif
%
assign
%%
i
0
%
rep
num_mmregs
CAT_XDEFINE
m
,
%%
i
,
%1
%
+
%%
i
CAT_XDEFINE
nn%1
,
%%
i
,
%%
i
%
assign
%%
i
%%
i
+
1
%
endrep
%
if
%%
prev_mmregs
>
num_mmregs
%
rep
%%
prev_mmregs
-
num_mmregs
CAT_UNDEF
m
,
%%
i
CAT_UNDEF
nn
%
+
mmtype
,
%%
i
%
assign
%%
i
%%
i
+
1
%
endrep
%
endif
%
xdefine
mmtype
%1
%endmacro
; Prefer registers 16-31 over 0-15 to avoid having to use vzeroupper
%macro
AVX512_MM_PERMUTATION
0
-
1
0
; start_reg
%
if
ARCH_X86_64
&&
cpuflag
(
avx512
)
...
...
@@ -908,23 +938,12 @@ BRANCH_INSTR jz, je, jnz, jne, jl, jle, jnl, jnle, jg, jge, jng, jnge, ja, jae,
%
assign
avx_enabled
0
%
define
RESET_MM_PERMUTATION
INIT_MMX
%1
%
define
mmsize
8
%
define
num_mmregs
8
%
define
mova
movq
%
define
movu
movq
%
define
movh
movd
%
define
movnta
movntq
%
assign
%%
i
0
%
rep
8
CAT_XDEFINE
m
,
%%
i
,
mm
%
+
%%
i
CAT_XDEFINE
nnmm
,
%%
i
,
%%
i
%
assign
%%
i
%%
i
+
1
%
endrep
%
rep
24
CAT_UNDEF
m
,
%%
i
CAT_UNDEF
nnmm
,
%%
i
%
assign
%%
i
%%
i
+
1
%
endrep
INIT_CPUFLAGS
%1
DEFINE_MMREGS
mm
%endmacro
%macro
INIT_XMM
0
-
1
+
...
...
@@ -936,22 +955,9 @@ BRANCH_INSTR jz, je, jnz, jne, jl, jle, jnl, jnle, jg, jge, jng, jnge, ja, jae,
%
define
movh
movq
%
define
movnta
movntdq
INIT_CPUFLAGS
%1
%
define
num_mmregs
8
%
if
ARCH_X86_64
%
define
num_mmregs
16
%
if
cpuflag
(
avx512
)
%
define
num_mmregs
32
%
endif
%
endif
%
assign
%%
i
0
%
rep
num_mmregs
CAT_XDEFINE
m
,
%%
i
,
xmm
%
+
%%
i
CAT_XDEFINE
nnxmm
,
%%
i
,
%%
i
%
assign
%%
i
%%
i
+
1
%
endrep
DEFINE_MMREGS
xmm
%
if
WIN64
; Swap callee-saved registers with volatile registers
AVX512_MM_PERMUTATION
6
AVX512_MM_PERMUTATION
6
; Swap callee-saved registers with volatile registers
%
endif
%endmacro
...
...
@@ -964,19 +970,7 @@ BRANCH_INSTR jz, je, jnz, jne, jl, jle, jnl, jnle, jg, jge, jng, jnge, ja, jae,
%
undef
movh
%
define
movnta
movntdq
INIT_CPUFLAGS
%1
%
define
num_mmregs
8
%
if
ARCH_X86_64
%
define
num_mmregs
16
%
if
cpuflag
(
avx512
)
%
define
num_mmregs
32
%
endif
%
endif
%
assign
%%
i
0
%
rep
num_mmregs
CAT_XDEFINE
m
,
%%
i
,
ymm
%
+
%%
i
CAT_XDEFINE
nnymm
,
%%
i
,
%%
i
%
assign
%%
i
%%
i
+
1
%
endrep
DEFINE_MMREGS
ymm
AVX512_MM_PERMUTATION
%endmacro
...
...
@@ -984,21 +978,12 @@ BRANCH_INSTR jz, je, jnz, jne, jl, jle, jnl, jnle, jg, jge, jng, jnge, ja, jae,
%
assign
avx_enabled
1
%
define
RESET_MM_PERMUTATION
INIT_ZMM
%1
%
define
mmsize
64
%
define
num_mmregs
8
%
if
ARCH_X86_64
%
define
num_mmregs
32
%
endif
%
define
mova
movdqa
%
define
movu
movdqu
%
undef
movh
%
define
movnta
movntdq
%
assign
%%
i
0
%
rep
num_mmregs
CAT_XDEFINE
m
,
%%
i
,
zmm
%
+
%%
i
CAT_XDEFINE
nnzmm
,
%%
i
,
%%
i
%
assign
%%
i
%%
i
+
1
%
endrep
INIT_CPUFLAGS
%1
DEFINE_MMREGS
zmm
AVX512_MM_PERMUTATION
%endmacro
...
...
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