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
8d02579f
Commit
8d02579f
authored
Apr 20, 2016
by
Anton Mitrofanov
Committed by
Anton Khirnov
May 16, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
x86inc: Fix AVX emulation of some instructions
Signed-off-by:
Anton Khirnov
<
anton@khirnov.net
>
parent
ba3eb745
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
24 additions
and
20 deletions
+24
-20
x86inc.asm
libavutil/x86/x86inc.asm
+24
-20
No files found.
libavutil/x86/x86inc.asm
View file @
8d02579f
...
@@ -1096,7 +1096,7 @@ INIT_XMM
...
@@ -1096,7 +1096,7 @@ INIT_XMM
;%1 == instruction
;%1 == instruction
;%2 == minimal instruction set
;%2 == minimal instruction set
;%3 == 1 if float, 0 if int
;%3 == 1 if float, 0 if int
;%4 == 1 if
non-destructive or 4-operand (xmm, xmm, xmm, imm), 0 otherwise
;%4 == 1 if
4-operand emulation, 0 if 3-operand emulation, 255 otherwise (no emulation)
;%5 == 1 if commutative (i.e. doesn't matter which src arg is which), 0 if not
;%5 == 1 if commutative (i.e. doesn't matter which src arg is which), 0 if not
;%6+: operands
;%6+: operands
%macro
RUN_AVX_INSTR
6
-
9
+
%macro
RUN_AVX_INSTR
6
-
9
+
...
@@ -1171,9 +1171,9 @@ INIT_XMM
...
@@ -1171,9 +1171,9 @@ INIT_XMM
;%1 == instruction
;%1 == instruction
;%2 == minimal instruction set
;%2 == minimal instruction set
;%3 == 1 if float, 0 if int
;%3 == 1 if float, 0 if int
;%4 == 1 if
non-destructive or 4-operand (xmm, xmm, xmm, imm), 0 otherwise
;%4 == 1 if
4-operand emulation, 0 if 3-operand emulation, 255 otherwise (no emulation)
;%5 == 1 if commutative (i.e. doesn't matter which src arg is which), 0 if not
;%5 == 1 if commutative (i.e. doesn't matter which src arg is which), 0 if not
%macro
AVX_INSTR
1
-
5
fnord
,
0
,
1
,
0
%macro
AVX_INSTR
1
-
5
fnord
,
0
,
255
,
0
%
macro
%1
1
-
10
fnord
,
fnord
,
fnord
,
fnord
,
%1
,
%2
,
%3
,
%4
,
%5
%
macro
%1
1
-
10
fnord
,
fnord
,
fnord
,
fnord
,
%1
,
%2
,
%3
,
%4
,
%5
%
ifidn
%2
,
fnord
%
ifidn
%2
,
fnord
RUN_AVX_INSTR
%6
,
%7
,
%8
,
%9
,
%10
,
%1
RUN_AVX_INSTR
%6
,
%7
,
%8
,
%9
,
%10
,
%1
...
@@ -1207,10 +1207,10 @@ AVX_INSTR andnpd, sse2, 1, 0, 0
...
@@ -1207,10 +1207,10 @@ AVX_INSTR andnpd, sse2, 1, 0, 0
AVX_INSTR
andnps
,
sse
,
1
,
0
,
0
AVX_INSTR
andnps
,
sse
,
1
,
0
,
0
AVX_INSTR
andpd
,
sse2
,
1
,
0
,
1
AVX_INSTR
andpd
,
sse2
,
1
,
0
,
1
AVX_INSTR
andps
,
sse
,
1
,
0
,
1
AVX_INSTR
andps
,
sse
,
1
,
0
,
1
AVX_INSTR
blendpd
,
sse4
,
1
,
0
,
0
AVX_INSTR
blendpd
,
sse4
,
1
,
1
,
0
AVX_INSTR
blendps
,
sse4
,
1
,
0
,
0
AVX_INSTR
blendps
,
sse4
,
1
,
1
,
0
AVX_INSTR
blendvpd
,
sse4
,
1
,
0
,
0
AVX_INSTR
blendvpd
,
sse4
; can't be emulated
AVX_INSTR
blendvps
,
sse4
,
1
,
0
,
0
AVX_INSTR
blendvps
,
sse4
; can't be emulated
AVX_INSTR
cmppd
,
sse2
,
1
,
1
,
0
AVX_INSTR
cmppd
,
sse2
,
1
,
1
,
0
AVX_INSTR
cmpps
,
sse
,
1
,
1
,
0
AVX_INSTR
cmpps
,
sse
,
1
,
1
,
0
AVX_INSTR
cmpsd
,
sse2
,
1
,
1
,
0
AVX_INSTR
cmpsd
,
sse2
,
1
,
1
,
0
...
@@ -1281,7 +1281,7 @@ AVX_INSTR movsldup, sse3
...
@@ -1281,7 +1281,7 @@ AVX_INSTR movsldup, sse3
AVX_INSTR
movss
,
sse
,
1
,
0
,
0
AVX_INSTR
movss
,
sse
,
1
,
0
,
0
AVX_INSTR
movupd
,
sse2
AVX_INSTR
movupd
,
sse2
AVX_INSTR
movups
,
sse
AVX_INSTR
movups
,
sse
AVX_INSTR
mpsadbw
,
sse4
AVX_INSTR
mpsadbw
,
sse4
,
0
,
1
,
0
AVX_INSTR
mulpd
,
sse2
,
1
,
0
,
1
AVX_INSTR
mulpd
,
sse2
,
1
,
0
,
1
AVX_INSTR
mulps
,
sse
,
1
,
0
,
1
AVX_INSTR
mulps
,
sse
,
1
,
0
,
1
AVX_INSTR
mulsd
,
sse2
,
1
,
0
,
0
AVX_INSTR
mulsd
,
sse2
,
1
,
0
,
0
...
@@ -1303,14 +1303,18 @@ AVX_INSTR paddsb, mmx, 0, 0, 1
...
@@ -1303,14 +1303,18 @@ AVX_INSTR paddsb, mmx, 0, 0, 1
AVX_INSTR
paddsw
,
mmx
,
0
,
0
,
1
AVX_INSTR
paddsw
,
mmx
,
0
,
0
,
1
AVX_INSTR
paddusb
,
mmx
,
0
,
0
,
1
AVX_INSTR
paddusb
,
mmx
,
0
,
0
,
1
AVX_INSTR
paddusw
,
mmx
,
0
,
0
,
1
AVX_INSTR
paddusw
,
mmx
,
0
,
0
,
1
AVX_INSTR
palignr
,
ssse3
AVX_INSTR
palignr
,
ssse3
,
0
,
1
,
0
AVX_INSTR
pand
,
mmx
,
0
,
0
,
1
AVX_INSTR
pand
,
mmx
,
0
,
0
,
1
AVX_INSTR
pandn
,
mmx
,
0
,
0
,
0
AVX_INSTR
pandn
,
mmx
,
0
,
0
,
0
AVX_INSTR
pavgb
,
mmx2
,
0
,
0
,
1
AVX_INSTR
pavgb
,
mmx2
,
0
,
0
,
1
AVX_INSTR
pavgw
,
mmx2
,
0
,
0
,
1
AVX_INSTR
pavgw
,
mmx2
,
0
,
0
,
1
AVX_INSTR
pblendvb
,
sse4
,
0
,
0
,
0
AVX_INSTR
pblendvb
,
sse4
; can't be emulated
AVX_INSTR
pblendw
,
sse4
AVX_INSTR
pblendw
,
sse4
,
0
,
1
,
0
AVX_INSTR
pclmulqdq
AVX_INSTR
pclmulqdq
,
fnord
,
0
,
1
,
0
AVX_INSTR
pclmulhqhqdq
,
fnord
,
0
,
0
,
0
AVX_INSTR
pclmulhqlqdq
,
fnord
,
0
,
0
,
0
AVX_INSTR
pclmullqhqdq
,
fnord
,
0
,
0
,
0
AVX_INSTR
pclmullqlqdq
,
fnord
,
0
,
0
,
0
AVX_INSTR
pcmpestri
,
sse42
AVX_INSTR
pcmpestri
,
sse42
AVX_INSTR
pcmpestrm
,
sse42
AVX_INSTR
pcmpestrm
,
sse42
AVX_INSTR
pcmpistri
,
sse42
AVX_INSTR
pcmpistri
,
sse42
...
@@ -1334,10 +1338,10 @@ AVX_INSTR phminposuw, sse4
...
@@ -1334,10 +1338,10 @@ AVX_INSTR phminposuw, sse4
AVX_INSTR
phsubw
,
ssse3
,
0
,
0
,
0
AVX_INSTR
phsubw
,
ssse3
,
0
,
0
,
0
AVX_INSTR
phsubd
,
ssse3
,
0
,
0
,
0
AVX_INSTR
phsubd
,
ssse3
,
0
,
0
,
0
AVX_INSTR
phsubsw
,
ssse3
,
0
,
0
,
0
AVX_INSTR
phsubsw
,
ssse3
,
0
,
0
,
0
AVX_INSTR
pinsrb
,
sse4
AVX_INSTR
pinsrb
,
sse4
,
0
,
1
,
0
AVX_INSTR
pinsrd
,
sse4
AVX_INSTR
pinsrd
,
sse4
,
0
,
1
,
0
AVX_INSTR
pinsrq
,
sse4
AVX_INSTR
pinsrq
,
sse4
,
0
,
1
,
0
AVX_INSTR
pinsrw
,
mmx2
AVX_INSTR
pinsrw
,
mmx2
,
0
,
1
,
0
AVX_INSTR
pmaddwd
,
mmx
,
0
,
0
,
1
AVX_INSTR
pmaddwd
,
mmx
,
0
,
0
,
1
AVX_INSTR
pmaddubsw
,
ssse3
,
0
,
0
,
0
AVX_INSTR
pmaddubsw
,
ssse3
,
0
,
0
,
0
AVX_INSTR
pmaxsb
,
sse4
,
0
,
0
,
1
AVX_INSTR
pmaxsb
,
sse4
,
0
,
0
,
1
...
@@ -1409,18 +1413,18 @@ AVX_INSTR punpcklwd, mmx, 0, 0, 0
...
@@ -1409,18 +1413,18 @@ AVX_INSTR punpcklwd, mmx, 0, 0, 0
AVX_INSTR
punpckldq
,
mmx
,
0
,
0
,
0
AVX_INSTR
punpckldq
,
mmx
,
0
,
0
,
0
AVX_INSTR
punpcklqdq
,
sse2
,
0
,
0
,
0
AVX_INSTR
punpcklqdq
,
sse2
,
0
,
0
,
0
AVX_INSTR
pxor
,
mmx
,
0
,
0
,
1
AVX_INSTR
pxor
,
mmx
,
0
,
0
,
1
AVX_INSTR
rcpps
,
sse
,
1
,
0
,
0
AVX_INSTR
rcpps
,
sse
AVX_INSTR
rcpss
,
sse
,
1
,
0
,
0
AVX_INSTR
rcpss
,
sse
,
1
,
0
,
0
AVX_INSTR
roundpd
,
sse4
AVX_INSTR
roundpd
,
sse4
AVX_INSTR
roundps
,
sse4
AVX_INSTR
roundps
,
sse4
AVX_INSTR
roundsd
,
sse4
,
1
,
1
,
0
AVX_INSTR
roundsd
,
sse4
,
1
,
1
,
0
AVX_INSTR
roundss
,
sse4
,
1
,
1
,
0
AVX_INSTR
roundss
,
sse4
,
1
,
1
,
0
AVX_INSTR
rsqrtps
,
sse
,
1
,
0
,
0
AVX_INSTR
rsqrtps
,
sse
AVX_INSTR
rsqrtss
,
sse
,
1
,
0
,
0
AVX_INSTR
rsqrtss
,
sse
,
1
,
0
,
0
AVX_INSTR
shufpd
,
sse2
,
1
,
1
,
0
AVX_INSTR
shufpd
,
sse2
,
1
,
1
,
0
AVX_INSTR
shufps
,
sse
,
1
,
1
,
0
AVX_INSTR
shufps
,
sse
,
1
,
1
,
0
AVX_INSTR
sqrtpd
,
sse2
,
1
,
0
,
0
AVX_INSTR
sqrtpd
,
sse2
AVX_INSTR
sqrtps
,
sse
,
1
,
0
,
0
AVX_INSTR
sqrtps
,
sse
AVX_INSTR
sqrtsd
,
sse2
,
1
,
0
,
0
AVX_INSTR
sqrtsd
,
sse2
,
1
,
0
,
0
AVX_INSTR
sqrtss
,
sse
,
1
,
0
,
0
AVX_INSTR
sqrtss
,
sse
,
1
,
0
,
0
AVX_INSTR
stmxcsr
,
sse
AVX_INSTR
stmxcsr
,
sse
...
...
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