Commit Graph

1137 Commits

Author SHA1 Message Date
Martin Storsjö
3cf52554f7 Backup/restore the xmm6-xmm15 SSE registers within asm functions on win64
According to the Win64 ABI, these registers need to be preserved,
and compilers are allowed to rely on their content to stay
available - not only for float usage but for any usage, anywhere,
in the calling C++ code.

This adds a macro which pushes the clobbered registers onto the
stack if targeting win64 (and a matching one which restores them).
The parameter to the macro is the number of xmm registers used
(e.g. if using xmm0 - xmm7, the parameter is 8), or in other
words, the number of the highest xmm register used plus one.

This is similar to how the same issue is handled for the NEON
registers q4-q7 with the vpush instruction, except that they needed
to be preserved on all platforms, not only on one particular platform.

This allows removing the XMMREG_PROTECT_* hacks, which can
easily fail if the compiler chooses to use the callee saved
xmm registers in an unexpected spot.
2014-03-17 13:44:33 +02:00
Licai Guo
918b211990 Merge pull request #515 from mstorsjo/remove-commented-x86-asm
Remove commented out code for old, 32-bit only x86 assembly function prologues/epilogues
2014-03-17 19:12:47 +08:00
Martin Storsjö
f96918283f Remove commented out code for old, 32-bit only x86 assembly function prologues/epilogues 2014-03-17 11:20:11 +02:00
Licai Guo
258828f7ec Merge pull request #503 from mstorsjo/encoder-test-coverage
Add encoder tests with deblocking and/or denoising
2014-03-17 16:46:38 +08:00
Licai Guo
fc4e0cacec Merge pull request #483 from volvet/develop_b
use large/medium/similar to define scene change result
2014-03-17 16:32:31 +08:00
Licai Guo
b5a4d706b9 Merge pull request #496 from mstorsjo/use-sign-extend-macro
Use the SIGN_EXTENSION macro where possible
2014-03-17 16:31:03 +08:00
Licai Guo
1c0ba88b0e Merge pull request #501 from mstorsjo/neon-register-backup
Avoid clobbering the registers q4-q7 in DeblockingBSCalcEnc_neon
2014-03-17 14:05:23 +08:00
Licai Guo
2c796337ba Merge pull request #510 from huili2/remove_basemb
remove BASE_MB related code
2014-03-17 08:46:25 +08:00
Martin Storsjö
eb238e6549 Use the SIGN_EXTENSION macro where possible
This shortens the x86 assembly by 134 lines in total.
2014-03-16 17:54:24 +02:00
volvet
1449c83f57 Merge pull request #509 from mstorsjo/fix-arm-asm-macro-indentation
Indent all WELS_ASM_FUNC_BEGIN properly
2014-03-16 20:16:53 +08:00
Martin Storsjö
91e5838621 Indent all WELS_ASM_FUNC_BEGIN properly
By having all of them start at the start of the line, the code
is more consistent and readable.
2014-03-16 12:01:54 +02:00
volvet
e654bf6b7f Merge pull request #490 from ruil2/encoder_slice_auto
fix dump file issue
2014-03-16 15:41:26 +08:00
volvet
1c3e87dd3f Merge pull request #505 from mstorsjo/x86-asm-constants
Format x86 assembly constants in a yasm compatible manner
2014-03-16 15:37:16 +08:00
volvet
373db5ddd2 Merge pull request #506 from mstorsjo/remove-unused-define
Remove the unused define NOPREFIX
2014-03-16 10:22:57 +08:00
volvet
ac990fdc38 Merge pull request #507 from mstorsjo/more-x86-asm-args
Add defines for argument 11 and 12 in asm_inc
2014-03-16 10:21:35 +08:00
volvet
e606bae0e9 Merge pull request #504 from mstorsjo/fix-function-name-typo
Fix a typo, Smple -> Sample
2014-03-16 10:18:03 +08:00
Martin Storsjö
d45e624cd4 Simplify code by using the arg11 and arg12 defines 2014-03-15 14:42:27 +02:00
Martin Storsjö
c82f548e6f Add defines of arg11 and arg12 in asm_inc.asm 2014-03-15 14:42:07 +02:00
Martin Storsjö
00849100f8 Remove the unused define NOPREFIX
Nothing in the x86 assembly reacts to that define (nor anything
else within the code base).
2014-03-15 14:40:36 +02:00
Martin Storsjö
ce8da27287 Format x86 assembly constants in a yasm compatible manner
This is similar to what was done in a6463be0cc - yasm requires
these constants to have a zero after $.
2014-03-15 14:38:28 +02:00
Licai Guo
6f2b98975e Merge pull request #502 from mstorsjo/fix-macro-indentation
Fix the indentation of some nasm macros
2014-03-15 07:16:37 +08:00
Licai Guo
3bf5efd877 Merge pull request #499 from ethanhugg/winbuild_time
Add time.h for Windows build.
2014-03-15 07:16:08 +08:00
Martin Storsjö
f4fdb15397 Fix a typo, Smple -> Sample 2014-03-14 23:30:09 +02:00
Martin Storsjö
868f912dc2 Add encoder tests with deblocking and/or denoising
This increases the coverage of assembly routines (and encoder
features in general) tested by the codec unit test.
2014-03-14 22:33:33 +02:00
Ethan Hugg
c6c1691799 Merge pull request #500 from mstorsjo/fix-func-ptr-check
Check for the right function pointer
2014-03-14 13:30:58 -07:00
Martin Storsjö
4d120781c1 Fix the indentation of some nasm macros 2014-03-14 22:26:33 +02:00
Martin Storsjö
cde30c155b Avoid clobbering the registers q4-q7 in DeblockingBSCalcEnc_neon
Remap q5 to q8, q6 to q9, q7 to q10 and q8 to q11, and push
q4 to the stack.

This was missed previously since the codec unittest doesn't
test encoding with loop filter enabled yet.
2014-03-14 22:22:28 +02:00
Martin Storsjö
b3d04d88a0 Check for the right function pointer
This code checked whether one function pointer was non-null,
but the went on to call a different function pointer. Check
for the one that actually was called.
2014-03-14 22:20:40 +02:00
Ethan Hugg
6944ace5e1 Add time.h for Windows build. 2014-03-14 10:59:35 -07:00
Ethan Hugg
43bc9d7c07 Merge pull request #498 from mstorsjo/add-missing-include
Include time.h in DataGenerator.cpp
2014-03-14 08:21:02 -07:00
Ethan Hugg
3a1b86e763 Merge pull request #497 from mstorsjo/remove-unused-variable
Remove an unused variable
2014-03-14 08:20:46 -07:00
Martin Storsjö
dca9d628f7 Include time.h in DataGenerator.cpp
This fixes building on MSVC.
2014-03-14 15:16:34 +02:00
Martin Storsjö
d847aacace Remove an unused variable
This fixes a warning in MSVC.
2014-03-14 15:15:57 +02:00
volvet
6da9a9e5c8 Merge pull request #489 from sijchen/me_refactor22
refactor ME for easier adding other search methods
2014-03-14 17:53:10 +08:00
volvet
a0dbde2e0e Merge pull request #493 from mstorsjo/fix-macro-typo
Fix a typo in a macro name, EXTENTION -> EXTENSION
2014-03-14 17:52:56 +08:00
volvet
c8f2f08403 Merge pull request #495 from sijchen/add_me_test11
[Encoder UnitTest] add basic me test
2014-03-14 17:12:46 +08:00
huili2
b1f596fd69 remove BASE_MB related code 2014-03-14 02:03:41 -07:00
sijchen
2fe99d688b add basic me test 2014-03-14 16:40:02 +08:00
Martin Storsjö
9199798f22 Fix a typo in a macro name, EXTENTION -> EXTENSION 2014-03-14 10:13:18 +02:00
Licai Guo
e536be8dfa Merge pull request #492 from mstorsjo/fix-ifdef-comment
Fix a mismatched ifdef comment
2014-03-14 16:08:08 +08:00
Martin Storsjö
2bce50283f Fix a mismatched ifdef comment
This is an ifdef block for HAVE_NEON.
2014-03-14 10:01:18 +02:00
unknown
94f8c351ca fix dump file issue 2014-03-14 15:13:24 +08:00
volvet
447d7e19c9 Merge pull request #488 from licaiguo/clean-redundant-check
clean redundant checks in decoder
2014-03-14 15:07:00 +08:00
sijchen
6c3d83a8ac refactor ME for easier adding other search methods 2014-03-14 15:04:35 +08:00
Licai Guo
f589c580eb clean redundant checks in decoder 2014-03-13 23:56:54 -07:00
Licai Guo
8492aac917 Merge pull request #486 from huili2/nzc_bug_fix
nzc bug fix and clear
2014-03-14 13:11:45 +08:00
huili2
734e60aeeb add according to review opinion 2014-03-13 20:21:10 -07:00
Licai Guo
5bffb627d6 nzc bug fix and clear 2014-03-13 19:31:28 -07:00
volvet
6714b8ae99 Merge pull request #463 from mstorsjo/dont-clobber-neon-registers
Avoid clobbering the neon registers q4-q7

Review and verified by zhilwang
2014-03-14 10:28:55 +08:00
volvet
fc5c48830a fix the condition of scene change flag and comments 2014-03-14 09:53:24 +08:00