Commit Graph

1352 Commits

Author SHA1 Message Date
volvet
6892127a32 Merge pull request #521 from mstorsjo/neon-register-backup
Don't clobber q4-q7 in WelsIntra16x16Combined3Satd_neon
2014-03-18 09:28:51 +08:00
Martin Storsjö
00efbc2cb5 Enable the arm assembly in msvc-arm builds
This requires using the external gas-preprocessor tool that
converts the gnu assembler format sources to armasm format at
build time. This allows keeping the source files in one single
format but only converting while building.
2014-03-17 20:28:12 +02:00
Martin Storsjö
02b4beb70d Add a test of encoding multiple spatial layers
This increases the coverage of the unit tests.
2014-03-17 20:08:45 +02:00
Martin Storsjö
29a0c77acf Don't clobber q4-q7 in WelsIntra16x16Combined3Satd_neon
This is similar to what is done in other neon functions. This
function was missed since it isn't covered by the current
set of unittests.
2014-03-17 20:04:53 +02:00
Ethan Hugg
8e57c926a3 Merge pull request #518 from mstorsjo/remove-commented-rodata
Remove commented out rodata sections and tables in assembly files
2014-03-17 09:22:35 -07:00
Ethan Hugg
469820e3a2 Merge pull request #508 from mstorsjo/fix-yasm-osx
Use -DPREFIX instead of --prefix _ on OS X
2014-03-17 09:20:55 -07:00
Martin Storsjö
4633626d69 Remove XMMREG_PROTECT
This isn't necessary any longer, when all the assembly routines
take care of restoring registers as necessary.
2014-03-17 13:47:01 +02:00
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
Martin Storsjö
9293f2f947 Remove commented out rodata sections and tables in assembly files 2014-03-17 13:42:18 +02:00
Martin Storsjö
eec968234d Fold ALIGN 16 and the function label into WELS_EXTERN
This simplifies the structure for all x86 assembly functions,
reducing the amount of duplicated code structure.
2014-03-17 13:35:00 +02:00
Martin Storsjö
04f5bcd68d Use movsxd in SIGN_EXTENSION
This is what nasm ended up assembling movsx with 32 bit input to
anyway.

Keep using plain movsx for 16 bit input.

This fixes building with yasm in 64 bit mode.
2014-03-17 13:26:46 +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
ruil2
895c0ff635 fix typo 2014-03-17 12:09:52 +08:00
ruil2
36abe317a5 modify unit test for return type modification 2014-03-17 11:56:19 +08:00
ruil2
36d56b6638 modify EncoderFrame return type.
commit b99a307ab94183c32a293ad5fda8b0e3323546a0
Author: ruil2 <ruil2@cisco.com>
Date:   Wed Mar 12 13:34:27 2014 +0800

    fix typo
2014-03-17 10:46:38 +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ö
fc260b39e0 Remove the unused FORMAT_COFF define
Nothing in the project currently sets FORMAT_COFF - the other generic
branch works just fine on windows.
2014-03-16 17:54:55 +02: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
Martin Storsjö
d723ad2774 Use -DPREFIX instead of --prefix _ on OS X
The --prefix parameter differs between yasm and nasm; nasm
requires --prefix _ while yasm requires --prefix=_. Using the
define instead (as on windows) allows easier switching between
the two otherwise mostly compatible assemblers.

This fixes building with yasm on OS X in 32 bit mode. For 64 bit,
a few more tweaks are still required.
2014-03-16 11:59:34 +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