summaryrefslogtreecommitdiff
path: root/vpx_ports
AgeCommit message (Collapse)Author
2018-01-12clang-format v5.0.0 mem_ops.hJohann
Remove trailing empty line to keep the comment from being indented. https://bugs.llvm.org/show_bug.cgi?id=35930 Change-Id: I6c51f7afb4cc47f03a190b4c90e29e4ff1e0c689
2017-11-03Support building AVX-512 and implement sadx4 for AVX-512Kyle Siefring
The added AVX-512 support requires the subset of AVX-512 added in Skylake-X. Change-Id: I39666b00d10bf96d06c709823663eb09b89265b7
2017-08-25vpx_dsp:loongson optimize vpx_varianceWxH_c,vpx_sub_pixel_varianceWxH_c and ↵Shiyou Yin
vpx_sub_pixel_avg_varianceWxH_c with mmi. Change-Id: Ia576a721df6312329b599c31cfe1fb1267a9f174
2017-08-18vpx_dsp:loongson optimize vpx_subtract_block_c (case 4x4,8x8,16x16) with mmi.Shiyou Yin
Change-Id: Ia120ad1064d0b6106d9685cf075bdab373eef19e
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-15'protected' visibility unsupported on machoJohann
Mac builds must not specify 'protected' visibility. Then only support 'default' and 'hidden'. https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/CppRuntimeEnv/Articles/SymbolVisibility.html Change-Id: I94eccfaa29af0ddcc4a5c1c0e14cf63ef7146462
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
2017-04-18Create CAST_TO_BYTEPTR/SHORTPTRLinfeng Zhang
They will replace CONVERT_TO_BYTEPTR/SHORTPTR module by module. BUG=webm:1388 Change-Id: Ie47c8cd4897696481b9cbbf9e2d439dc22dc85ec
2017-03-08Add support for POWER8/VSXRafael de Lucena Valle
Add ppc, ppc64 and ppc64le on all_platforms and ARCH_LIST Add VSX flags and check for -mvsx Define empty setup_rtcd_internal Add Altivec detection based on: http://freevec.org/function/altivec_runtime_detection_linux Detect VSX at runtime when enabled Change-Id: I304f4d8c5fee0ff19b6483cd2e9cc50d6ddec472 Signed-off-by: Rafael de Lucena Valle <rafaeldelucena@gmail.com>
2017-02-14Merge "Remove UNINITIALIZED_IS_SAFE"Johann Koenig
2017-02-14Remove UNINITIALIZED_IS_SAFEJohann
Where clang static analysis or gcc -Wmaybe-uninitialized warns of uninitialized values, assign 0 to ints, MB_MODE_COUNT to MB_PREDICTION_MODE, and B_MODE_COUNT to B_PREDICTION_MODE. Assert that the modes have been changed from the invalid value by the end of the function. Change-Id: Ib11e1ffb08f0a6fe4b6c6729dc93b83b1c4b6350
2017-02-09vpx_usec_timer_elapsed: use 64-bit mathJames Zern
this prevents a rollover when tv_sec is a long: signed integer overflow: 2776 * 1000000 cannot be represented in type 'long' Change-Id: I03dc4476ee122b02e2856dad28358a20cf16a9f8
2016-11-22avoid redefining WIN32_LEAN_AND_MEANJames Zern
fixes redef errors when the macro is supplied elsewhere, e.g., the command line Change-Id: Ic15726817a43e30595d50562ef1f077060c193cf
2016-11-15vpx_timer.h,x86.h: define NOMINMAX for windows.hJames Zern
avoids the definition of min/max macros in headers that may appear in c++ unit tests. the codebase uses VPXMIN/MAX for this purpose in any case Change-Id: I2b679b045d64fb34fd8780f704e3caf10a758d82
2016-09-15apply clang-formatclang-format
Change-Id: I501597b7c1e0f0c7ae2aea3ee8073f0a641b3487
2016-08-31Fix -Wundef warning for __SANITIZE_ADDRESS__Johann
BUG=webm:1069 Change-Id: Iad8811939a910a8f31cf5788220712a255ddf36a
2016-08-04Remove armv6 targetJohann
Change-Id: I1fa81cc9cabf362a185fc3a53f1e58de533a41e5
2016-08-04Merge "Pad 'Left' when building under ASan"Johann Koenig
2016-08-03Fix msvc compiler warningsYaowu Xu
MSVC 2013 complained about using 32 shift where 64 bit shift should be used. Change-Id: I7a2b165d1a92d3c0a91dd4511b27aba7709b5e55
2016-08-03Pad 'Left' when building under ASanJohann
The neon intrinsics are not able to load just the 4 values that are used. In vpx_dsp/arm/intrapred_neon.c:dc_4x4 it loads 8 values for both the 'above' and 'left' computations, but only uses the sum of the first 4 values. BUG=webm:1268 Change-Id: I937113d7e3a21e25bebde3593de0446bf6b0115a
2016-07-25vpx_ports: apply clang-formatclang-format
Change-Id: Ice343335a40238fd21490bce0ce2972bdcb87055
2016-06-28remove visual studio < 2010 workaroundsJames Zern
BUG=b/29583530 Change-Id: Iafd05637eb65f4da54a9c857e79204a77646858a
2016-06-24Port metric computation changes from nextgenv2Yaowu Xu
Change-Id: I4aceffcdf7af59ffeb51984f0345c3a4c7e76a9f
2016-06-22win: Include <intrin.h> instead of manually declaring intrinsics.Nico Weber
This helps clang-cl. BUG=chromium:592745 Change-Id: I49f9b6928c91b2b43567f4336520ba4f1010d3ad
2016-05-27vpx_ports/mem_ops.h: cast the lhs of bitwise shifts of 24.Tom Finegan
C does not allow for shifting into the sign bit of a signed integer, and the two instances here become signed ints via promotion. Explcitly cast them to unsigned MEM_VALUE_T to avoid the problem. BUG=https://bugs.chromium.org/p/chromium/issues/detail?id=614648 Change-Id: I51165361a8c6cbb5c378cf7e4e0f4b80b3ad9a6e
2016-05-26Convert to unsigned int before left shiftYaowu Xu
This is to fix overflow when 128 is left shifted by 24. Change-Id: Ibb5f6813536d985afa003a9848c0c3dd358955a7
2016-04-27x86.h,x86_simd_caps: add an explicit cast w/strtolJames Zern
+ use strtoul as mask is unsigned quiets a -Wshorten-64-to-32 warning Change-Id: Ia1c24679302100a252da7a45d3bb871f591f1888
2016-04-22Add the 64-bit CPU cycle count utility functionYi Luo
Change-Id: Ie87245bbdf5735bc9729199eeb07899d81dbf267
2016-03-30vpx_ports/mem_ops.h: clear some -Wconversion warningsJames Zern
not strictly necessary, but allows projects using '-Wconversion -Wno-sign-conversion' to reuse these headers. Change-Id: Id1398d726c90173ccba9aea66798fcef6f20fa23
2015-12-10Minor cleanupYunqing Wang
Removed unused GET_GOT_SAVE_ARG. Change-Id: I0ae41c2d0dcd6d7d1c8dda05062fcdb737fd917d
2015-11-13Use Interlocked calls in win32 once() implementation.Ralph Giles
This is simpler than the previous scheme, which tried to allocate the CRITICAL_SECTION struct in a thread-safe manner before it could use it to run the wrapped function in a thread-safe manner. Change-Id: I172e5544e5f16403a3a0e5e2b9104b1292a0d786
2015-09-22Restrict get_msb inputsJohann
Add a warning and assert that inputs for get_msb must not be zero. Change-Id: I8c6f289ff13248f6e3a8bc24aab3712ed33022a6
2015-08-10Move vp9_systemdependent.h to vpx_ports bitops.h and system_state.hAlex Converse
Use system_state.h in vpx_dsp and remove unneeded includes of vp9_systemdependent.h. Change-Id: I92557ec6dd5aa790160b4f31fe7967db0d7ec3c4
2015-08-08vpx_ports/msvc.h: include math.h for ceil/floorJames Zern
fixes visual studio build errors Change-Id: I5d24f91c74572a75dfa77b9384d6614de231dc50
2015-08-08vpx_ports/x86.h: fix visual studio build warningJames Zern
test for WINAPI_FAMILY_PARTITION before using it Change-Id: I6b7a7b1ccd3332b31c73b733f88c997e30b22de8
2015-08-07Move the msvc round() replacement to msvc.hAlex Converse
Change-Id: If470411c3c62a27f52261f4ece2c5054b71789c7
2015-08-05Support build with Visual Studio 14.Ghislain MARY
Change-Id: Id0d7c19857e29b66c652c8cc1ab56b64e4fc0fa3
2015-05-27Don't #define snprintf in VS 2015 or higher.Johann
In VS 2015 and higher snprintf is supplied and therefore vsnprintf doesn't need to be defined. This also avoids problems caused by _snprintf being different from snprintf. This fixes a build break with VS 2015 and improves security. Originally submitted via chromium by brucedawson@chromium.org https://codereview.chromium.org/1055603003 Additionally break this MSVC-specific tweak to a new file, which will become the home of all such MSVC-specific things. This requires adding a dependency on msvc.h to every example which uses args.c and tools_common.h Change-Id: I35b5f8e7ea00f6627403aabc9ea79b0412557a99
2015-05-14Merge "Remove the BUILD_LIBVPX variable from the build system."Tom Finegan
2015-05-14Remove the BUILD_LIBVPX variable from the build system.Tom Finegan
Replace it with it's value (yes), which is constant. Change-Id: Ifb0c0408a53ecadf81156da6a64fa583b2ada746
2015-05-13Relocate memory operations for common codeJohann
With the sad functions, and hopefully the variance functions soon, moving to the vpx_dsp location, place the defines used in the reference C code in a common location. Change-Id: I4c8ce7778eb38a0a3ee674d2f1c488eda01cfeca
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-04-24x86_simd_caps: check max cpuid before testing AVX2James Zern
structured extended feature flags require eax = 7; avoids incorrectly detecting avx2 on some older processors that support avx. from [1]: INPUT EAX = 0: Returns CPUID’s Highest Value for Basic Processor Information and the Vendor Identification String [1] http://www.intel.com/content/www/us/en/processors/processor-identification-cpuid-instruction-note.html Change-Id: I6b4735b5f7b7729a815e428fca767d1e5a10bcab
2015-04-15Reorganize *_rtcd() calling conventionsJohann
Change-Id: Ib1e17d8aae9b713b87f560ab5e49952ee2bfdcc2
2015-03-18Remove last remnants of obj_int_extractJohann
Change-Id: Icc7da6027763b5ed7cbfe70ffe271103ead59fe1
2015-01-23x86: correct OSXSAVE + AVX bit checkJames Zern
the result should have both bits set; previously this was converted from webp incorrectly and resulted in a boolean check... Change-Id: I2a7c7f2b491945f3a536ab4fca02247eccc892b8
2015-01-15fix AVX & AVX2 detectionJames Zern
fixes issue #790 which resulted in a SIGILL on OpenBSD code is mostly from libwebp, based on the following: https://software.intel.com/en-us/articles/how-to-detect-new-instruction-support-in-the-4th-generation-intel-core-processor-family Change-Id: Ida7c1a18261e98c05ed9c662068140be407ec107
2014-12-12x86_abi_support: set LIBVPX_RAND w/vp9-postprocJames Zern
set LIBVPX_RAND with --enable-vp9-postproc, previously only the vp8 config was checked. this fixes the build with --disable-postproc. Change-Id: Ia61baded6aa0e44d6443ae4a3c85915f1054f053
2014-11-06Remove asm offset dependenciesJohann
The obj_int_extract code is no longer worth maintaining. It creates significant issues when adapting for different build systems and no longer offers as significant of a performance benefit due to improvements in intrinsics. Source files will remain until the various third-party builds are updated. The neon fast quantizer has been moved to intrinsics. The armv6 version has been removed because so few remaining targets require it. Compilers and processors have improved significantly since the pack_tokens code was written. The assembly is no longer faster than the C code. pack_tokens were the only optimizations for the armv5te targets so the targets will be removed after the test infrastructure has been updated. BUG=710 Change-Id: Ic785b167cd9f95eeff31c7c76b7b736c07fb30eb
2014-09-25Clarify GCC version checkJohann
The version check was incorrectly matching some versions of clang which reported as gcc 4.2 Change-Id: I686d3576e71883fe1463206b56ab5e2aa9bb68a8