Commit Graph

101 Commits

Author SHA1 Message Date
Johann
90a109f0ee Restrict get_msb inputs
Add a warning and assert that inputs for get_msb must not be zero.

Change-Id: I8c6f289ff13248f6e3a8bc24aab3712ed33022a6
2015-09-22 00:24:01 +00:00
Alex Converse
a8a08ce57e Move vp9_systemdependent.h to vpx_ports bitops.h and system_state.h
Use system_state.h in vpx_dsp and remove unneeded includes of
vp9_systemdependent.h.

Change-Id: I92557ec6dd5aa790160b4f31fe7967db0d7ec3c4
2015-08-10 15:37:14 -07:00
James Zern
d65ea85ce6 vpx_ports/msvc.h: include math.h for ceil/floor
fixes visual studio build errors

Change-Id: I5d24f91c74572a75dfa77b9384d6614de231dc50
2015-08-08 11:11:23 -07:00
James Zern
6032239e2f vpx_ports/x86.h: fix visual studio build warning
test for WINAPI_FAMILY_PARTITION before using it

Change-Id: I6b7a7b1ccd3332b31c73b733f88c997e30b22de8
2015-08-08 11:10:44 -07:00
Alex Converse
f2e44aa664 Move the msvc round() replacement to msvc.h
Change-Id: If470411c3c62a27f52261f4ece2c5054b71789c7
2015-08-07 18:27:48 -07:00
Ghislain MARY
3067c34c5a Support build with Visual Studio 14.
Change-Id: Id0d7c19857e29b66c652c8cc1ab56b64e4fc0fa3
2015-08-05 14:45:16 -07:00
Johann
cad0eca25c Don't #define snprintf in VS 2015 or higher.
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-27 18:28:25 -07:00
Tom Finegan
f9a5b96fd2 Merge "Remove the BUILD_LIBVPX variable from the build system." 2015-05-14 19:08:06 +00:00
Tom Finegan
d104b16b56 Remove the BUILD_LIBVPX variable from the build system.
Replace it with it's value (yes), which is constant.

Change-Id: Ifb0c0408a53ecadf81156da6a64fa583b2ada746
2015-05-14 10:46:44 -07:00
Johann
1d7ccd5325 Relocate memory operations for common code
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-13 11:41:15 -07:00
James Zern
fd3658b0e4 replace DECLARE_ALIGNED_ARRAY w/DECLARE_ALIGNED
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-07 11:55:08 -07:00
James Zern
abff8b24b9 x86_simd_caps: check max cpuid before testing AVX2
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-24 19:24:14 -07:00
Johann
14ef4aeafb Reorganize *_rtcd() calling conventions
Change-Id: Ib1e17d8aae9b713b87f560ab5e49952ee2bfdcc2
2015-04-15 11:12:05 -04:00
Johann
08acc349b3 Remove last remnants of obj_int_extract
Change-Id: Icc7da6027763b5ed7cbfe70ffe271103ead59fe1
2015-03-18 11:06:53 -07:00
James Zern
4ed1bda7af x86: correct OSXSAVE + AVX bit check
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-23 18:06:04 -08:00
James Zern
7e515c4637 fix AVX & AVX2 detection
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
2015-01-15 23:16:25 -08:00
James Zern
d5484f109e x86_abi_support: set LIBVPX_RAND w/vp9-postproc
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-12-12 11:07:29 -08:00
Johann
6eec73a747 Remove asm offset dependencies
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-11-06 16:00:01 -08:00
Johann
f6be2f3c87 Clarify GCC version check
The version check was incorrectly matching some versions of clang
which reported as gcc 4.2

Change-Id: I686d3576e71883fe1463206b56ab5e2aa9bb68a8
2014-09-25 11:53:45 -07:00
Jia Jia
0ae866bd19 vp8/vp9: neon: msvc: move the 'ifdef _MSC_VER' bit to vpx_ports/mem.h.
fix compiling warning.

Change-Id: If8706a9046436f704c597e4275a6810c76ba7daa
2014-09-14 01:43:54 +08:00
Johann
8dcdacc597 Restructure ARM assumptions in cpudetect
Allow building for targets which have NEON but not EDSP or MEDIA.

Set HAS_NEON flag for builds which have neon assembly but not
intrinsics.

Change-Id: Ibfa81a8444a8c55d1d3209c533d1d70d2f809669
2014-09-09 11:50:32 -07:00
Johann
07a47466ee Include vpx_config.h in vpx_timer.h
vpx_timer.h uses several defines from the config file including
CONFIG_OS_SUPPORT and INLINE

Change-Id: I16cb45237787cbc1ae79a67e16b8042811dda336
2014-08-18 11:02:16 -07:00
Jim Bankoski
07a67520d3 inline vpx functions in headers to avoid unused function warning
Change-Id: I80284ae82915b9df56f7c5ef4953bd53e8cffd1f
2014-08-12 16:52:33 -07:00
Jim Bankoski
f452961765 fixes several -Wunused-function warnings
Change-Id: I4dc2cb255f4fe30998b6ee61184895dee9f5da8e
2014-08-12 16:51:07 -07:00
KO Myung-Hun
f9f996b3e2 vpx_once: implement once() for OS/2
Change-Id: I9f736f299490464bbdbb6cd24ee6f5b46ad45ec6
2014-07-29 17:36:39 -07:00
Johann
79afb5eb41 Use lrand48 on Android
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-06-12 19:57:25 -07:00
Martin Storsjo
20babf6d9d Don't try to use getenv on windows phone/rt
The getenv function doesn't exist there. In Visual Studio 2012,
the function still existed in the link libraries even though
it was hidden in the headers, but in the 2013 version it has been
removed from the link libraries as well.

Change-Id: Iea6289a698fa1788e906f5aabb6fddda3675815b
2014-05-04 23:47:39 +03:00
Dmitry Kovalev
4334c07357 Reusing mem_get_le{16, 32} defined in vpx_ports/mem_opts.h.
Change-Id: If4b5209ac14aaba6f1c1014bc0497baa8eabfaff
2014-02-26 16:32:09 -08:00
Dmitry Kovalev
572f716289 Removing x86_cpuid.c.
The file has implementation of only one function vpx_x86_vendor() which
is unused.

Change-Id: Icf8d7ee67cc8372affb7b5a436328cecdfd5e291
2014-02-11 17:24:03 -08:00
James Zern
a5d23f547a vpx_ports: add extern "C" to headers
Change-Id: Iba9b198ce78b3f8b644feba064f83abc247e75dd
2014-01-23 19:42:59 -08:00
James Zern
d2f4940783 vpx_ports: normalize include guards
Change-Id: I4e931aadecfe1761c720b080bdd67a1875794979
2013-12-16 19:41:10 -08:00
Ehsan Akhgari
45bac0c496 Add include guards to setupintrarecon.h and vpx_once.h
Change-Id: Ife17fc6369ce32f36d5c7f8a2ef5a3b7724d81b9
2013-12-09 10:59:28 -08:00
Yaowu Xu
8caeeb886a Added cpuid compatibility for older MSVC versions
Change-Id: I891bf936e03411ca611620e7cb2eb5081993a346
2013-11-22 17:06:02 -08:00
Yaowu Xu
36dfb90c53 Fix the cpuid macro for x86_64 non-gcc build
Change-Id: I0c44800db10db8d74c1ddfe89abecfd1c53d0f8d
2013-11-21 18:02:20 -08:00
Erik Niemeyer
9f26861147 Support for extended feature flags enumeration leaf in CPUID instruction
This CL fixes an overcite with the AVX2 support CL previously
merged (Change-Id: Idc03f3fca4bf2d0afd33631ea1d3caf8fc34ec29) that
prevented runtime execution of AVX2 code in WebM. 

Background:
Starting with the Sandybridge processor, the CPUID instruction was
enhanced to add various extended feature flag enumeration leaves.
Reading these leaves requires an additional input value for the CPUID
instruction which is stored in ECX. This change adds this second input
value for all ARCH_X86 and ARCH_x86_64 targets to the CPUID macros,
allowing checks of EBX bit 5 for AVX2 support. This capability will be
required moving forward to check for future processor features.

Change-Id: Ie9d872bc9ff68dad4b6578e4544e4dfd0ae26c36
2013-11-20 11:10:54 -08:00
Erik Niemeyer
e6863ef318 CL for adding AVX-AVX2 support in libvpx.
Change-Id: Idc03f3fca4bf2d0afd33631ea1d3caf8fc34ec29
2013-10-29 15:11:16 -07:00
James Zern
9fb6f40677 vpx_ports/x86.h: de-dup #elif block
Change-Id: I052647e13dd24354888c890f6b4a987d989552ae
2013-06-17 21:58:00 -07:00
Johann
a288c928ae Merge "Add cpu detection for Android x86" 2013-05-01 22:58:41 -07:00
changjun.yang
c9a9905764 Add cpu detection for Android x86
Change-Id: I3fe24001cda08d7322b630f65c5e3fad881f8036
2013-05-02 10:38:19 +08:00
changjun.yang
e58852582d code cleanup for arm_cpudetect.c
Change-Id: I5c49a983ced45197e1035fa5615d71b0bdad4109
2013-04-26 09:34:34 -07:00
Dmitry Kovalev
7f99c3c59a Code cleanup.
Removing redundant 'extern' keywords, fixing formatting and #include order,
code simplification.

Change-Id: I0e5fdc8009010f3f885f13b5d76859b9da511758
2013-03-05 14:12:16 -08:00
Frank Galligan
f67d740b34 Add support for x64 and win64 yasm flags.
Some projects must define only win64 for Windows 64bit builds using
yasm.

Change-Id: I1d09590d66a7bfc8b4412e1cc8685978ac60b748
2013-01-31 16:25:37 -08:00
Mark Mentovai
e48776f29b 64-bit Mac Chromium support for libvpx.
For 64-bit Mac Chromium, use private_extern for HIDDEN_DATA, the same as
32-bit Mac Chromium.

Change-Id: Ica0fa9e48a47409facece691ae1e39327369083c
2013-01-25 18:02:52 -05:00
John Koleszar
24bc1a7189 Use INT64_MAX instead of LLONG_MAX
These variables have the type int64_t, not long long. long long could
be a larger type than 64 bits. Emulate INT64_MAX for older versions of
MSVC, and remove the unreferenced vpx_ports/vpxtypes.h

Change-Id: Ideaca71838fcd3849d816d5ab17aa347c97d03b0
2013-01-14 15:57:21 -08:00
John Koleszar
16810c10c1 Merge branch 'vp9-preview' of review:webm/libvpx
Merge the vp9-preview branch into master.

Change-Id: If700b9054676f24bed9deb59050af546c1ca5296
2012-12-27 09:37:19 -08:00
John Koleszar
5ebe94f9f1 Build fixes to merge vp9-preview into master
Various fixups to resolve issues when building vp9-preview under the more stringent
checks placed on the experimental branch.

Change-Id: I21749de83552e1e75c799003f849e6a0f1a35b07
2012-12-26 11:21:09 -08:00
James Zern
9dab3ce624 add emmintrin_compat.h for builds with gcc < 4
Change-Id: If7822e6fcd0d3568b934032322b19ba3e401df26
2012-12-20 14:56:13 -08:00
Johann
7a09f6b892 Revert "Upstream build bug for chromium"
This reverts commit 8bb82fded5.

This is an incorrect workaround. It has been fixed in the GYP files
upstream.

Change-Id: If42f997747ce878b874508fdf7ae5a73a6fa1b2b
2012-12-11 11:49:18 -08:00
Johann
8bb82fded5 Upstream build bug for chromium
https://codereview.chromium.org/11413061/

The Android NDK automatically manages the include directories. Trying
to do so manually for the Android GYP files can cause the wrong setjmp.h
to be included.

Change-Id: I5c3769f983fcbad1ed602feda781690c6e4e97b3
2012-11-19 12:47:27 -08:00
Johann
a5ffcdd8d4 Sequester vpx_ports file list
Move BUILD_LIBVPX evaluation before the include.

Change-Id: I8860414c42a8161765a17bf433ff2607c0d027ca
2012-11-15 16:28:20 -08:00