Automatically use VEX-encoding in AVX/AVX2/XOP/FMA3/FMA4
functions for all instructions that exists in a VEX-encoded
version.
This change makes it easier to extend existing code to use AVX2.
Also add support for AVX emulation of a few instructions that
were missing before.
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '47f9d7ce5493e119e09d1227d017414feaaf8d97':
x86inc: Check for __OUTPUT_FORMAT__ having a value of "x64"
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'bbe4a6db44f0b55b424a5cc9d3e89cd88e250450':
x86inc: Utilize the shadow space on 64-bit Windows
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '63f0d623100bdb0c6081456127f4b6713e83d3db':
x86inc: Use SSE instead of SSE2 for copying data
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'ad76e6e7e193b98e7335156422d35467816f9ef1':
x86inc: Set ELF hidden visibility for global constants
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Prevents a crash if the misaligned exception mask bit is
cleared for some reason.
Misaligned SSE functions are only used on AMD Phenom CPUs
and the benefit is miniscule. They also require modifying
the MXCSR control register and by removing those functions
we can get rid of that complexity altogether.
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Store XMM6 and XMM7 in the shadow space in functions that
clobbers them. This way we don't have to adjust the stack
pointer as often, reducing the number of instructions as
well as code size.
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
SWAP with >=3 named (rather than numbered) args
PERMUTE followed by SWAP with 2 named args
used to produce the wrong permutation
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Now RET checks whether it immediately follows a branch, so the
programmer dosen't have to keep track of that condition. REP_RET
is still needed manually when it's a branch target, but that's
much rarer.
The implementation involves lots of spurious labels, but that's OK
because we strip them.
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* commit '38e15df1489d86c016515223ee693e7d0326c56a':
avframe: note that linesize is not the usable data size
Conflicts:
libavutil/frame.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Prior to this on msvc/icl there was no handling of deprecated functions
and the deprecated warning was disabled.
After enabling there are a number of warnings relating to the CRT and
the use of the non-secure versions of several functions. Defining
_CRT_SECURE_NO_WARNINGS silences these warnings.
Signed-off-by: Martin Storsjö <martin@martin.st>
When compiling with --enable-small, ripemd.o will weigh a few kilobytes less than
it used to before the previous commit.
Signed-off-by: James Almer <jamrial@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'c3e6e8f06c42499bd020fd0b37f9542150e6067b':
mem: Do not check unsigned values for negative size
Conflicts:
libavutil/mem.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
The benchmark tests the speed of the following algorithms:
MD5, SHA-1, SHA-256, SHA-512, RIPEMD-160, AES-128.
It can optionally be built to perform the same benchmark on
other crypto libraries, for comparison purposes.
The supported libraries are:
- crypto: OpenSSL's libcrypto;
- gcrypt: GnuTLS's libgcrypt;
- tomcrypt: LibTomCrypt
To enable them, use this syntax:
make VERSUS=crypto+gcrypt+tomcrypt tools/crypto_bench
They do not need to have been enabled in configure.
* commit 'b4ec7a5fee644ad9882e10c097817b65447b8e55':
mem: Document the av_realloc family of functions properly
Merged-by: Michael Niedermayer <michaelni@gmx.at>
The pixel format descriptors are set to more or less arbitrary
values as bayer formats do not fit in the descriptors structure.
These values are currently not used for bayer formats and thus
do not matter.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
Reveiwed-by: Nicolas George <nicolas.george@normalesup.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit '79aec43ce813a3e270743ca64fa3f31fa43df80b':
x86: Add and use more convenience macros to check CPU extension availability
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '7ffda66fd5c81af4725bff7c2c4f207ba2aa0613':
arm: float_dsp: Propagate cpu_flags to vfp initialization function
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'f61bece684d9685b07895508e6c1c733b5564ccf':
ppc: Add and use convenience macro to check for AltiVec availability
Conflicts:
libavcodec/ppc/dsputil_ppc.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'b78b10c4b78b696927f2801cf2d9f193b4eff28b':
avutil: Move internal CPU detection function declarations to private header
Merged-by: Michael Niedermayer <michaelni@gmx.at>
programs using ffmpeg that are compiled with -Wshorten-64-to-32
gives a warning when using header files common.h and rational.h
cast 64-bit truncated values to (uint32_t) to avoid the warning
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'a76d0cdf21c3d9e464623cc0ad1c005abf952afa':
libavutil: Move avpriv_open to a new file, file_open.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '33237123c83bf4f8345e6ac889ad2e7dbd303d0e':
libavutil: Enable the MSVC DLL symbol loading workaround in shared builds as well
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Add one copy of the function into each of the libraries, similarly
to what we do for log2_tab. When using static libs, only one
copy of the file_open.o object file gets included, while when
using shared libraries, each of them get a copy of its own.
This fixes DLL builds with a statically linked C runtime, where
each DLL effectively has got its own instance of the C runtime,
where file descriptors can't be shared across runtimes.
On systems not using msvcrt, the function is not duplicated.
Signed-off-by: Martin Storsjö <martin@martin.st>
This used to only be necessary in static builds (when using the
dynamically linked C runtime), since the _imp prefixed symbols do
exist when linking to the actual DLL. When building testprogs,
however, the current library (e.g. libavutil for some of the testprogs)
is linked statically.
This fixes make fate on DLL builds when using the dynamically
linked C runtime.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit 'dfc6b5c81491abf7effb97b23af17ccf7adcd132':
file: Move win32 utf8->wchar open wrapper to libavutil
Merged-by: Michael Niedermayer <michaelni@gmx.at>
When libavformat was changed to use the new avpriv_open function
in 51eb213d00, this silently bypassed the existing wrapper for
win32. Move the win32 wrapper into libavutil/file.c to make sure
it gets called everywhere (not just in the libavformat case).
This makes sure that non-ascii file names gets opened properly
(where file names internally are stored as utf8, but they get
converted to wchar_t and opened with _wsopen).
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit '869b04e89154cd92d2bcfdabcecbe3217864c099':
libavutil: add avpriv_open() to open files with close-on-exec flag
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* cigaes/master:
ffmpeg: remove obsolete workaround in trim insertion.
lavu/log: do not skip overwritten lines.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '7950e519bb094897f957b9a9531cc60ba46cbc91':
Disable deprecation warnings for cases where a replacement is available
Conflicts:
libavcodec/avpacket.c
libavcodec/pthread.c
libavcodec/utils.c
libavdevice/v4l2.c
libavfilter/avfiltergraph.c
libavfilter/buffersrc.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'b5a138652ff8a5b987d3e1191e67fd9f6575527e':
Give less generic names to global library option arrays
Conflicts:
libavcodec/options_table.h
libavfilter/avfilter.c
libavformat/options_table.h
libswscale/options.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'c7e921a54ffe7feb9f695c82f0a0764ab8d0f62b':
avopt: Check whether the object actually has got an AVClass
Conflicts:
libavutil/opt.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'c2e936de07d054bf476e60445b453bf6b4836820':
tree-test: Refactor and plug memory leaks
Conflicts:
libavutil/tree.c
Most of this commit is not merged due to bugs in it
Merged-by: Michael Niedermayer <michaelni@gmx.at>
AVIOContext has got an av_class member that only gets set if
opening the context using avio_open2, but not if allocating a
custom IO context. A caller that wants to read AVOptions from
an AVIOContext (recursively using AV_OPT_SEARCH_CHILDREN) may
not know if the AVIOContext actually has got a class set or not.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit 'd99a2b6d0a4d0b2f5ba6a1f1637d6cb88c5c9184':
avutil/tree: Drop debug messages that clutter the output
Conflicts:
libavutil/tree.c
Merge for metadata only, a better solution has been commited that allows the
debug output to be turned on and off
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '5b097399baa2e38cc513939cfab3a9b6fdbc33df':
eval: Explicitly ignore return value of strtod() in parse_db()
Conflicts:
libavutil/eval.c
See: 3cd9849d9c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* qatar/master:
Consistently use "cpu_flags" as variable/parameter name for CPU flags
Conflicts:
libavcodec/x86/dsputil_init.c
libavcodec/x86/h264dsp_init.c
libavcodec/x86/hpeldsp_init.c
libavcodec/x86/motion_est.c
libavcodec/x86/mpegvideo.c
libavcodec/x86/proresdsp_init.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'ef5b70affc6376bfeadd1ff649b79bad9a124fa8':
configure: Check for support for labels in the inline assembly
The timer code is not placed under ifdef as ours does not use labels
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Use this for enabling the ppc timer.h implementation only on
assemblers that support labels in the inline assembly.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit '6516632967da5e6bd7d6136e8678f826669ed26e':
tests: Only run noproxy test if networking is enabled
fifo: K&R formatting cosmetics
Conflicts:
libavformat/Makefile
libavutil/fifo.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
"Fork" is an ambiguous term, since there may be more than one fork, also
"fork" could be confused with the corresponding function. Also it seems
important to point the name of the referenced fork in the symbol.
Note: the old --enable-incompatible-fork-abi command is retained for
compatibility, although it should be considered deprecated.
* cehoyos/master:
Support compilation on aix with gcc.
Rename "AVClass class" as "AVClass component_class".
Rename constant FRAMESIZE in ra144 codec as FRAME_SIZE.
Rename thread_init() in libavcodec and libavfilter as library_thread_init().
Rename constant HZ in af_biquads.c as HERTZ.
Drop local lable from ppc asm timer.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '502ab21af0ca68f76d6112722c46d2f35c004053':
x86: lpc: simd av_update_lls
The versions are bumped due to changes in lls.h which is used across
libraries affecting intra library ABI
(This version bump also covers changes to lls.h in the immedeatly previous
commits)
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '41578f70cf8aec8e7565fba1ca7e07f3dc46c3d2':
lpc: use function pointers, in preparation for asm
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This results in more alignment for pixel formats that have "odd" pixel
sizes like RGB24. It makes access through SIMD easier
Works around Issue described in Ticket1031
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
The description if for the function, not the group.
Signed-off-by: James Almer <jamrial@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>