summaryrefslogtreecommitdiff
path: root/vp8/common/x86
AgeCommit message (Collapse)Author
2018-10-30clang-tidy: fix vp8/common parametersJohann
Match function definitions to declarations BUG=webm:1444 Change-Id: Ib96d3b735eaf81cece5406c89cc5156bc2cde462
2018-10-29vp8 bilinear: ensure non-16x16 arrays are alignedJohann Koenig
The 16x16 array was changed to aligned. The 8xN and 4x4 functions use aligned loads/stores on their internal arrays as well. BUG=webm:1570 Change-Id: I9cfe53d7c8ed76e8854c2688eb9a509b876471d8
2018-10-29vp8 bilinear: ensure temp array is alignedJohann
Loads and stores to this array require 16 byte alignment. BUG=webm:1570 Change-Id: I82c7d21c9539a108930fd030d79caaa0bcd1eeb3
2018-10-25vp8 bilinear: rewrite 4x4Johann
~20% faster than the MMX. Removes the last usage of vp8_bilinear_filters_x86_[48]. Change-Id: Iee976fab9655d0020440f26c4403ce50103af913
2018-10-25vp8 bilinear: rewrite 16x16Johann
Marginally faster. Most importantly it drops a dependency on an external symbol (vp8_bilinear_filters_x86_8). Change-Id: Iff022e718720f1f0eeced6201a1ad69a9c9c4f45
2018-10-24vp8 bilinear: rewrite in intrinsicsJohann
8x8 is 15% faster than the assembly. 8x4 is 200% faster than MMX. Remove MMX version. Change-Id: I55642ebd276db265911f2c79616177a3a9a7e04f
2018-09-15cosmetics: normalize include guardsJames Zern
use the recommended format [1] of: <PROJECT>_<PATH>_<FILE>_H_ [1] https://google.github.io/styleguide/cppguide.html#The__define_Guard "All header files should have #define guards to prevent multiple inclusion. The format of the symbol name should be <PROJECT>_<PATH>_<FILE>_H_." Change-Id: I2e8ab0b32fb23c30fa43cff5fec12d043c0d2037
2018-01-18clang-format v5.0.0 vp8/Johann
Allow*OnASingleLine appears to no longer apply to typedef structs. Adjust closing parenthesis/opening brace on functions. Remove trailing commas to keep multiple elements on one line. Change-Id: I6e535a8ddb15c9b3de8216ce8ddb2a18241af46c
2018-01-11adopt some clang 5.0.0 formattingJohann
At least the changes that don't conflict with 4.0.1 Change-Id: I9b6a7c14dadc0738cd0f628a10ece90fc7ee89fd
2017-12-01explicitly label .text sectionsJohann
nasm should infer .text but does not for windows: https://bugzilla.nasm.us/show_bug.cgi?id=3392451 Change-Id: Ib195465e5f33405f5ff61c4cf88aa2a72640cacb
2017-05-16Revert "Add visibility="protected" attribute for global variables referenced ↵Johann Koenig
in asm files." This reverts commit 0d88e15454b632d92404dd6a7181c58d9985e2a2. Reason for revert: chromium builds are failing to locate vpx_rv during dlopen() dlopen failed: cannot locate symbol "vpx_rv" referenced by "libstandalonelibwebviewchromium.so" Original change's description: > Add visibility="protected" attribute for global variables referenced in asm files. > > During aosp builds with binutils-2.27, we're seeing linker error > messages of this form: > libvpx.a(subpixel_mmx.o): relocation R_386_GOTOFF against preemptible > symbol vp8_bilinear_filters_x86_8 cannot be used when making a shared > object > > subpixel_mmx.o is assembled from "vp8/common/x86/subpixel_mmx.asm". > Other messages refer to symbol references from deblock_sse2.o and > subpixel_sse2.o, also assembled from asm files. > > This change marks such symbols as having "protected" visibility. This > satisfies the linker as the symbols are not preemptible from outside > the shared library now, which I think is the original intent anyway. > > Change-Id: I2817f7a5f43041533d65ebf41aefd63f8581a452 > TBR=jzern@google.com,johannkoenig@google.com,rahulchaudhry@chromium.org,builds@webmproject.org Change-Id: I0c2ea375aa7ef5fda15b9d9e23e654bb315c941b
2017-05-12Add visibility="protected" attribute for global variables referenced in asm ↵Rahul Chaudhry
files. During aosp builds with binutils-2.27, we're seeing linker error messages of this form: libvpx.a(subpixel_mmx.o): relocation R_386_GOTOFF against preemptible symbol vp8_bilinear_filters_x86_8 cannot be used when making a shared object subpixel_mmx.o is assembled from "vp8/common/x86/subpixel_mmx.asm". Other messages refer to symbol references from deblock_sse2.o and subpixel_sse2.o, also assembled from asm files. This change marks such symbols as having "protected" visibility. This satisfies the linker as the symbols are not preemptible from outside the shared library now, which I think is the original intent anyway. Change-Id: I2817f7a5f43041533d65ebf41aefd63f8581a452
2016-09-29vp8: remove mmx functionsJohann
When they have sse2 equivalents. Change-Id: I158f631a3bcecba57b36093ac10114b1904767a7
2016-09-21Keep vp8 sixtap read within boundsJohann
When filtering it needs 6 pixels: 2 prior to the source, the source, and 3 after the source. When filtering 16 wide, that means 21. To accomplish this the SSE2 reads [-2] to [5], [6] to [13], and [14] to [21], a total of 24 bytes (reading in groups of 8 is easy) The filter then shifts this last set to the top half of the register and uses 'or' to combine it with the previous set. Valgrind detected an issue reading pixels [19], [20] and [21]: Address 0x7f581c2 is 434 bytes inside a block of size 441 alloc'd Note: we only need pixels [16], [17], and [18] as context for [15]. To fix this, it now reads 8 bytes starting at [11], which re-loads [11] through [13], but stops at [18] and does not over-read any values. This is shifted by 5 and 'or'd with xmm1. Although the lower bits are not cleared, they overlap directly with [11] through [13], so 'or' produces the correct results. Change-Id: I0c89c03afa660fc9b0108ac055d7bd403e493320
2016-09-15Enable ssse3 bilinear testsJohann
The code only has issues when xoffset == 0 and yoffset == 0 which represents a simple copy. Presumably this case does not need to be handled because the issue has existed since 2010. BUG=webm:1287 Change-Id: Ic47e2653f3b729e99b40e53d8d2d8d1501edaaa9
2016-07-19vp8: apply clang-tidy google-readability-braces-around-statementsclang-tidy
applied against an x86_64 configure clang-tidy-3.7.1 \ -checks='-*,google-readability-braces-around-statements' \ -header-filter='.*' -fix + clang-format afterward Change-Id: I6694edeaee89b58b8b3082187e6756561136b459
2016-07-18prepend ++ instead of post in for loops.Jim Bankoski
Applied the following regex : search for: (for.*\(.*;.*;) ([a-zA-Z_]*)\+\+\) replace with: \1 ++\2) This misses some for loops: ie : for (mb_col = 0; mb_col < oci->mb_cols; mb_col++, mi++) Change-Id: Icf5f6fb93cced0992e0bb71d2241780f7fb1f0a8
2016-07-15vp8: apply clang-formatclang-format
Change-Id: I7605b6678014a5426ceb45c27b54885e0c4e06ed
2016-07-12deblock filter : moved from vp8 code branchJim Bankoski
The deblocking filters used in vp8 have been moved to vpx_dsp for use by both vp8 and vp9. Change-Id: I5209d76edafc894b550f751fc76d3aa6799b392d
2016-06-27*.asm: normalize label formatJames Zern
add a trailing ':', though it's optional with the tools we support, it's more common to use it to mark a label. this also quiets the orphan-labels warning with nasm/yasm. BUG=b/29583530 Change-Id: I46e95255e12026dd542d9838e2dd3fbddf7b56e2
2016-05-02Move vpx_add_plane from codec to vpx_dsp and dedup.Jim Bankoski
Change-Id: I12218d8331c0558c0587a66321e3ca46da7e5cc7
2015-09-30vp8: change build_intra_predictors_mbuv_s to use vpx_dsp.Ronald S. Bultje
Change-Id: I936c2430c3c5b1e0ab5dec0a20110525e925b5e4
2015-09-30vp8: change build_intra_predictors_mby_s to use vpx_dsp.Ronald S. Bultje
Change-Id: I2000820e0c04de2c975d370a0cf7145330289bb2
2015-08-03Rename vp8 loopfilter_mmx.asmJohann
Chromium puts all the yasm output in the same directory. Looking at ways to improve this but in the meantime get rid of collisions. Change-Id: I923c5231d14e895ab96521eb89807ede868a0753
2015-07-07Move sub pixel variance to vpx_dspJohann
Change-Id: I66bf6720c396c89aa2d1fd26d5d52bf5d5e3dff1
2015-06-18Move vp8 variance filesJohann
There is a naming conflict in the chromium build system. The rest of the variance functions will move to vpx_dsp soon. Change-Id: Iff78da2aafb0d7380eda73e38d7dac72110a1e47
2015-06-03Remove unused sub pixel mseJohann
Change-Id: I7a5e4e2632c3fa69d2a85a68fa9b418631caf09c
2015-05-26Move variance functions to vpx_dspJohann
subpel functions will be moved in another patch. Change-Id: Idb2e049bad0b9b32ac42cc7731cd6903de2826ce
2015-05-14vp8/common/variance*: add vp8_rtcd includeJames Zern
silences missing prototype warnings Change-Id: I5ca198b56a5ff0cf5b93c89957526f243c04e9c8
2015-05-07replace DECLARE_ALIGNED_ARRAY w/DECLARE_ALIGNEDJames Zern
this macro was used inconsistently and only differs in behavior from DECLARE_ALIGNED when an alignment attribute is unavailable. this macro is used with calls to assembly, while generic c-code doesn't rely on it, so in a c-only build without an alignment attribute the code will function as expected. Change-Id: Ie9d06d4028c0de17c63b3a27e6c1b0491cc4ea79
2015-05-06Move shared SAD code to vpx_dspJohann
Create a new component, vpx_dsp, for code that can be shared between codecs. Move the SAD code into the component. This reduces the size of vpxenc/dec by 36k on x86_64 builds. Change-Id: I73f837ddaecac6b350bf757af0cfe19c4ab9327a
2015-04-28vpx_mem: remove vpx_memsetJames Zern
vestigial. replace instances with memset() which they already were being defined to. Change-Id: Ie030cfaaa3e890dd92cf1a995fcb1927ba175201
2014-06-12Use lrand48 on AndroidJohann
When building x86 assembly use lrand48 instead of the undocumented inlined _rand function. Android now supports rand() https://android-review.googlesource.com/97731 but only for new versions. Original workaround: https://gerrit.chromium.org/gerrit/15744 Change-Id: I130566837d5bfc9e54187ebe9807350d1a7dab2a
2014-05-23Removing vp8/common/pragmas.h.Dmitry Kovalev
Change-Id: I80630a7350e884ebc4fef73fb5b52ec25f908523
2014-05-21Renames x86_64 specific asm filesDeb Mukherjee
Renames all x86_64 specific assembly files to consistently end in _x86_64.asm. This will be useful for build systems to handle these files differently. All new 64-bit specific assembly files should use the new naming convention. Change-Id: I36c89584967c82ffc4088b1b5044ac15d2bb7536
2014-05-19Fix valgrind read out of bounds error.Jim Bankoski
MMX variance code in vp8 was reading out of bounds.. TODO(JBB): The best fix would involve removing duplicate library functions between vp8 and vp9... Change-Id: I5722853a6a58d3b55257ff385fa54c773bf98ded
2014-04-21Fix dr memory VP8 encode/decode errorsYunqing Wang
This patch fixed errors reported in Issue 746: "dr memory VP8 encode errors" and Issue 745: "dr memory VP8 decode errors". The "UNINITIALIZED READ" errors were fixed in x86 assembly code. The list of files fixed is vp8_intra_pred_uv_tm_sse2 vp8_intra_pred_uv_tm_ssse3 vp8_intra_pred_uv_ho_mmx2 vp8_intra_pred_uv_ho_ssse3 vp8_intra_pred_y_tm_sse2 vp8_intra_pred_y_tm_ssse3 vp8_intra_pred_y_ho_sse2 Change-Id: Ib6df7bf1d442077fe534edfd90e50ad16fadacdd
2014-03-24Fix uninitialized read in postprocessingYunqing Wang
This patch fixed WebRTC Issue 3020: "Uninit error at vp8_mbpost_proc_down_xmm". The first 8 values in d were not initialized, but was accessed. This patch fixed c code as well as mmx and sse2 code. Change-Id: Iaa5b41a4ed3bea971b15fb826ce34b7ab4e36fb1
2014-02-12minor spelling cleanup in commentsAndrew Russell
Change-Id: Ia91c6c406273345b08505097ffe1af3896980f06
2014-01-23vp8/common: add extern "C" to headersJames Zern
Change-Id: I13b434b1e6621e31962b08831c3587c039368c83
2013-12-16vp8/common: normalize include guardsJames Zern
Change-Id: Ia8789a8f864e0edc0bf94f00f6430846f86911c3
2013-10-29idct_blk_mmx.c: use vpx_memset instead of castJohann
Fix warning with -Wstrict-aliasing=1 Change-Id: Ic37013e6477cf213925830d0bd8e6f17364ff7cc
2013-10-01Merge "Fix linker warnings for bilinear filters"Matthew Heaney
2013-10-01Fix linker warnings for bilinear filtersMatthew Heaney
The declaration of the bilinear filters specified an alignment clause in the implementation file but not in the header. This turned out to be harmless, but it did cause linker warnings to be emitted when building on Windows. The (extern) declaration in the header was changed, to match the declaration in the implementation. Change-Id: I44be89b1572fe9a50fa47a42e4db9128c4897b04
2013-09-26fixed integer overflow warningsYaowu Xu
Jenkins warns on left shift of negative numbers and non-aligned read of int. This commit fixed the two issues. Change-Id: I389a7fb6a572c643902e40a4c10fefef94500d2c
2013-03-15Bug fix: Issue 531: MMX code tries to read from SSE2 registerScott LaVarnway
Reported by Krzysztof Kaspruk. https://code.google.com/p/webm/issues/detail?id=531 Change-Id: Ib5d5878ad07707bd42c2ca833eb021004f537012
2013-02-27Fix --as=nasm compatibility for new asm code.Jan Kratochvil
s/movd/movq/ Change-Id: Id1a56de91551f8dc796f14f1056c565dfc1ba626
2013-02-22Fix variance (signed integer) overflowJames Zern
based on change made in experimental: 9847344 Fix variance (signed integer) overflow Change-Id: I36f4ba5700f6f4615057daf7e70868f68a86669f
2013-02-17Use dq instead of ddq with NASMKO Myung-Hun
Change-Id: Iffb7cd44b449dc10fa5c24405be909d051b7abb5
2013-01-31Add support for x64 and win64 yasm flags.Frank Galligan
Some projects must define only win64 for Windows 64bit builds using yasm. Change-Id: I1d09590d66a7bfc8b4412e1cc8685978ac60b748